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手册获取更多信息。

如何在XSwitch Docker镜像中添加你需要的东西