Respuestas SMS desde una base de datos SQL

El usuario de Autorespuesta de Base de Datos de Ozeki SMS Gateway puede conectarse a tu base de datos Microsoft SQL, Oracle, MySQL, Sybase, etc... con una cadena de conexión. Ejecuta cualquier consulta SELECT que proporciones, después de recibir un mensaje SMS. El conjunto de resultados de la consulta se enviará como mensajes salientes. Las consultas y tablas también pueden modificarse desde tu propia aplicación.

Cómo enviar una respuesta SMS desde SQL

Para enviar una respuesta SMS desde SQL:

  1. Inicia Ozeki SMS Gateway
  2. Añade un nuevo usuario de Autorespuesta de base de datos
  3. Crea la estructura de la tabla de la base de datos SQL
  4. Configura el usuario de Autorespuesta de base de datos
  5. Proporciona el script de texto de autorespuesta
  6. Usa números y palabras clave identificables
  7. Envía un SMS de prueba para obtener una respuesta desde SQL
  8. Revisa los registros del usuario de Autorespuesta de base de datos

Video 1 - Cómo enviar una respuesta SMS desde SQL (Video tutorial)

Puedes crear el siguiente servicio usando esta solución (Figura 1):
1.) Un mensaje SMS es recibido por Ozeki SMS Gateway desde un teléfono móvil.
2.) El usuario de Autorespuesta de Base de Datos de Ozeki SMS Gateway busca palabras clave en el mensaje SMS usando un archivo txt.
3.) Dependiendo de la búsqueda, se seleccionará un mensaje de autorespuesta desde tu servidor de base de datos con el mismo archivo txt.

Es importante que tengas un proveedor de servicio de SMS IP o un módem GSM configurado en tu Ozeki SMS Gateway, para que puedas recibir mensajes SMS y responder automáticamente usando este ejemplo.

cómo funciona el usuario de autorespuesta de base de datos de ozeki sms gateway
Figura 1 - Cómo funciona el usuario de Autorespuesta de Base de Datos de Ozeki SMS Gateway

Paso 1 - Configurar el usuario de Autorespuesta de Base de Datos en Ozeki SMS Gateway

Primero necesitas instalar un usuario de Autorespuesta de Base de Datos para crear el servicio explicado. En la consola de 'Gestión' por favor haz clic en 'Añadir' como se ve en la Figura 2.

haz clic en añadir usuario o aplicación en la consola de gestión
Figura 2 - Haz clic en 'Añadir' usuario o aplicación en la consola de 'Gestión'

Encuentra el usuario de Autorespuesta de Base de Datos y haz clic en el enlace azul 'instalar' al lado. Como puedes ver en la Figura 3.

instalar usuario de autorespuesta de base de datos desde la consola de gestión
Figura 3 - Instalar usuario de Autorespuesta de Base de Datos desde la consola de 'Gestión'

Paso 2 - Crear la estructura de la tabla de la base de datos

El usuario de Autorespuesta de Base de Datos seleccionará los mensajes SMS de respuesta desde una tabla de la base de datos. Crea la siguiente estructura de base de datos para almacenar los mensajes SMS (Figura 4). Este ejemplo usa un servidor de base de datos MySQL, pero puedes usar otras bases de datos como Microsoft SQL, Oracle, Sybase, etc... También puedes usar otras tablas y diseños de tablas.


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","No hay datos para esta palabra clave."), 
		("red","El rojo es un buen color."), 
		("blue","El azul no es la mejor opción.");
Figura 4 - CREAR TABLA e INSERTAR filas en la tabla 'autoreplymessage'

Tus tablas pueden verse con sentencias SELECT * FROM (Figura 5). Aunque este ejemplo contiene solo una tabla.

> SELECT * FROM autoreplymessage;
id          keyword                        msg
----------  ------------------------------ -------------------------------------
 1          default                        No hay datos para esta palabra clave.
 2          red                            El rojo es un buen color.
 3          blue                           El azul no es la mejor opción.

