Asterisk Gateway Interface
AGI (от англ. Asterisk Gateway Interface — «шлюзовой интерфейс Asterisk») — это инструментарий для запуска программ, написанных практически на любом языке программирования, из плана нумерации сервера IP-телефонной станции Asterisk. Связь между программой и сервером Asterisk осуществляется стандартными потоками ввода и вывода. Как правило, сценарии AGI используются для реализации расширенной логики, соединения с реляционными базами данных и доступа к другим внешним ресурсам. Передача управления внешнему сценарию AGI позволяет Asterisk без труда реализовать задачи, выполнение которых в противном случае было бы сложным или невозможным. Наиболее часто AGI используется для написания сложных систем IVR.
Программные интерфесы
Существует множество библиотек, значительно упрощающих процесс написания сценариев AGI. Наиболее интересные из них:
Пример использования
Пример для NanoAGI
#include "src/agi.H"
int main()
{
AGI agi;
if(
agi.cmd("stream file hello-world 0")
< 0)
{
// cerr << agi.err;
return -1;
}
agi.cmd("hangup");
return 0;
}
Скомпилированый бинарный файл необходимо поместить в каталог ${astagidir}. Затем добавить в ${astetcdir}/extensions.conf следующую строку и перезагрузить план нумерации:
exten => _100,1,AGI(script)