Aplicações do Dialplan do Asterisk 20
Comando:
AGI()
Sinopse:
Executa uma aplicação compatível com AGI.
Descrição:
Executa um programa compatível com a Interface de Gateway Asterisk (AGI) em um canal. AGI permite que o Asterisk lance programas externos escritos em qualquer linguagem para controlar um canal de telefonia, reproduzir áudio, ler dígitos DTMF, etc., comunicando-se através do protocolo AGI.
Existem as seguintes variantes de AGI, selecionadas com base no valor passado para o comando:
AGI - A variante clássica de AGI, que lança o script especificado pelo comando como um novo processo. A comunicação com o script ocorre através de 'stdin' e 'stdout'. Se o caminho completo para o script não for fornecido, o diretório astagidir especificado em asterisk.conf será usado.
FastAGI - Conecta o Asterisk a um servidor FastAGI usando uma conexão TCP. A URI para o servidor FastAGI deve ser fornecida no formato '[scheme]://host.domain[:port][/script/name]', onde scheme é 'agi' ou 'hagi'. No caso de 'hagi', uma pesquisa SRV será realizada para tentar conectar-se a uma lista de servidores FastAGI. O nome do host na URI deve ser prefixado com '_agi._tcp.' antes da resolução DNS. Por exemplo, se você especificar a URI 'hagi://agi.example.com/foo.agi', a consulta DNS será para '_agi._tcp.agi.example.com'. Você precisará garantir que isso seja resolvido corretamente.
AsyncAGI - Use a AMI para controlar o canal em AGI. Os comandos AGI podem ser invocados usando a ação 'AMI', com uma variedade de eventos específicos do AGI sendo passados de volta pela conexão AMI. AsyncAGI deve ser invocado passando 'agi:async' para o parâmetro command.
Observação: A partir da versão '1.6.0', este canal não interromperá a execução do dialplan em caso de desligamento dentro desta aplicação. A execução do dialplan continuará normalmente, mesmo após o desligamento, até que a aplicação AGI sinalize o desejo de parar (seja saindo ou, no caso de um script de rede, fechando a conexão). Um script AGI executado localmente receberá 'SIGHUP' no desligamento do canal, exceto quando usando 'DeadAGI' (ou quando o canal já estiver desligado). Um servidor FastAGI receberá correspondentemente um 'HANGUP' em linha com o diálogo do comando. Ambos esses sinais podem ser desativados definindo a variável de canal AGISIGHUP como 'no' antes de executar a aplicação AGI. Alternativamente, se você quiser que a aplicação AGI saia imediatamente após a detecção de um desligamento do canal, defina a variável AGIEXITONHANGUP como 'yes'.
Exemplos:
same => n,AGI(/tmp/my-cool-script.sh,${FOO}) - Inicia o script AGI /tmp/my-cool-script.sh, passando o conteúdo da variável de canal FOO.
same => n,AGI(my-cool-script.sh) - Inicia o script AGI my-cool-script.sh localizado no diretório astagidir, especificado em asterisk.conf.
same => n,AGI(agi://127.0.0.1/awesome-script) - Conecta-se ao servidor FastAGI localizado em 127.0.0.1 e inicia o script awesome-script.
same => n,AGI(agi:async) - Inicia AsyncAGI.
AGISTATUS - O status da tentativa de executar o script AGI (string de texto), um dos seguintes:
SUCCESS
FAILURE
NOTFOUND
HANGUP
AGI(command,arg1,[arg2[,...]])
command - Como o AGI deve ser invocado no canal.
args - Argumentos a serem passados para o script ou servidor AGI.
arg1 obrigatório
arg2[,arg2...]
Ações AMI AGI
Eventos AMI AsyncAGIStart
Aplicações do Dialplan EAGI, DeadAGI {{asterisk.conf}}
Sintaxe:
same => n,AGI(/tmp/my-cool-script.sh,${FOO})
same => n,AGI(my-cool-script.sh)
same => n,AGI(agi://127.0.0.1/awesome-script)
same => n,AGI(agi:async)
AGI(command,arg1,[arg2[,...]])
Fonte: Asterisk Wiki