Asterisk app: AGI

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

Описание

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

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

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

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

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

FastAGI (удаленный) сервер, соответственно, получит HANGUP. Оба этих сигнала могут быть отключены установкой переменной 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

  • asterisk/app/agi.txt
  • Последние изменения: 2018/12/09