2015-01-22 4 views
0

Я работаю над звездочкой. Мне удалось вызвать внешний api с помощью dialplan. Теперь я хочу запустить javascript внутри этой функции api, потому что мне нужно уведомить браузер, который кто-то звонит. Я думаю, что я могу это сделать, используя node.js. Я не хочу использовать ajax-опрос, потому что это плохо.Запуск javascript внутри rest api

Ниже приведен процесс, когда кто-то звонит

Call -> Trigger диалплан -> Вызов внешнего API с помощью метода AGI -> запустить Javascript WebSocket события внутри апи -> уведомить браузер.

Возможно ли это? или есть намного лучший способ.

ответ

1

Ответ «да» - но это также зависит от API, который вы хотите использовать, и того, что вы пытаетесь выполнить.

Asterisk имеет три «основных» API: AMI, AGI и ARI. AMI и AGI существуют в течение длительного времени; ARI - интерфейс REST Asterisk - относительно новый. Цитирую из Asterisk wiki:

Не долго в проект, два интерфейсов прикладного программирования (API ) были добавлены к Asterisk: Gateway Interface Звездочка (AGI) и Звездочка менеджер Interface (AMI). Эти интерфейсы имеют различные цели:

  1. AGI аналогичен CGI в Apache. AGI обеспечивает интерфейс между диалпланом Asterisk и внешней программой, которая хочет, чтобы манипулировал каналом в диалплане. В общем случае интерфейс равен синхронным - действия, предпринятые по каналу из блока AGI, и не возвращаются до завершения действия.
  2. AMI обеспечивает механизм управления каналами в диалплане. В отличие от AGI, AMI - это асинхронный, управляемый событиями интерфейс. По большей части, АМИ не обеспечивает механизмы контроля исполнения канала - скорее, он содержит информацию о состоянии каналов и управления о том, где каналы исполняющего

В отличие от AMI и AGI, ARI - это все, что позволяет вам писать свои собственные приложения dialplan. Если вас это интересует, я настоятельно рекомендую вам проверить страницу вики, приведенную выше.

Выбранный вами API должен основываться на том, что вы хотите выполнить. Поскольку вы хотите выполнить вызов, вы действительно можете сделать это либо AMI (путем прослушивания какого-либо триггера события), либо через ARI (путем ввода канала в приложение dialplan Stasis, выполняющее специальное приложение node.js ARI).

Есть узел.JS библиотеки для обоих интерфейсов:

AMI

ARI

Смежные вопросы