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" <rafaels...@gmail.com>
Para: "asteriskbrasil@listas.asteriskbrasil.org"
<asteriskbrasil@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.
Rafael S. SaraivaPorto Alegre - RS | Mobile: (51) 8174-7956
Em 12 de junho de 2015 10:19, Rodrigo Pimenta Carvalho
<pime...@inatel.br> escreveu:
Prezado Rafael dos Santos Saraiva.
Bom dia.
Muito obrigado por sua resposta. Um ponto que você citou é muito
interessante para o meu trabalho atual e eu gostaria de lhe fazer mais
algumas perguntas, por favor.
O envio de variáveis e valores, como preciso fazer, não
necessariamente tem que ser pelo body filed de uma mensagem. Pode ser
no SIP HEADER como você mesmo citou. Nesse caso, pergunto:
a) Esse envio de variáveis no SIP HEADER funciona em qual tipo
de mensagem SIP? SIP INVITE? SIP INFO? SIP CANCEL, ou outra?
b) Você quis dizer que com o dialplan eu poderei escrever as
variáveis e seus valores no SIP HEADER? Ou melhor, o próprio Asterisk
pode fazer isso por mim, se eu programar o dialplan corretamente?
c) Com o uso de novas variáveis proprietárias no SIP HEADER, o
Asterisk ainda continua funcionando sem problemas, ou devo mudar
alguma configuração nele, para que ele aceite variáveis novas nos SIP
HEADERS das mensagens SIP?
d) Você pode me indicar por favor uma web page sobre Asterisk,
que mostre como manipular variáveis dos SIP HEADERS, via dialplan?
e) O que é o Jabber.
Muito o brigado pela ajuda!
Abraços.
RODRIGO PIMENTA CARVALHO
Inatel Competence Center
Software
Ph: +55 35 3471 9200 RAMAL 979
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Boa Noite Rodrigo
Vou tentar ajudar na medida dos meus conhecimentos:
1) O Asterisk possui um banco de dados interno (AstDB). Costumo
utilizar
este BD para informações temporárias do próprio Asterisk, por exemplo,
destino de desvio de chamadas e implementações de facilidades em
ramais. Se
você pretende guardar outras informações que não serão utilizadas
somente
pelo Asterisk, recomendo utilizar um outro banco, MySQL por exemplo.
Caso o
Asterisk necessite acessar esse banco, conecte via ODBC;
2) Envio de variáveis pelo SIP HEADER. Tanto o envio(definição da
variável)
como o recebimento(recuperação da variável) são realizadas através do
dialplan.
3 e 4) Não tenho nada em mente.
5) Provavelmente vai gerar problema. Quem sabe usando Jabber (vai ser
um
canal independente do canal SIP estabelecido)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Olá Pessoal.
Boa noite.
Após 8 anos sem trabalhar com o Asterisk, entrei num projeto no qual
usarei Asterisk novamente, softphone, etc. Tenho algumas dúvidas
iniciais:
1) Na máquina onde o Asterisk ficará instalado, eu terei que manter um
banco de dados. Tal banco, manterá informações simples de câmeras IP
na mesma rede, por exemplo a porta e o endereço IP de cada uma.
O Asterisk contem algum banco de dados interno e que eu consiga
utilizá-lo? Em caso positivo, onde eu poderei acessar material sobre
esse assunto?
2) Estou pretendendo criar um protocolo proprietário, baseado em Json,
para ser incluído em mensagens SIP. Ou seja, quero enviar algumas
mensagens SIP ao Asterisk, mas com o body field contendo tuplas
<atributo,valor> em Json.
A minha idéia é receber tais tuplas no SIP server ( Asterisk) e
utilizar os valores respectivos como parâmetros em queries SQL a
consultarem o tal banco de dados que ainda tenho que
providenciar/acessar. Ou seja, em mensagens SIP quero enviar valores
que servirão para montar consultas SQL que serão executadas na mesma
máquina onde estará o Asterisk.
Como seria a forma de receber tais mensagens SIP no Asterisk,
extrair os valores e executar queries num banco de dados? Ou seja, a
solução envolve dial plan? A partir do Dial Plan eu poderia obter os
valores vindos no body field de uma mensagem SIP e em seguida executar
queries num banco de dados? Ou será necessário alterar o código fonte
do Asterisk? :-&
3) Como usar o Asterisk para que ele inclua o texto que eu quiser no
body field de uma mensagem SIP que vai de resposta a um SIP terminal
client? Ou seja, após obter dados do banco de dados, eu precisarei
colocar tais valores numa mensagem SIP que seguirá como resposta ao
SIP client que solicitou as informações.
4) Que tipo de mensagem SIP eu poderia usar para enviar meus dados
proprietários no body field da mesma? Poderia ser uma SIP INFO?
5) Caso eu implemente essa ideia, o Asterisk não irá recusar as
mensagens SIP com valores desconhecidos no body field da mensagem e
simplesmente irá ignorar isso, não é mesmo? Mesmo assim ainda há uma
forma de fazer o Asterisk obter estes dados da mensagem, como preciso?
Qualquer dica será de grande ajuda!!
Muito obrigado!
RODRIGO PIMENTA CARVALHO
_______________________________________________
WORKOFFEE KHOMP: em Junho serão 2 edições do workshop
gratuito da Khomp: dia 11 em Brasília, e dia 18 em Curitiba
Aproveite e conheça os lançamentos: EBS Server PRO e UMG 100
Garanta sua vaga e saiba mais em: www.workoffee.com.br
_______________________________________________
DIGIVOICE: Fabricante pioneiro em Banco de Canais e Placas E1, GSM,
FXO e FXS para Asterisk e Elastix. Temos Cursos de Telefonia IP e
Asterisk.
Construa soluções de PABX IP com produtos DigiVoice - visite
www.digivoice.com.br
_______________________________________________
Para remover seu email desta lista, basta enviar um email em branco
para asteriskbrasil-unsubscr...@listas.asteriskbrasil.org
_______________________________________________
WORKOFFEE KHOMP: em Junho serão 2 edições do workshop
gratuito da Khomp: dia 11 em Brasília, e dia 18 em Curitiba
Aproveite e conheça os lançamentos: EBS Server PRO e UMG 100
Garanta sua vaga e saiba mais em: www.workoffee.com.br
_______________________________________________
DIGIVOICE: Fabricante pioneiro em Banco de Canais e Placas E1, GSM, FXO e FXS
para Asterisk e Elastix. Temos Cursos de Telefonia IP e Asterisk.
Construa soluções de PABX IP com produtos DigiVoice - visite
www.digivoice.com.br
_______________________________________________
Para remover seu email desta lista, basta enviar um email em branco para
asteriskbrasil-unsubscr...@listas.asteriskbrasil.org