Asterisk app: AGI

Выполнить приложение Aasterisk Gateway Interface (AGI) в канале вызова.

Описание

AGI позволяет Asterisk запустить внешнюю программу, написанную на любом языке, для контроля над каналами связи, воспроизведением аудио, чтения DTMF сигналов и др., связываясь с Asterisk через стандартный потоковый ввод/вывод - stdin/stdout:

AGI >>>-stdout->>> Asterisk 
Asterisk >>>-stdin->>> AGI

AGI приложение отправляет команды через <fc #800000>STDOUT</fc>,
Asterisk передает данные через <fc #800000>STDIN</fc>.

По состоянию версии Asterisk 1.6.x, выполнение диалплана будет продолжаться даже после завершения вызова, пока скрипт явно не сигнализирует прекратить, просто закрыв соединение или соответствующей командой.

Запущенный локально AGI скрипт получит сигнал <fc #800000>SIGHUP</fc>, при разъединении в канале, если только не используется DeadAGI

FastAGI (удаленный) сервер, соответственно, получит <fc #800000>HANGUP</fc>. Оба этих сигнала могут быть отключены установкой переменной Set(AGISIGHUP=no), непосредственно перед выполнением скрипта AGI.

Если же требуется, чтобы AGI приложение завершалось немедленно, после получения информации о разъединении канала, установите переменную Set(AGIEXITONHANGUP=yes)

Используйте команду agi show commands CLI, для получения полного списка команд AGI или agi show commands topic <command_name> для описания указанной команды:

*CLI> agi show commands

Приложение диалплана Asterisk AGI возвращает ${AGISTATUS} переменную с одним из следующих значений:

  • SUCCESS
  • FAILURE
  • NOTFOUND
  • HANGUP
Синтаксис

AGI(command,arg1,arg2,…)

$argv[1]
$argv[2]

Когда Asterisk запускает скрипт AGI, он подает переменные канала в скрипт через STDIN. Имена переменных начинаются с «agi_» и отделяются от значений двоеточием и пробелом. Хотя фактические имена переменных канала могут быть в верхнем регистре, но имена, передаваемые сценарием AGI всегда в нижнем регистре. Глобальные переменные не передаются в скрипт AGI. Для них используется команда AGI - get variable.

Переменные передаваемые из Asterisk в скрипт:

  • agi_request: Имя файла скрипта AGI.
  • agi_channel: Создаваемый канал.
  • agi_language: Язык используемый каналом.
  • agi_type: Тип (технология) создаваемого канала.
  • agi_uniqueid: Уникальный идентификатор (unique ID) вызова.
  • agi_version: Версия Asterisk (после Asterisk 1.6).
  • agi_calleridv: Номер caller ID (или “unknown”).
  • agi_calleridname: Имя caller ID (или “unknown”).
  • agi_callingpres: Презентация callerid.
  • agi_callingani2: Переменный ani2 PRI канала.
  • agi_callington: Тип номера а PRI канале.
  • agi_callingtns: An optional 4 digit number (Transit Network Selector).
  • agi_dnid: The dialed number id (or “unknown”).
  • agi_rdnis: The referring DNIS number (or “unknown”).
  • agi_context: контекст в extensions.conf.
  • agi_extension: Вызываемый номер (dnis).
  • agi_priority: приоритет диалплана.
  • agi_enhanced: Значение флага 1.0, если выполняется EAGI скрипт, иначе 0.0.
  • agi_accountcode: Аккаунт-код создаваемого канала.
  • agi_threadid: Thread ID AGI скрипта.
  • agi_arg_N: Аргумент, где N, номер аргумента(ARG1..)

См. также

Команды диалплана Asterisk

Только авторизованные участники могут оставлять комментарии.

Войти через: Google Facebook