ARI - Asterisk REST Interface
REST - Representational state transfer
REST - архитектура программного обеспечения для распределенных систем.
REST очень простой интерфейс управления информацией без использования каких-то дополнительных уровней. Каждая единица информации однозначно определяется глобальным идентификатором, таким как URL. Каждый URLимеет строго заданный формат.
Краткая история Asterisk API
На момент создания Asterisk, в 1999 году, был локальной Private Branch Exchange (PBX) и настраивался при помощи статических файлов конфигурации.
Этого достаточно для реализации базовых задач, но требовался механизм для управления вызовами Asterisk внешними приложениями. Поэтому были добавлены два API: Asterisk Gateway Interface(AGI)и Asterisk Manager Interface (AMI).
Эти два интерфейса имеют разные задачи:
- AGIпозволяет вызвать внешнее приложение (скрипт) из диаплана Asterisk и передать ему управление каналом. Интерфейс является синхронным - действия предпринятые через AGI не возвращаются, пока не будут завершены.
- AMIинтерфейс позволяющий внешнему приложению отправлять Asterisk команды и/или считывать события, через TCP/IP протокол. В отличие от AGI, AMIявляется асинхронным интерфейсом управления событиями. По большей части, AMIиспользуется для получения информации о состоянии каналов и инициирования вызовов.
Используя оба API, вместе, могут быть разработаны сложные приложения, использующие Asterisk.
Тем не менее, в то время как AMIхорошо на контролирует вызовы, а AGI позволяет удаленному процессу выполнять план набора, ни один из этих интерфейсов не позволяет разработчику создавать свои собственные телекоммуникационные приложения. По сути, не было APIобращающегося напрямую к примитивам (channels, bridges) в Asterisk, необходимого для простого создания таких приложений.
Для приложений, полноценно взаимодействующих с Asterisk, был создан интерфейс ARI.
ARI: API для создания телекоммуникационных приложений.
ARIпозволяет разработчикам приложений создавать мощные, телекоммуникационные приложения на любом языке программирования. ARIпредоставляет доступ ресурсам Asterisk, обычно используемым для работы с ключевыми модулями - channels, bridges, endpoints, media и т.д. - через интуитивно понятный интерфейс REST (Representational state transfer).
- Asterisk
- Bridges
- Channels
- Endpoints
- Events
- Recordings
- Sounds
- Applications
- Playbacks
- Devicestates
- Mailboxes
Являясь асинхронным интерфейсом, ARI передает состояние объектов и контролируется пользователем с помощью JSON событий через WebSocket.
Через контроль над фундаментальными ресурсами Asterisk, приложение написанное на любом языке, управляет логикой Asterisk.
ARIне замена для AMIили AGI. Скорее, он является дополнительным API:
- AGIпозволяет контролировать выполнение плана набора канала
- AMIвысокоуровневое управление вызовами.
- ARIпозволяет заменить DialPlan Asterisk на диалплан вашего собственного приложения.