freeswitch如何判断挂机方

news2025/2/28 15:37:54

 

概述

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}”字段,辅助判断挂机方向。

空空如常

求真得真

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/9480.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

火遍国内外IT技术圈,豆瓣 9.7!这本技术书籍直接封神了

这是一本在国内外都被称为技术书籍巅峰之作的神书! 国内的豆瓣评分 9.7(满分 10.00),接近 90% 的人为这本书打了五星好评。 国外的 Goodreads(类似于豆瓣) 评分 4.72(满分 5.00) &a…

元宇宙:下一代互联网的“美丽新世界”

8月6日到8日,美国超人气歌手Ariana Grande在全球不同地区,连续举办了5场演唱会。与众不同的是,演出的举办地点在游戏《堡垒之夜》(Fortnite)中。全球上千万的玩家,使用自己的游戏角色盛装出席。演出中,一系列的小游戏贯穿了主线,最后粉丝在绚丽的场景中和“Ariana”一对…

42、Spring AMQP DirectExchange

1、DirectExchange 2、案例 3、通过配置类实现 1、配置类 2、Publisher 3、Consumer 4、测试结果 4、通过注解实现 1、Consumer添加Linstener 2、Publisher 执行测试方法 3、测试结果 4、总结分析 学习了DirectExchange之后,发现与FanoutExchange有些许差异&#…

腾讯程序员的手码K8S+Jenkins笔记

最近在GitHub上认识一个腾讯大佬,从他手上得到一份K8SJenkins笔记,好东西还是要共享的!希望这份笔记能让你技术更上一层! 从理论到实战深入K8S 学习K8S的学习笔记很少有比较齐全的,而这份K8S学习笔记,尽量…

谈了这么久的无代码到底是什么?

尽管我们一直在谈论关于“无代码”的方方面面,但却并没有专门谈及“无代码”是什么。不仅许多刚听到这个名词的人会感到疑惑,就算熟悉这一名词的可能也无法给出一个准确的定义,又或者常常将其与另一个相近的名词“低代码”弄混。 今天我们专…

Revit插件实现【快速扣减】的两种操作

翻模的过程中,我们在处理细节问题的时候,如果只是两个构件之间的重合,我们可以利用“连接”命令进行扣减。而如果是想让多个构件进行扣减操作,而不是整层或者整栋楼都按照同样的扣减顺序进行的话,我们可以利用橄榄山和…

Windows安全日志分析

Windows安全日志分析 0x00 引言 在应急响应初步阶段,我们会对系统日志、中间件安全日志、恶意文件等进行收集。接下来便是要进一步对这些文件进行分析:对恶意文件逆向、日志文件分析、梳理入侵时间线和入侵路径等。本文主要对Windows安全日志进行举例分…

Mybatis整合达梦数据库

陈老老老板🦸👨‍💻本文专栏:国产数据库-达梦数据库(主要讲一些达梦数据库相关的内容)👨‍💻本文简述:本文讲一下SpringBoot整合Mybatis与达梦数据库,就是简单…

全网最详细|Oracle12C安装和卸载图文教程

一. 数据库的引入 以前将数据用变量、数组、对象存在内存,而内存只能短暂存储数据。如果我们想长久存数据用文件将数据存在磁盘上,不方便存取和管理数据,因此可以使用数据库来存数据。 二. 数据库基础概念 2.1数据库(database,简称DB) 以…

QRegExpValidator(正则验证器)

QRegExpValidator QRegExpValidator 使用正则表达式 (regexp) 来确定输入字符串是可接受、中间还是无效的。正则表达式可以在构建 QRegExpValidator 时提供,也可以在以后提供。 构造函数: ​ 常用的函数: setRegE…

在Windows上使用Docker搭建ChirpStack私有LoRa服务端

在Windows上使用Docker容器部署ChirpStack服务,首先若要在Windows 10或11 上运行容器,需要以下条件: 一个运行 Windows 10 或 11 专业版或企业版的物理计算机系统。Hyper-V 功能已启用。 Windows下的Docker安装 1.Docker为Windows提供了一款…

如何设计一个支撑数亿用户的系统

要设计出一套能支撑几十亿人的系统是很困难的。对于软件架构师来说,这一直是一项很大的挑战,但是,从现在开始,看完我的文章,你就会觉得容易很多了。 下面是我在本文中提到的几个话题: 从最简单的开始&…

关于大数据测试,你一定要试试python的fake库

一.背景 对于大数据相关项目的测试,往往需要大量的测试数据,而场内测试时很难获取那么大批量的真实数据,这个时候需要测试人员能够快速模拟出符合要求的测试数据。这个时候要是有一个自动化工具或测试脚本简直不要太爽~ 二.问题引入 对于互…

【Ajax进阶】跨域和JSONP的学习

✍️ 作者简介: 前端新手学习中。 💂 作者主页: 作者主页查看更多前端教学 🎓 专栏分享:css重难点教学 Node.js教学 从头开始学习 ajax学习 文章目录了解同源策略和跨域  同源策略    什么是同源    什么是同源策略跨域    什么是…

python基础07——函数,想重复使用自己的代码就写个函数吧

目录1 函数定义与调用1.1 自定义模块函数1.2 函数的返回值 return2 参数的传递方式2.1 位置参数2.2 默认值参数2.3 关键参数2.4 可变长度参数(收集和分配参数)2.4.1 收集位置参数2.4.2 分配位置参数,函数参数的序列解包2.4.3 收集关键字参数2.4.4 分配关键字参数3 变量的作用域…

腾讯云GPU云服务器在选择实例配置时应该注意哪些事项?

腾讯云异构计算服务器搭载GPU、FPGA等异构硬件,具有实时高速的并行计算和浮点计算能力,适合于深度学习、科学计算、视频编解码和图形工作站等高性能应用,下面分享腾讯云NVIDIA GPU云服务器配置CPU内存性能注意事项: NVIDIA GPU云…

26、Stream流式计算,链式编程

Stream流式计算,链式编程 什么是stream流式计算? 大数据包括(存储计算) 集合,mysql这些是用来存储的,而计算是用stream流式的 题目案例:只用一行代码,完成计算这些操作 操作&…

软件工程师备考1-2章(续)

一:差错控制 (1)奇偶检验 什么意思呢? 如果我们用 奇校验,就是保证传输过来的数据中的1是奇数,如果不是奇数那么说明传输错误。 (所以会增加一位,保证正确的数据的总的1一定是奇数) (2)海明码 什么是海明距离? 两个码字,例如 0 1 0 0 和 0 0 1 0 可以看到这…

java的Excel导出方式总结

一、使用hutool导出excel 1.1 hutool介绍 hutool功能很强大,http请求到json处理、excel的导入导出、定时任务、IO、缓存、数据库操作等都提供了简单而方便的api供我们使用,好处是再也不用担心自己去整理常用的工具类了,同时也支持按需引入【但…

怎样在PDF上直接编辑文字?这几种编辑方法需要掌握

怎么做才能够直接在PDF文件上编辑文字呢?对PDF文件大家在工作中是经常使用的,相信大家也都亲身体验过,那就是经常会看见文件中有错误的地方,可能只是一个错别字,或者是图片错误,但我们也不得不改&#xff0…