XSwitch用户手册
XCC 设置
XCC 模块主要是实现控制 XSwitch,程序员不用纠结于 XSwitch 的内部逻辑,从更高的视角分析业务需求,进而调用合适的 API 进行控制。
XCC-SETTINGS
debug
:调试日志级别, 0~7。nats‑url
:NATS 的地址,如nats://127.0.0.1:4222
,如果不配置则不连接 NATS。publish‑events‑subject‑prefix
:事件的Subject
前缀,如.event
,将会变为cn.xswitch.ctrl.event.CHANNEL_ANSWER
之类。cdr‑format
:CDR
的格式,可以在CDR
中选一种格式,目前支持 CUSTOM。xml‑handler‑bindings
:XML 绑定,不同的Section
以│分隔,如directory│config
。cdr-subject
:CDR 事件名,如填写cn.xswitch.cdr
。
XCC-BINDINGS
绑定哪些事件。绑定的事件会向NATS
发送,如果设置为ALL
则会绑定所有事件。发送的Topic
可以由publish‑events‑subject‑prefix
参数改变,如:
cn.xswitch.ctrl.event.CHANNEL_ANSWER
cn.xswitch.ctrl.event.CUSTOM.sofia::register
如果你想订阅通话相关事件,可以绑定如下几个事件
CHANNEL_CREATE
//通话创建事件CHANNEL_STATE
//状态CHANNEL_ANSWER
//应答CHANNEL_HANGUP_COMPLETE
//挂机结束
XCC-CDR
挂机结束后话单指定事件,默认如下字段参数说明:
caller_id_name
//主叫号码destination_number
// 被叫号码uuid
//通话 uuidstart_stamp
//开始时间answer_stamp
//应答时间end_stamp
//结束时间duration
//总时长billsec
//计费时长hangup_cause
//挂机原因context
//呼叫源direction
//方向caller_id_name
//主叫名称
订阅事件示例
- 第一步:开启
mod_xcc
模块 - 第二步:点【高级配置】⇨【系统设置】⇨ XCC 修改相关参数并重载生效
参数设置:
- XCC-SETTINGS:
nats-url
设置(默认无须修改) - XCC-SETTINGS:
publish-events-subject-prefix
设置(定义订阅事件前缀,主要用于后续订阅需要统一),比如cn.xswitch.ctrl.events
,然后开启即可; - XCC-SETTINGS:
cdr-format
设置(话单格式),默认CUSTOM
即可,只需要开启 - XCC-SETTINGS:
cdr-subject
设置(话单订阅事件名,用于后续客户订阅话单信息),比如cn.xswitch.cdr
如下图所示:
- XCC-BINDINGS:CHANNEL_CREATE
- XCC-BINDINGS:CHANNEL_STATE
- XCC-BINDINGS:CHANNEL_ANSWER
- XCC-BINDINGS:CHANNEL_HANGUP_COMPLETE
如下图所示:
第三步:写订阅代码,现提供nodejs
下的 demo,如 events.js,代码如下:
const NATS = require('nats') // nats_url对应配置文件中nats‑url的值 let nats_url = process.env.NATS_URL console.log('Connecting to ' + nats_url) const nc = NATS.connect(nats_url) console.log('Event started, waiting ...') // controller handler 订阅事件,其中`cn.xswitch.ctrl.events`对应xcc配置文件中的`publish‑events‑subject‑prefix`中的值 nc.subscribe('cn.xswitch.ctrl.events', function (msg, reply, subject, sid) { console.log('Received a message: ' + subject) console.log(msg) }) function wait() { // console.log('tick ... '); setTimeout(wait, 3000) } wait() // Close connection // nc.close()
关于 XCC,请参阅《XSwitch XCC API 手册》,以及示例代码:https://git.xswitch.cn/xswitch/xcc-examples 。
XCC-RTC
todo