Enviar SMS do MySQL no seu Website

Você pode gerenciar bancos de dados com instruções SQL. Você pode enviar instruções SQL através do PHP. Isso possibilita a manipulação de tabelas de banco de dados. Por exemplo, o PHP pode adicionar registros de tabela de mensagens SMS para enviar, mas também pode ler registros de mensagens recebidas.

Download: MySQL_PHP_Example.zip

Vídeo 1 - Como enviar SMS do MySQL no seu Website (Tutorial em vídeo)

A solução em PHP é destinada a desenvolvedores web com conhecimento básico em PHP e SQL. Você pode baixar o código-fonte em PHP, para que possa seguir este tutorial passo a passo contendo instruções básicas de como implementar a solução.

Por que o SMS Gateway com um banco de dados e PHP é uma combinação útil

Esta é uma solução útil em PHP para:

  • adicionar funções de SMS ao seu website.
  • adicionar funções de SMS à sua intranet corporativa.
  • criar notificações automatizadas por SMS.
  • aumentar a segurança do website adicionando login por SMS.

Requisitos

Você precisará hospedar um Ozeki SMS Gateway, um servidor web e um servidor MySQL. Você pode hospedar esta função no mesmo computador ou em duas máquinas, como pode ver na tabela abaixo:

Hospedagem PHP: Sistema operacional: Linux ou Windows
Servidor web (Apache ou IIS)
PHP
Servidor MySQL
Hospedagem do Ozeki SMS Gateway: Sistema operacional: Windows ou Linux
Framework .NET (se usar Windows) ou Mono (se usar Linux)
Ozeki SMS Gateway

O Ozeki SMS Gateway pode ser obtido
abrindo a página de download:
Baixe o Ozeki SMS Gateway!
Como funciona

Antes de começar a usar este aplicativo PHP, você deve provedor de serviço de SMS por IP pela internet.

O exemplo em PHP que você encontra neste tutorial é capaz de ler registros ou inserir novos registros em tabelas. Isso é muito útil para ler mensagens recebidas ou escrever mensagens a serem enviadas. Se você quiser ver como a solução funciona, por favor, veja a Figura 1.

mensagens sms entre ozeki sms gateway e banco de dados mysql e php
Figura 1 - Mensagens SMS entre Ozeki SMS Gateway, um banco de dados MySQL e PHP

Você pode ver o 'Usuário da Internet' no diagrama, que na verdade enviará e receberá mensagens SMS através de um navegador. O usuário da internet está conectado a um servidor web com PHP, que é capaz de gerenciar bancos de dados no Servidor SQL, e esses bancos de dados pertencem ao Ozeki SMS Gateway. Na etapa final, o Ozeki SMS Gateway envia a mensagem para um celular através da rede GSM.

O usuário da internet pode acessar a internet de qualquer lugar. A única coisa que importa é se ele sabe o endereço IP ou a URL do computador que executa o servidor PHP e se está autorizado a fazer login no banco de dados MySQL, para que possa inserir o registro da mensagem SMS desejada, que será selecionado posteriormente pelo Ozeki SMS Gateway para ser enviado ao celular do destinatário usando a rede GSM.

Este fluxo de trabalho também funciona na direção oposta. Onde o Ozeki SMS Gateway recebe a mensagem SMS da rede GSM e a salva no banco de dados MySQL, para que o servidor PHP possa lê-la e mostrá-la na tela do usuário da internet.

Como criar um banco de dados MySQL

	

CREATE DATABASE ozekisms;

USE ozekisms;

CREATE TABLE ozekimessagein
(
id int(11) NOT NULL auto_increment,
sender varchar(30) default NULL,
receiver varchar(30) default NULL,
msg varchar(1024) default NULL,
senttime varchar(100) default NULL,
receivedtime varchar(100) default NULL,
operator varchar(100),
msgtype varchar(160) default NULL,
PRIMARY KEY (id)
);

