比较Kamailio和OpenSIPS的dispatcher模块

Kamailio的dispatcher模块我用的很多,很熟

OpenSIPS有同名模块

二者基本功能相同

但真使起来,差别还是挺大的

#  OpenSIPS

event_route[E_DISPATCHER_STATUS] {
    # log each time a dispatcher destination
    # changes its status
    xlog("Dispatcher destination has new status");
}

OpenSIPS需要在路由里面修改destination的状态,但Kamailio则不用这么麻烦,模块自己就搞定了

以后抽时间仔细测试下OpenSIPS的这个模块,再完善这篇文章

查了查源码,主要逻辑如下:

evi_param_add_int(list, &group_str, &set->id);
evi_param_add_str(list, &address_str, address);
evi_param_add_str(list, &status_str,
                        type ? &inactive_str : &active_str);

req = get_dummy_sip_msg();

status = evi_raise_event_msg(req, id, params); # 发一个dummy sip message
release_dummy_sip_msg(req);

改了下路由块,如下:

event_route[E_DISPATCHER_STATUS] {
    # log each time a dispatcher destination
    # changes its status

    $var(status) = $hdr(status);
    xlog("Dispatcher destination has new status, ru = $rU, tu = $tU, fu = $fU, status = $var(status)\n");
    avp_print();
}

但还是不行, $rU, $tU, $fU等可以正常取到,$hdr(status)为NULL,$hdr(group)没试,估计也不行

avp_print() 也不行,没有打印出有用的内容

看来OpenSIPS跟Kamailio有很大不同,没那么容易掌握

可能要求助Mailing List了

你可能感兴趣的:(Kamailio,OpenSIPS,dispatcher)