(3 filas afectadas)
Figura 5 - Leer la tabla 'autoreplymessage' con una sentencia SELECT

En caso de que no haya un controlador de base de datos instalado con el servidor de base de datos, deberías instalar un controlador, porque necesitarás la cadena de conexión en el siguiente paso. El controlador de base de datos conecta Ozeki SMS Gateway y el servidor de base de datos. En la mayoría de los casos hay un controlador de base de datos instalado con el servidor de base de datos.

Paso 3 - Configurar el usuario de Autorespuesta de Base de Datos para usar tu base de datos

Necesitarás ingresar el tipo de conexión de la base de datos y la cadena de conexión en el panel 'Configuración de base de datos' del usuario de Autorespuesta de Base de Datos (Figura 6). El tipo puede seleccionarse desde el cuadro combinado, mientras que la cadena debe colocarse en el cuadro de texto.

configurar usuario de autorespuesta de base de datos para consulta de información SMS
Figura 6 - Configurar usuario de Autorespuesta de Base de Datos para consulta de información SMS

En la Figura 7 puedes ver una cadena de ejemplo para una conexión a una base de datos MySQL. Ten en cuenta que puedes usar tu propio tipo de cadena de conexión (OleDB, ODBC, SQLServer, Oracle) para tu propio servidor de base de datos que puede ser Microsoft SQL, Oracle, Sybase, etc... En caso de que estés usando un controlador ODBC para MySQL, solo necesitas modificar la IP del servidor MySQL, nombre de la base de datos, usuario y contraseña con tus propios valores en la siguiente cadena:

Tipo de Conexión: ODBC
Cadena de Conexión: Driver={MySQL ODBC 5.3 Unicode Driver}; Server=127.0.0.1;Database=ozekisms;User=ozeki;Password=abc123;Option=4;

Figura 7 - Cadena de conexión de ejemplo para una conexión ODBC a una base de datos MySQL

Para encontrar la cadena de conexión para otros servidores de base de datos, se sugiere leer la guía de Cadenas de Conexión de Base de Datos para SMS.

Paso 4 - Escribir el script para autorespuesta desde la base de datos SQL

Ahora es momento de escribir el archivo de script que es capaz de SELECCIONAR una fila desde tu tabla de base de datos si la tabla fue creada exitosamente en el PASO 2. El atributo de mensaje de la fila seleccionada será respondido al mensaje SMS. Aquí puedes encontrar la ruta del script de ejemplo: C:\Program Files\Ozeki\Ozeki10\Data\NG\config\OzekiUsername\sqlscript.txt

Un editor de texto simple puede editar estos archivos o puedes crear tu propio archivo txt y editarlo con tu propia aplicación, lo cual es útil si deseas modificar las consultas. Por favor proporciona la ruta al archivo usando el usuario de Autorespuesta de Base de Datos haciendo clic en 'Configuración de base de datos' y seleccionando la pestaña 'Script de autorespuesta' (Figura 8)

proporcionar ruta del script txt al usuario de autorespuesta de base de datos
Figura 8 - Proporcionar ruta del script txt al usuario de Autorespuesta de Base de Datos

Paso 5 - La estructura de los scripts de consulta SQL

El script SQL del usuario de Autorespuesta de Base de Datos contiene pares de filtro-sentencia, que funcionan exactamente como la estructura if-then en lenguajes de programación. El mensaje SMS recibido pasa por el filtro y si es correcto, se ejecutará una sentencia SQL SELECT. El contenido del mensaje de las filas seleccionadas será enviado a un número de teléfono. Este número es el primer parámetro del conjunto de resultados de la sentencia SELECT, mientras que el texto del mensaje es el segundo. El filtro es capaz de identificar números de teléfono, fragmentos de texto y palabras clave. La palabra clave de cada mensaje es la primera palabra del texto. El reenvío ocurre si la dirección del destinatario está incluida en la base de datos (Figura 11).

Paso 6 - Un ejemplo simple de palabra clave

Este ejemplo funcionará en la siguiente tabla que puedes ver en la Figura 9.

