Respostas SMS de um Banco de Dados SQL

O Autoreply Database User do Ozeki SMS Gateway pode se conectar ao seu banco de dados Microsoft SQL, Oracle, MySQL, Sybase, etc... com uma string de conexão. Ele executa qualquer consulta SELECT que você fornecer, após receber uma mensagem SMS. O conjunto de resultados da consulta será enviado como mensagens de saída. As consultas e tabelas também podem ser modificadas a partir do seu próprio aplicativo.

Como enviar uma resposta SMS a partir do SQL

Para enviar uma resposta SMS a partir do SQL:

  1. Inicie o Ozeki SMS Gateway
  2. Adicione um novo usuário Autoreply database
  3. Crie a estrutura da tabela do banco de dados SQL
  4. Configure o usuário Autoreply database
  5. Forneça o script de texto de resposta automática
  6. Use números e palavras-chave identificáveis
  7. Envie um SMS de teste para obter a resposta do SQL
  8. Verifique os logs do usuário Autoreply database

Vídeo 1 - Como enviar uma resposta SMS a partir do SQL (Tutorial em vídeo)

Você pode criar o seguinte serviço usando esta solução (Figura 1):
1.) Uma mensagem SMS é recebida pelo Ozeki SMS Gateway de um telefone celular.
2.) O Autoreply Database User do Ozeki SMS Gateway procura por palavras-chave na mensagem SMS usando um arquivo txt.
3.) Dependendo da busca, uma mensagem de resposta automática será selecionada do seu servidor de banco de dados com o mesmo arquivo txt.

É importante que você tenha um provedor de serviço de SMS IP ou um modem GSM configurado no seu Ozeki SMS Gateway, para que você possa receber mensagens SMS e responder automaticamente a elas usando este exemplo.

como funciona o autoreply database user do ozeki sms gateway
Figura 1 - Como funciona o Autoreply Database User do Ozeki SMS Gateway

Passo 1 - Configurar o Autoreply Database User no Ozeki SMS Gateway

Primeiro, você precisa instalar um Autoreply Database User para criar o serviço explicado. No console 'Management', por favor clique em 'Add' como visto na Figura 2.

clique em adicionar usuário ou aplicativo no console de gerenciamento
Figura 2 - Clique em 'Add' usuário ou aplicativo no console 'Management'

Encontre o Autoreply Database User e clique no link azul 'install' ao lado dele. Como você pode ver na Figura 3.

instale o autoreply database user a partir do console de gerenciamento
Figura 3 - Instale o Autoreply Database User a partir do console 'Management'

Passo 2 - Criar a estrutura da tabela do banco de dados

O Autoreply Database User irá SELECIONAR as mensagens SMS de resposta de uma tabela de banco de dados. Crie a seguinte estrutura de banco de dados para armazenar as mensagens SMS (Figura 4). Este exemplo usa um servidor de banco de dados MySQL, mas você pode usar outros bancos de dados como Microsoft SQL, Oracle, Sybase, etc... Você também pode usar outras tabelas e layouts de tabela.


CREATE TABLE autoreplymessage (
		 id int(11) NOT NULL auto_increment, 
		 keyword varchar(30) default NULL, 
		 msg text default NULL, 
		 PRIMARY KEY (id)
		 );
				
INSERT INTO autoreplymessage (keyword,msg) VALUES 
		("default","Não há dados para esta palavra-chave."), 
		("red","Vermelho é uma boa cor."), 
		("blue","Azul não é a melhor opção.");
Figura 4 - CREATE TABLE e INSERT linhas na tabela 'autoreplymessage'

Suas tabelas podem ser visualizadas com instruções SELECT * FROM (Figura 5). Embora este exemplo contenha apenas uma tabela.

> SELECT * FROM autoreplymessage;
id          keyword                        msg
----------  ------------------------------ -------------------------------------
 1          default                        Não há dados para esta palavra-chave.
 2          red                            Vermelho é uma boa cor.
 3          blue                           Azul não é a melhor opção.

(3 linhas afetadas)
Figura 5 - Leia a tabela 'autoreplymessage' com uma instrução SELECT

