В Asterisk версии 12 появился REST интерфейс (Asterisk REST Interface — ARI)

от автора

В Asterisk версии 12 появился REST интерфейс (Asterisk REST Interface — ARI).

Да, это RESTful API в натуре.

Пока имеются следующие ресурсы:

Asterisk 12 REST Data Models
Asterisk 12 Asterisk REST API
Asterisk 12 Bridges REST API
Asterisk 12 Channels REST API
Asterisk 12 Endpoints REST API
Asterisk 12 Events REST API
Asterisk 12 Recordings REST API
Asterisk 12 Sounds REST API
Asterisk 12 Applications REST API
Asterisk 12 Playbacks REST API
Asterisk 12 Devicestates REST API
Asterisk 12 Mailboxes REST API

Или, интерфейсы к Каналам, Девайсам, Бриджам, Записям, Звукам. Вероятно, будут наращивать мощности 🙂

Ну и главная фишка, это возможность подключения через WebSocket на /ari/events и в режиме постоянного соединения получать события.
В отличие от AMI, тут гуляют объекты в JSON формате, и работать с событиями крайне удобно.
Например, оригинация звонка выглядит так:

data = {     'endpoint': 'SIP/%s' % provider,     'extension': number,     'context': 'out',     'priority': '1',     'channelId': channel_id,     'timeout': '60', }  ret = ari_post('channels', data=data) 

События самые разные. В том числе можно по GET сгенерировать событие, и самому получить его как UserEvent через WebSocket. Так сказать, Asterisk как шина передачи данных -{P

Подключение звонка в WebSocket приложение делается из диалплана командой Stasis.

Вот так выглядит диалплан:

exten => 1,1,Wait(1.5) same => n,Stasis(dialer) ; dialer is the name of the application same => n,Wait(2) same => n,Hangup() 

Из WebSocket’а можно выйти через вызов /channels/{channelId}/continue, и управление из WebSocket’a перейдет обратно в диалплан Asterisk’a.

Это как будто AMI и AGI в одном флаконе.

Кстати, имеется вкуснейшая плюшка в виде браузера по API.

Вот скриншот:

image

Ну и поглядев внимательно на API, надумал пачку UseCases:

  • Providers monitoring
  • Call spy
  • Conference manager
  • User device monitoring
  • Recording manager

Monitor ^ Spy ^ Record ^ Conference ^ Dialer

Похоже на переход на другой уровень.

Asterisk12 сохраняя телефонный комбайн для админа, дает разработчику приближенный по удобству интерфейс не хуже FreeSWITCH. IMHO. Там XML, тут JSON.

А если вспомнить о функции CURL, то получается, у диалплана вырастают тааакие руки 🙂

*CLI> core show function CURL    -= Info about function 'CURL' =-   [Synopsis] Retrieves the contents of a URL  [Description]   url       - URL to retrieve   post-data - Optional data to send as a POST (GET is default action)   [Syntax] CURL(url[,post-data])  

Молодцы, что сказать 🙂

Главные ссылки:

ссылка на оригинал статьи http://habrahabr.ru/post/225007/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *