É possivel encaminhar e receber SMS utilizando placas GSM da DigiVoice, modelo VB0404-GSM.
Vou dar um exemplo de envio de SMS utilizando o Asterisk, iremos criar um arquivo de texto contendo a mensagem que será enviada por SMS, este arquivo será utilizado pelo dialplan do Asterisk, assim que um peer (ramal) digitar o código de envio de sms.
A partir de um ramal, o usuário irá digitar o código para envio de SMS seguido do telefone de destino, no nosso exemplo um número de telefone celular local.
Exemplo:
123488888888 discado a partir de um ramal do PBX-IP Asterisk.
Onde:
1234 é o código e 88888888 o número do telefone celular de destino.
[from-internal-custom] ;envio de sms exten => _1234.,1,System(find /tmp/sms.cfg) exten => _1234.,n,NoOP(${SYSTEMSTATUS}) exten => _1234.,n,GotoIf($["${SYSTEMSTATUS}" == "SUCCESS"]?sim:nao) exten => _1234.,n(sim),ReadFile(SMS=/tmp/sms.cfg) exten => _1234.,n,DgSendSMS(g1,${EXTEN:4:8},${SMS}) exten => _1234.,n,PlayBack(beep) exten => _1234.,n,Hangup() exten => _1234.,n(nao),PlayBack(vm-sorry) exten => _1234.,n,Hangup()
Para receber um SMS pelo PBX-IP Asterisk podemos utilizar o exemplo abaixo, onde ao ser recebido um SMS o mesmo será salvo no diretório /tmp.
As regras devem pertencer ao contexto de entrada da placa de GSM.
[from-pstn-custom] ;receber sms exten => dgv_sms,1,NoOP(SMS RECIVED FROM: ${DGV_SMS_FROM} at ${DGV_SMS_DATE} (${DGV_SMS_TIME}): ${DGV_SMS_TEXT}) exten => dgv_sms,n,System(echo "--- New message ---" >> /tmp/"${DGV_SMS_FROM:3}") exten => dgv_sms,n,System(echo "From: ${DGV_SMS_FROM}" >> /tmp/"${DGV_SMS_FROM:3}") exten => dgv_sms,n,System(echo "Received: ${DGV_SMS_DATE}(${DGV_SMS_TIME})" >> /tmp/"${DGV_SMS_FROM:3}") exten => dgv_sms,n,System(echo "Message: ${DGV_SMS_TEXT}" >> /tmp/"${DGV_SMS_FROM:3}") exten => dgv_sms,n,System(echo " " >> /tmp/"${DGV_SMS_FROM:3}") exten => dgv_sms,n,Hangup()
O recebimento do SMS ficará conforme o exemplo abaixo:
--- New message --- From: 01188888888 Received: 12/01/11(10:46:53) Message: Mensagem enviada pela placa GSM DigiVoice
Abraços.
Wagner Antonio Barth wagner@barth.com.br |
Teria como eu obter uma resposta da aplicação dizendo se o sms foi enviado com exito ou não?
Carlos,
No momento ainda não tem como recuperar o status de delivery, mas esta em fase de implementação e assim que estiver pronto publico.
abs.
Barth, tem como ele ler um arquivo com vários telefones e mandar os sms automaticamente ?
Luis,
Você pode usar o .call do Asterisk para criar um discador utilizando uma lista de números de telefone e a aplicação de SMS.
abs,
Barth, tem previsão quando a aplicação DgSendSMS vai aceitar multiplos destinos (com a mesma mensagem) ?
Luis,
Conversei com o pessoal do desenvolvimento e esta prevista esta implementação, somente não puderam me dar um prazo de quando estará disponível.
Assim que tiver uma posição deles estarei publicando um exemplo de utilização.
Abraços,
barth
Obrigado Barth. Outra sugestão legal é permitir que possamos recuperar através de uma aplicação (ou função) no dialplan as operadoras do chips GSM. Ajuda bastante no roteamento automático.
Abraços.
Luis Mallozzi
Barth, tem como vc dar um exemplo de como chamar essa aplicação utilizando um arquivo .call do asterisk. Obrigado!!!
Bom dia,
Sei que o post é um pouco antigo, mas estou tentando receber SMS e não funciona conforme esperado.
Quando recebo SMS o Asterisk recebe o texto todo bagunçado/codificado.
Exemplo:
— Executing [dgv_sms@to-gsm:1] NoOp(“DGV/3-SMS-1”, “SMS RECEBIDO DE: +5511997979797 em 16/09/08 as 11:48:55: CM@I: “MT”,1@”) in new stack
O texto do SMS acima foi “Oi” e chegou “CM@I: “MT”,1@”.
Pode me ajudar?
Obrigada
Renata Dias