Обзор методов интеграции (AMI, ARI, AGI)

Мы подошли к критически важному этапу — организации взаимодействия Asterisk с внешним миром. После настройки отказоустойчивости в теме Планирование и настройка базового HA-кластера, пора разобраться, как передавать данные о звонках в сторонние приложения и управлять логикой вызовов извне.

В современной VoIP-инженерии выделяют три метода интеграции. Ошибка в выборе интерфейса «положит» производительность системы или заблокирует реализацию бизнес-задач.

Сравнительный анализ интерфейсов

Каждый метод занимает свой уровень в иерархии управления вызовом, как показано на Схеме 1.

КритерийAGIAMIARI
ВзаимодействиеСинхронное (блокирует канал)Асинхронное (события)Асинхронное (объекты)
Главная цельЛогика внутри диалпланаМониторинг и управлениеСвои приложения «с нуля»
Формат данныхPlain Text (Key-Value)Plain Text (Key-Value)JSON / REST / WebSocket
СложностьНизкаяСредняяВысокая

AGI (Asterisk Gateway Interface)

AGI (Asterisk Gateway Interface) позволяет запускать внешние скрипты прямо из диалплана. Когда Asterisk доходит до команды AGI(), он ставит обработку звонка «на паузу», запускает внешний процесс и ждет результат.

Это инструмент для быстрых точечных операций:

  • Проверить баланс в базе данных.
  • Узнать имя клиента в CRM.
  • Выполнить расчет, который сложно описать в extensions.conf.

Важно: Обычный AGI создает новый процесс в ОС на каждый звонок. При высокой нагрузке это съест ресурсы CPU и RAM. В продакшене используйте FastAGI — работу через TCP-сокет с постоянно запущенным сервисом. 🛠️

Как не «уронить» систему:

  • Хорошо: FastAGI-скрипт на Python за 10 мс возвращает ID менеджера.
  • Плохо: AGI делает тяжелый запрос к медленному API. Пока скрипт ждет ответа, канал «заморожен». Накопите 50 таких звонков — и АТС перестанет принимать новые вызовы.

AMI (Asterisk Manager Interface)

AMI (Asterisk Manager Interface) — это «пульт управления». В отличие от AGI, он работает асинхронно. Вы подключаетесь к порту 5038 и слушаете поток событий: кто зарегистрировался, кто поднял трубку, где произошел сбой.

Используйте AMI для:

  1. Мониторинга: Панели оператора (статусы занятости).
  2. Click-to-Call: Инициирование вызова через команду Originate.
  3. Управления: Принудительный разрыв или перевод звонка.

Доступ к AMI дает полный контроль над АТС. Обязательно ограничивайте доступ по IP (ACL) и используйте TLS-шифрование. 🛡️


ARI (Asterisk REST Interface)

ARI (Asterisk REST Interface) — самый мощный метод. Если AMI позволяет «наблюдать», то ARI позволяет «владеть». Вы забираете канал из диалплана в приложение Stasis и управляете его состоянием через REST API.

ARI незаменим для создания:

  • Динамических очередей и умных IVR.
  • Систем записи с аналитикой речи в реальном времени.
  • Собственных конференц-платформ.

Вы отправляете команды через HTTP-запросы, а события получаете через WebSocket. Это родная среда для веб-разработчиков (Node.js, Go, Python).


Как выбрать метод

Чтобы система не «захлебнулась» при росте нагрузки, используйте эту матрицу:

  1. Нужно быстро получить данные и продолжить диалплан?FastAGI.
  2. Нужно видеть статусы всех линий в реальном времени?AMI.
  3. Нужно написать приложение, которое само решает, как коммутировать абонентов?ARI.

Понимание этих различий отделяет администратора GUI от инженера Asterisk. В следующей теме мы перейдем к практике и разберем Примеры интеграции с CRM, где применим эти методы для реальных задач.

Понравился урок?

Сохраните прогресс и получите персональный курс по любой теме — без форм и паролей

Продолжить в Telegram