XCC API
配置文件
配置文件为xcc.conf
,包含以下几个部分。
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 的格式,固定为CUSTOM
。cdr-subject
:CDR 专门的 Subject,用于将 CDR 送到专门的 Subject 上,如果不配置默认送到 Channel 对应的 Controller 上。xml-handler-bindings
:XML 绑定,不同的 Section 以|
分隔,如directory|config
。loki-push-url
:loki 接受 log push 的地址,如http://127.0.0.1:3100/loki/api/v1/push
,配置该参数则表示日志消息直接推送到 loki。如不配置则日志使用消息队列的方式向 loki 推送日志。 注意:/api/prom/push
已经弃用,使用/loki/api/v1/push
loki 文档。loki-send-gap
:integer
推送时间间隔,单位毫秒。超过这个时间间隔会推送所有缓存的日志 默认值 1000 毫秒。loki-max-log-cache-count
:integer
缓存日志最大的条数,超过这个数量会将缓存日志推送到 loki 默认值 20。loki-max-log-cache-mem-size
:integer
缓存日志最大内存占用值,单位是kb
,超过这个内存占用会将缓存的日志推送到 Loki,默认值为 4。loki-cache-queue-size
:integer
缓存队列容量 默认值 300。node-name
:节点名称,会被用作外发事件中的node_uuid
部分,如果不填则默认为系统的core-uuid
。status-ctrl-subject
:将 Node 状态事件发送到该主题,默认为cn.xswitch.status.node
。之所以发到单独的主题上与cn.xswitch.ctrl
分开,主要原因是cn.xswitch.ctrl
一般是以queue
方式订阅的,在 ctrl 侧有多节点的情况下无法同时收到这些状态通知。相关的事件有:- Event.NodeRegister
- Event.NodeUnregister
- Event.NodeUpdate
bindings
事件绑定。绑定的事件会向 NATS 发送,ALL
会绑定所有事件。
发送的 Topic 可以由publish-events-subject-prefix
参数改变,如:
cn.xswitch.ctrl.event.dtmf
cn.xswitch.ctrl.event.channel_answer
cn.xswitch.ctrl.event.custom.sofia::register
cn.xswitch.ctrl.event.custom.conference::maintenance
通话相关事件可绑定如下事件:
CHANNEL_CREATE
//通话创建事件CHANNEL_STATE
//状态CHANNEL_ANSWER
//应答CHANNEL_HANGUP_COMPLETE
//挂机结束
subs
向 NATS 订阅。
name
:Topic,可以是任意合法的 NATS Subject 或 Kafka Topic。其中 NATS 支持queue
订阅。queue
:如果参数存在则在 Queue 方式订阅,即在集群订阅时,同一个 Queue 的订阅只会有一个订阅者收到。
cdr
CDR 参数。CDR 格式。
leg
:a | b | ab
,记录哪条腿的话单。name
:出现在 JSON 中的字段名。value
:对应 FreeSWITCH 中通道变量的字段名。
如:
<cdr leg="a"> <param name="caller_id_name" value="caller_id_name"/> <param name="caller_id_number" value="caller_id_number"/> <param name="cid_number" value="caller_id_number"/> <!-- 别名 --> </cdr>
channel-params
通道相关参数。为了节省带宽,XSwitch 仅在 Channel 事件中携带很少的必要的信息,但如果在特定的场景中需要更多的信息,则可以通过配置从通道变量中获取。这些信息将显示在 Channel 事件的params
对象中,所有数据均为字符串。
name
:显示在 JSON 对象params
字段中的名称,建议与value
一致value
:XSwitch 通道变量名称,可以通过“|
”指定另一个变量,当“|
”前面的不存在时,尝试从第二个变量获取default_value
:可以指定一个默认值。特殊情况下使用,一般没有什么意义,不推荐使用。
如:
<channel-params> <param name="user_uuid" value="user_uuid"/> <param name="user_domain" value="user_domin"/> <param name="context" value="context|first_dialplan_context"/> </channel-params>
以下链接中包含一个常用通道变量列表,其中,上述配置中的value
字段对应表格中的“channel variable name”列:
https://freeswitch.org/confluence/display/FREESWITCH/Channel+Variables
dialplan-params
Dialplan 请求参数,附加在 Dialplan 请求中。name
和value
的含义与channel-params
中相同。如:
<dialplan-params> <param name="cid_name" value="caller_id_name"/> <param name="cid_number" value="caller_id_number"/> <param name="dst_number" value="destination_number"/> <param name="context" value="context"/> <param name="direction" value="direction"/> </dialplan-params>