CREATE TABLE ozekimessageout
(
id int(11) NOT NULL auto_increment,
sender varchar(30) default NULL,
receiver varchar(30) default NULL,
msg varchar(1024) default NULL,
senttime varchar(100) default NULL,
receivedtime varchar(100) default NULL,
status varchar(20) default NULL,
msgtype varchar(160) default NULL,
operator varchar(100),
PRIMARY KEY (id)
);

GRANT insert,update,select,delete 
on ozekisms.* to sqluser@localhost
IDENTIFIED BY 'abc123';

Figura 2 - Criando tabelas na estrutura exigida pelo Ozeki SMS Gateway

Como criar um Usuário de Banco de Dados no Ozeki SMS Gateway

Passo 1: Por favor, abra o Ozeki 10 em um navegador web
Passo 2: Selecione o aplicativo SMS Gateway da área de trabalho integrada do Ozeki 10
Passo 3: Crie o Usuário de Banco de Dados no SMS Gateway seguindo as instruções.

Como usar o código

Por favor, use o código PHP que você baixou e siga estes passos:
Passo 1: Primeiro, descompacte o arquivo zip baixado.
Passo 2: Copie sqlsmshandling.php, sqlsmshandling_inoutmessages.php e sqlsmshandling_functions.php para o diretório principal do servidor web.
Passo 3: Reescreva o endereço IP do servidor SQL, nome de usuário e senha em sqlsmshandling_functions.php.
Passo 4: Se o Ozeki SMS Gateway não estiver em execução, por favor, inicie-o.
Passo 5: Digite o endereço IP do seu servidor PHP no seu navegador web: http://127.0.0.1/sqlsmshandling.php
(Você deve alterar o IP do servidor PHP ou deixá-lo como 127.0.0.1 se o servidor PHP e o seu navegador estiverem rodando na mesma máquina.)
Passo 6: Por favor, preencha o formulário HTML e pressione 'Enviar'.
Passo 7: Se tudo ocorrer bem, o Ozeki SMS Gateway mostrará o status da mensagem no log do Usuário do Banco de Dados.

O script PHP

Aqui você pode encontrar mais detalhes sobre o script de exemplo disponível para download.

O script precisa conhecer as credenciais do usuário para o seu banco de dados MySQL. A principal função do script é inserir a nova mensagem na tabela de mensagens de saída. Esta tabela é chamada 'ozekimessageout' no exemplo atual.

O Usuário de Banco de Dados do Ozeki SMS Gateway verifica periodicamente a tabela em busca de novos registros e, se o status da mensagem for 'Enviar', ele tentará enviá-la. Em caso de sucesso, o Usuário de Banco de Dados alterará o status da mensagem para 'Enviado'.

Esta é a estrutura do código-fonte:

sqlsmshandling.php:

Contém elementos ASP de construção de mensagens. Por exemplo, rótulos, caixas de texto e o botão 'Enviar'. O botão 'Enviar' chama as funções 'connectToDatabase()', 'insertMessage(...)' e 'closeConnection()' do arquivo sqlsmshandling_functions.php. sqlsmshandling.php lida não apenas com mensagens SMS, mas também com exceções. Por exemplo, campos vazios.

sqlsmshandling_functions.php:

Este arquivo PHP contém todas as funções internas usadas pelos 3 arquivos.

- connectToDatabase(): Conecta-se a um banco de dados do servidor MySQL.
- closeConnection(): Fecha a conexão, que foi criada em connectToDatabase().
- insertMessage(recipient, messageType, messageText): Executa a instrução INSERT no banco de dados. Esta instrução insere o registro da mensagem na tabela de mensagens de saída.
- showOutgoingMessagesInTable(): Seleciona mensagens da tabela SQL de mensagens de saída e constrói uma tabela HTML com elas no seu navegador web.
- showIncomingMessagesInTable(): Seleciona mensagens da tabela SQL de mensagens de entrada e constrói uma tabela HTML com elas no seu navegador web.

