Enviar SMS desde MySQL en tu Sitio Web

Puedes gestionar bases de datos con sentencias SQL. Puedes enviar sentencias SQL a través de PHP. Esto te permite manipular tablas de bases de datos. Por ejemplo, PHP puede agregar registros de tablas de mensajes SMS para enviar, pero también puede leer registros de mensajes entrantes.

Descargar: MySQL_PHP_Example.zip

Video 1 - Cómo enviar SMS desde MySQL en tu Sitio Web (Tutorial en video)

La solución PHP está destinada a desarrolladores web con conocimientos básicos en PHP y SQL. Puedes descargar el código fuente PHP, para que puedas seguir este tutorial paso a paso que contiene instrucciones básicas sobre cómo implementar la solución.

Por qué es útil combinar una pasarela SMS con una base de datos y PHP

Esta es una solución PHP útil para:

  • agregar funciones SMS a tu sitio web.
  • agregar funciones SMS a tu intranet corporativa.
  • crear notificaciones SMS automatizadas.
  • aumentar la seguridad del sitio web agregando inicio de sesión por SMS.

Requisitos

Necesitarás alojar una Pasarela SMS Ozeki, un servidor web y un servidor MySQL. Puedes alojar esta función desde la misma computadora o desde dos máquinas como se muestra en la tabla a continuación:

Host PHP: Sistema operativo: Linux o Windows
Servidor web (Apache o IIS)
PHP
Servidor MySQL
Host de la Pasarela SMS Ozeki: Sistema operativo: Windows o Linux
Framework .NET (si usas Windows) o Mono (si usas Linux)
Pasarela SMS Ozeki

La Pasarela SMS Ozeki se puede obtener
abriendo la página de descarga:
¡Descarga la Pasarela SMS Ozeki!

Cómo funciona

Antes de comenzar a usar esta aplicación PHP, debes proveedor de servicios SMS por IP a través de internet.

El ejemplo PHP que puedes encontrar en este tutorial es capaz de leer registros o insertar nuevos registros en tablas. Esto es muy útil para leer mensajes entrantes o escribir mensajes salientes. Si deseas ver cómo funciona la solución, por favor mira Figura 1.

mensajería sms entre la pasarela sms ozeki, una base de datos mysql y php
Figura 1 - Mensajería SMS entre la Pasarela SMS Ozeki, una base de datos MySQL y PHP

En el diagrama puedes ver al 'Usuario de Internet', quien enviará y recibirá mensajes SMS a través de un navegador. El usuario de internet está conectado a un servidor web con PHP habilitado, que puede gestionar bases de datos en el Servidor SQL, y estas bases de datos pertenecen a la Pasarela SMS Ozeki. En el paso final, la Pasarela SMS Ozeki envía el mensaje a un teléfono móvil a través de la red GSM.

El usuario de internet puede acceder a internet desde cualquier lugar. Lo único que importa es si conocen la dirección IP o la URL de la computadora que ejecuta el servidor PHP y si están autorizados para iniciar sesión en la base de datos MySQL, para que puedan insertar el registro del mensaje SMS deseado, que luego será seleccionado por la Pasarela SMS Ozeki para ser enviado al teléfono celular del destinatario utilizando la red GSM.

Este flujo de trabajo también funciona en la dirección opuesta. Donde la Pasarela SMS Ozeki recibe el mensaje SMS de la red GSM y lo guarda en la base de datos MySQL, para que el servidor PHP pueda leerlo y mostrarlo en la pantalla del usuario de internet.

Cómo crear una base de datos 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 - Creación de tablas en la estructura requerida por la Pasarela SMS Ozeki

Cómo crear un Usuario de Base de Datos en la Pasarela SMS Ozeki

Paso 1: Abre Ozeki 10 en un navegador web
Paso 2: Selecciona la aplicación Pasarela SMS desde el escritorio integrado de Ozeki 10
Paso 3: Crea el Usuario de Base de Datos en la Pasarela SMS siguiendo las instrucciones.

Cómo usar el código

