Cómo enviar SMS desde C# usando SQL Server
Descargar:
Sending_SMS_through_MS_SQL_Server.zip
Aprende cómo enviar SMS insertando filas en una base de datos Microsoft SQL a través de una aplicación en C#.NET. Esta tecnología está dirigida a desarrolladores con conocimientos básicos en C#.NET y SQL. El código fuente descargable te ayudará a comenzar.
En los siguientes capítulos encontrarás los requisitos previos necesarios y una explicación detallada sobre cómo usar el código. Un diagrama de flujo útil te mostrará la conexión básica entre el usuario de la aplicación C# y el teléfono del destinatario.
El código es útil si deseas
- agregar funcionalidad SMS a tu aplicación en C#.
- integrar notificaciones SMS automatizadas.
- proteger tus productos añadiendo inicio de sesión por SMS.
Requisitos previos
Los requisitos de software del sistema se enumeran en la siguiente tabla. Por favor, descarga SMS Gateway y instala el software SMS Gateway con .NET framework 4.5 y Microsoft Visual Studio para ejecutar tu código.
Sistema operativo: | Windows 11, Windows 10, Windows 8, Windows 7, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2008 R2, Windows Vista |
Requisitos básicos de software: |
.NET Framework 4.5
Ozeki SMS Gateway Microsoft SQL Server 2016 Express Edition o versiones más recientes de Microsoft SQL Server |
Plataforma de desarrollo: | Microsoft Visual Studio |
Cómo funciona
Primero necesitas instalar Ozeki SMS Gateway y crear un Usuario de Base de Datos en el SMS Gateway. Conecta el usuario a tu base de datos MSSQL. Los mensajes SMS a enviar serán SELECCIONADOS de la tabla de mensajes salientes de SQL, que por defecto se llama 'ozekimessageout'.
Luego, debes instalar un entorno C#.NET. Tu aplicación en C# puede conectarse a tu base de datos MSSQL e insertar mensajes SMS en la tabla de mensajes salientes.
Asegúrate de que tu Ozeki SMS Gateway esté conectado a la red GSM a través de un módem GSM o cualquier proveedor de servicios SMS por IP a través de internet. Por ejemplo, CIMD2 o UCP/EMI son conexiones muy populares con proveedores de servicios.
Consulta el flujo de trabajo de la conexión C# a través de MSSQL en la Figura 1.
Básicamente, el Microsoft SQL Server puede ser accedido tanto desde tu aplicación C# como desde Ozeki SMS Gateway. Todos los mensajes entrantes y salientes se almacenan en el servidor MSSQL para su uso posterior.
Al agregar los códigos apropiados a tu aplicación en C#, puedes conectarla a tu base de datos SQL para que pueda INSERTAR nuevas filas en la tabla de mensajes salientes y leer mensajes entrantes.
El Usuario de Base de Datos de Ozeki SMS Gateway es capaz de leer la tabla de mensajes salientes para enviar mensajes SMS e INSERTAR nuevas filas en la tabla de mensajes entrantes para que otros usuarios las lean. Por ejemplo, el usuario de la aplicación C# puede leerlos.
Cómo configurar tu servidor MSSQL
Paso 1: Instala Microsoft SQL Server 2016 Express EditionPaso 2: Inicia Microsoft SQL Server 2016 Express Edition e inicia sesión.
Paso 3: Activa la autenticación del servidor para que siempre requiera un par de usuario y contraseña de la base de datos. (Tutorial corto de ayuda)
Paso 4: Crea una base de datos y otorga permisos de selección, inserción, actualización y eliminación a un usuario. (Tutorial corto de ayuda)
Agrega un Usuario de Base de Datos a Ozeki SMS Gateway
Paso 1: Inicia la Ayuda con imagen)Paso 2: Inicia Ozeki SMS Gateway desde el escritorio de Ozeki 10.
Paso 3: Instala un Usuario de Base de Datos y configura la cadena de conexión. (Tutorial corto de ayuda)
Usa el código C# descargado
Paso 1: Descarga el archivo zip y descomprímelo.Paso 2: Configura los datos de conexión de la base de datos SQL en 'DatabaseHandling.cs'. (Tutorial corto de ayuda)
Paso 3: Inicia el servicio de Ozeki 10 si no está en ejecución. (Tutorial corto de ayuda)
Paso 4: Compila y ejecuta el proyecto en Microsoft Visual Studio
Paso 5: Aparecerá una ventana. Haz clic en el botón Componer mensaje.
Rellena los campos del destinatario y el texto del mensaje y haz clic en 'Enviar'. (Tutorial corto de ayuda)
Cómo funciona el código de ejemplo
El código descargable en la parte superior de la página puede insertar mensajes en la tabla 'ozekimessageout'. El Usuario de Base de Datos de Ozeki SMS Gateway verifica periódicamente 'ozekimessageout' para encontrar nuevas filas de mensajes y enviarlas al teléfono del destinatario. Cada fila de mensaje tiene un atributo de estado. Después de enviar el mensaje SMS, el estado cambiará de 'Enviar' a 'Enviado'.
No olvides verificar si tu servidor Microsoft SQL está en funcionamiento y modificar los detalles de conexión del servidor en 'DatabaseHandling.cs', que puedes encontrar en el proyecto de ejemplo.
Clases C# del código de ejemplo
MainForm.cs (Figura 2):
Esta clase contiene la primera ventana que se abre.
Como puedes ver en la Figura 2, puede mostrar el contenido de dos tablas.
Este contenido se lee mediante una instrucción SELECT de 'ozekimessageout' y 'ozekimessagein'.
También contiene dos botones 'Actualizar'
y un botón 'Componer mensaje'. Presiónalo para usar la siguiente clase, 'ComposeMessageForm.cs'.
ComposeMessageForm.cs (Figura 3):
Esta es la siguiente página donde puedes llenar los campos de datos necesarios para crear un nuevo mensaje.
DatabaseHandling.cs:
Aquí es donde puedes configurar la conexión a la base de datos (Figura 4)
y actualizar las tablas de 'MainForm.cs'.
Cómo funciona el código de envío de mensajes
En 'ComposeMessageForm.cs' puedes llenar los dos campos con la dirección del destinatario y el texto del mensaje. Al presionar 'Enviar', puedes iniciar el siguiente código:
ComposeMessageForm.cs... private void buttonSend_Click(object sender, EventArgs e) { CheckAndSendMessage(); } private void CheckAndSendMessage() { if (textBoxRecipient.Text == "") { MessageBox.Show("¡El campo del destinatario no debe estar vacío!", "Valor de campo incorrecto"); return; } string errorMsg = ""; DatabaseHandling.insertMessage(textBoxRecipient.Text, textBoxMessageText.Text, out errorMsg); MessageBox.Show(errorMsg, "Resultado de la inserción del mensaje"); } ...Figura 5 - Verifica si el campo del destinatario está vacío
El método CheckAndSendMessage() es llamado por 'buttonSend_Click(...)'. El método comienza verificando el campo del destinatario y ejecuta insertMessage(...) desde 'DatabaseHandling.cs' si el campo del destinatario NO está vacío (Figura 5). insertMessage(...) puede insertar una nueva fila en la tabla 'ozekimessageout' (Figura 6) (El valor predeterminado del atributo msgtype es SMS:TEXT). Ozeki SMS Gateway leerá las filas desde el servidor SQL como puedes ver en el diagrama de flujo arriba.
DatabaseHandling.cs... public static void insertMessage(string receiver, string messageText, out string errorMsg) { Connect(out errorMsg); if (errorMsg != "") return; try { SqlCommand sqlComm = sqlConn.CreateCommand(); sqlComm.CommandText = "insert into ozekimessageout " + "(msgtype,receiver,msg,status) " + "values ('SMS:TEXT','" + receiver + "','" + messageText + "','send');"; if (sqlComm.ExecuteNonQuery() == 0) { errorMsg = "¡La inserción NO fue exitosa!"; } else { errorMsg = "¡La inserción fue exitosa!"; } } catch (Exception e) { errorMsg = e.Message; } CloseConnection(); } ...Figura 6 - INSERTA el mensaje en tu base de datos SQL
Puedes usar otros tipos de mensaje además de 'SMS:TEXT' (por ejemplo, 'SMS:WAPPUSH', 'SMS:VCARD') como puedes ver en la Figura 7.
... sqlComm.CommandText = "insert into ozekimessageout " + "(msgtype,receiver,msg,status) " + "values ('SMS:WAPPUSH','" + receiver + "','" + messageText + "','send');"; ...Figura 7 - Tipo de mensaje cambiado de 'SMS:TEXT' a 'SMS:WAPPUSH'
Preguntas frecuentes
Pregunta:
¿Puede este ejemplo en C# ejecutarse en una computadora diferente a la del
Ozeki SMS Gateway o del servidor MSSQL?
Respuesta: Sí, puede. Por favor, modifica la dirección IP en 'DatabaseHandling.cs' a la dirección IP de tu servidor MSSQL.
Pregunta:
¿Puedo cambiar el número de teléfono del remitente?
Respuesta:
Sí. Por favor, INSERTA el número del remitente en la fila del mensaje también (Figura 8).
Solo funciona si tienes una conexión SMS por IP.
... string SenderNumber = "+449876543"; sqlComm.CommandText = "insert into ozekimessageout " + "(msgtype,sender,receiver,msg,status) " + "values ('SMS:TEXT','" + SenderNumber + "','" + receiver + "','" + messageText + "','send');"; ...Figura 8 - Instrucción INSERT INTO modificada con un atributo adicional 'sender'
Resumen
Este artículo explicó cómo enviar SMS desde C# usando un servidor SQL. Esto significa que puedes enviar un SMS insertando una fila en una base de datos Microsoft SQL. Este sistema utiliza una aplicación en C#.NET. Enviar un SMS desde un servidor SQL significa que puedes usar el lenguaje SQL para buscar un mensaje o gestionar mensajes SMS. Mejorará enormemente la eficiencia de la comunicación dentro de tu organización y hará que el flujo de información sea más rápido.
Si deseas saber más sobre la tecnología que ofrece Ozeki, visita el sitio web de Ozeki. Te recomendamos comenzar con la API SMS para C#. Aprenderás más sobre la API SMS para C# de Ozeki en este artículo. A continuación, si deseas enviar el SMS usando la API SMS HTTP, visita este artículo: API SMS HTTP.
Para comenzar a enviar mensajes SMS usando APIs, descarga Ozeki SMS Gateway ahora y ¡comienza a trabajar!
More information
- API SMS en C#
- Script SMS en C# ASP
- Cómo enviar SMS desde C# usando HTTP get
- API SMS en C# para SQL