概述

freeswitch作为VOIP的软交换平台,需要对呼叫的信息做判断和归类。

常见的呼叫信息中,挂机方向的信息对于话单统计有很大的用处。

但是fs的原始话单和日志中并没有挂机方向的信息。

环境

centos:CentOS7

freeswitch:v1.10.7

GCC:4.8.5

测试方案

启动freeswitch之后,通过fs_cli查看打印信息,在命令行输入挂机事件监听命令。

freeswitch@localhost.localdomain> /event plain CHANNEL_HANGUP_COMPLETE

RECV EVENT

Event-Name: CHANNEL_HANGUP_COMPLETE

Call-Direction: inbound

variable_sip_hangup_disposition: send_bye

RECV EVENT

Event-Name: CHANNEL_HANGUP_COMPLETE

Call-Direction: outbound

variable_sip_hangup_disposition: recv_bye

从console打印信息中,可以看到挂机事件有两路,inbound(aleg)和outbound(bleg)。

inbound(aleg)的“variable_sip_hangup_disposition”是“send_bye”,表示fs对A路发送了bye消息。

outbound(bleg)的“variable_sip_hangup_disposition”是“recv_bye”,表示fs从B路接收了bye消息。

从A路和B路的“variable_sip_hangup_disposition”可以得出该通呼叫的挂机方是被叫B路。

源码信息

通过“sip_hangup_disposition”搜索源代码,可以查找到该字段所有值的列表。

recv_bye

recv_cancel

recv_refuse

send_bye

send_cancel

send_refuse

我们以bleg的挂机事件中“sip_hangup_disposition”字段为例。

未接通的场景。

outbound(bleg)为send_cancel,A路挂机。

outbound(bleg)为recv_refuse,B路挂机。

接通的场景。

outbound(bleg)为send_bye,A路挂机。

outbound(bleg)为recv_bye,B路挂机。

总结

freeswitch作为软交换的场景下,不考虑fs自身挂断的情况,通过对挂机事件中的“sip_hangup_disposition”字段分析,可以得出呼叫的挂机方向。

如果fs作为业务服务器,业务流程中有拒绝呼叫的情况下,挂机方向的判断会更复杂。

可以在cdr_csv的配置中加入“${sip_hangup_disposition}”字段,辅助判断挂机方向。

空空如常

求真得真

freeswitch如何判断挂机方的更多相关文章

  1. js 判断是什么类型浏览器

    //  firefoxif ( window.sidebar && "object" == typeof( window.sidebar ) && ...

  2. JS判断RadioButtonList是否有选中项

    提交表单之前对RadioButtonList控件的选中项进行判断: 方法一: <script type="text/javascript"> function chec ...

  3. Junit 注解 类加载器 .动态代理 jdbc 连接池 DButils 事务 Arraylist Linklist hashset 异常 哈希表的数据结构,存储过程 Map Object String Stringbufere File类 文件过滤器_原理分析 flush方法和close方法 序列号冲突问题

    Junit 注解 3).其它注意事项: 1).@Test运行的方法,不能有形参: 2).@Test运行的方法,不能有返回值: 3).@Test运行的方法,不能是静态方法: 4).在一个类中,可以同时定 ...

  4. 【NOI2013模拟】坑带的树(仙人球的同构+圆方树乱搞+计数+HASH)

    [NOI2013模拟]坑带的树 题意: 求\(n\)个点,\(m\)条边的同构仙人球个数. \(n\le 1000\) 这是一道怎么看怎么不可做的题. 这种题,肯定是圆方树啦~ 好,那么首先转为广义圆 ...

  5. SqlServer——判断对象是否存在

    对以下对象判断是否存在:database.table.proc.触发器.临时表.索引.对于这些对象的判断是通过数据表 SysObjects来获得的. 一.基础知识 1.SysObjects系统表 对于 ...

  6. 认识拨号计划-dialplan

    拨号计划是 FreeSWITCH 中至关重要的一部分.它的主要作用就是对电话进行路由(从这一点上来说,相当于一个路由表).说的简明一点,就是当一个用户拨号时,对用户所拨的号码进行分析,进而决定下一步该 ...

  7. 2016-1-29 图解HTTP(04)

    第7章 确保Web安全的HTTPS 在HTTP协议中有可能存在信息窃听或身份伪装等安全问题.使用HTTPS通信机制可以有效的防止这些问题. 7.1 HTTP的缺点 ● 通信使用明文(不加密),内容可能 ...

  8. LL LR SLR LALR 傻傻分不清

    [转] 一:LR(0),SLR(1),规范LR(1),LALR(1)的关系     首先LL(1)分析法是自上而下的分析法.LR(0),LR(1),SLR(1),LALR(1)是自下而上的分析法.   ...

  9. SSRF安全威胁在JAVA代码中的应用

    如上图所示代码,在进行外部url调用的时候,引入了SSRF检测:ssrfChecker.checkUrlWithoutConnection(url)机制. SSRF安全威胁:   很多web应用都提供 ...

  10. JAVA-小青蛙跳石头游戏

    游戏摘自微信传的手机网页版小游戏,我拿来做成了JAVA的界面版,但是没有去做素材,,直接拿方块代替小青蛙.游戏原址就不分享了,只能在手机上打开. 下面是源码: /* * Main.java * */ ...

