Asterisk Gateway Interface

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис

AGI (от англ. Asterisk Gateway Interface — «шлюзовой интерфейс Asterisk») — это инструментарий для запуска программ, написанных практически на любом языке программирования, из плана нумерации сервера IP-телефонной станции Asterisk. Связь между программой и сервером Asterisk осуществляется стандартными потоками ввода и вывода. Как правило, сценарии AGI используются для реализации расширенной логики, соединения с реляционными базами данных и доступа к другим внешним ресурсам. Передача управления внешнему сценарию AGI позволяет Asterisk без труда реализовать задачи, выполнение которых в противном случае было бы сложным или невозможным. Наиболее часто AGI используется для написания сложных систем IVR.

Программные интерфесы

Существует множество библиотек, значительно упрощающих процесс написания сценариев AGI. Наиболее интересные из них:

  1. phpagi
  2. Perl AGI Library
  3. CAGI
  4. NanoAGI
  5. PyST

Пример использования

Пример для 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)

Ссылки