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-nats: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镜像中添加你需要的东西