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