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_ANSWERcn.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
通过 XCC 协议进行 RTC 信令控制,需要配合 UAS 使用。UAS 是一个 Go 语言开发的 Websocket Proxy,可以将 Verto 信令转换为 XCC 信令,进而支持 XSwitch 集群。