Invoice On-Demand

Dezembro 16 2013

Um dos objectivos do Kannel é funcionar como gateway de SMS para redes GSM, podendo assim receber e enviar SMS. Está será a funcionalidade por nós implementada e aqui explicada.

O seguinte diagrama pretende definir a arquitectura do Kannel:

 

Figura 1: Arquitectura.

Esta arquitectura consiste no seguinte: o telemóvel envia uma SMS para o número da placa GSM do Kannel (no nosso caso, por exemplo a pedir uma factura relativa a uma compra num café). O Kannel processa a mensagem de texto e reencaminha para o servidor o conteúdo pretendido. O SMSC envia a resposta com o conteúdo que o Kannel.

Nesta pequeno tutorial que a seguir apresentamos foi usada uma pen TMN ZTE MF190J.

 

1. Instalar o Kannel.

O primeiro passo, obviamente, pela instalação com o seguinte comando:

     sudo apt-get install Kannel

 

2.  Configuração da smsbox.

Alterar o ficheiro que está em /etc/default/Kannel para descomentar a parte do ficheiro que irá permitir a troca de SMS.

     START_WAPBOX = 1
     START_SMSBOX = 1

 

3.  Construção do ficheiro de configuração

Neste passo começamos a interagir com o ficheiro /etc/Kannel/Kannel.conf que será o maior responsável pela troca de SMS.

O primeiro grupo a ser inserido no ficheiro de configuração será o “core” que será o grupo onde será configurado o beararbox.

     group = core
     admin-port = 15000
     smsbox-port = 15001
     admin-password = bar
     status-password = foo
     log-file = "/var/log/kannel/bearerbox.log"
     access-log = "/kannelaccess.log"
     log-level = 0
     box-deny-ip = "*.*.*.*"
     box-allow-ip = "127.0.0.1"

      

Para procedermos à configuração do centro de SMS do Kannel teremos de construir um grupo chamado “smsc”. Este grupo deve incluir todos os dados necessários para proceder à ligação ao centro de SMS.

Neste grupo irão aparecer alguns dados relativos à placa, tais como: o número do cartão desta, o número do centro de mensagens do respectivo operador (TMN +351962100000, Vodafone +351911616161 e Optimus +35193121314) e a porto usb do PC onde a placa se encontra conectada.

     group = smsc
     smsc = at
     modemtype = auto
     device = /dev/ttyACM0
     speed = 460800
     my-number = <your-number>
     sms-center = <center-sms>
     validityperiod = 167

 

Para verificar o porto de ligação da placa poderemos instalar o wvdial e correr o ficheiro de configuração wvdialconf.

     sudo apt-get install wvdial
     sudo wvdialconf

 

 

 Figura 2: Exemplo da execução do wvdial.

Após especificar onde a placa se encontrava conectada, precedemos à elaboração do grupo “modems” que terá toda a configuração necessária para o correcto funcionamento desta.

     group = modems
     broken = true
     id = ZTE WCDMA Technologies MSM
     name = "ZTE WCDMA Technologies MSM"
     detect-string = "MF190J-2.0.0"
     init-string = "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0"
     speed = 460800
     enable-mms = true
     message-storage = me

 

Para o envio de uma sms teremos de definir o “SMSBox”. Este grupo terá todas as informações necessárias sobre a omposição do link que irá permitir o envio da SMS.

     group = smsbox
     bearerbox-host = localhost
     sendsms-port = 15013
     global-sender = <your-number>
     sendsms-chars = "0123456789 +-"
     log-file = "/var/log/kannel/smsbox.log"
     log-level = 0
     access-log = "/var/log/kannel/access.log"
     log-file = "/smsboxlog.log"
     immediate-sendsms-reply = true

 

Deveremos definir um ou mais utilizadores para que seja activo o push SMS através da interface HTTP. O grupo responsável pela criação desta denomina-se “sendsms-user”

     group = sendsms-user
     username = kannel
     password = kannel
     default-smsc = mobiphone

 

Assim, após a criação destes dois grupos, já estaremos em condições de processar o envio de mensagens do nosso servidor Kannel para o número à nossa escolha (correndo o servidor e o cliente). Mediante as configurações que anteriormente temos, podemos concluir que o link responsável por este envio é:

http://localhost:15013/cgi-bin/sendsms?username=kannel&password=kannel&to=<destination-number>&text=<text>

  

Por último, a única coisa que nos falta para o nosso serviço de SMS funcionar como queremos é a criação de um grupo “sms-service”. Este grupo estará responsável pela recepção das SMS por nós desejadas.

     group = sms-service
     keyword = default
     get-url = "http://localhost:9000/smscenter/receive?number=%p&text=%b"
     accept-x-kannel-headers = true
     max-messages = 1
     concatenation = true
     catch-all = true

 

O funcionamento deste serviço é muito simples. De destacar a tag “keyword” que detecta o conteúdo da mensagem, verifica se é igual, e se o for executa o restante grupo (poderíamos ter uma tag “text” com o conteúdo que queríamos responder à pessoa, por exemplo). Quanto à tag “get-url”, será automaticamente preenchida aquando da recepção duma SMS, o que fará disparar o web-service por nós criado para leitura destes parâmetros.

 

4.       Execução dos serviços

Após finalizada a configuração do ficheiro Kannel, podemos proceder à execução do servidor e do cliente para, finalmente, testarmos o nosso serviço.

Para a execução do servidor executamos o seguinte comando (aquando do arranque do sistema operativo, o Kannel arranca automaticamente um processo, sendo assim importante pará-lo primeiro):

     sudo /etc/init.d/kannel stop            
     cd /usr/sbin
     sudo ./bearerbox –v 1 /etc/kannel/kannel.conf

Após este, somente nos falta executar o cliente Kannel:

     sudo ./smsbox –v 1 /etc/Kannel/Kannel.conf

Para exemplificar o q antes explicamos, seguem-se as seguintes imagens:

 

Figura 3: Execução do servidor.

Figura 4: Execução do cliente.

 

Figura 5: Exemplo de envio de SMS.

 

Figura 6: Exemplo de recepção de SMS.

 

Problemas durante a criação do serviço:

  • Durante a execução do trabalho, tivemos de trocar de placa GSM porque a placa anteriormente usada tava com alguns problemas na recepção de SMS. À partida seria a falta de alguns comandos AT.
  • Problemas com a criação init-string e detect-string do grupo modems. Estes problemas podem ser resolvidos correndo o servidor com a opção 0 (modo debug) e assim, aquando da leitura das destas variáveis do ficheiro Kannel, irá dar um erro e informar do que era suposto aparecer.
  • Problemas na execução de algumas funcionalidades do Kannel, que nos prenderam durante algum tempo.

Aqui segue o ficheiro de configuração: kannel.conf


Plataforma de Gestão e Criação de Facturas Digitais
Dezembro 2013
Dom
Seg
Ter
Qua
Qui
Sex
Sab

1
2
3
4
5
6
7

8
9
10
11
12
13
14

15
17
18
19
20
21

22
23
24
25
26
27
28

29
30
31


as minhas fotos
pesquisar neste blog
 
blogs SAPO