概述

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. serdes 复制时钟

    serdes复制时钟一般指的是,将rx lane的CDR 恢复时钟发送给TX/PLL, 这样rx和tx的时钟频偏就一致,在远端环回时经常用到.RX,TX时钟同频后环回数据就可以畅通发出去,否则RX/T ...

  2. [ICPC2015WF] Tours

    题目描述 The Arca Carania Mountain national park is opening up for tourist traffic. The national park ha ...

  3. [ABC265A] Apple

    Problem Statement A fruit store sells apples. You may perform the following operations as many times ...

  4. [ABC263F] Tournament

    Problem Statement $2^N$ people, numbered $1$ to $2^N$, will participate in a rock-paper-scissors tou ...

  5. Java中获取Class对象的三种方式

    在Java中,我们经常需要获取某个类的Class对象,以便进行反射操作.动态加载类或者获取类的信息.本文将介绍Java中获取Class对象的三种常见方式. 1. 使用.class语法 获取Class对 ...

  6. 组合式api-计算属性computed的使用

    计算属性在vue3中和vue2的思想概念都是一样,唯一区别就是在使用组合式api时候的语法稍有不同. 使用步骤: 导入computed函数 import {computed} from 'vue' 使 ...

  7. X2加密的PcbDoc类型导出内容有误,不加密的PcbDoc导出的表格正常

    出现该类问题说明读取PcbDoc文件文件出了文件,加密类型添加tmp类型即可

  8. 五菱宝骏车机升级教程【嘟嘟桌面或ES文件管理器】

    文章来源:https://www.djww.net/607.html 简介 越来越多的汽车厂商自研车机系统,其实就是在原来安卓的基础上加入自己的元素,然后禁用某些功能从而实现禁止用户安装第三方app. ...

  9. 华为云FusionInsight MRS:千余节点滚动升级业务无中断

    摘要:滚动升级作为大集群数据底座的必备能力,能够完美解决了传统大数据平台操作繁琐.业务停机.升级成本高等问题,实现一个架构的持续演进,业务无中断. 华为开发者大会2021(Cloud)大会期间,由华为 ...

  10. 带你读AI论文:SDMG-R结构化提取—无限版式小票场景应用

    摘要:在文档图像中提取关键信息在自动化办公应用中至关重要.传统基于模板匹配或者规则的方法,在通用性方面.未见过版式模板数据方面,效果都不好:为此,本文提出了一种端到端的空间多模态图推理模型(SDMG- ...