Por favor, usa el código PHP que has descargado y sigue estos pasos:
Paso 1: Primero descomprime el archivo zip descargado.
Paso 2: Copia sqlsmshandling.php, sqlsmshandling_inoutmessages.php y sqlsmshandling_functions.php en el directorio principal del servidor web.
Paso 3: Reescribe la dirección IP del servidor SQL, el nombre de usuario y la contraseña en sqlsmshandling_functions.php.
Paso 4: Si la Pasarela SMS Ozeki no está en ejecución, por favor iníciala.
Paso 5: Ingresa la dirección IP de tu servidor PHP en tu navegador web: http://127.0.0.1/sqlsmshandling.php
(Deberás cambiar la IP del servidor PHP o dejarla en 127.0.0.1 si el servidor PHP y tu navegador web se ejecutan en la misma máquina.)
Paso 6: Por favor, completa el formulario HTML y presiona 'Enviar'.
Paso 7: Si todo salió bien, la Pasarela SMS Ozeki mostrará el estado del mensaje en el registro del Usuario de Base de Datos.

El script PHP

Aquí puedes encontrar más detalles del script de ejemplo descargable.

El script debe conocer las credenciales de usuario de tu base de datos MySQL. El papel principal del script es insertar el nuevo mensaje en tu tabla de mensajes salientes. Esta tabla se llama 'ozekimessageout' en el ejemplo actual.

El Usuario de Base de Datos de la Pasarela SMS Ozeki verifica periódicamente la tabla en busca de nuevos registros y, si el estado del mensaje es 'Enviar', intentará enviarlo. En caso de éxito, el Usuario de Base de Datos cambiará el estado del mensaje a 'Enviado'.

Esta es la estructura del código fuente:

sqlsmshandling.php:

Contiene elementos ASP para construir mensajes. Por ejemplo, etiquetas, cuadros de texto y el botón 'Enviar'. El botón 'Enviar' llama a las funciones 'connectToDatabase()', 'insertMessage(...)' y 'closeConnection()' desde sqlsmshandling_functions.php. sqlsmshandling.php maneja no solo mensajes SMS, sino también excepciones. Por ejemplo, campos vacíos.

sqlsmshandling_functions.php:

Este archivo PHP contiene todas las funciones internas utilizadas por los 3 archivos.

- connectToDatabase(): Conecta a una base de datos del servidor MySQL.
- closeConnection(): Cierra la conexión, que fue creada en connectToDatabase().
- insertMessage(recipient, messageType, messageText): Ejecuta una sentencia INSERT en la base de datos. Esta sentencia inserta el registro del mensaje en la tabla de mensajes salientes.
- showOutgoingMessagesInTable(): Selecciona mensajes de la tabla SQL de mensajes salientes y construye una tabla HTML con ellos en tu navegador web.
- showIncomingMessagesInTable(): Selecciona mensajes de la tabla SQL de mensajes entrantes y construye una tabla HTML con ellos en tu navegador web.

sqlsmshandling_inoutmessages.php:

Construye tablas HTML. Utiliza las funciones connectToDatabase(), showOutgoingMessagesInTable(), showIncomingMessagesInTable() y closeConnection() para regenerar tablas. Estas funciones están disponibles en sqlsmshandling_functions.php.

La descripción detallada del proceso en la Figura 1 anterior:

Paso 1: Crear formulario de entrada

sqlsmshandling.php crea un formulario (Figura 3) para solicitar datos SMS al usuario. El formulario consta de etiquetas y cuadros de texto, más un botón 'Enviar'. El usuario de internet completa los campos de destinatario y mensaje y hace clic en '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;">Redactar mensaje</font>
            <br /><br />
        </td>
    </tr>
    <tr>
        <td valign="top">Destinatario: </td>
        <td>
            <textarea name="textAreaRecipient" cols="40" rows="2">...</textarea>
        </td>
    </tr>
    <tr>
        <td valign="top">Texto del mensaje: </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 - Construye un formulario HTML

Si el usuario de internet hace clic en 'Enviar', se ejecuta el siguiente script:

...

