1

最近、PBX をアスタリスク 13 にアップグレードしました。これは、新しい REST API と WebSockets のサポートによって、AMI を介した呼び出しの追跡で発生していたいくつかの問題が解決されることを期待してのことです。

Windows ツール トレイに常駐し、ユーザーが電話をかけたり受けたりするたびに CRM にクエリを実行して、発信者 ID に基づいて情報を表示する C# アプリケーションを構築しています。

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 を使用してさまざまなことを試し、ドキュメントを読むことの 2 日間にもかかわらず、私はできます。上記の JSON と同様に、すべてのイベントを返す WS チャネルにサブスクライブできる方法はありません。

Asterisk 13 での WS サポートの背後にある意図を誤解していますか? この目的のためのものではありませんか?ポーリングせずに私の目的を達成するためのより良い方法はあり/channelsますか? ヘルプ/ポインタをいただければ幸いです。

4

1 に答える 1

1

Asterisk WebSockets のサポートは、WebRTC ブラウザーと Asterisk の間の相互運用を目的としていると思います。WebSockets を使用して Web ブラウザーから SIP メッセージを転送するのが一般的です ( SIPmlおよびJSSipを参照)。というわけで、アミ替えではありません。

更新: 現在、アスタリスクは ARI にも websockets を使用しているようです。そのため、私の最初の提案は間違っています。申し訳ありません。したがって、別のスタック オーバーフローの質問によると、 「アプリケーション」を使用する必要があります。

于 2016-06-29T10:29:16.080 に答える