您当前的位置是:  首页 > 新闻 > 国内 >
 首页 > 新闻 > 国内 >

Kamailio/OpenSIPS学习笔记-如何使用dialog模块对呼叫计数

2018-04-23 13:29:22   作者:james.zhu    来源:Asterisk开源派   评论:0  点击:


  作为软交换平台,很多时候管理员平台需要对呼叫进行实时监控,或者对某些正在进行的呼叫进行统计,以便方便系统管理。在本期的讲座中,我们使用开源软交换的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进行呼叫
  通过以上两种方式的呼叫,用户就可以看到系统后台对其呼叫进行的计数处理和打印日志信息,tail /var/log/syslog –f 可以显示当前dialog中用户,domain, 活动呼叫和正在进行的呼叫的日志信息。
  4、在本章节中,我们提供dialog模块对系统呼叫进行计数处理。这里,用户需要根据dialog加载所需参数,在cfg文件中需要创建dialog,然后启动对已接听呼叫和正在进行的呼叫进行计数,最后通过xlog输出呼叫日志信息。另外,还要对reply进行计数处理。此示例可以帮助用户实时监控呼叫状态,它提供了非常方便的监控排查方式,用户可以在实际测试环境中进行排查测试。
  关注微信公众号:asterisk-cn,获得有价值的行业分享
  freepbx 技术论坛:www.ippbx.org.cn
  Asterisk, freepbx技术文档: www.freepbx.org.cn
  欧米(Omni)智能客服解决方案
  融合通信商业解决方案,协同解决方案首选产品:www.hiastar.com
【免责声明】本文仅代表作者本人观点,与CTI论坛无关。CTI论坛对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。

专题