<?php

    if (isset($_POST["textAreaRecipient"]) && $_POST["textAreaRecipient"] == "")
    {
        echo "¡El campo destinatario no puede estar vacío!";
    }
    else if (isset($_POST["textAreaRecipient"]) && $_POST["textAreaRecipient"] != "")
    {
    try
    {
        connectToDatabase();
        if (insertMessage($_POST["textAreaRecipient"],"SMS:TEXT",$_POST["textAreaMessage"]))
        {
            echo "¡La inserción fue exitosa!";
        }
        closeConnection();
    }
    catch (Exception $exc)
    {
        echo "Error: " . $exc->getMessage();
    }
}
?>
...

Figura 4 - Inicia sesión e inserta el mensaje en la tabla de la base de datos llamando a la función insertMessage(...)

Paso 2: Procesamiento de datos en los cuadros de texto HTML

Si ambos cuadros de texto están completos, los datos se procesarán y se insertarán en la tabla de mensajes salientes de la base de datos SQL. La función insertMessage(…) (Figura 5) puede lograr esto.

Ten en cuenta que el registro del mensaje se insertará en la base de datos MySQL por el script que previamente ha iniciado sesión (Figura 4 arriba).

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 - Función insertMessage(...)

Paso 3: Creación de tablas de mensajes salientes y entrantes

Si presionas F5 o haces clic en actualizar en tu navegador, las tablas de mensajes salientes y entrantes se actualizarán leyendo información de la base de datos MySQL. Como ejemplo, puedes ver showOutgoingMessagesInTable() a continuación (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>Remitente</td><td>Destinatario</td>
        <td>Hora de envío</td><td>Hora de recepción</td><td>Operador</td>";
        echo "<td>Estado</td><td>
        Tipo de mensaje</td><td>Texto del mensaje</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 - Función showOutgoingMessagesInTable(): Genera una tabla HTML a partir de mensajes salientes

Preguntas frecuentes

Pregunta: ¿Puedo enviar otro tipo de mensaje que no sea 'SMS:TEXT'?
Respuesta: Sí. Por ejemplo, un mensaje Wap push al llamar a la función insertMessage(...) (Figura 7).

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

En el formulario, se debe escribir lo siguiente en el cuadro de texto 'Texto del mensaje':

<si>
<indication href="http://target_address" action="signal-high">
texto de descripción
</indication>
</si>

Figura 7 - SMS:TEXT cambiado a SMS:WAPPUSH

El parámetro 'action' de la etiqueta 'indication' puede ser uno de los siguientes:
signal-high, signal-medium, signal-low, signal-none, signal-delete.

Pregunta: ¿Puede el servidor HTTP con PHP habilitado ejecutarse en una computadora diferente del servidor MySQL y la Pasarela SMS Ozeki?
Respuesta: Sí, puede. En el script PHP, por favor configura la dirección IP y las credenciales de inicio de sesión reales de tu base de datos MySQL.

Pregunta: ¿Puedo mostrar al destinatario el número de teléfono del remitente?
Respuesta: Sí, puedes. Por favor, crea un cuadro de texto para el número de teléfono del remitente o modifica la función insertMessage(...) (Figura 8). Ten en cuenta que esto solo funciona si tienes una conexión con un proveedor de servicios 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 - Función insertMessage(...) modificada

Resumen

Este artículo trata sobre una solución para gestionar mensajería SMS con MySQL utilizando la Pasarela SMS Ozeki y cómo configurar este sistema. Si implementas esta solución siguiendo el tutorial paso a paso, podrás controlar tu sistema de mensajería con sentencias SQL a través de tu aplicación PHP. Además de la mensajería SMS organizada y simple que ofrece esta adición, hay otra gran ventaja: la seguridad avanzada del sitio web que puedes lograr agregando inicio de sesión por SMS.

El sitio web de Ozeki está lleno de artículos que recomiendo leer, aprovecha la oportunidad y visita estos sitios. Primero, la guía sobre cómo usar tu sitio web para enviar mensajes SMS.

¡Descarga la Pasarela SMS Ozeki ahora y permítenos ayudarte a alcanzar tus objetivos!

More information