freeswitch如何判断挂机方

概述
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如何判断挂机方的更多相关文章
- js 判断是什么类型浏览器
// firefoxif ( window.sidebar && "object" == typeof( window.sidebar ) && ...
- JS判断RadioButtonList是否有选中项
提交表单之前对RadioButtonList控件的选中项进行判断: 方法一: <script type="text/javascript"> function chec ...
- Junit 注解 类加载器 .动态代理 jdbc 连接池 DButils 事务 Arraylist Linklist hashset 异常 哈希表的数据结构,存储过程 Map Object String Stringbufere File类 文件过滤器_原理分析 flush方法和close方法 序列号冲突问题
Junit 注解 3).其它注意事项: 1).@Test运行的方法,不能有形参: 2).@Test运行的方法,不能有返回值: 3).@Test运行的方法,不能是静态方法: 4).在一个类中,可以同时定 ...
- 【NOI2013模拟】坑带的树(仙人球的同构+圆方树乱搞+计数+HASH)
[NOI2013模拟]坑带的树 题意: 求\(n\)个点,\(m\)条边的同构仙人球个数. \(n\le 1000\) 这是一道怎么看怎么不可做的题. 这种题,肯定是圆方树啦~ 好,那么首先转为广义圆 ...
- SqlServer——判断对象是否存在
对以下对象判断是否存在:database.table.proc.触发器.临时表.索引.对于这些对象的判断是通过数据表 SysObjects来获得的. 一.基础知识 1.SysObjects系统表 对于 ...
- 认识拨号计划-dialplan
拨号计划是 FreeSWITCH 中至关重要的一部分.它的主要作用就是对电话进行路由(从这一点上来说,相当于一个路由表).说的简明一点,就是当一个用户拨号时,对用户所拨的号码进行分析,进而决定下一步该 ...
- 2016-1-29 图解HTTP(04)
第7章 确保Web安全的HTTPS 在HTTP协议中有可能存在信息窃听或身份伪装等安全问题.使用HTTPS通信机制可以有效的防止这些问题. 7.1 HTTP的缺点 ● 通信使用明文(不加密),内容可能 ...
- LL LR SLR LALR 傻傻分不清
[转] 一:LR(0),SLR(1),规范LR(1),LALR(1)的关系 首先LL(1)分析法是自上而下的分析法.LR(0),LR(1),SLR(1),LALR(1)是自下而上的分析法. ...
- SSRF安全威胁在JAVA代码中的应用
如上图所示代码,在进行外部url调用的时候,引入了SSRF检测:ssrfChecker.checkUrlWithoutConnection(url)机制. SSRF安全威胁: 很多web应用都提供 ...
- JAVA-小青蛙跳石头游戏
游戏摘自微信传的手机网页版小游戏,我拿来做成了JAVA的界面版,但是没有去做素材,,直接拿方块代替小青蛙.游戏原址就不分享了,只能在手机上打开. 下面是源码: /* * Main.java * */ ...
随机推荐
- 一行代码修复100vh bug | 京东云技术团队
你知道奇怪的移动视口错误(也称为100vh bug)吗?或者如何以正确的方式创建全屏块? 一.100vh bug 什么是移动视口错误? 你是否曾经在网页上创建过全屏元素?只需添加一行 CSS 并不难: ...
- IIS下使用SSL证书
IIS下使用SSL证书 本文介绍windowsServer下SSL证书配置及IIS站点配置 1. 生成SSL证书 在阿里云申请免费SSL证书 登录阿里云管理控制台,打开SSL证书管理 选择免费证 ...
- Javascript Ajax总结——其他跨域技术之Comet
Comet指一种更高级的Ajax技术( 也称 "服务器推送" ),一种服务器向页面推送数据的技术.Comet能够让信息近乎实时地被推送到页面上,非常适合体育比赛的分数和股票报价.有 ...
- modeless dialog in html
<!DOCTYPE html> <html lang="zh_CN"> <head> <meta charset="UTF-8& ...
- ElasticSearch之cat datafeeds API
命令样例如下: curl -X GET "https://localhost:9200/_cat/ml/datafeeds?v=true&pretty" --cacert ...
- JavaImprove--Lesson06--正则表达式
一.正则表达式的入门 正则表达式是一些特定支付组成的,代表一个规则,简化代码,以字符的形式体现规则 正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex.re ...
- flutter MaterialApp介绍
MaterialApp 是 Flutter 中常用的一个 widget,它是构建基于 Material Design 风格应用的根组件,主要负责各种全局状态的管理以及定义应用程序的主题样式等. voi ...
- 你要了解的 OpenAI 那些事:创立简史,技术背景等
原文: https://openaigptguide.com/what-is-openai/ OpenAI 是一家人工智能研究公司,成立于2015年,总部位于美国旧金山.目前,OpenAI由创始人Sa ...
- Java 在PPT中添加文本、图片超链接
本文介绍通过Java程序在PPT幻灯片中添加超链接的方法,可以给文本或者图片设置超链接,设置超链接时,可设置包括网页链接.邮件地址链接.幻灯片跳转链接等不同指向对象的链接.文中方法使用了免费版PPT类 ...
- 实战案例丨代码优化:如何去除context中的warning?
在一个java语言群里面,有人抛了这么一段代码出来,问题是出现了下下图中的warning,问有什么好的方法消除 这种强转都是因为类型链条断掉了,写入的时候擦除了类型,读出来的时候也就只能强转了,那个i ...