随机推荐

  1. [ABC309Ex] Simple Path Counting Problem

    Problem Statement We have a grid with $N$ rows and $M$ columns. We denote by $(i,j)$ the cell in the ...

  2. 本地部署modelscope-agent

    本地部署modelscope-agent 部署流程 在modelscope社区创建一个自己的空间(假设name是LocalAgent),clone空间到本地(或云服务器如魔搭Notebook) git ...

  3. Elasticsearch安装ik分词器,并配置扩展词典

    1.首先安装好elasticsearch,这里我用的是docker安装 2.去GitHub下载ik分词器,GitHub地址 3.下好了解压 4.使用远程客户端工具(我用的是finalShell)将整个 ...

  4. JXNU acm选拔赛 涛神的城堡

    涛神的城堡 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submiss ...

  5. 华企盾DSC客户端图标不显示常见处理方法

    1.检查是否启用了360桌面.猎豹桌面之类的(兼容腾讯桌面),打强制显示客户端图标的补丁 2.是否被杀毒软件查杀 3.用Autoruns查看explorer项图标那一栏前10个是否有我们图标没有的话把 ...

  6. MySQL 数据目录

    MySQL 的数据目录 1. MySQL 的主要目录结构 方式1:通过命令搜索 find / -name mysql 方式2(推荐):通过查看配置文件获取目录结构 vim /etc/my.cnf (重 ...

  7. java之switch用法

    多条件判断,判断条件是等值判断时,可以用switch 比如: 变量level=0时,输出"非会员" 变量level=1时,输出"打9折" 变量level=2时, ...

  8. 善用 vscode 的批量和模板技巧来提效

    vs code 其实有很多实用的技巧可以在日常工作中带来很大的提效,但可能是开发中没有相应的痛点场景,因此有些技巧接触的人不多 本篇就来介绍下多光标的批量操作和模板代码两种技巧在日常工作中的提效 涉及 ...

  9. kubernetes之部署war项目(二)

    kubernetes之部署war项目(二) k8s系列 源自我工作上的实际场景,记录于此. 现在老项目是war包形式,需要基于tomcat部署,因此在打包镜像时将tomcat带上的. 假设我的war项 ...

  10. Windows环境下为Android编译OpenCV4.3

    Windows环境下为Android编译OpenCV4.3 踩了三四天的坑,今天终于顺利跑通了,原来是toolchain的问题,外网的教程大多都是用opencv source里的toolchain,会 ...