id          keyword                        msg
----------  ------------------------------ -------------------------------------
 1          default                        No hay datos para esta palabra clave.
 2          red                            El rojo es un buen color.
 3          blue                           El azul no es la mejor opción.
Figura 9 - El contenido de la tabla 'autoreplymessage'

Puedes ejecutar el siguiente script en la Figura 10 en la tabla 'autoreplymessage' añadiéndolo a 'sqlscript.txt'. Como recordatorio, la palabra clave, que se simboliza con el carácter 'k', es la primera palabra en el mensaje SMS. Esta palabra será probada por el filtro. Si una comprobación del filtro es exitosa, la sentencia SELECT se ejecuta y el script se detendrá. Como puedes ver, puedes colocar valores constantes en la sentencia SELECT. Por ejemplo, '$sender', que es el remitente del mensaje entrante.

Elementos del script que puedes colocar en sqlscript.txt
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='red'
#El primer filtro comprueba si la palabra 'RED' era la palabra clave.
#Si es verdadero, SELECCIONA 'El rojo es un buen color.' como mensaje de respuesta.
#Si es falso, pasa al siguiente filtro.

k^BLUE
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='blue'
#El segundo filtro comprueba si la palabra 'BLUE' era la palabra clave.
#Si es verdadero, SELECCIONA 'El azul no es la mejor opción.' como mensaje de respuesta.
#Si es falso, pasa al siguiente filtro.

k.*
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='default'
#El tercer filtro aceptará cualquier otra palabra clave.
#SELECCIONA 'No hay datos para esta palabra clave.' como mensaje de respuesta.
Figura 10 - Ejemplo de script que puede colocarse en sqlscript.txt

La parte del filtro del script de consulta SQL funciona de manera similar a la parte del filtro del script de mensajería SMS, pero ten en cuenta solo buscar ejemplos de filtro, ya que la segunda parte es siempre una sentencia SQL SELECT.

Paso 7 - Palabras clave predefinidas en Ozeki SMS Gateway

Estos tipos de palabras clave pueden colocarse en el script. Por ejemplo '$sender' :


SELECT '$sender',msg FROM autoreplymessage WHERE keyword='red'
Figura 11 - Envía msg a '$sender'

El usuario de Autorespuesta de Base de Datos puede reconocer las siguientes palabras clave:
Palabra claveValor
$originatorReemplazado por el número de teléfono del remitente.
$sender=$originator (El $sender es otro nombre para $originator.)
$recipientReemplazado por el número de teléfono que recibió el mensaje.
$receiver=$recipient (El $receiver es otro nombre para $recipient.)
$messagedataReemplazado por el texto del mensaje.
$keywordReemplazado por la 1ª palabra en el mensaje. Esta palabra se llama palabra clave.
$afterReemplazado por el texto restante después de la palabra clave.
$senttimeReemplazado por una marca de tiempo que muestra cuándo se envió el mensaje.
$receivedtimeReemplazado por una marca de tiempo que muestra cuándo se recibió el mensaje.
$messagetypeReemplazado por el tipo del mensaje, que es 'SMS:TEXT' en la mayoría de los casos.
$idReemplazado por una cadena única,
que identifica el mensaje en Ozeki SMS Gateway.
$operatorReemplazado por el nombre del proveedor de servicio,
que recibió el mensaje en Ozeki SMS Gateway.
$1Reemplazado por la 1ª palabra en el mensaje.
$2Reemplazado por la 2ª palabra en el mensaje.
$3Reemplazado por la 3ª palabra en el mensaje, etc...

La estructura del script de autorespuesta se explica en estas páginas web:

Paso 8 - Probar la solución de autorespuesta desde la base de datos

Después de realizar los Pasos 1 al 6, puedes probar la solución. Ozeki SMS Gateway reenviará los mensajes SMS entrantes a tu usuario de Autorespuesta de Base de Datos. El script de consulta SQL filtra el mensaje SMS para crear los conjuntos de resultados SELECT adecuados. Cada fila del conjunto de resultados representará un mensaje para responder o reenviar.

