Kannel SMS Gateway Center

 

 Kannel SMS Gateway

 

       

 

Autor: Francisco Xavier
Data: 2010-04-22
Âmbito: Engenharia de Serviços leccionada na Universidade de Aveiro

 

 

 

 

 Introdução:

 

O objectivo foi enviar e receber mensagens sms com o Kannel, que é uma Gateway de envio de conteúdos, tanto para WAP como para SMS. Como no nosso projecto não pretendiamos usar wap, centrei-me unica e exclusivamente no envio de sms.
O diagrama do funcionamento do Kannel no que toca a envio e recepção de SMS, e que está disponível no userguide da página do Kannel http://www.kannel.org/, é o seguinte:

Passando a explicar: o telemóvel comunica por sms com o centro de mensagens Kannel. Por exemplo, envia uma mensagem para este a pedir um conteúdo; este comunica com o servidor do Kannel e, quando este tiver uma resposta à mensagem, reencaminha de volta para o mesmo servidor o conteúdo pretendido (isto, se tudo correr bem). O smsc envia a resposta ao equipamento com o conteúdo fornecido pelo Kannel.
Há várias maneiras de colocar o smsc a comunicar por mensagens, que das quais se destacam:

  • Fake, simulando assim as comunicações com um dispositivo real

  • http, mandando as mensagens para, por exemplo, email

  • GSM, usando um modem para mandar MESMO mensagens pela rede GSM

Eu optei por reutilizar uma pen da Vodafone perdida em minha casa, mais concretamente o modelo Huawei K3520 e coloquei lá o meu cartão SIM da Vodafone, para aproveitar o tarifário de mensagens de graça e testar assim o serviço sem “entraves” financeiros.

 

 

Passo número um: configurar a máquina virtual com o Kannel e instalar modem Huawei

Bem, depois de instalar a pen modem e resolver as dependências, arranquei o software da vodafone apenas para ter a certeza em que dispositivo se encontrava instalada no linux; pela imagem seguinte descobre-se que está instalada em /dev/ttyUSB2. Este passo é fulcral para configurar o Kannel.

 

 

 

 

 Passo número dois: colocar os servidores Kannel & SMSC a correr

 

Apesar de o Kannel ter um daemon que o coloca a correr sempre que o linux é iniciado, eu para mostrar a troca de mensagens explícita, resolvi arrancar o Kannel de uma forma explícita:

 

O resultado é, Para o servidor do kannel:

 

Para o smsc. é:

 

 

Passo número três: criar Web Serviçes para o handler dos http request’s
A nível topológico, a troca de mensagens entre os Web Services, Servidores do Kannel e equipamento móvel é processada da seguinte maneira:
Envio de mensagens usando o Web Serviçe sendsms:

 

 

Recepção de mensagens usando o Web Serviçe receive:

 

 

De salientar que o servidor Kannel não responde de uma forma automática a uma incoming sms. Quando uma mensagem chega, é enviada para o glassfish que há-de tratar de reencaminhar a mensagem para a nossa aplicação principal.


Apesar de não ser um expert no deployment de Web Serviçes, criei 2: um para envio de sms’s e outro para tratar dos requests do servidor do Kannel após chegada de sms.

 

 

Layout do Web Service de envio de mensagens: (destnum, text)

 

 

Layout do Web Service de recepção de mensagens: (to, text)

 

 

 

Última parte: Teste do serviço


Usando este Web serviçe desta maneira ou usando o URL directamente no browser produz o mesmo resultado:

 

 

 

 

 

No servidor do Glassfish é detectado o pedido sendsms por parte do Web Serviçe, ficando assim devidamente registado:

 

 

 No servidor SMSc o envio de mensagens fica devidamente registado:

 

 

A mensagem de teste foi enviada para o mesmo número, tendo portanto, recebido no cartão SIM a respectiva resposta:

 

 

 

Aqui Aconteceram duas coisas:
1. O serviço de incoming message do Kannel foi chamado, fazendo um get-url para o endereço do web Serviçe receive do glassFish:
http://localhost:27838/KannelServer/resources/receivesmsport/receive? Sendo "to" e "text" preenchido automaticamente com os conteúdos da mensagem recebida
2. Avisa que foi recusado um reenvio automático À origem da mensagem (terminal movel)

Por fim, o Web Serviçe receive imprimiu no servidor Glassfish o conteúdo da mensagem e para quem está destinada. Mais tarde quando for criado o Web Serviçe na aplicação java, este web service receive vai tratar de comunicar com a aplicação java, em vez de mostrar o conteúdo da mensagem recebida:

 


 

Published by fxsf às 16:14