XSwitch用户手册
话单管理
一个运营平台往往需要有一个记录话单的能力,方便后续的计费提供数据支持。XSwitch 可支持话单写入远程 HTTP 服务器,即你现在看到的 web 端提供的话单状况。
XUI 采用mod_cdr_csv
模块可以记录 CSV 格式话单。
因此,正式启用话单功能时,请确保mod_cdr_csv
模块已加载启用。
话单
话单界面显示所有通话话单信息,点击【话单】即可查看详细信息。
页面右侧显示时间轴,根据各自需求随时查询近期内 7 天、15 天或一个月的通话情况。点击【更多】,可进行条件查询。
会议话单、fifo 话单、callcenter 话单等可在对应的【会议】或【呼叫中心】中查找对应话单。
话单配置
话单配置为话单模块配置文件界面,通常使用默认配置,非必要不修改(如果比较熟悉 FS 配置,可根据场景需要修改)。
话单推送
话单模块直接推送
话单推送目前支持 JSON 以及 XML 格式推送,分别对应mod_json_cdr
以及mod_cdr_xml
两个模块。
如需话单推送,请确保上述模块已被加载。
使用mod_json_cdr
模块实现话单推送,推送地址配置在【高级】⇨【系统管理】⇨【参数】中,找到JSON-CDR-SETTINGS
(通过右上角搜索按钮可按域搜索),点击进入详情页,修改url对应的值,并启动即可。
在【高级】⇨【模块配置】⇨【系统模块】中,找到mod_json_cdr
点击启用变为是,并点击右侧“加载”即可。 修改完成后,重载即可。
<param name="url" value="http://localhost/cdr_curl/post.php"/>
使用mod_cdr_xml
模块实现话单推送,推送地址配置在【高级】⇨【系统管理】⇨【参数】中,找到XML-CDR-SETTINGS
(通过右上角搜索按钮可按域搜索),点击进入详情页,修改url对应的值,并启动即可。
在【高级】⇨【模块配置】⇨【系统模块】中,找到mod_xml_cdr
点击启用变为是,并点击右侧“加载”即可。
当然也可以直接参考【AI】界面中话单推送方法或【XCC】订阅方式。
AI 推送方式
方法一
打开【AI】界面,进入详情页面,找到Settings
部分,修改post-event-url
对应的值(填入需要将事件推送到的地址)。找到Bindings
部分,开启参数CHANNEL_DESTROY
,值为ALL
,关掉其他参数。
填写成功后点击右上角【重载】按钮即可。也可在【高级】⇨【模块配置】⇨【系统模块】中找到mod_ai
,然后点击后面的【重载】(如果没有此模块,将此模块添加进去后加载即可)。
通过此方法是将 FreeSWITCH 原始挂机事件推送的方式实现话单推送。这种方法获取到的话单为原始话单,可根据需要摘选所需参数即可。
方法二
在指定路由详情里添加 AI 参数,
<action application="set" data="execute_on_originate=ai_channel_state_originate"/> <action application="set" data="execute_on_ring=ai_channel_state_ring"/> <action application="set" data="execute_on_media=ai_channel_state_media"/> <action application="set" data="execute_on_answer=ai_channel_state_answer"/>
如下图所示:
打开【AI】界面,进入详情页面,找到Settings
部分,修改post-event-url
对应的值(填入需要将事件推送到的地址)。找到Bindings
部分,开启参数CUSTOM
,值ai::channel-state
,关掉其他参数。
填写成功后点击右上角【重载】按钮即可。
此方法会获取到经过该路由的通话从振铃到挂机所有事件,和原始事件不同,该方法获取的事件信息经过系统处理后字段更为简洁。
XCC 订阅方式
XCC 订阅方式,需要确保已启用 NATS 服务(参考 XCC 文档)。
第一步:配置 XCC 参数
点击【高级】⇨【模块配置】⇨ XCC,进入 XCC 详情页面,查找如下两个参数,确保该参数已开启。
参数:
- XCC-SETTINGS:
cdr-format
设置(话单格式),默认CUSTOM
即可,只需要开启 - XCC-SETTINGS:
cdr-subject
设置(话单订阅事件名,用于后续客户订阅话单信息),比如cn.xswitch.cdr
如下图所示:
第二步:启动订阅服务
使用熟悉的后端语言,参考 XCC 文档,启动订阅程序。当有通话结束时,该服务即可订阅到对应话单。
nodejs
订阅部分代码参考如下:
const NATS = require('nats') let nats_url = 'nats://demo:demxxxxx@nats.xswitch.cn:xxx' const nc = NATS.connect(nats_url) console.log('Event started, waiting ...') console.log(new Date().toISOString()) // controller handler const events_subject = 'cn.xswitch.cdr' nc.subscribe(events_subject, function (msg, reply, subject, sid) { console.log(new Date().toISOString(), 'Received a message: ' + subject) console.log(msg) })