Aplicações do Dialplan do Asterisk 22
Descrição:Executa um programa compatível com Asterisk Gateway Interface em um canal. O 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 com o protocolo AGI.
As seguintes variantes de AGI existem e são escolhidas com base no valor passado para o parâmetro command:
- AGI - A variante clássica do AGI, que lançará o script especificado por command como um novo processo. A comunicação com o script ocorre em 'stdin' e 'stdout'. Se o caminho completo para o script não for fornecido, será utilizado o diretório astagidir especificado em asterisk.conf.
- FastAGI - Conecta o Asterisk a um servidor FastAGI usando uma conexão TCP. O URI para o servidor FastAGI deve ser fornecido no formato '[scheme]://host.domain[:port][/script/name]', onde scheme é 'agi' ou 'hagi'. No caso de 'hagi', uma consulta SRV será realizada para tentar conectar a uma lista de servidores FastAGI. O nome do host no URI deve ser prefixado com '_agi._tcp' antes da resolução DNS. Por exemplo, se você especificar o URI 'hagi://agi.example.com/foo.agi', a consulta DNS será por '_agi._tcp.agi.example.com'. Você precisará garantir que isso resolva corretamente.
- AsyncAGI - Usa AMI para controlar o canal em AGI. Comandos AGI podem ser invocados usando a ação 'AMI', com uma variedade de eventos específicos do AGI retornados pela conexão AMI. O AsyncAGI deve ser invocado passando 'agi:async' ao 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 indique o desejo de parar (seja ao sair ou, no caso de um script de rede, ao fechar a conexão). Um script AGI executado localmente receberá 'SIGHUP' em caso de 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 de comando. Ambos os sinais podem ser desabilitados definindo a variável de canal AGISIGHUP como 'no' antes de executar a aplicação AGI. Alternativamente, se você desejar que a aplicação AGI saia imediatamente após a detecção de desligamento do canal, defina a variável AGIEXITONHANGUP como 'yes'.
Exemplos:
- Iniciar o script AGI /tmp/my-cool-script.sh, passando o conteúdo da variável de canal FOO:
same => n,AGI(/tmp/my-cool-script.sh,${FOO}) - Iniciar o script AGI my-cool-script.sh localizado no diretório astagidir, especificado em asterisk.conf:
same => n,AGI(my-cool-script.sh) - Conectar ao servidor FastAGI localizado em 127.0.0.1 e iniciar o script awesome-script:
same => n,AGI(agi://127.0.0.1/awesome-script) - Iniciar AsyncAGI:
same => n,AGI(agi:async)
Variáveis de canal retornadas:
- AGISTATUS - O status da tentativa de execução do script AGI, uma das opções: SUCCESS, FAILURE, NOTFOUND, HANGUP
Sintaxe: AGI(command,arg1,[arg2[,...]])
Parâmetros:
- command - Como o AGI deve ser invocado no canal
- args - Argumentos a serem passados ao script ou servidor AGI (arg1 é obrigatório)
Relacionado: AMI Actions AGI, AMI Events AsyncAGIStart, AMI Events AsyncAGIEnd, Dialplan Applications EAGI, Dialplan Applications DeadAGI, {{asterisk.conf}}