使用WebSockets监视Asterisk上的呼叫13

时间:2016-06-25 13:29:50

标签: asterisk asteriskami asterisk-ari

我最近将我们的PBX升级到Asterisk 13,希望新的REST API和WebSockets支持可以解决我们通过AMI跟踪呼叫时遇到的一些问题。

我们正在构建一个C#应用程序,它将位于Windows工具托盘中,并在用户拨打或接听电话时通过查询我们的CRM来显示基于来电显示的信息。

有人可以澄清是否可以通过WS订阅报告在PBX上发生的所有(甚至只是特定于扩展程序)事件的WS频道?

就迄今取得的进展而言,我使用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,有没有更好的方法来实现我的目标?任何帮助/指示赞赏。

1 个答案:

答案 0 :(得分:1)

我认为Asterisk WebSockets支持用于WebRTC浏览器和Asterisk之间的互操作。使用WebSockets从Web浏览器传输SIP消息很常见(请查看SIPmlJSSip)。所以,它不是替代品。

更新:现在似乎Asterisk也使用了websockets for ARI,所以我的初步建议是错误的,抱歉。因此,根据another stack overflow question,您应该使用' application'。