[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