Ainda falando sobre Asterisk e XMPP e seus usos (veja mais neste post) uma ideia que tive no final de semana e coloquei hoje em testes foi o envio interativo de SMS utilizando para isso um Asterisk integrado com XMPP (e uma placa Digivoice GSM ou uma placa/EBS Khomp GSM).
Objetivo
Enviar SMS de forma interativa utilizando um servidor Asterisk conectado a um servidor XMPP.
Requisitos
Servidor Asterisk integrado com um servidor XMPP (Openfire, ejabberd, Prosody, etc…) e com o Google Talk. Saiba como realizar esta integração aqui.
O procedimento
Novamente o contexto proposto é muito simples e atende somente um ramal (já que envia a mensagem para um usuário específico) ficando aberto para melhorias via  AEL ou AGI de forma a estender o recurso para todos usuários de seu domínio XMPP e todos seus ramais.
O contexto funciona da seguinte maneira: o usuário disca para o número *767* (*SMS*) e recebe uma mensagem em seu cliente XMPP solicitando o destino do SMS. Após informar o número o usuário recebe uma nova mensagem solicitando que seja informado o conteúdo do SMS. Assim que informar o conteúdo o Asterisk envia o SMS para o destino.

[sendsms]

exten => *767*,1,Answer() ;Atende a chamada
same => n,Set(CANAL=${CUT(CHANNEL,,1)}) ;Armazena o canal
same => n,NoOp(Envio de SMS de ${CANAL}) ;Mensagem do Asterisk
same => n,NoOp(Mandando mensagem para ${JABBERDEST}@jabberpriv.propus.com.br) ;Mensagem do Asterisk
same => n,JabberSend(propuspriv,${JABBERDEST}@jabberpriv.propus.com.br,Envio de SMS – Informe a número de destino) ;Solicita o número do destinatário do SMS
same => n,Set(OPCAODEST=${JABBER_RECEIVE(propuspriv,${JABBERDEST}@jabberpriv.propus.com.br,30)}) ;Recebe o número do destinatário do SMS
same => n,JabberSend(propuspriv,${JABBERDEST}@jabberpriv.propus.com.br,Envio de SMS – Digite a mensagem) ;Solicita o conteúdo do SMS
same => n,Set(OPCAOMSG=${JABBER_RECEIVE(propuspriv,${JABBERDEST}@jabberpriv.propus.com.br,30)}) ;Recebe o conteúdo do SMS

same => n,JabberSend(propuspriv,${JABBERDEST}@jabberpriv.propus.com.br,Enviando a mensagem “${OPCAOMSG}” para ${OPCAODEST}) ;Mensagem para o usuário
same => n,DgSendSMS(g1,${OPCAODEST},${OPCAOMSG}) ;Envia o SMS (g1 = grupo de canais GSM)
same => n,HangUp

Finalizando

Novamente um recurso muito útil e facilmente implementável. E como no post anterior, melhorias no contexto são muito bem vindas. Fique à vontade para contribuir !!!
😉

UPDATE 28/12/12: para enviar o SMS usando uma placa/EBS da Khomp altere a seguinte linha:

same => n,DgSendSMS(g1,${OPCAODEST},${OPCAOMSG}) ;Envia o SMS (g1 = grupo de canais GSM)

para:

same => n,KSendSMS(recurso,${OPCAODEST},${OPCAOMSG}) ;Envia o SMS

onde recurso pode ser tanto a placa (b0, b1) com um canal específico (b0c2, por exemplo).

Enviando SMS interativamente (Asterisk + XMPP + Digivoice ou Khomp)
  • Olá amigo. Gostei muito do seu artigo. Quero ver se você consegue me ajudar. Estou planejando montar um servidor asterisk que vai ter 1 tronco para linha comum (gvt), 5 troncos voip e 4 troncos gsm (vou usar uma placa para colocar chips gsm). Dentre várias aplicações, quero conseguir enviar SMS para meus clientes através dos chips GSM que estão neste servidor. O detalhe é que não quero fazer isso

  • Olá.<br /><br />Me parece que a melhor maneira de implementar o que você deseja é utilizando o Asterisk Manager Interface (AMI). <br /><br />Dê uma olhada nestes dois links:<br /><br>http://www.voip-info.org/wiki/view/Asterisk+manager+API<br /><br>http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/2010-September/044171.html<br /><br />[]s

  • Bom dia Marcelo,<br /><br />Tenho uma Central Telefônica na empresa onde trabalho rodando o Elastix, como implemento o envio de SMS através deste servidor?<br /><br />Desde já agradeço.<br /><br />Alan<br />email: alan.rage@gmail.com

  • Olá.<br /><br />Nunca usei o Elastix então não sei te informar se ele possui alguma interface para configurar este recurso.<br /><br />Me parece que o mais importante é inicialmente identificar a placa GSM em uso e quais os comandos que o driver da mesma dispõe para efetuar o envio. <br /><br />[]s

  • Marcelo,<br /><br />No Elastiz não tem esta GUI para configurar, mas como faço para identificar a placa GSM e os comando citados acima.<br /><br />Alan

  • Se você não sabe qual é a placa, creio que deverá abrir o seu servidor para identificá-la.<br /><br />De posse da marca e modelo, você poderá verificar no manual do fabricante quais comandos estão disponíveis para envio de SMS.<br /><br />Observe que tais comandos só irão funcionar se a placa for GSM, ou seja, se você colocar os chips diretamente na mesma. Se você utilizar interfaces de celular,

  • Ola Marcelo<br /><br />Estou precisando montar uma Getway para envio ou recebimento de SMS, vc pode me infomar algum tutorial?<br />o Asterisk poderia resolver esta demanda? tem algum outro open source para isso?<br />obs: do sms recebido preciso extrair os dados (Numero e codigo? vamos tambem fazer quiz<br /><br />abs<br />Geraldo<br />gesoco@ig.com.br

    • Olá Geraldo.<br /><br />Não conheço atualmente nenhum software que atenda sua demanda.<br /><br />Possivelmente iremos desenvolver algo assim para nossa solução de telefonia, mas atualmente desconheço algo pronto (não quer dizer que não exista, pois eu realmente ainda não procurei isso muito a fundo).<br /><br />[]s

  • Pingback: Enviando SMS interativamente (Asterisk + XMPP + Digivoice ou Khomp) | Propus()

Social Media Integration by Acurax Wordpress Developers
Optimization WordPress Plugins & Solutions by W3 EDGE
%d blogueiros gostam disto: