Интерфейс шлюза Asterisk ( AGI ) — это программный интерфейс и протокол связи для управления на уровне приложений выбранными функциями УАТС Asterisk .
AGI позволяет внешней, написанной пользователем программе, запущенной из плана набора Asterisk через каналы , управлять телефонными операциями на связанных с ним каналах управления и голосовых каналах. Это похоже на функцию CGI веб-серверов , позволяя использовать любой язык для написания внешней программы, которая взаимодействует с Asterisk через stdin и stdout .
В то время как первоначальный набор функций AGI включал только процедурное управление операциями Asterisk посредством команд и ответного подтверждения, Enhanced AGI (EAGI) также обеспечивал внеполосный доступ к входящему аудиопотоку.
FastAGI — это расширение AGI, которое позволяет внешней программе работать на отдельном сетевом хосте, чтобы избежать накладных расходов на создание нового процесса для каждого вызова на сервере Asterisk. Он использует сокет TCP для связи с внешним хостом, который обеспечивает функцию службы AGI, в манере клиент-серверной модели . TCP-порт по умолчанию для FastAGI — 4573. [1] Подобно унифицированным идентификаторам ресурсов HTTP (URI ) , FastAGI использует формат URIagi://имя_хоста[:порт][/программа/путь].
Набор функций AGI Asterisk реализован как загружаемый модуль Asterisk ( res_agi ). Доступ к функциям может осуществляться через различные интерфейсы прикладного программирования на различных языках, таких как phpagi, Perl AGI Library, CAGI, NanoAGI и PyST.