我最近将我们的 PBX 升级到了 Asterisk 13,希望新的 REST API 和 WebSockets 支持能够解决我们在通过 AMI 跟踪呼叫时遇到的一些问题。
我们正在构建一个 C# 应用程序,该应用程序将位于 Windows 工具托盘中,并在用户拨打或接听电话时通过查询我们的 CRM 来显示基于呼叫者 ID 的信息。
有人可以澄清是否可以通过 WS 订阅一个 WS 频道,该频道报告 PBX 上发生的所有(甚至只是扩展特定的)事件?
就目前取得的进展而言,我使用 Swagger 来探索 ARI,通过通道端点(例如http://10.0.0.1:8088/ari/channels?api_key=admin:secret
)返回的通道信息看起来很完美:
[
{
"id": "1466860766.240522",
"name": "PJSIP/905-00000c74",
"state": "Ring",
"caller": {
"name": "",
"number": "020xxx"
},
"connected": {
"name": "CID:020xxx",
"number": "07xxx"
},
"accountcode": "",
"dialplan": {
"context": "macro-dialout-trunk",
"exten": "s",
"priority": 22
},
"creationtime": "2016-06-25T14:19:26.040+0100",
"language": "en"
},
{
"id": "1466860766.240524",
"name": "SIP/siptrunk-000003fc",
"state": "Down",
"caller": {
"name": "CID:02033554047",
"number": "07xxx"
},
"connected": {
"name": "",
"number": "020xxx"
},
"accountcode": "",
"dialplan": {
"context": "ext-did",
"exten": "07xxx",
"priority": 1
},
"creationtime": "2016-06-25T14:19:26.264+0100",
"language": "en"
}
]
该通道信息以简洁、易于理解的格式为我们提供了我们所需的一切——PJSIP 通道(即分机)、状态、外线中继 CID 和正在拨打的外线号码。
但是,/events
据我所知,端点取决于您在 Asterisk 中创建一个“应用程序”(从我可以收集的会议之类的东西中收集?) - 尽管使用 wscat 和阅读文档尝试了两天我可以'看不到任何可以订阅 WS 频道的方式,该频道将为您返回类似于上述 JSON 的所有事件。
我是否误解了 Asterisk 13 支持 WS 背后的意图?不是为了这个目的吗?有没有更好的方法来实现我的目标而无需投票/channels
?任何帮助/指针表示赞赏。