[AsteriskBrasil] Variavel Goto

Gilberto Nunes gilberto em bitmix.com.br
Terça Julho 1 16:03:24 BRT 2008


Ok

vamos lá

Eu tenho uma URA personalizada aqui...
Eu mesmo a fiz e está horrivel eu sei...
Por isso tenho que melhorá-la, principalmente no quesito 'logica'.

Acontece que temos aqui um DB com Postgrey que é parte do nosso CRM.
Então criei uma URA pra quando a pessoa digitar o numero certo de caracteres, no caso
*XXXXXX (X = 0-9), ele captura essa sequencia, dentro da URA:

exten => 1, 3, Goto(consulta,_*XXXXXX,1)

E como pode perceber, "joga" o fluxo da ligação para o contexto [consulta].
Dentro deste contexto temos o seguinte:

exten => _*XXXXXX, 1, Answer()
exten => _*XXXXXX, 2, WaitExten()
exten => _*XXXXXX, 3, Set(CHANNEL(language)=pt_BR)
exten => _*XXXXXX, 4, Set(OS=/etc/asterisk/OS)
exten => _*XXXXXX, 5, System(/bin/mkdir ${OS}/${EXTEN:1})
exten => _*XXXXXX, 6, System(psql -U postgres -h IP -d BANCO -c "SELECT * FROM tabela where
ord_cod=${EXTEN:1} order by situacao asc" > ${OS}/${EXTEN:1}/os_${EXTEN:1})
exten => _*XXXXXX, 7, System(cat ${OS}/${EXTEN:1}/os_${EXTEN:1} | grep "|" | cut -d"|" -f3 |
grep -v sta_cod | tail -n -1 > ${OS}/${EXTEN:1}/sit_final_${EXTEN:1})
exten => i,1,Playback(invalid)
exten => i,2,Wait,1
exten => i,3,Goto(_*XXXXXX,1)

;;;                  Set(foo=${SHELL(echo \"bar\")})\n");
exten => _*XXXXXX,8,Set(SITUACAO=${SHELL(cat "${OS}/${EXTEN:1}/sit_final_${EXTEN:1}")})

;;;;; GotoIf($["${ALLERIDNUM}" = "303"]?3)
; Executa uma macr para OS na Bancada
exten => _*XXXXXX,9,Gotoif($[${SITUACAO} = 101]?12)
; Executa uma macr para OS Concluida
exten => _*XXXXXX,10,Gotoif($[${SITUACAO} = 2]?13)
; Executa uma macr para OS Concluida
exten => _*XXXXXX,11,Gotoif($[${SITUACAO} = 104]?13)


; Vai para macro bancada
exten => _*XXXXXX,12,Macro(bancada,${EXTEN:1})
; Vai para macro O Concluida
exten => _*XXXXXX,13,Goto(concluido,s,1)

Como dá pra perceber, ele faz uma consulta ao PostgreSQL, via System, usando o comando psql
do Linux.

Perceba mais aqui em baixo, que tem uma desvio, um usando Macro e outro o Goto.
Na Macro consigo passar argumentos, porém no Goto não...

Como fazer?

Obrigado

P.S.: Sei que esse código tá horrivel! Se houver alguma maneira mais fácil de interfacear com
o PostgreySQL e tirar dados de lá, por favor me avisem! :)




Em Ter, Julho 1, 2008 3:46 pm, Tiago Durante escreveu:
> Gilberto,
>
> Dê um exemplo simples do que vc quer fazer, acho que nao ficou muito claro...
>
>
> Abraços!
>
> --
> Tiago Durante
>
> ,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,
> Perseverance is the hard work you do after you
> get tired of doing the hard work you already did.
> -- Newt Gingrich
>
>
>
>
> On Tue, Jul 1, 2008 at 3:33 PM, Gilberto Nunes <gilberto em bitmix.com.br> wrote:
>> Boa tarde
>>
>> Sei que quando usamod Macros, podemos passar argumentos dentro do DialPlan.
>> Por exemplo:
>>
>> exten => _*XXXXXX,12,Macro(teste,${EXTEN:1}
>>
>> Isso faz que seja executada a Macro teste, passando como argumento o ${EXTEN:1}, ou seja, a
>> sequencia _*XXXXXX.
>>
>> Existe alguma maneira de fazer isso com o Goto ou outra variavel?
>>
>> Obrigado
>>
>>
>> --
>> Atenciosamente
>>
>> ---
>> Gilberto Nunes
>> MSN: gilberto em bitmix.com.br
>> Fones: 47-3348-8020
> _______________________________________________
> Compre uma camiseta da AsteriskBrasil.org!
> http://www.voipmania.com.br
>
> Acesse o canal IRC de discussão sobre Asterisk em Português Brasileiro na rede Freenode.net:
> #asterisk-br
> _______________________________________________
> Lista de discussões AsteriskBrasil.org
> AsteriskBrasil em listas.asteriskbrasil.org
> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>
> --
> This message has been scanned for viruses and
> dangerous content by MailScanner, and is
> believed to be clean.
>
>


-- 
Atenciosamente

---
Gilberto Nunes
MSN: gilberto em bitmix.com.br
Fones: 47-3348-8020



-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.



More information about the AsteriskBrasil mailing list