[AsteriskBrasil] RES: Variavel Goto

Alexandre Abreu alexandre.abreu em redt.com.br
Terça Julho 1 16:27:00 BRT 2008


GEEZUS!

Já vi dialplan feio, mas esse bate o recorde. ;-)
Use 'func_odbc' para fazer a interface com o banco, o capitulo 12 da segunda
edição do "Asterisk The Future of Telephony" foi escrito pra você. Eu mesmo
já postei alguns exemplos de ODBC aqui nessa lista senão me falha a memória.
Você vai evitar overhead de conexão/desconexão e ainda por cima vai ter
suporte a pooling (além de abstrair a camada de SQL do dialplan).

Você quer capturar DTMFs enquanto se tem um prompt de voz e salvá-los em uma
variável? Use Read(). Quer usar Background? Tenha a expressão padrão no
exten:

exten => *XXXXXX,1,Goto(consulta,${EXTEN:1},1)

Se exten = *666555, esse Goto vai redirecionar pra extensão 666555,1,...
(note :1) no contexto consulta.

OBS: Aconselho o uso de Read().
--
Alexandre Abreu
RedT Telecom
http://www.redt.com.br


-----Mensagem original-----
De: asteriskbrasil-bounces em listas.asteriskbrasil.org
[mailto:asteriskbrasil-bounces em listas.asteriskbrasil.org] Em nome de
Gilberto Nunes
Enviada em: terça-feira, 1 de julho de 2008 16:06
Para: asteriskbrasil em listas.asteriskbrasil.org
Assunto: Re: [AsteriskBrasil] Variavel Goto

Desculpem
Acabei escrevendo Postgrey e não PostgreSQL... rsrsrs
É que estava fazendo outra coisa com servidor de E-mail... Aí embanou
aqui...
Desculpem...


Em Ter, Julho 1, 2008 4:03 pm, Gilberto Nunes escreveu:
> 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.
>
> _______________________________________________
> 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
>


-- 
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.

_______________________________________________
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



More information about the AsteriskBrasil mailing list