Asterisk

AGI (Asterisk Gateway Interface) - интерфейс взаимодействия с внешними скриптами


источник: http://www.voip-info.org/wiki/view/Asterisk+AGI


AGI (Asterisk Gateway Interface) - интерфейс взаимодействия с внешними скриптами


AGI - это встроенный в Asterisk метод выполнения внешних скриптов (по аналогии с CGI для http серверов), который может расширить функциональность asterisk при помощи других языков программирования. Таких, как: Perl, PHP, C, Pascal, Bourne Shell - все зависит от Вашего желания и умения.


Новое в Asterisk v1.2.11: GET VARIABLE может теперь находить глобальные переменные (смотри баг 7609)
Новое в Asterisk v1.2: CallerID, возвращаемый в agi_callerid и agi_calleridname, вместо одного параметра, содержат оба.

В целях отладки AGI скриптов Вы можете использовать CLI команду: "agi debug".

Команды


Совершение исходящих вызовов

Если AGI приложения совершают исходящий вызов, то скрипт возвращает управление в план набора и теряет связь с сервером asterisk. Этот скрипт продолжает самостоятельно выполняться в фоновом режиме и может производить любые действия после инициации исходящего вызова.

Если Вам нужно, чтобы Ваше приложение было инициатором исходящего вызова, без использования плана набора, то это можно сделать следующими способами:

Использование интерфейса AGI

Работа Agi скрипта начинается с передачи списка переменных, связанных с екстеншеном, через поток стандартного ввода (stdin) AGI приложения. После этого, это приложение отправляет серверу Asterisk специальные команды AGI интерфейса через стандартный поток вывод (stdout) и получает результаты выполнения этих команд, через поток стандартного ввода (stdin).

Вызываемому Вами AGI скрипту вы можете передать один или несколько аргументов. Для этого используйте синтаксис: AGI(script.agi|arg1|arg2|..).

Команды AGI



Языки программирования для создания AGI скриптов.


Java (не путать с JavaScript smile )


Perl



PHP


Python


Ruby


C


C#


Bash и Ash


Замечания

Вывод в CLI консоль


>>По некоторым причинам, мой AGI perl скрипт не может выводить сообщения в консоль CLI,
>>используя стандартный поток вывода ошибок (stderr). Я запустил тестовый скрипт
>>agi-test.agi, который идет в поставке вместе с asterisk, и выяснил, что проблема
>>не в коде скрипта. Asterisk всегда запускается с четырьмя или более параметрами
>> "-v", но в CLI консоли ничего не выводиться. Имеются ли для этой проблемы
>>какие-нибудь значительные изменения в интерфейсе AGI в cvs-head версии?
>>Я использую Asterisk CVS-D2005.08.05.
>
>Это известная проблема. Сервер Asterisk принимает сообщения через STDERR
>от AGI скриптов только в ту консоль (tty) где запущен сам Asterisk. Вы можете
>переключить актуальную консоль сервера Asterisk, например на tty9 или запустив
>сервер без использования фонового режима, например, так: "asterisk -cvvv".
>
>Это незначительная проблема для большинства пользователей.


Мы запускаем сервер asterisk в отключенном (detached) экране, используя утилиту GNU screen. Мы используем флаг 'L' для ведения логов в текстовый файл, по необходимости.
Выполняя команду "screen -r", мы в любое время можем получить CLI консоль сервера asterisk, если это необходимо.

/usr/bin/screen -L -d -m -S asterisk /usr/sbin/asterisk -vvvvvvvvvvvvvvvvvvvvvgc

Смотри: http://www.gnu.org/software/screen/


Некоторые заметки




Оригинал: http://www.voip-info.org/wiki/view/Asterisk+AGI

© 2008 — 2012 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH