Aplicações do Dialplan do Asterisk 21
Comando:
AGI()
Sinopse:
Executa uma aplicação compatível com AGI.
Descrição:
Executa um programa compatível com Asterisk Gateway Interface (AGI) em um canal. O AGI permite que o Asterisk inicie programas externos escritos em qualquer linguagem para controlar um canal de telefonia, reproduzir áudio, ler dígitos DTMF, etc., comunicando-se por meio do protocolo AGI.
Existem as seguintes variantes de AGI, escolhidas com base no valor passado ao parâmetro command:
AGI - A variante clássica do AGI, que inicia o script especificado por command como um novo processo. A comunicação com o script ocorre via '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 de 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'.
AsyncAGI - Utiliza a AMI para controlar o canal via AGI. Comandos AGI podem ser invocados usando a ação 'AMI', com diversos eventos específicos de 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 interrompe 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 desejo de parar (seja ao sair ou, no caso de 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á correspondente '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 desejar que a aplicação AGI saia imediatamente após detectar 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 retornadas:
AGISTATUS - O status da tentativa de execução do script AGI, sendo uma das opções: SUCCESS, FAILURE, NOTFOUND, HANGUP
Sintaxe: AGI(command,arg1,[arg2[,...]])
- command - Como o AGI deve ser invocado no canal
- args - Argumentos a serem passados ao script ou servidor AGI
- arg1 (obrigatório), arg2[,arg2...] (opcionais)
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[,...]])
Veja Também:
Fonte: Asterisk Wiki