...

вторник, 3 июня 2014 г.

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

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

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


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



  • Asterisk

  • Bridges

  • Channels

  • Endpoints

  • Events

  • Recordings

  • Sounds

  • Applications

  • Playbacks

  • Devicestates

  • Mailboxes


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


Ну и главная фишка, это возможность подключения через 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])



Молодцы, что сказать :-)


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


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий