XCC API

Dialplan 接管

XSwitch 的mod_xcc模块中实现一个XCC Dialplan 接口,使用该 Dialplan 后,XSwitch 在每次查询 Dialplan 时都会向 Ctrl 发送request请求。


  • subject:cn.xswitch.ctrl
  • method:XCtrl.Dialplan

Ctrl 侧返回一个数组:

[
	{"app": "answer", "data":""}
	{"app": "echo"}
]

XSwitch 会顺序执行数组中的app,这些app都是 XSwitch 原生的 Application。

在实际应用中,有时候我们在发给Ctrl的Event.Channel事件中需要携带一些指定的通道变量,或者在使用或者中想新增一些新的通道变量,通常需要可以修改中间件ctrl,调用xcc api setvar来实现,但这样不够灵活,再比如想要对不同业务类型的呼叫携带不同的通道变量,对Ctrl来说比较复杂,因此因此我们发明了xset Application,xset可以很好的解决这些问题。使用xset后Ctrl 侧返回数据举例如下:

[
	{"app": "xset", "data":"key1"}
	{"app": "xset", "data":"key2=val2"}
	{"app": "answer", "data":""}
	{"app": "echo"}
]

可以看到上面例子中xset有两种不同的用法,两种不同的用法对应xset的两种模式:

  • 通道变量订阅模式:比如上面例子中的key1就是纯订阅模式,如果通道变量key1存在,那么后续的Event.Channel事件中将携带该通道变量对应的随路数据。

  • 设置通道变量并且订阅此变量模式:比如上面例子中的key2=val2,就是设置通道变量名为key2,值为va2,所以此模式等同于XSwith中的原生set Application + 上面的模式一。XSwitch会设通道变量key2,值为val2,并且后续返回的Event.Channel事件中将携带该通道变量对应的随路数据val2。

所以在实际生产中,可以根据需要,灵活的选择适合的模式。

API列表 接口说明