[AsteriskBrasil] Res: exportar variável de uma macro para um contexto
Vagner Menezes
vagmenezes em yahoo.com.br
Quarta Março 30 15:03:13 BRT 2011
Boa tarde Thiago
Primeiramente desculpe a demora na resposta a coisa ta corrida aqui estamos em
fase de finalização de um PBX-IP focado em GSM...
Bom então segue exemplo solicitado.
Pelo que vi nos e-mails seus anteriores vc Liga de A para B, deixa B "onHold" e
após A liga para C conversam entre eles e se C aceitar A digita algum DTMF e
volta com B + Chanspy de C, correto?
Bom tentando repassar ao teu contexto...
A -> Dial(B)
A pressiona feature ou dtmf exemplo *1 para iniciar a operação e *2 para juntar
as 3 partes;
ChannelRedirect de B para um contexto onHold, mais ou menos assim -
ChannelRedirect(${BRIDGEPEER},espera,s,1)
Goto A para o canal solicitando numero destino - Goto(digite,s,1)
Após ler a extensão a ser discada e tocar o audio em A faz o dial para aquela
extensão (contexto "digite" extensão "XXXX")
B está on Hold...
[espera]
exten => s,1,NoOp(Canal em espera ${CHANNEL})
exten => s,n,MusicOnHold()
[digite]
exten => s,1,NoOp(Buscando numero destino)
exten => s,n,Set(InWait=${BRIDGEPEER})
/Com SHARED no canal
;exten => s,n,Set(SHARED(InWait)=${BRIDGEPEER}) //seta uma variavel chamada
InWait compartilhada neste canal;
/Setando Variavel no cana em espera
;exten => s,n,Set(SHARED(Variavel,${BRIDGEPEER})=ABC) //Setando a variavel
compartilhada no canal que esta em espera
exten => s,n,BackGround(arquivodeAudioPedindoDestino)
exten => s,n,WaitExten()
exten => XXXX,1,NoOp(Destino será ${EXTEN})
exten => XXXX,n,Dial(${EXTEN},timeout,tTgF(junta-B-C^s^1))
exten => XXXX,n,NoOp(Destino desligou... voltando para B)
exten => XXXX,n,Bridge(${InWait))
exten => *1,1,NoOp(Junta os 3)
exten => *1,n,Aqui vai o restante do codigo... chanspy... etc
[junta-B-C]
exten => s,1,NoOp(A desligou... juntando B e C)
exten => s,n,Set(InWait=${IMPORT(${BRIDGEPEER},InWait)}) definindo a variavel
inWait para este canal
exten => s,n,Bridge(${InWait})
/Visualizando a variavel compartilhada que estava no canal em espera "B"
;exten => s,n,NoOp( Compartilhada em espera é ${SHARED(Variavel,${InWait})})
deverá retornar ABC
/Recuperando com SHARED variavel compartilhada que estava no canal A
;exten => s,n,Bridge(${SHARED(InWait,${BRIDGEPEER})})
Deste modo, Caso C deseja falar com B, basta A desligar; e se C desligar, A
volta a falar com B.
Caso seja pressionado *1 juntará os 3 (a implementar)...
O uso do Import e do Shared são quase iguais, os cuidados que tens que tomar é
que a sintaxe eh diferente
setando = IMPORT(CANAL,NOME_DA_VAR) / recuperando = ${IMPORT(CANAL,NOME_DA_VAR)}
setando = SHARED(NOME_DA_VAR,CANAL) / recuperando = ${SHARED(NOME_DA_VAR,CANAL)}
o legal do Shared que você pode setar uma variavel compartilhada em outro canal
fora do contexto, mas que esteja em execução por exemplo, e retornar a mesma
quando quiser via SHARED também... variaveis que são setadas via SHARED só
retornam por ele
Set(Teste=123) é diferente de Set(SHARED(Teste)=123).
O interessante é não utilizar variaveis globais "__Teste" pois em um cenário com
muitas chamadas elas irão mudar constantemente... diferente das variaveis de
canal que são dinâmicas e quando desligado são "apagadas"...
Não testei os contextos no asterisk... é só para Ilustrar... provavelmente se
copiar e colar não funcionará.
Espero que tenha conseguido sanar sua duvida... qqr coisa to aqui =)
Abraço
Att
Vagner de Menezes
________________________________
De: Thiago Bruni Tawil <stomaz.fei em gmail.com>
Para: asteriskbrasil em listas.asteriskbrasil.org
Enviadas: Terça-feira, 29 de Março de 2011 16:35:31
Assunto: Re: [AsteriskBrasil] exportar variável de uma macro para um contexto
Vagner, Você poderia me dar algum exemplo de sucesso usando o SHARED???
EU não consigo fazer funcionar.. dove estar errando alguma coisa!
Valeu!
Em 24 de março de 2011 18:02, Thiago Bruni Tawil <stomaz.fei em gmail.com>
escreveu:
Kras.. eu fiz.pro trampo... acho que pega mal eu passar tudo.. agora to no metro
indo pra casa... amanha eu dou uma explicada... a dica eh... colocaros 3 canais
em contextos separados.. depois juntar dois deles com brige, e o 3o por
chanspy... boa sorte!!!
>Em 24/03/2011 16:12, "alexandre - aldeia digital" <alepaes em ad2.com.br>
escreveu:
>>
>>Perguntinhas:
>>--não precisa mostrar o "peixe" se não quiser... :P --
>>
>>1) Você está usando o Channel Redirect para um meetme quando disca *3 ?
>>2) O que acontece se o C não quiser participar? Você entra no meetme
>>direto?
>>
>>
>>Alexandre
>>Aldeia Digital
>>
>>Em 24-03-2011 15:47, Thiago Bruni Tawil escreveu:
>>
>>> Rodrigo Valeu pela preocupação.... mas já consegui fazer o que eu queria!
>>> Deu trabalho.. mas val...
>>> <mailto:stomaz.fei em gmail.com>> escreveu:
>>>
>>> A função SHARED e IMPORT são perfeitas!!
>>>
>>> Valeu Vagner!!
>>> Ogribado Pessoal pela aj...
>>> <stomaz.fei em gmail.com <mailto:stomaz.fei em gmail.com>> escreveu:
>>
>>>
>>> Na verdade eu precisaria exportar uma variável de um canal para
>>> outro..
>>> ...
>>> <alepaes em ad2.com.br <mailto:alepaes em ad2.com.br>> escreveu:
>>
>>>
>>> E se usar 2 undescores ?
>>>
>>> exten => s,1,Set(__ABC=10)
>>>
>>>
>>>
>>> ...
>>> <mailto:stomaz.fei em gmail.com <mailto:stomaz.fei em gmail.com>>>
>>
>>> escreveu:
>>> >
>>> > Acontece que eu estou separando os...
>>> <mailto:sylvio.sdr em gmail.com <mailto:sylvio.sdr em gmail.com>>>
>>
>>> escreveu:
>>> >
>>> > As variaveis criadas so deixam...> >
>>><mailto:rodrigoferreiralang em gmail.com
>>
>>> <mailto:rodrigoferreiralang em gmail.com>>> escreveu:
>>> >
>>
> > ...
>>> <mailto:stomaz.fei em gmail.com <mailto:stomaz.fei em gmail.com>>>
>>
>>> > escreveu:
>>> >
>>> > Olá...
>>> <mailto:asteriskbrasil-unsubscribe em listas.asteriskbrasil.org>>
>>> >
>>> ...
>>> <http://www.khomp.com.br>
>>> > _______________________________...
> <http://www.voipmania.com.br> <http://www.voipmania.com.br>
>>
>>> > VOIPMANIA STORE
>>> > ________
>>> > ...
>>> <mailto:asteriskbrasil-unsubscribe em listas.asteriskbrasil.org>>
>>> >
>>> ...
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20110330/543466d3/attachment-0001.htm
Mais detalhes sobre a lista de discussão AsteriskBrasil