Rodrigo Pimenta Carvalho
2015-Jun-12 21:21 UTC
[asterisk-users] RES: Banco de dados interno no Asterisk e variáveis em SIP HEADERS
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.
