XSwitch XCC API代码示例
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Seven Du 86161d4466 Merge pull request 'add 10000184' (#37) from add_10000184 into master 6 days ago
aiapi add aiapi stub 3 weeks ago
callcenter add callcenter README 2 weeks ago
csharp fix timeout 3 months ago
events add channel events 3 months ago
go add memberFilters 2 months ago
java spaces to tabs 3 months ago
lua add lua ivr example 2 weeks ago
nodejs add comment 3 months ago
nodejsv2 Initial Commit 3 months ago
python using simple ctrl_uuid by default 3 weeks ago
v Initial Commit 3 months ago
webrtc/es6 update readme 2 weeks ago
whip Initial Commit 3 months ago
.gitignore Initial Commit 3 months ago
LICENSE Initial Commit 3 months ago
README.md add 10000184 1 week ago

README.md

XSwitch API 示例代码

本仓库中有XSwitch的示例代码。大部分是XCC API示例代码,但随时时间发展,也可能会加入其它API示例。

XSwtch XCC API

XSwitch XCC API文档参见:https://xswitch.cn/docs/xswitch-xcc.html

本项目提供了Java、Go、V、Node.js、C#、Python等语言与NATS消息队列交互,完成与XSwitch通信的Demo示例。

  • go:Go语言示例
  • java:Java语言示例
  • nodejs:Node.js示例,使用NATS Node.js V1 SDK,使用回调机制
  • nodejsv2:Node.js示例,使用NATS Node.js V2 SDK,支持async/await
  • python:Python Mock
  • v:V语言示例

其中,nodejsv2目录中的示例比较简单,可以先从那里开始。nodejs目录中的示例比较全,示例代码也都比较详细,也比较简单,其它语言可以参照它来实现。更多信息参见各目录中的README。欢迎注册账号给我们贡献更多示例。

这些示例代码仅用于演示XCC API协议功能,为了便于学习,实现的比较简单,不推荐用于生产。欢迎联系我们获取XCC完整开发文档和技术支持。邮箱:info ..at.. x-y-t.cn

环境变量

大部分示例都支持以下环境变量,可以根据需要设置(如不设置,则有相应的默认值):

export NATS_URL=nats://127.0.0.1:4222
export XSWITCH_SUBJECT=cn.xswitch.node.test
export XCTRL_SUBJECT=cn.xswitch.ctrl

如果NATS服务器有密码保护,则可以使用如下格式:

export NATS_URL=nats://username:password@127.0.0.1:4222

注意nodejsv2客户端不支持在NATS_URL中输入密码,则可以使用如下方式:

export NATS_URL=nats://127.0.0.1:4222
export NATS_USER=username
export NATS_PASS=password

参考:https://docs.nats.io/using-nats/developer/connecting/userpass

XCC协议

XCC协议基于JSON-RPC实现,API描述使用Protobuf格式,参见:xctrl.proto

XCC协议基于NATS实现,可以从以下网址找到各语言的客户端库:https://nats.io/download/

使用XCC示例前,最好先跑通你熟悉的语言的客户端Pub/Sub示例。

调试NATS消息

在Mac上可以安装Go NATS客户端调试NATS消息

brew tap nats-io/nats-tools
brew install nats-io/nats-tools/nats
nats sub '>'

详见:https://github.com/nats-io/natscli

另外,如果你使用非加密的NATS连接,也可以直接抓包看NATS消息,如:

macOS:

brew install ngrep

Linux(Debian/Ubuntu):

apt-get install ngrep
ngrep -p -q -Wbyline port 4222

测试电话号码

为方便测试在RTS(rts.xswitch.cn)上增加了一些相应的测试号码实现一些测试场景。目前这些号码的使用没有限制,但是资源有限,请大家小心使用,如果大量测试建议自己搭建测试平台。

:RTS支持的测试号码列表

号码 说明
10000180 回180,振铃60秒超时,然后挂断
10000183 回183
10000184 回183 英国的回铃音
10000200 回200,无限循环
10000201 回201,持续时长1分钟
10000202 回201,持续时长2分钟
10000203 回200,持续时长62秒,播放小樱桃欢迎语
10000204 回200,持续时长30秒,播放华为广告语
10000210 回183,2秒后应答并放音,持续时长1分钟
10000211 回183,2秒后应答并放音,持续...
10000230 回183,2秒后应答并放音,持续...
10000277 振铃10秒,不接听挂断
10000400 回183,播放空号音
10000404 空号,回404
10000480 回复408 未振铃,没有ringing或者media事件
10000486 回183,播放您拨打的电话正忙
10000487 回183,播放您拨打的电话已关机
10000700 视频,回200,播放约一分钟
10000701 视频,回200,持续播放直至挂机
10000800 视频,RTSP,Big Buck Bunny
10000801 同上,无限循环播放

如果有需要可以增加更多号码。

在XCC中需要用到呼叫字符串时可以使用:

sofia/public/100000200@rts.xswitch.cn:20003
sofia/public/100000200@rts.xswitch.cn:20003;transport=tcp

你的FreeSWITCH中可以直接这样呼叫测试:

originate sofia/public/100000200@rts.xswitch.cn:20003;transport=tcp &echo
originate sofia/external/100000200@rts.xswitch.cn:20003;transport=tcp &echo

或配置如果Dialplan你就可以直接呼叫上述号码:

<extension name="RTS TEST NUMBERS">
    <condition field="destination_number" expression="^^(10000.*)$">
        <action application="bridge" data="sofia/external/$1@rts.xswitch.cn:20003;transport=tcp"/>
        </condition>
    </extension>

如果你使用的是XSwitch XUI图形界面,你可以这样做:

  • 加一条路由,被叫字冠:10000,位长:8,目的地类型:IP地址,目的地:rts.xswitch.cn:20003;transport=tcp,或
  • 加一条路由,被叫字冠:10000,位长:8,目的地类型:系统,内容::bridge sofia/public/10000200@rts.xswitch.cn:20003;transport=tcp

然后使用你本地的分机呼叫这些号码。

XSwitch AIAPI

参见aiapi/README

程序调试终极大法

在这里:http://www.freeswitch.org.cn/blog/2012/09/rubber-duck-problem-solving/