REST - Representational state transfer
REST - архитектура программного обеспечения для распределенных систем.
REST очень простой интерфейс управления информацией без использования каких-то дополнительных уровней. Каждая единица информации однозначно определяется глобальным идентификатором, таким как URL. Каждый URL имеет строго заданный формат.
На момент создания Asterisk, в 1999 году, был локальной Private Branch Exchange (PBX) и настраивался при помощи статических файлов конфигурации.
Этого достаточно для реализации базовых задач, но требовался механизм для управления вызовами Asterisk внешними приложениями. Поэтому были добавлены два API: Asterisk Gateway Interface(AGI) и Asterisk Manager Interface (AMI).
Эти два интерфейса имеют разные задачи:
Используя оба API, вместе, могут быть разработаны сложные приложения, использующие Asterisk.
Тем не менее, в то время как AMI хорошо на контролирует вызовы, а AGI позволяет удаленному процессу выполнять план набора, ни один из этих интерфейсов не позволяет разработчику создавать свои собственные телекоммуникационные приложения. По сути, не было API обращающегося напрямую к примитивам (channels, bridges) в Asterisk, необходимого для простого создания таких приложений.
Для приложений, полноценно взаимодействующих с Asterisk, был создан интерфейс ARI.
ARI позволяет разработчикам приложений создавать мощные, телекоммуникационные приложения на любом языке программирования. ARI предоставляет доступ ресурсам Asterisk, обычно используемым для работы с ключевыми модулями - channels, bridges, endpoints, media и т.д. - через интуитивно понятный интерфейс REST (Representational state transfer).
Являясь асинхронным интерфейсом, ARI передает состояние объектов и контролируется пользователем с помощью JSON событий через WebSocket.
Через контроль над фундаментальными ресурсами Asterisk, приложение написанное на любом языке, управляет логикой Asterisk.
ARI не замена для AMI или AGI. Скорее, он является дополнительным API:
Asterisk RESTful Interface (ARI) Swagger-UI
~~socialite~~