Puedes rastrear el registro de mensajería de tu usuario de Autorespuesta de Base de Datos en la siguiente ruta:
C:\Program Files\Ozeki\Ozeki10\Data\NG\Logs

Cuando inserto datos en la tabla Ozekimessageout no recibo el mensaje en mi teléfono móvil. ¿Cuál podría ser la causa de que no reciba el mensaje de texto que se inserta en la tabla de salida usando mi consola SQL?

Primero, descartemos un problema de red móvil. Envía un SMS de prueba directamente desde la interfaz gráfica de usuario (GUI) de Ozeki. Si el mensaje llega exitosamente, la conexión de red parece estar funcionando correctamente.

Luego, necesitamos verificar si los mensajes se están transfiriendo desde tu base de datos al software Ozeki. Inserta algunos mensajes de prueba en la tabla Ozekimessageout. Luego, dentro de la GUI de Ozeki, navega a la bandeja de salida asociada con el usuario de base de datos que estás usando. Si estos mensajes de prueba están ausentes de la bandeja de salida, el problema está en el proceso de transferencia de datos entre la base de datos y Ozeki.

Me gustaría usar una base de datos para muchos "usuarios de base de datos". ¿Es esto posible?

¡Absolutamente! Ozeki SMS Gateway te permite mantener registros de mensajes distintos para diferentes propósitos usando usuarios de base de datos separados.

Aquí hay una guía paso a paso:

  • Crea Nuevas Tablas de Base de Datos: Configura dos nuevas tablas dentro de tu base de datos. Para una fácil identificación, puedes nombrarlas ozekimessagein2 y ozekimessageout2. Estas tablas deben reflejar la estructura de las tablas existentes ozekimessagein y ozekimessageout usadas por tu primer usuario de base de datos.
  • Configura el Segundo Usuario de Base de Datos: Accede al formulario de configuración para tu segundo usuario de base de datos en Ozeki.
  • Modifica las Plantillas SQL: Localiza la sección para plantillas SQL dentro del formulario de configuración. Estas plantillas especifican cómo se guardan los mensajes en las tablas de la base de datos.
  • Actualiza los Nombres de las Tablas: Dentro de las plantillas SQL para el segundo usuario de base de datos, actualiza los nombres de las tablas existentes (ozekimessagein y ozekimessageout) para que coincidan con las tablas recién creadas (ozekimessagein2 y ozekimessageout2).
Siguiendo estos pasos, establecerás registros de mensajes separados para cada usuario de base de datos. Esto te permite categorizar o filtrar mensajes según tus necesidades específicas usando los nombres de tabla elegidos.

Mi Ozeki SMS Gateway siempre se desconecta de mi servidor MySQL con el siguiente mensaje de error: MySQL Server has gone away. ¿Qué debo hacer?

Para mejorar la capacidad de respuesta cuando uses Ozeki con MySQL, ajusta la configuración de tiempo de espera. Aquí está cómo:

Configurar el Tiempo de Espera de MySQL:

  • Edita tu archivo de configuración de MySQL (ej., my.ini) y establece el parámetro interactive_timeout a tu duración deseada en segundos (ej., interactive_timeout = 28800 para 8 horas).
  • Guarda los cambios y reinicia el servicio MySQL.

Actualizar la Cadena de Conexión de Ozeki:

  • Modifica tu cadena de conexión de Ozeki para usar Interactive en lugar de wait_timeout. El formato correcto es Driver={MySQL ODBC 5.2 ANSI Driver};Server=127.0.0.1;Database=ozeki;User=test;Password=test;Interactive=TU_VALOR_DE_TIEMPO_DE_ESPERA.

  • Recuerda reemplazar TU_VALOR_DE_TIEMPO_DE_ESPERA con tu tiempo de espera deseado en segundos.
Siguiendo estos pasos, optimizarás los tiempos de espera de conexión de MySQL para una operación más fluida dentro de Ozeki, especialmente beneficioso para tareas de larga duración o grandes conjuntos de datos.

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

More information