作为软交换平台,很多时候管理员平台需要对呼叫进行实时监控,或者对某些正在进行的呼叫进行统计,以便方便系统管理。在本期的讲座中,我们使用开源软交换的dialog 模块对已经接听的呼叫和正在进行的呼叫做一个实时输出。通过系统输出日志,我们可以看到呼叫的状态信息,对呼叫进行计数处理。

1、在本讲座中,我们会使用dialog 模块推广不同的参数配置支持不同的呼叫状态打印。用户需要配置和加载dialog 模块,使用分机对其其他分机进行呼叫测试。
2、配置此示例,用户需要修改几个配置文件的内容。首先需要加载dialog模块:
loadmodule "dialog.so"
modparam("dialog", "profiles_with_value", "caller ; domain")
modparam("dialog", "profiles_no_value", "progress ; active")
modparam("dialog", "db_mode", 2)
modparam("dialog", "db_url",
"mysql://opensips:opensipsrw@localhost/opensips") // 注意修改到客户自己的IP 地址。
然后创建一个dialog 会话处理流程,并且启动计数器设置
create_dialog();
# 设置 profile
if($DLG_status!=NULL && is_method("INVITE")) {
set_dlg_profile("caller","$fU@$fd");
set_dlg_profile("domain","$fd");
}
#启动呼叫方计数
$var(ccaller)=0;
#启动从此 domain 计数
$var(cdomain)=0;
$var(ccaller)=get_profile_size("caller","$fU@$fd","$var(ccaller)");
$var(cdomain)=get_profile_size("caller","$fd","$var(cdomain)");
# 打印输出信息
xlog("L_INFO", "Number of calls from user $fU@$fd is $var(ccaller)");
xlog("L_INFO", "Number of calls from domain $fd is $var(cdomain)");
对处理reply 的流程进行处理,并且对已接通呼叫和正在进行的呼叫进行计数处理:
onreply_route[handle_nat] {
if($DLG_status!=NULL) {
if($rs=~"18[0-9]") {
set_dlg_profile("progress");
} else {
if(is_in_profile("progress")) unset_dlg_profile("progress");
}
if($rs=~"2[0-9][0-9]") {
set_dlg_profile("active");
} else {
if(is_in_profile("active")) unset_dlg_profile("active");
}
}
if(is_method("INVITE")) {
#激活已呼叫的计数器
$var(cactive)=0;
#处理正在呼叫的计数
$var(cprogress)=0;
get_profile_size("active","$var(cactive)");
get_profile_size("progress","$var(inprogress)");
# 进行log打印
xlog("L_INFO","There are $var(cactive) active calls and $var(inprogress) calls in progress");
}
3、保存以上配置文件,重新加载cfg文件。用户可以分别通过两种方式进行呼叫测试:
- 通过软电话A对另外一个分机B进行呼叫,B接听, 然后置于等待状态
- 通过另外一个软电话对B进行呼叫
4、在本章节中,我们提供dialog模块对系统呼叫进行计数处理。这里,用户需要根据dialog加载所需参数,在cfg文件中需要创建dialog,然后启动对已接听呼叫和正在进行的呼叫进行计数,最后通过xlog输出呼叫日志信息。另外,还要对reply进行计数处理。此示例可以帮助用户实时监控呼叫状态,它提供了非常方便的监控排查方式,用户可以在实际测试环境中进行排查测试。

关注微信公众号:asterisk-cn,获得有价值的行业分享
freepbx 技术论坛:www.ippbx.org.cn
Asterisk, freepbx技术文档: www.freepbx.org.cn
欧米(Omni)智能客服解决方案
融合通信商业解决方案,协同解决方案首选产品:www.hiastar.com