Recendo SMS pelo asterisk

Você acabou de adquirir uma placa VB0404GSM da Digivoice, instalou no seu Asterisk (como instalar sua placa Digivoice?) e está doido para ver como funciona o recebimento de SMS? Então leia o artigo abaixo e verá como adicionar essa funcionalidade em seu ambiente com poucos passos e despendendo poucos minutos.

Ambiente: Asterisk 1.8.23.0 rodando em Debian 7.1 (wheezy) placa VB0404GSM da Digivoice.

Para preparar seu asterisk de modo que possa receber mensagens SMS, você deve inserir o  trecho abaixo no mesmo contexto de entrada que recebe as chamadas do chip que você  já tem configurado em seu extensions.conf (caso você não tenha configurada nada ainda em relação a sua entrada GSM, veja esse outro artigo – configurando uma entrada GSM no asterisk):

exten => dgv_sms,1,NoOp(SMS RECEBIDO DE: ${DGV_SMS_FROM} em ${DGV_SMS_DATE} as ${DGV_SMS_TIME}: ${DGV_SMS_TEXT})
exten => dgv_sms,n,System(echo "${DGV_SMS_DATE}(${DGV_SMS_TIME}): ${DGV_SMS_TEXT}" >> /tmp/"${DGV_SMS_FROM:3}")
exten => dgv_sms,n,Hangup

Obs.: esse trecho pode ser inserido no começo ou no final do seu contexto pois o channel driver DigiVoice, ao receber uma mensagem SMS,  chamara o exten dgv_sms dentro do contexto relativo, com prioridade 1, não importando onde ele esteja.

Antes de explicar a funcionalidade de cada linha do trecho acima, é importante saber que o conteúdo do SMS recebido é alocado em  variáveis que podem ser recuperadas. As variáveis disponíveis são:

  • DGV_SMS_FROM: número que enviou o SMS (ex.: +558588887777).
  • DGV_SMS_DATE: data do recebimento. Esta data é enviada pela operadora e não é a data do seu sistema operacional. Vem no formato AA/MM/DD (ex.: 13/08/03).
  • DGV_SMS_TIME: hora do recebimento do SMS. Tal qual a data, esse dado vem da operadora. É arquivado no formato HH:MM:SS (ex.: 10:40:03).
  • DGV_SMS_TEXT: o texto do SMS.

Explicando o trecho do contexto:

Na prioridade 1, apenas utilizamos a função NoOp para exibir na console CLI o texto “SMS RECEBIDO DE: +558588887777 EM 13/08/03 AS 11:16:51. TEXTO: Teste de recebimento de SMS no Asterisk”.

Na prioridade 2, a aplicação System  cria um arquivo no diretorio /tmp/, onde o nome do arquivo é o numero do celular de origem da mensagem SMS menos os 3 primeiros caracteres, cria o texto do arquivo e direciona para o conteúdo para dentro do arquivo. Como resultado teremos um arquivo de nome 8588887777 com o conteúdo:

“13/08/03(11:16:51): Teste de recebimento de SMS no Asterisk”.

E na prioridade 3, encerramos a execução deste contexto.

Essa é a explicação para o funcionamento básico que você coloca em funcionamento em poucos minutos. Claro que é possível deixar a imaginação fluir e utilizar outros recursos mais avançados que permitam tratar a mensagem, usando AGI ou outros scripts no ambiente do sistema operacional para, por exemplo, ao receber um arquivo checar o conteúdo e, dependendo do resultado, tomar alguma ação. Por exemplo: se encontrar as palavras ‘me ligue’ no conteúdo da variável DGV_SMS_TEXT então gera uma ligação para o número de origem ou mil e uma outras possibilidades (sorteios, protocolos, etc).

That’s All Folks.


Você é usuário de Android? Visite a página do aplicativo abaixo e dê uma força. Instale e comente.

Direto na minha página de desenvolvedor no Google Play Store ou pelo QRCODE abaixo:

1362922268

Ou ainda no AndroidPIT:
Alcool X Gasolina - Android Market

Deixe uma resposta