Prezado Fernando,

Muito obrigado por sua complementação na resposta!
Surgiram algumas dúvidas agora:

A única forma de retornar os dados num header field, como o Rafael dos Santos 
Saraiva sugeriu envolve criar outro channel?

Ou seja, o que eu preciso é que a mesma execução do dia plan obtenha um valor 
recebido do Sip Client, execute uma query num banco de dados e em seguida 
inclua a resposta como novo hearder field na mensagem a ser enviada de resposta 
ao mesmo SIP Client.
Tudo isso pode ser executado no mesmo channel? Ou seja, sem precisar fazer um 
Dial() para o Sip Client?

Por exemplo:
Suponha o seguinte, o SIP client envia um SIP INVITE para o Asterisk, contendo 
um novo header field na mensagem. O dia plan executa, faz o que tem que fazer, 
obtem um valor de um banco de dados e em seguida inclui esse valor como novo 
header field na mensagem de resposta SIP ACK 100. Ou talvez na mensagem de 
resposta SIP 180 (Ringing). Isso tudo seria feito num mesmo channel? O que 
estou imaginando é usar as mensagem padrões SIP, que o Asterisk já sabe 
manipular, e pegar 'carona' nelas para o transporte de pequenos dados.

Algo desse tipo é possível de ser feito?

No nosso projeto usaremos SIP com TCP, não com UDP, devido a outros requisitos. 
Isso facilitará o uso da ideia com Json, certo?

Atenciosamente,



RODRIGO PIMENTA CARVALHO
Inatel Competence Center
Software
Ph: +55 35 3471 9200 RAMAL 979


----------------------------------------------------------------------------------------------------------------------------------

Só complementando a resposta do amigo Rodrigo.

O Comando SIPAddHeader vai adicionar um cabeçalho SIP, porém no channel 
atual, e o Dial, criará outro channel, o qual não irá ter o cabeçalho 
que você adicionou:

Se quiser que o cabeçalho SIP customizado esteja disponivel e seja 
enviado para a Ponta B que o Dial está chamando, você terá que executar 
uma Macro utilizando o canal novo que será criado pelo comando Dial.

Algo do Tipo:

[header]
exten => cid,1,SIPAddHeader(X-My-Header=MYCUSTOMHEADER)
same=>n,Return(1)

[meudial]
exten => _X.,Dial(SIP/X.X.X.X/${EXTEN},,b(header^cid^1))

Porém, UDP tem suas limitações, e tentar incomporar JSON a SIP Message, 
imagino que não consiga ter uma ambiente de fácil manutenção.
Uma ideia seria utilizar Kamailio ou OpenSIPs o que te da mais 
ferramentas para gerenciar o SIP Message.

Ou você pode utilizar seu próprio esquema utilizando um sistema de 
mensagens TCP como o ZeroMQ ou o GearmanD.

Atenciosamente / Best regards / Saludos,


P Antes de imprimir pense em sua responsabilidade e  compromisso com o 
Meio Ambiente!


------ Mensagem original ------
De: "Rafael dos Santos Saraiva" <rafaelsnsa em gmail.com>
Para: "asteriskbrasil em listas.asteriskbrasil.org" 
<asteriskbrasil em listas.asteriskbrasil.org>
Enviado(s): 12/06/2015 14:53:42
Assunto: Re: [AsteriskBrasil] RES: Banco de dados interno no Asterisk e 
variáveis em SIP HEADERS

>Rodrigo
>
>Segue um exemplo de manipulação do SIP HEADER:
>
>Servidor 1:
>exten => _X.,1,Answer()
>same  => n,SIPAddHeader(Custom-variable: "valor da minha variavel)
>same  => n,Dial(SIP/10.68.2.43/${EXTEN},30,tT)
>same  => n,HangUp
>Servidor 2:
>exten => _X.,1,Answer()
>exten => _X.,n,NoOp(${SIP_HEADER(Custom-variable)})
>exten => _X.,n,goto(ura,s,1)
>exten => _X.,n,HangUp
>
>Você enviar quaisquer valores que possam ser definidos numa variável.
>
>Neste sites você encontra maiores informações:
>http://www.voip-info.org/wiki/view/Asterisk+cmd+SipAddHeader
>https://wiki.asterisk.org/wiki/display/AST/Home
>
>O Jabber trabalha com o protocolo XMPP, de mensagens instantâneas.
-- 
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
               http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Reply via email to