sqlsmshandling_inoutmessages.php:

Constrói tabelas HTML. Usa as funções connectToDatabase(), showOutgoingMessagesInTable(), showIncomingMessagesInTable() e closeConnection() para regenerar as tabelas. Estas funções estão disponíveis em sqlsmshandling_functions.php.

A descrição detalhada do processo na Figura 1 acima:

Passo 1: Criar formulário de entrada

sqlsmshandling.php cria um formulário (Figura 3) para solicitar dados de SMS do usuário. O formulário consiste em Rótulos e Caixas de Texto, além de um botão 'Enviar'. O usuário da internet preenche os campos de destinatário e mensagem e clica em 'Enviar'.

sqlsmshandling.php

...
<form action="" method="post">
<table border="0" align="centre">
    <tr>
        <td colspan="2" align="centre">
            <font style="font-weight: bold; font-size: 16px;">Compor mensagem</font>
            <br /><br />
        </td>
    </tr>
    <tr>
        <td valign="top">Destinatário: </td>
        <td>
            <textarea name="textAreaRecipient" cols="40" rows="2">...</textarea>
        </td>
    </tr>
    <tr>
        <td valign="top">Texto da mensagem: </td>
        <td>
            <textarea name="textAreaMessage" cols="40" rows="10">...</textarea>
        </td>
    </tr>
    <tr>
        <td colspan="2" align="centre">
            <input type="submit" value="Enviar">
        </td>
    </tr>
    <tr><td colspan='2' align='centre'>
    ...
    </td></tr>
</table>
</form>
...

Figura 3 - Constrói formulário HTML

Se o usuário da internet clicar em 'Enviar', o seguinte script será executado:

...

<?php

    if (isset($_POST["textAreaRecipient"]) && $_POST["textAreaRecipient"] == "")
    {
        echo "O campo destinatário não pode estar vazio!";
    }
    else if (isset($_POST["textAreaRecipient"]) && $_POST["textAreaRecipient"] != "")
    {
    try
    {
        connectToDatabase();
        if (insertMessage($_POST["textAreaRecipient"],"SMS:TEXT",$_POST["textAreaMessage"]))
        {
            echo "Inserção bem-sucedida!";
        }
        closeConnection();
    }
    catch (Exception $exc)
    {
        echo "Erro: " . $exc->getMessage();
    }
}
?>
...

Figura 4 - Faz login e insere a mensagem na tabela do banco de dados chamando a função insertMessage(...)

Passo 2: Processamento dos dados nas caixas de texto HTML

Se ambas as caixas de texto estiverem preenchidas, os dados serão processados e inseridos na tabela de mensagens de saída do banco de dados SQL. A função insertMessage(…) (Figura 5) pode realizar isso.

Lembre-se de que o registro da mensagem será inserido no banco de dados MySQL pelo script que fez login anteriormente (Figura 4 acima).

sqlsmshandling_functions.php

