概述

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模块的更多相关文章

  1. freeswitch的话单模块

    概述 最近因为业务需要,在看freeswitch中话单相关的一些模块. 在voip的使用过程中,话单是重要的基础模块,涉及到计费和问题查找. 呼叫话单最重要的一点是稳定,不能有错误或遗漏. 本章对fs ...

  2. FreeSWITCH 加载模块过程解读

    今天来学习FreeSWITCH 加载模块过程. 哪些模块需要编译,是由源码下的 modules.conf 文件决定的. 哪些模块在程序启动时自动加载,是由 freeswitch/conf/autolo ...

  3. freeswitch插件式模块接口实现方式

    概述 freeswitch的外围模块是插件式的,可以动态的加载和卸载,使用起来非常的灵活和方便. 如果我们自己来设计一个开源的代码框架,相信这种插件式的模块结构是非常适合多人合作的模式. 本文对fs的 ...

  4. freeswitch的mod_curl模块

    概述 有时候,我们需要在呼叫的过程中,或过程后调用web api接口. freeswitch的mod_curl模块可以很方便的实现web api的接口调用. mod_curl模块默认不安装,需要进入模 ...

  5. freeswitch使用mod_shout模块播放mp3

    概述 freeswitch 在对VOIP语音通话中,可以通过playback命令播放IVR语音文件. 默认情况下,freeswitch支持wav文件,也可以直接播放VOIP中常见编解码的G711文件. ...

  6. freeswitch编译mod_av模块

    需要先编译libav库 编译libav下载:git clone https://freeswitch.org/stash/scm/sd/libav.git cd libav ./configure - ...

  7. 《FreeSWITCH: VoIP实战》:SIP 模块 - mod_sofia

    SIP 模块是 FreeSWITCH 的主要模块,所以,值得拿出专门一章来讲解. 在前几章时里,你肯定见过几次 sofia 这个词,只是或许还不知道是什么意思.是这样的,Sofia-SIP 是由诺基亚 ...

  8. freeswitch新增模块API

    概述 上一章我们讲解了freeswitch的源码基本结构,以及如何新增一个插件式模块. freeswitch的架构非常适合这种业务开发模式,即以freeswitch的基本功能为开发平台,新增插件式模块 ...

  9. Freeswitch 添加可转码的G729编码

    默认情况下Freeswitch自带的G729模块是pass-through-并不支持转码. 不过我们依然有个好奇的心, 所以我们决定添加一个支持G729转码的模块到Freeswitch. 1. 下载m ...

  10. Freeswitch配置之sofia

    SIP模块 - mod_sofia SIP 模块是 FreeSWITCH的主要模块. 在 FreeSWITCH中,实现一些互联协议接口的模块称为 Endpoint.FreeSWITH支持很多的 End ...

随机推荐

  1. [ARC132E] Paw

    题目链接 考虑最后形态,一定是有某一个区间 \([l,r]\) 保持初始的样子, \(l\) 前面都是 <,\(r\) 后面都是 >. 这个区间一定是某两个相邻圆点的位置.设 \(f_i\ ...

  2. [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 ...

  3. chrome浏览器出现《您的连接不是私密链接》

    问题现象 键盘切换到英文输入 点击页面,就页面中间随意点一下即可 不是输入框!不是输入框!不是输入框! 不是找啦!不是找啦!不是找啦! 在chrome该页面上,直接键盘敲入这11个字符:thisisu ...

  4. 深入理解 Docker 核心原理:Namespace、Cgroups 和 Rootfs

    通过这篇文章你可以了解到 Docker 容器的核心实现原理,包括 Namespace.Cgroups.Rootfs 等三个核心功能. 如果你对云原生技术充满好奇,想要深入了解更多相关的文章和资讯,欢迎 ...

  5. 数字孪生技术结合GIS系统能在农业领域作出什么改变?

    数字孪生技术和地理信息系统(GIS)是两个独立但高度互补的领域,它们的结合在农业领域具有巨大的潜力,可以带来巨大的改变.在这篇文章中,我们将讨论数字孪生技术和GIS系统如何协同作用,为农业带来创新和可 ...

  6. ASR项目实战-架构设计

    一般而言,业务诉求作为架构设计的输入. 需求清单 对于语音识别产品而言,需满足的需求,举例如下: 功能需求 文件转写. 长文件转写,时长大于60秒,小于X小时,X可以指定为5. 短文件转写,时长小于6 ...

  7. ElasticSearch之健康状态

    参考Cluster health API. 命令样例,如下: curl -X GET "https://localhost:9200/_cluster/health?wait_for_sta ...

  8. Flutter Getx 路由管理

    GetX 为我们封装了 Navigation ,无需 context 可进行跳转,使用 GetX 进行路由跳转非常的简单, 只需要调用 Get.to() 即可进行路由跳转, GetX 路由跳转简化了跳 ...

  9. curl使用小记(一)

    目录 1. 概述 2. 实例 2.1. 访问网页 2.2. 显示头信息 2.3. 保存网页 2.4. 下载图片 2.5. 用户代理设置 2.6. 代理设置 3. 参考 1. 概述 curl也就是com ...

  10. 昇腾CANN DVPP硬件加速训练数据预处理,友好解决Host CPU预处理瓶

    本文分享自华为云社区<昇腾CANN 7.0 黑科技:DVPP硬件加速训练数据预处理,友好解决Host CPU预处理瓶颈>,作者: 昇腾CANN . 随着人工智能的快速发展,越来越多的应用场 ...