Яндекс.Метрика

RealTime в Asterisk: архитектура и конфигурация

RealTime в Asterisk: архитектура и конфигурация с 5 октября по 9 октября

Количество
свободных мест

8 Записаться

Курсы по Mikrotik MTCNA

Курсы по Mikrotik MTCNA с 2 марта по 6 марта

Количество
свободных мест

4 Записаться

Курс по Zabbix

Zabbix: мониторинг Asterisk и VoIP с 2 марта по 6 марта

Количество
свободных мест

8 Записаться
ACI: async или почему agi — зло
27
Доклад
Сергей Лагута
ACI: async или почему agi — зло

ACI: async или почему agi — зло

AMI и AGI в Asterisk часто воспринимаются как источник проблем. Однако сами по себе эти инструменты не являются «злом». Большинство сложностей возникает из-за архитектурных ошибок и попыток использовать синхронные механизмы там, где они плохо масштабируются.

При корректном подходе AMI и AGI позволяют решать нетривиальные задачи, интегрироваться с внешними системами и строить сложную бизнес-логику поверх телефонии.

Почему AMI не является проблемой

AMI становится опасным в сценариях «запрос–ответ», когда приложение ожидает результат выполнения команды. В высоконагруженных системах это приводит к таймаутам и блокировкам.

При одностороннем использовании — когда команды отправляются без ожидания ответа — AMI работает стабильно и предсказуемо. Такой подход широко применяется для управления вызовами, перевода каналов в нужное состояние и запуска приложений.

Проблема заключается не в интерфейсе, а в выбранной модели взаимодействия.

Ограничения AGI и FastAGI

Классический AGI дал разработчикам свободу выбора языка и логики, но построен на синхронной модели. Пока AGI-скрипт выполняется, обработка вызова блокируется. При росте нагрузки это быстро приводит к деградации производительности.

FastAGI частично решает задачу, вынося выполнение на внешний сервер, но сохраняет ту же синхронность и зависимость от таймаутов. Медленный API или база данных по-прежнему способны повлиять на работу Asterisk.

В результате оба варианта требуют строгих ограничений и аккуратного применения.

Async AGI: асинхронная модель без блокировок

Async AGI предлагает другой подход. В этом режиме dialplan передаёт управление асинхронному приложению и не ждёт от него немедленного ответа. Вызов остаётся в «подвешенном» состоянии, но при этом не блокирует ресурсы Asterisk.

Управление таким вызовом осуществляется через AMI-команды, отправляемые в одну сторону. Нет необходимости дожидаться ответа — важен сам факт доставки команды. Это принципиально меняет модель взаимодействия и устраняет основную проблему синхронных AGI-скриптов.

Асинхронное приложение может:

  • выполнять длительные операции;
  • обращаться к внешним API и базам данных;
  • управлять вызовом в любой момент времени;
  • не зависеть от задержек сети или сторонних сервисов.

Цена за это — более сложная архитектура и необходимость продуманной логики управления состояниями.

Async AGI как альтернатива

Async AGI использует асинхронную модель: dialplan передаёт управление приложению и не ждёт немедленного ответа. Вызов остаётся активным, но ресурсы Asterisk не блокируются.

Управление осуществляется через AMI-команды, отправляемые в одну сторону. Приложение может в любой момент ответить на вызов, воспроизвести сообщение, выполнить дозвон или завершить сценарий.

Такой подход позволяет безопасно работать с медленными внешними сервисами и выполнять длительные операции без риска для стабильности системы.

Где Async AGI особенно полезен

Async AGI хорошо подходит для сценариев, где невозможно гарантировать быстрый ответ:

  • интеграция с внешними API клиентов;
  • работа с нагруженными базами данных;
  • фоновые вычисления и сложная бизнес-логика;
  • массовые и долгоживущие сценарии обработки вызовов.

При этом существующие AGI-скрипты часто можно адаптировать под асинхронную модель без полной переработки архитектуры, разбив логику на этапы.

Заключение

AMI и AGI — не зло сами по себе. Проблемы возникают тогда, когда синхронные интерфейсы используются в неподходящих сценариях и под высокой нагрузкой. Async AGI позволяет сохранить привычную модель управления вызовами, но избавиться от блокировок и зависимости от скорости внешних сервисов.

Этот подход не является универсальным решением, но в условиях ограниченного времени и ресурсов он даёт возможность снизить технический долг, повысить устойчивость системы и подготовить архитектуру к дальнейшему развитию — будь то ARI или другие современные интерфейсы.

 

Ежегодная конференция по Asterisk 2025!

Билеты уже в продаже!

Остались вопросы?

Я - Кондрашин Игорь, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

Наши
клиенты

Посмотреть все