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
- agi 'answer' - Ответить на вызов.
- agi 'asyncagi break' - Прервать Async AGI
- channel_status - Получить статус соединения (канала).
- database_del - Удалить ключ/значение внутренней БД Asterisk.
- database_deltree - Удалить keytree/value внутренней БД Asterisk.
- database_get - Получить значение внутренней БД Asterisk.
- database_putДобавить/вставить данные во внутреннюю БД Asterisk.
- exec - Выполнить команду диалплана Asterisk.
- get_data - Приготовиться получать DTMFсигналы из канала.
- get_full_variable - Evaluates a channel expression
- get_option - Stream file, prompt for DTMF, with timeout.
- get_variable - Gets a channel variable.
- hangup - Hangup a channel.
- noop - Does nothing.
- receive_char - Receives one character from channels supporting it.
- receive_text - Receives text from channels supporting it.
- record_file - Records to a given file.
- say_alpha - Says a given character string.
- say_digits - Says a given digit string.
- say_number - Says a given number.
- say_phonetic - Says a given character string with phonetics.
- say_date - Says a given date.
- say_time - Says a given time.
- say_datetime - Says a given time as specified by the format given.
- send_image - Sends images to channels supporting it.
- send_text - Sends text to channels supporting it.
- set_autohangup - Autohangup channel in some time.
- set_callerid - Sets callerid for the current channel.
- set_context - Sets channel context.
- set_extension - Changes channel extension.
- set_music - Enable/Disable Music on hold generator
- set_priority - Set channel dialplan priority.
- set_variable - Sets a channel variable.
- stream_file - Sends audio file on channel.
- control_stream_file - Sends audio file on channel and allows the listener to control the stream.
- tdd_mode - Toggles TDD mode (for the deaf).
- verbose - Logs a message to the asterisk verbose log.
- wait_for_digit - Waits for a digit to be pressed.
- speech_create - Creates a speech object.
- speech_set - Sets a speech engine setting.
- speech_load grammar - Loads a grammar.
- speech_unload grammar - Unloads a grammar.
- speech_activate grammar - Activates a grammar.
- speech_deactivate_grammar - Deactivates a grammar.
- speech_recognize - Recognizes speech.
- gosub - Cause the channel to execute the specified dialplan subroutine.
Приложение диалплана Asterisk AGI возвращает ${AGISTATUS} переменную с одним из следующих значений:
- SUCCESS
- FAILURE
- NOTFOUND
- HANGUP