Caso não haja um driver de banco de dados instalado com o servidor de banco de dados, você deve instalar um driver, porque você precisará da string de conexão no próximo passo. O driver de banco de dados conecta o Ozeki SMS Gateway e o servidor de banco de dados. Na maioria dos casos, há um driver de banco de dados instalado com o servidor de banco de dados.

Passo 3 - Configurar o Utilizador da Base de Dados de Resposta Automática para usar a sua base de dados

Será necessário inserir o tipo de conexão da base de dados e a string de conexão no painel 'Configuração da Base de Dados' do Utilizador da Base de Dados de Resposta Automática (Figura 6). O tipo pode ser selecionado a partir da caixa de combinação, enquanto a string deve ser colocada na caixa de texto.

configurar utilizador da base de dados de resposta automática para consulta de informações por SMS
Figura 6 - Configurar o Utilizador da Base de Dados de Resposta Automática para consulta de informações por SMS

Na Figura 7 pode ver uma string de exemplo para uma conexão à base de dados MySQL. Tenha em mente que pode usar o seu próprio tipo de string de conexão (OleDB, ODBC, SQLServer, Oracle) para o seu próprio servidor de base de dados, que pode ser Microsoft SQL, Oracle, Sybase, etc... Caso esteja a usar um driver ODBC para MySQL, só precisa de modificar o IP do servidor MySQL, o nome da base de dados, o nome de utilizador e a palavra-passe para os seus próprios valores na seguinte string:

Tipo de Conexão: ODBC
String de Conexão: Driver={MySQL ODBC 5.3 Unicode Driver}; Server=127.0.0.1;Database=ozekisms;User=ozeki;Password=abc123;Option=4;

Figura 7 - Exemplo de string de conexão para uma conexão ODBC a uma base de dados MySQL

Para encontrar a string de conexão para outros servidores de base de dados, sugere-se a leitura do guia de Strings de Conexão à Base de Dados para SMS.

Passo 4 - Escrever o script para resposta automática a partir da base de dados SQL

Agora é hora de escrever o ficheiro de script que é capaz de SELECIONAR uma linha da sua tabela de base de dados, se a tabela foi criada com sucesso no PASSO 2. O atributo de mensagem da linha selecionada será respondido à mensagem SMS. Aqui pode encontrar o caminho do script de exemplo: C:\Program Files\Ozeki\Ozeki10\Data\NG\config\OzekiUsername\sqlscript.txt

Um editor de texto simples pode editar estes ficheiros ou pode criar o seu próprio ficheiro txt e editá-lo com a sua própria aplicação, o que é útil se desejar modificar as consultas. Por favor, forneça o caminho para o ficheiro usando o Utilizador da Base de Dados de Resposta Automática clicando em 'Configuração da Base de Dados' e selecionando o separador 'Script de Resposta Automática' (Figura 8)

fornecer caminho do script txt ao utilizador da base de dados de resposta automática
Figura 8 - Fornecer caminho do script txt ao Utilizador da Base de Dados de Resposta Automática

Passo 5 - A estrutura dos scripts de consulta SQL

O script SQL do Utilizador da Base de Dados de Resposta Automática contém pares de declaração-filtro, que funcionam exatamente como a estrutura if-then em linguagens de programação. A mensagem SMS recebida passa pelo filtro e, se estiver correta, uma declaração SQL SELECT será executada. O conteúdo da mensagem das linhas selecionadas será encaminhado para um número de telefone. Este número é o 1º parâmetro do conjunto de resultados da declaração SELECT, enquanto o texto da mensagem é o 2º. O filtro é capaz de identificar números de telefone, fragmentos de texto e palavras-chave. A palavra-chave de cada mensagem é a primeira palavra do texto. O encaminhamento acontece se o endereço do destinatário estiver incluído na base de dados (Figura 11).

Passo 6 - Um exemplo simples de palavra-chave

Este exemplo será executado na seguinte tabela que pode ver na Figura 9.

