Обзор методов интеграции (AMI, ARI, AGI)
Мы подошли к критически важному этапу — организации взаимодействия Asterisk с внешним миром. После настройки отказоустойчивости в теме Планирование и настройка базового HA-кластера, пора разобраться, как передавать данные о звонках в сторонние приложения и управлять логикой вызовов извне.
В современной VoIP-инженерии выделяют три метода интеграции. Ошибка в выборе интерфейса «положит» производительность системы или заблокирует реализацию бизнес-задач.
Сравнительный анализ интерфейсов
Каждый метод занимает свой уровень в иерархии управления вызовом, как показано на Схеме 1.
| Критерий | AGI | AMI | ARI |
|---|---|---|---|
| Взаимодействие | Синхронное (блокирует канал) | Асинхронное (события) | Асинхронное (объекты) |
| Главная цель | Логика внутри диалплана | Мониторинг и управление | Свои приложения «с нуля» |
| Формат данных | 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 для:
- Мониторинга: Панели оператора (статусы занятости).
- Click-to-Call: Инициирование вызова через команду
Originate. - Управления: Принудительный разрыв или перевод звонка.
Доступ к 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).
Как выбрать метод
Чтобы система не «захлебнулась» при росте нагрузки, используйте эту матрицу:
- Нужно быстро получить данные и продолжить диалплан? — FastAGI.
- Нужно видеть статусы всех линий в реальном времени? — AMI.
- Нужно написать приложение, которое само решает, как коммутировать абонентов? — ARI.
Понимание этих различий отделяет администратора GUI от инженера Asterisk. В следующей теме мы перейдем к практике и разберем Примеры интеграции с CRM, где применим эти методы для реальных задач.
Понравился урок?
Сохраните прогресс и получите персональный курс по любой теме — без форм и паролей
Продолжить в Telegram