...
function insertMessage ($recipient, $messageType, $messageText)
{
    $query = "insert into ozekimessageout (receiver,msgtype,msg,status) ";
    $query .= "values ('" . $recipient . "', 
    	'" . $messageType . "', '" . $messageText . "', 'send');";
    $result = mysql_query($query);
    if (!$result)
    {
        echo (mysql_error() . "
"); return false; } return true; } ...

Figura 5 - função insertMessage(...)

Passo 3: Criação de tabelas de mensagens de saída e entrada

Se você pressionar F5 ou clicar em atualizar no seu navegador, as tabelas de mensagens de saída e entrada serão atualizadas lendo informações do banco de dados MySQL. Como exemplo, você pode ver showOutgoingMessagesInTable() abaixo (Figura 6).

sqlsmshandling_functions.php

function showOutgoingMessagesInTable()
{
    $query = "select id,sender,receiver,senttime,receivedtime,operator,status,msgtype,
    			msg from ozekimessageout;";
    $result = mysql_query($query);
    if (!$result)
    {
        echo (mysql_error() . "<br>");
        return false;
    }

    try
    {
        echo "<table border='1'>";
        echo "<tr><td>ID</td><td>Remetente</td><td>Destinatário</td>
        <td>Hora de envio</td><td>Hora de recebimento</td><td>Operadora</td>";
        echo "<td>Status</td><td>
        Tipo de mensagem</td><td>Texto da mensagem</td></tr>";
        while ($row = mysql_fetch_assoc($result))
        {
            echo "<tr>";

            echo "<td>" . $row["id"] . "</td>";
            echo "<td>" . $row["sender"] . "</td>";
            echo "<td>" . $row["receiver"] . "</td>";
            echo "<td>" . $row["senttime"] . "</td>";
            echo "<td>" . $row["receivedtime"] . "</td>";
            echo "<td>" . $row["operator"] . "</td>";
            echo "<td>" . $row["status"] . "</td>";
            echo "<td>" . $row["msgtype"] . "</td>";
            echo "<td>" . $row["msg"] . "</td>";

            echo "</tr>";
        }
        echo "</table>";
        mysql_free_result($result);
    }
    catch (Exception $exc)
    {
        echo (mysql_error() . "<br>");
        return false;
    }

    return true;
}
...

Figura 6 - função showOutgoingMessagesInTable(): Gera uma tabela HTML a partir de mensagens de saída

Pergunta: Posso enviar outro tipo de mensagem além de 'SMS:TEXT'?
Resposta: Sim. Por exemplo, uma mensagem Wap push ao chamar a função insertMessage(...) (Figura 7).

insertMessage ($_POST["textAreaRecipient"], "SMS:WAPPUSH", $_POST["textAreaMessage"])

No formulário, o seguinte deve ser escrito na caixa de texto 'Texto da mensagem':

<si>
<indication href="http://target_address" action="signal-high">
texto de descrição
</indication>
</si>

Figura 7 - SMS:TEXT alterado para SMS:WAPPUSH

O parâmetro 'action' da tag 'indication' pode ser um dos seguintes:
signal-high, signal-medium, signal-low, signal-none, signal-delete.

Pergunta: O servidor HTTP com PHP habilitado pode rodar em um computador diferente do servidor MySQL e do Ozeki SMS Gateway?
Resposta: Sim, pode. No script PHP, defina o endereço IP e as credenciais de login atuais para o seu banco de dados MySQL.

Pergunta: Posso mostrar ao destinatário o número de telefone do remetente?
Resposta: Sim, você pode. Crie uma caixa de texto para o número de telefone do remetente ou modifique a função insertMessage(...) (Figura 8). Lembre-se de que isso só funciona se você tiver uma conexão com um provedor de serviço de SMS por IP.

function insertMessage($sender, $recipient, $messageType, $messageText)
{
...
$query = "insert into ozekimessageout (sender,receiver,msgtype,msg,status) ";
$query .= "values ('".$sender."','".$recipient."',".
"'".$messageType."','".$messageText."','send');";
$result = mysql_query($query);
...
}
Figura 8 - Função insertMessage(...) modificada Resumo

Este artigo trata de uma solução para gerenciar mensagens SMS com MySQL usando o Ozeki SMS Gateway e como configurar esse sistema. Se você implementar esta solução seguindo o tutorial passo a passo, poderá controlar seu sistema de mensagens com instruções SQL através de sua aplicação PHP. Além da organização e simplicidade no envio de SMS que esta adição oferece, há outra grande vantagem: a segurança avançada do site que você pode alcançar ao adicionar login por SMS.

O site da Ozeki está repleto de artigos que recomendo a leitura, aproveite a oportunidade e visite esses sites. Comece com o guia sobre como usar seu site para enviar SMS.

Faça o download do Ozeki SMS Gateway agora e deixe-nos ajudá-lo a alcançar seus objetivos!

More information