id          palavra-chave                  mensagem
----------  ------------------------------ -------------------------------------
 1          predefinido                    Não existem dados para esta palavra-chave.
 2          vermelho                       Vermelho é uma boa cor.
 3          azul                           Azul não é a melhor opção.
Figura 9 - O conteúdo da tabela 'autoreplymessage'

Pode executar o seguinte script na Figura 10 na tabela 'autoreplymessage' adicionando-o ao 'sqlscript.txt'. Como lembrete, a palavra-chave, simbolizada pelo caractere 'k', é a primeira palavra na mensagem SMS. Esta palavra será testada pelo filtro. Se uma verificação do filtro for bem-sucedida, a declaração SELECT é executada e o script irá parar. Como pode ver, pode colocar valores constantes na declaração SELECT. Por exemplo, '$sender', que é o remetente da mensagem recebida.

Elementos do script que pode colocar no sqlscript.txt
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='vermelho'
#O primeiro filtro verifica se a palavra 'VERMELHO' era a palavra-chave.
#Se verdadeiro, SELECIONA 'Vermelho é uma boa cor.' como mensagem de resposta.
#Se falso, passa para o próximo filtro.

k^AZUL
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='azul'
#O segundo filtro verifica se a palavra 'AZUL' era a palavra-chave.
#Se verdadeiro, SELECIONA 'Azul não é a melhor opção.' como mensagem de resposta.
#Se falso, passa para o próximo filtro.

k.*
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='predefinido'
#O terceiro filtro aceitará qualquer outra palavra-chave.
#SELECIONA 'Não existem dados para esta palavra-chave.' como mensagem de resposta.
Figura 10 - Exemplo de script que pode ser colocado no sqlscript.txt

A parte do filtro do script de consulta SQL funciona de forma semelhante à parte do filtro do script de mensagens SMS, mas lembre-se de procurar apenas exemplos de filtros, pois a segunda parte é sempre uma declaração SQL SELECT.

Passo 7 - Palavras-chave predefinidas no Ozeki SMS Gateway

Estes tipos de palavras-chave podem ser colocadas no script. Por exemplo, '$sender':


SELECT '$sender',msg FROM autoreplymessage WHERE keyword='red'
Figura 11 - Envia msg para '$sender'

O utilizador da base de dados de resposta automática pode reconhecer as seguintes palavras-chave:
Palavra-chaveValor
$originatorSubstituído pelo número de telefone do remetente.
$sender=$originator (O $sender é outro nome para o $originator.)
$recipientSubstituído pelo número de telefone que recebeu a mensagem.
$receiver=$recipient (O $receiver é outro nome para o $recipient.)
$messagedataSubstituído pelo texto da mensagem.
$keywordSubstituído pela 1ª palavra na mensagem. Esta palavra é chamada de palavra-chave.
$afterSubstituído pelo texto restante após a palavra-chave.
$senttimeSubstituído por um timestamp que mostra quando a mensagem foi enviada.
$receivedtimeSubstituído por um timestamp que mostra quando a mensagem foi recebida.
$messagetypeSubstituído pelo tipo da mensagem, que na maioria dos casos é 'SMS:TEXT'.
$idSubstituído por uma string única,
que identifica a mensagem no Ozeki SMS Gateway.
$operatorSubstituído pelo nome do fornecedor de serviços,
que recebeu a mensagem no Ozeki SMS Gateway.
$1Substituído pela 1ª palavra na mensagem.
$2Substituído pela 2ª palavra na mensagem.
$3Substituído pela 3ª palavra na mensagem, etc...

A estrutura do script de resposta automática é explicada nestas páginas web:

Passo 8 - Testar a solução de resposta automática a partir da base de dados

Depois de realizar os Passos 1 a 6, pode testar a solução. O Ozeki SMS Gateway irá encaminhar as mensagens SMS recebidas para o seu Utilizador de Base de Dados de Resposta Automática. O script de consulta SQL filtra a mensagem SMS para criar os conjuntos de resultados SELECT adequados. Cada linha do conjunto de resultados representará uma mensagem a ser respondida ou encaminhada.

