HowTo文档
如何在 XSwitch 中使用 XCC API
XSwitch XCC API 功能非常强大,几乎可以完全代替 ESL,并提供比 ESL 更多的功能,支持使用几乎所有语言进行二次开发。
安装 NATS
XSwitch 默认支持 XCC API,但你首先得有个 NATS。
NATS 是一个消息队列,支持 Pub/Sub。NATS 用 Docker 启动很简单,如:
docker run --name xswitch-nats --rm -p 4222:4222 nats:latest
为了验证 NATS 是否正常,可以使用 NATS 客户端工具测试,如,在 macOS 上执行:
brew tap nats-io/nats-tools brew install nats-io/nats-tools/nats
打开一个终端,订阅消息:
nats sub '>'
再打开一个终端,发布消息:
nats pub hello hello
关于 NATS 客户端在其它平台上的使用方法,可以参考https://github.com/nats-io/natscli。
使用 Docker Compose 启动 NATS
你也可以尝试把以下内容加到你的docker-compose.yaml
中然后使用 Docker Compose 管理你的 NATS 服务。
xswitch-nats: container_name: xswitch-nats image: nats:latest command: -p 4222 ports: - "${NATS_PORT:-4222}:4222" - "${NATS_HTTP_PORT:-8222}:8222"
配置 XSwitch 连接 NATS
打开菜单【高级】⇨【模块配置】⇨【XCC】⇨【xcc】,在 XCC-SETTINGS 部分找到nats-url
,设置为指向你的 NATS 服务器,如:
nats://xswitch-xcc:4222 nats://192.168.0.1:4222 nats://username:password@192.168.0.1:4222
点击上面的【重载】按钮重新加载模块。就可以连接到 NATS 上了。
如果你像上一节那样订阅了所有消息(使用>
作为主题通配符),那么你就可以看到 XSwitch 定期发的心跳消息。
配置订阅
为了能让你的应用给 XSwitch 发消息,你需要让 XSwitch 订阅消息。找到【XCC-SUBS】页签,可以看到里面默认订阅了cn.xswitch.node.$${core_uuid}
这个主题,这个$${core_uuid}
是随机生成的,每次 XSwitch 重启都会变(实际上这在云原生部署中是正确的姿势),你也可以订阅一个确定的主题,如cn.xswitch.node.test
等。
修改后要重载模块。
可以点击【详细信息】查看连接和运行状态。也可以在控制台上使用xcc status
命令查看。
然后,你就可以使用XCC Examples中的示例控制你的 XSwitch 了。
在命令行上执行命令
你也可以尝试在命令行上执行 XSwitch 中的命令,以status
命令为例:
开一个终端执行nats sub '>'
,开另一个终端执行如下命令,一切正常的话你应该能在第一个终端上看到命令回复的结果。
echo '{ "jsonrpc": "2.0", "id": "0", "method": "XNode.NativeAPI", "params": { "ctrl_uuid": "uuid", "cmd": "status" } }' | nats pub cn.xswitch.node.test
跟踪调试
使用nats sub '>'
命令订阅所有 NATS 消息,所有问题都一目了然。
在 XSwitch 控制台上可以使用xcc debug on 9
查看更详细的 NATS 消息日志。
其它
参阅XSwitch XCC API 手册获取更多信息。