freeswitch的mod_xml_cdr模块

概述
freeswitch是一款简单好用的VOIP开源软交换平台。
在语音呼叫的过程中,话单是重要的计价和结算依据,话单的产生需要稳定可靠,可回溯。
fs中的mod_xml_cdr模块提供了基本话单功能之外的选择,可以输出XML格式的本地话单或通过http post接口上传web服务器。
环境
centos:CentOS release 7.0 (Final)或以上版本
freeswitch:v1.10.7
GCC:4.8.5
模块介绍
mod_xml_cdr模块默认编译安装,但没有加载。
检查conf/autoload_configs/modules.conf.xml文件。
<load module="mod_xml_cdr"/>
mod_xml_cdr模块会在通话结束后尝试通过http post发送xml格式的cdr到web服务器,发送失败之后写本地文件。
检查conf/autoload_configs/xml_cdr.conf.xml文件,重点关注以下几个配置。
<!-- the url to post to if blank web posting is disabled -->
<param name="url" value="http://10.55.55.137:8080/xml_cdr"/>
HTTP POST的地址,通话结束后优先尝试post xml格式的cdr到该地址。
<!-- Log via http and on disk, default is false -->
<param name="log-http-and-disk" value="true"/>
http和本地文件方式同时记录xml_cdr。
<!-- optional: if not present we do log the b leg -->
<!-- true or false if we should create a cdr for the b leg of a call-->
<param name="log-b-leg" value="true"/>
xml_cdr的话单包括B路话单,默认只有A路话单
测试
按照上面的配置修改并重启fs,测试呼叫,查看挂机后的xml_cdr情况。正常的结果应该是xml_cdr会同时在本地文件和web服务器写话单。
查看本地文件。
ll /usr/local/freeswitch/log/xml_cdr/
total 28
-rw-r--r--. 1 root root 10568 Jul 6 15:11 4f012c6a-1bcc-11ee-a6e6-77e7bc3f377f.cdr.xml
-rw-r--r--. 1 root root 14563 Jul 6 15:11 a_4f002b94-1bcc-11ee-a6dc-77e7bc3f377f.cdr.xml
查看web服务器收到的信息。
2023-07-06 15:11:37,940 root INFO http_server.py xml_cdr request, data=cdr=<?xml version="1.0"?>
<cdr core-uuid="09337ada-1bcc-11ee-a6d9-77e7bc3f377f" switchname="pxy137">
<channel_data>
<state>CS_REPORTING</state>
<direction>outbound</direction>
<state_number>11</state_number>
<flags>0=1;1=1;2=1;15=1;20=1;27=1;38=1;40=1;43=1;47=1;75=1;112=1;113=1;122=1</flags>
<caps>1=1;2=1;3=1;4=1;5=1;6=1</caps>
</channel_data>
<call-stats></call-stats>
<variables>
<direction>outbound</direction>
<uuid>4f012c6a-1bcc-11ee-a6e6-77e7bc3f377f</uuid>
...
2023-07-06 15:11:37,944 root INFO http_server.py xml_cdr request, data=cdr=<?xml version="1.0"?>
<cdr core-uuid="09337ada-1bcc-11ee-a6d9-77e7bc3f377f" switchname="pxy137">
<channel_data>
<state>CS_REPORTING</state>
<direction>inbound</direction>
<state_number>11</state_number>
<flags>0=1;1=1;15=1;20=1;38=1;40=1;43=1;47=1;75=1;113=1;122=1</flags>
<caps>1=1;2=1;3=1;4=1;5=1;6=1</caps>
</channel_data>
<call-stats></call-stats>
<variables>
<direction>inbound</direction>
<uuid>4f002b94-1bcc-11ee-a6dc-77e7bc3f377f</uuid>
...
总结
mod_xml_cdr模块对基础格式的话单起到了补充的作用,可以根据需求直接推送到web服务器,配置即可使用,还是挺方便的。
xml_cdr模块还可以记录话单推送的错误日志,并可以设置定时任务重推话单。
空空如常
求真得真
freeswitch的mod_xml_cdr模块的更多相关文章
- freeswitch的话单模块
概述 最近因为业务需要,在看freeswitch中话单相关的一些模块. 在voip的使用过程中,话单是重要的基础模块,涉及到计费和问题查找. 呼叫话单最重要的一点是稳定,不能有错误或遗漏. 本章对fs ...
- FreeSWITCH 加载模块过程解读
今天来学习FreeSWITCH 加载模块过程. 哪些模块需要编译,是由源码下的 modules.conf 文件决定的. 哪些模块在程序启动时自动加载,是由 freeswitch/conf/autolo ...
- freeswitch插件式模块接口实现方式
概述 freeswitch的外围模块是插件式的,可以动态的加载和卸载,使用起来非常的灵活和方便. 如果我们自己来设计一个开源的代码框架,相信这种插件式的模块结构是非常适合多人合作的模式. 本文对fs的 ...
- freeswitch的mod_curl模块
概述 有时候,我们需要在呼叫的过程中,或过程后调用web api接口. freeswitch的mod_curl模块可以很方便的实现web api的接口调用. mod_curl模块默认不安装,需要进入模 ...
- freeswitch使用mod_shout模块播放mp3
概述 freeswitch 在对VOIP语音通话中,可以通过playback命令播放IVR语音文件. 默认情况下,freeswitch支持wav文件,也可以直接播放VOIP中常见编解码的G711文件. ...
- freeswitch编译mod_av模块
需要先编译libav库 编译libav下载:git clone https://freeswitch.org/stash/scm/sd/libav.git cd libav ./configure - ...
- 《FreeSWITCH: VoIP实战》:SIP 模块 - mod_sofia
SIP 模块是 FreeSWITCH 的主要模块,所以,值得拿出专门一章来讲解. 在前几章时里,你肯定见过几次 sofia 这个词,只是或许还不知道是什么意思.是这样的,Sofia-SIP 是由诺基亚 ...
- freeswitch新增模块API
概述 上一章我们讲解了freeswitch的源码基本结构,以及如何新增一个插件式模块. freeswitch的架构非常适合这种业务开发模式,即以freeswitch的基本功能为开发平台,新增插件式模块 ...
- Freeswitch 添加可转码的G729编码
默认情况下Freeswitch自带的G729模块是pass-through-并不支持转码. 不过我们依然有个好奇的心, 所以我们决定添加一个支持G729转码的模块到Freeswitch. 1. 下载m ...
- Freeswitch配置之sofia
SIP模块 - mod_sofia SIP 模块是 FreeSWITCH的主要模块. 在 FreeSWITCH中,实现一些互联协议接口的模块称为 Endpoint.FreeSWITH支持很多的 End ...
随机推荐
- [ARC132E] Paw
题目链接 考虑最后形态,一定是有某一个区间 \([l,r]\) 保持初始的样子, \(l\) 前面都是 <,\(r\) 后面都是 >. 这个区间一定是某两个相邻圆点的位置.设 \(f_i\ ...
- [ABC282E] Choose Two and Eat One
Problem Statement A box contains $N$ balls, each with an integer between $1$ and $M-1$ written on it ...
- chrome浏览器出现《您的连接不是私密链接》
问题现象 键盘切换到英文输入 点击页面,就页面中间随意点一下即可 不是输入框!不是输入框!不是输入框! 不是找啦!不是找啦!不是找啦! 在chrome该页面上,直接键盘敲入这11个字符:thisisu ...
- 深入理解 Docker 核心原理:Namespace、Cgroups 和 Rootfs
通过这篇文章你可以了解到 Docker 容器的核心实现原理,包括 Namespace.Cgroups.Rootfs 等三个核心功能. 如果你对云原生技术充满好奇,想要深入了解更多相关的文章和资讯,欢迎 ...
- 数字孪生技术结合GIS系统能在农业领域作出什么改变?
数字孪生技术和地理信息系统(GIS)是两个独立但高度互补的领域,它们的结合在农业领域具有巨大的潜力,可以带来巨大的改变.在这篇文章中,我们将讨论数字孪生技术和GIS系统如何协同作用,为农业带来创新和可 ...
- ASR项目实战-架构设计
一般而言,业务诉求作为架构设计的输入. 需求清单 对于语音识别产品而言,需满足的需求,举例如下: 功能需求 文件转写. 长文件转写,时长大于60秒,小于X小时,X可以指定为5. 短文件转写,时长小于6 ...
- ElasticSearch之健康状态
参考Cluster health API. 命令样例,如下: curl -X GET "https://localhost:9200/_cluster/health?wait_for_sta ...
- Flutter Getx 路由管理
GetX 为我们封装了 Navigation ,无需 context 可进行跳转,使用 GetX 进行路由跳转非常的简单, 只需要调用 Get.to() 即可进行路由跳转, GetX 路由跳转简化了跳 ...
- curl使用小记(一)
目录 1. 概述 2. 实例 2.1. 访问网页 2.2. 显示头信息 2.3. 保存网页 2.4. 下载图片 2.5. 用户代理设置 2.6. 代理设置 3. 参考 1. 概述 curl也就是com ...
- 昇腾CANN DVPP硬件加速训练数据预处理,友好解决Host CPU预处理瓶
本文分享自华为云社区<昇腾CANN 7.0 黑科技:DVPP硬件加速训练数据预处理,友好解决Host CPU预处理瓶颈>,作者: 昇腾CANN . 随着人工智能的快速发展,越来越多的应用场 ...