Pode acompanhar o registo de mensagens do seu Utilizador de Base de Dados de Resposta Automática no seguinte caminho:
C:\Program Files\Ozeki\Ozeki10\Data\NG\Logs

Quando insiro dados na tabela Ozekimessageout, não recebo a mensagem no meu telemóvel. Qual pode ser a razão para não receber a mensagem de texto que foi inserida na tabela de saída usando a minha consola SQL?

Primeiro, vamos descartar um problema de rede móvel. Envie um SMS de teste diretamente a partir da interface gráfica do utilizador (GUI) do Ozeki. Se a mensagem chegar com sucesso, a ligação à rede parece estar a funcionar corretamente.

Em seguida, precisamos verificar se as mensagens estão a ser transferidas da sua base de dados para o software Ozeki. Insira algumas mensagens de teste na tabela Ozekimessageout. Depois, na GUI do Ozeki, navegue até à caixa de saída associada ao utilizador da base de dados que está a utilizar. Se estas mensagens de teste estiverem ausentes da caixa de saída, o problema está no processo de transferência de dados entre a base de dados e o Ozeki.

Gostaria de usar uma base de dados para muitos "utilizadores de base de dados". Isso é possível?

Absolutamente! O Ozeki SMS Gateway permite-lhe manter registos de mensagens distintos para diferentes finalidades, utilizando utilizadores de base de dados separados.

Aqui está um guia passo a passo:

  • Criar Novas Tabelas de Base de Dados: Configure duas novas tabelas na sua base de dados. Para fácil identificação, pode nomeá-las ozekimessagein2 e ozekimessageout2. Estas tabelas devem espelhar a estrutura das tabelas existentes ozekimessagein e ozekimessageout utilizadas pelo seu primeiro utilizador de base de dados.
  • Configurar o Segundo Utilizador de Base de Dados: Aceda ao formulário de configuração do seu segundo utilizador de base de dados no Ozeki.
  • Modificar Modelos SQL: Localize a secção para modelos SQL dentro do formulário de configuração. Estes modelos especificam como as mensagens são guardadas nas tabelas da base de dados.
  • Atualizar Nomes das Tabelas: Dentro dos modelos SQL para o segundo utilizador de base de dados, atualize os nomes das tabelas existentes (ozekimessagein e ozekimessageout) para corresponder às novas tabelas criadas (ozekimessagein2 e ozekimessageout2).
Ao seguir estes passos, irá estabelecer registos de mensagens separados para cada utilizador de base de dados. Isto permite-lhe categorizar ou filtrar mensagens com base nas suas necessidades específicas, utilizando os nomes das tabelas escolhidos.

O meu Ozeki SMS Gateway está sempre a desligar-se do meu servidor MySQL com a seguinte mensagem de erro: MySQL Server has gone away. O que devo fazer?

Para melhorar a capacidade de resposta ao usar o Ozeki com o MySQL, ajuste a configuração de tempo limite. Eis como:

Configurar o Tempo Limite do MySQL:

  • Edite o seu ficheiro de configuração do MySQL (por exemplo, my.ini) e defina o parâmetro interactive_timeout para a duração desejada em segundos (por exemplo, interactive_timeout = 28800 para 8 horas).
  • Guarde as alterações e reinicie o serviço MySQL.

Atualizar a String de Ligação do Ozeki:

  • Modifique a sua string de ligação do Ozeki para usar Interactive em vez de wait_timeout. O formato correto é Driver={MySQL ODBC 5.2 ANSI Driver};Server=127.0.0.1;Database=ozeki;User=test;Password=test;Interactive=VALOR_DO_TEMPO_LIMITE.

  • Lembre-se de substituir VALOR_DO_TEMPO_LIMITE pelo tempo limite desejado em segundos.
Ao seguir estes passos, irá otimizar os tempos limite de ligação do MySQL para um funcionamento mais suave dentro do Ozeki, especialmente benéfico para tarefas de longa duração ou conjuntos de dados grandes.

Driver={MySQL ODBC 5.2 ANSI Driver};Server=127.0.0.1;Database=ozeki;User=test;Password=test;interactive=;Option=8;

More information