Asterisk. Команда AGI.

AGI() - Выполняет совместимое с AGI приложение.

[E]AGI(программа[,аргументы])
Выполняет для текущего канала совместимую с Asterisk Gateway Interface программу. Команда AGI позволяет в Asterisk запускать внешние программы, написанные на любом языке, для управления каналом связи, путем воспроизведения аудиофайлов, чтения DTMF-сигналов и т. д. Asterisk обменивается информацией с AGI-программой с помощью стандартных потоков ввода вывода STDIN и STDOUT.
В качестве программы должен быть задан исполняемый файл из базовой файловой системы. Путь к программе должен вести в папку AGI Asterisk, по умолчанию это /var/lib/asterisk/agi-bin/.
При необходимости выполнить AGI, на разъединенном канале (как для добавочного номера h), используется приложение DeadAGI(), вместо AGI() .
Если вы хотите выполнять доступ к входящему аудиопотоку из своей AGI-программы, вместо AGI() используйте приложение EAGI(). Тогда входящий аудиопоток может читаться в дескриптор файла 3.
Если происходит преждевременный разрыв соединения, процессу, запущенному командой AGI, будет послан сигнал HUP, извещающий о завершении соединения. Если ваша программа не перехватит этот сигнал, она будет завершена. Это поведение можно переопределить, задав для переменной канала AGISIGHUP значение 0:

Пример:

; вызываем демонстрационную AGI-программу
exten => 123,1,AGI(agi-test)
exten => 123,2,EAGI(eagi-test)

 

См. также: DeadAGI(), FastAGI()