[AsteriskBrasil] Variavel Goto

Tiago Durante tiagodurante em gmail.com
Terça Julho 1 16:15:58 BRT 2008


Oi Gilberto,

Não entendi exatamente o que você está fazendo na sua URA, mas isso
não tem importancia.

O comando Goto não leva nenhum parametro junto, mas, desde que você
esteja no mesmo contexto (se eu estiver errado me falem! rs), você
pode setar a variavel com SET e usa-la depois em qquer lugar.

Exemplo, vamos dizer que sua URA fez toda a mágica que tinha que fazer
e ai caiu em um momento que vai fazer um GOTO pro começo dela e vc
precisa levar uma variavel junto...

exten => t,1,Set(foo=romario94)
exten => t,n,GoTo(_*XXXXX,1)

Eu não sei se a variável declarada com SET vai ser carregada para
outro contexto, teste.

Outra coisa que vc pode fazer é trocar esse GOTO por uma MACRO..
Sacou? Assim você passa a variavel pra macro que tem o contexto do
GOTO...

Não sei se ajudei, mas qquer coisa posta ae!

=)

-- 
Tiago Durante

,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,
Perseverance is the hard work you do after you
get tired of doing the hard work you already did.
-- Newt Gingrich



2008/7/1 Gilberto Nunes <gilberto em bitmix.com.br>:
> 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
>> --
>> Atenciosamente
>>
>> ---
>> Gilberto Nunes
>> MSN: gilberto em bitmix.com.br
>> Fones: 47-3348-8020
>
> --
> Atenciosamente
>
> ---
> Gilberto Nunes
> MSN: gilberto em bitmix.com.br
> Fones: 47-3348-8020


More information about the AsteriskBrasil mailing list