[AsteriskBrasil] AGI - Shell Script

jaf em voiparatodos.com.br jaf em voiparatodos.com.br
Domingo Junho 3 12:49:29 BRT 2012


Eu faria algo como:

No extensions.conf
exten => _XXX,1,AGI(teste.agi, ${EXTEN})
exten => _XXX,n,GotoIF($["${OPERADORA}"="LINK1"]?discaLINK1)
exten => _XXX,n,GotoIF($["${OPERADORA}"="LINK2"]?discaLINK2)
exten => _XXX,n(discaLINK1),Dial(${LINK1}/${EXTEN},60,)
exten => _XXX,n(discaLINK2),Dial(${LINK2}/${EXTEN},60,)
exten => _XXX,n,HangUp

././././././././.

teste.agi
#!/bin/bash

# Trata o numero de entrada com a variavel shell $1 e como valor de retorno

# Se a resposta for pro link1 coloca:
/bin/echo "SET VARIABLE OPERADORA LINK1"

# Se a resposta for pro link2 coloca:
/bin/echo "SET VARIABLE OPERADORA LINK2"

././././././././.

Espero que tenha ajudado,

José Alexandre Ferreira
dCAP 1880
http://voipforall.com.br

> Boa noite !
>
> Eu tenho um AGI parecido com o que você necessita porem em PHP, alguma
> preferência por usar shell script ?
>
> Mandei há um tempo atrás um tópico relacionado a AGI + PHP, tomei uns
> "tocos" mas consegui aprender mais ou menos. O meu eu uso para consulta
> de portabilidade, junto ao serviço da telein, está funcionando muito
> bem. Se quiser posso postar aqui.
>
> Em 29-05-2012 22:13, Carlos Eduardo B. Rovaris escreveu:
>> Boa noite,
>>
>>
>> Gostaria de saber se alguém tem AGI em desenvolvida em Shell Script que
>> poderia me auxiliar em alguns pontos que estou com dificuldades de
>> resolver.
>>
>>
>> Segue minha configuração:
>>
>> ->>>>  Extensions.conf
>>
>> exten =>  500,1,agi(2test.sh)
>> exten =>  500,n,NoOP(${consulta})
>>
>> ############################################################
>>
>> ->>>>  Script Shell:
>>
>> #!/bin/bash
>>
>> numero=48xxxxxxxx
>>
>> consulta=  ## procedimento de consulta do valor armazenado na variavel
>> numero ##
>>
>> echo "SET VARIABLE consulta $consulta "
>>
>> ############################################################
>>
>> ->>>>  Debug Asterisk console:
>>
>> Verbosity is at least 20
>>     == Using SIP RTP CoS mark 5
>>       -- Executing [500 em external:1] AGI("SIP/1600-00000038", "2test.sh")
>> in new stack
>>       -- Launched AGI Script /var/lib/asterisk/agi-bin/2test.sh
>> <SIP/1600-00000038>AGI Tx>>  agi_request: 2test.sh
>> <SIP/1600-00000038>AGI Tx>>  agi_channel: SIP/1600-00000038
>> <SIP/1600-00000038>AGI Tx>>  agi_language: en
>> <SIP/1600-00000038>AGI Tx>>  agi_type: SIP
>> <SIP/1600-00000038>AGI Tx>>  agi_uniqueid: 1338338846.56
>> <SIP/1600-00000038>AGI Tx>>  agi_version: 1.8.12.0
>> <SIP/1600-00000038>AGI Tx>>  agi_callerid: 1600
>> <SIP/1600-00000038>AGI Tx>>  agi_calleridname: CEBR2
>> <SIP/1600-00000038>AGI Tx>>  agi_callingpres: 0
>> <SIP/1600-00000038>AGI Tx>>  agi_callingani2: 0
>> <SIP/1600-00000038>AGI Tx>>  agi_callington: 0
>> <SIP/1600-00000038>AGI Tx>>  agi_callingtns: 0
>> <SIP/1600-00000038>AGI Tx>>  agi_dnid: 500
>> <SIP/1600-00000038>AGI Tx>>  agi_rdnis: unknown
>> <SIP/1600-00000038>AGI Tx>>  agi_context: external
>> <SIP/1600-00000038>AGI Tx>>  agi_extension: 500
>> <SIP/1600-00000038>AGI Tx>>  agi_priority: 1
>> <SIP/1600-00000038>AGI Tx>>  agi_enhanced: 0.0
>> <SIP/1600-00000038>AGI Tx>>  agi_accountcode:
>> <SIP/1600-00000038>AGI Tx>>  agi_threadid: 1095186752
>> <SIP/1600-00000038>AGI Tx>>
>> <SIP/1600-00000038>AGI Rx<<  SET VARIABLE consulta 5
>> <SIP/1600-00000038>AGI Tx>>  200 result=1
>> [May 30 04:47:28] ERROR[14217]: utils.c:1164 ast_carefulwrite: write()
>> returned error: Broken pipe
>>       --<SIP/1600-00000038>AGI Script 2test.sh completed, returning 0
>>       -- Executing [500 em external:2] NoOp("SIP/1600-00000038", "5") in
>> new
>> stack
>>       -- Auto fallthrough, channel 'SIP/1600-00000038' status is
>> 'UNKNOWN'
>> server*CLI>
>>
>> ############################################################
>>
>> Basicamente o que estou precisando resolver:
>> - como armazenar o valor da "agi_extension" na variavel "numero" do
>> Shell Script ?
>>
>> - Como faço para encaminhar a chamada de acordo com o valor de retorno
>> da AGI ?
>>
>> ex: No exemplo do log, disquei 500, e através da AGI retornou o valor
>> "5".
>>
>> Assim gostaria de fazer:
>>
>> Caso o valor seja "4", encaminha para Trunk1
>> Caso o valor seja "5", encaminha para Trunk2
>> Caso o valor seja "6", encaminha para Trunk3
>>
>>
>> Agradeço toda e qualquer ajuda.
>>
>> _______________________________________________
>> KHOMP Inovação: External Board Series
>> Módulos de 1/2 rack e 1U para todas as interfaces e soluções Asterisk e
>> FreeSWITCH.
>> Tenha a External Series Experience na sua aplicação. Visite
>> www.khomp.com
>> _______________________________________________
>> DIGIVOICE  Fabricante de Placas de Voz e Channel Bank
>> 20 anos de experiência com E1(R2/ISDN), FXS, FXO e GSM
>> Centro Treinamento - Curso de PABX IP -  Asterisk  - Site
>> www.digivoice.com.br
>> ________
>> YEALINK: Telefones IP e VídeoPhones IP com o melhor custo/benefício do
>> mercado.
>> email: yealink em commlogik.com.br | www.commlogik.com.br | (11) 5503-1011
>> ______________________________________________
>> Para remover seu email desta lista, basta enviar um email em branco para
>> asteriskbrasil-unsubscribe em listas.asteriskbrasil.org
>
> _______________________________________________
> KHOMP Inovação: External Board Series
> Módulos de 1/2 rack e 1U para todas as interfaces e soluções Asterisk e
> FreeSWITCH.
> Tenha a External Series Experience na sua aplicação. Visite www.khomp.com
> _______________________________________________
> DIGIVOICE  Fabricante de Placas de Voz e Channel Bank
> 20 anos de experiência com E1(R2/ISDN), FXS, FXO e GSM
> Centro Treinamento - Curso de PABX IP -  Asterisk  - Site
> www.digivoice.com.br
> ________
> YEALINK: Telefones IP e VídeoPhones IP com o melhor custo/benefício do
> mercado.
> email: yealink em commlogik.com.br | www.commlogik.com.br | (11) 5503-1011
> ______________________________________________
> Para remover seu email desta lista, basta enviar um email em branco para
> asteriskbrasil-unsubscribe em listas.asteriskbrasil.org
>


-- 
José Alexandre Ferriera
dCAP: 1880
http://voipforall.com.br



Mais detalhes sobre a lista de discussão AsteriskBrasil