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:
- Inicia Ozeki SMS Gateway
- Añade un nuevo usuario de Autorespuesta de base de datos
- Crea la estructura de la tabla de la base de datos SQL
- Configura el usuario de Autorespuesta de base de datos
- Proporciona el script de texto de autorespuesta
- Usa números y palabras clave identificables
- Envía un SMS de prueba para obtener una respuesta desde SQL
- Revisa los registros del usuario de Autorespuesta de base de datos
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.
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.
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.
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.
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;
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)
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.txtSELECT '$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 clave | Valor | $originator | Reemplazado por el número de teléfono del remitente. |
---|---|
$sender | =$originator (El $sender es otro nombre para $originator.) |
$recipient | Reemplazado por el número de teléfono que recibió el mensaje. |
$receiver | =$recipient (El $receiver es otro nombre para $recipient.) |
$messagedata | Reemplazado por el texto del mensaje. |
$keyword | Reemplazado por la 1ª palabra en el mensaje. Esta palabra se llama palabra clave. |
$after | Reemplazado por el texto restante después de la palabra clave. |
$senttime | Reemplazado por una marca de tiempo que muestra cuándo se envió el mensaje. |
$receivedtime | Reemplazado por una marca de tiempo que muestra cuándo se recibió el mensaje. |
$messagetype | Reemplazado por el tipo del mensaje, que es 'SMS:TEXT' en la mayoría de los casos. |
$id | Reemplazado por una cadena única, que identifica el mensaje en Ozeki SMS Gateway. |
$operator | Reemplazado por el nombre del proveedor de servicio, que recibió el mensaje en Ozeki SMS Gateway. |
$1 | Reemplazado por la 1ª palabra en el mensaje. |
$2 | Reemplazado por la 2ª palabra en el mensaje. |
$3 | Reemplazado por la 3ª palabra en el mensaje, etc... |
La estructura del script de autorespuesta se explica en estas páginas web:
- La estructura simple de un archivo de script se define en esta página web.
- Ejemplo de 'sqlscript.txt'
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).
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.
Driver={MySQL ODBC 5.2 ANSI Driver};Server=127.0.0.1;Database=ozeki;User=test;Password=test;interactive=;Option=8;
More information
- Respuesta SMS de PC a móvil
- Cómo escribir un script de respuesta SMS
- Cómo enviar una respuesta SMS desde SQL