Использование WebSockets для мониторинга звонков на Asterisk 13

Я недавно обновил нашу УАТС до Asterisk 13, в надежде, что новый REST API и поддержка WebSockets решат некоторые проблемы, которые у нас были с отслеживанием вызовов через AMI.

Мы создаем приложение на C#, которое будет находиться на панели инструментов Windows и отображать информацию на основе идентификатора вызывающего абонента, запрашивая нашу CRM всякий раз, когда пользователь выполняет или получает вызов.

Может кто-нибудь уточнить, можно ли через WS подписаться на канал 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 выше.

Я неправильно понимаю намерения поддержки WS с Asterisk 13? Разве это не предназначено для этой цели? Есть ли лучший способ достичь своей цели без опроса /channels? Любая помощь / указатели приветствуются.

1 ответ

Я думаю, что поддержка Asterisk WebSockets предназначена для взаимодействия между браузером WebRTC и Asterisk. Обычно для передачи сообщений SIP из веб-браузера используются WebSockets (посмотрите на SIPml и JSSip). Так что это не замена ами.

Обновление: похоже, что теперь Asterisk также использует websockets для ARI, поэтому мое первоначальное предложение неверно, извините. Итак, в соответствии с другим вопросом переполнения стека, вы должны использовать "приложение".

Другие вопросы по тегам