API de SMS en C# con código fuente completo

Si estás buscando una herramienta potente para desarrolladores de C#.Net que permita agregar capacidades de envío y recepción de SMS a aplicaciones en C#.Net, la API de SMS en C# proporcionada por Ozeki SMS Gateway es la mejor opción. Esta es la mejor API de SMS en C# en 2025. Es excelente porque es muy eficiente en recursos y ofrece información sobre tus mensajes enviados en forma de informes de envío y entrega mucho más rápido que otras APIs de SMS. Esta API de SMS en C# también te permite programar SMS para entrega futura, y puedes usarla tanto para enviar como para recibir SMS desde teléfonos móviles sin demoras. Lee este artículo para conocer esta increíble solución de SMS en C# y descubrir cómo puedes aprovecharla en tu entorno.

¿Qué es la API de SMS en C#?

La API de SMS en C# de Ozeki es una interfaz de software proporcionada por Ozeki SMS Gateway que te permite enviar y recibir SMS desde código en C#.Net. Esta interfaz puede usarse con la biblioteca cliente de la API de SMS en C# desde múltiples computadoras simultáneamente. (Figura 1) Puedes descargar la biblioteca cliente de la API de SMS en C# desde esta página web.

api de sms en c#
Figura 1 - API de SMS en C#

Descarga de la biblioteca cliente de la API de SMS en C#

Puedes descargar el cliente de SMS en C# (código fuente) desde el siguiente enlace. El archivo ZIP contiene un proyecto de Visual Studio con el código fuente completo. Puedes modificar, usar y redistribuir libremente este código o derivados.

Descargar: OzekiConsole.zip (51 Kb)
URL: https://ozeki-sms-gateway.com/attachments/5755/OzekiConsole.zip

¿Cómo funciona la API de SMS en C#?

Con la API de SMS en C# de Ozeki puedes enviar y recibir mensajes SMS de manera mucho más eficiente que usando soluciones tradicionales de API SMP HTTP o REST. Esto es posible porque la API de SMS en C# de Ozeki crea y mantiene un enlace TCP/IP permanente con la pasarela SMS y se comunica mediante un protocolo SMS altamente optimizado llamado OZX. Este método de comunicación requiere menos recursos en términos de CPU, memoria y ancho de banda de red que otros protocolos SMS. Por ejemplo, enviar un mensaje SMS mediante una solicitud HTTP REST API requiere al menos 10 veces más datos que una solicitud de envío OZX.

La ventaja más importante proviene del enlace TCP/IP permanente. Gracias a este enlace permanente, tu aplicación de SMS en C# recibirá informes de envío y entrega instantáneos en forma de eventos en C#. También recibirás mensajes SMS entrantes sin demoras. Sin este enlace, tendrías que sondear la pasarela SMS para obtener informes de entrega o descargar SMS entrantes, o tendrías que configurar un escucha TCP/IP o un servicio web y abrir un puerto en el firewall para que lleguen tus mensajes.

Este enlace TCP/IP puede cifrarse usando SSL/TLS y puedes agregar fácilmente validación de certificados de cliente y servidor para hacer este enlace de la API de SMS en C# extremadamente seguro.

Cómo usar la API de SMS en C#:

  1. Descarga Ozeki SMS Gateway
  2. Instala una conexión de prueba SMS
  3. Instala un usuario OZX
  4. Crea un nombre de usuario y contraseña
  5. Habilita el registro de comunicaciones
  6. Abre tu proyecto de SMS en C# en Visual Studio
  7. Modifica el código en C# con el nombre de usuario y contraseña
  8. Envía un SMS de prueba desde C#
  9. Revisa los registros en la pasarela SMS
  10. Simula un SMS entrante con la conexión de prueba
  11. Haz una prueba en vivo con tu teléfono Android

Tutorial en video de la API de SMS en C# (2 minutos)

Para tener una idea rápida de cómo configurar tu pasarela SMS para aceptar conexiones de la API de SMS en C# y cómo enviar tu primer SMS desde tu aplicación en C#, mira el siguiente video. Este video dura solo 2 minutos y 21 segundos, y vale la pena. El video muestra cómo se puede crear un usuario OZX en la pasarela SMS para aceptar clientes de la API de SMS en C#, y cómo puedes iniciar y ejecutar la biblioteca cliente de la API de SMS en C# descargada en Visual Studio. La parte final te muestra cómo enviar un SMS de prueba.

Video 1 - Cómo configurar tu pasarela SMS para aceptar conexiones de la API de SMS en C# y enviar tu primer SMS desde tu aplicación en C# (Tutorial en video)

¿Por qué es mejor la API de SMS en C# de Ozeki?

La API de SMS en C# de Ozeki es excelente porque la cantidad de datos necesarios para enviar un SMS es menor, y la codificación y decodificación de la Unidad de Datos de Protocolo (PDU) tiene un impacto significativamente menor en la CPU. Si la usas, tu solución consumirá menos recursos en las tres áreas principales: memoria, CPU y ancho de banda de red. Como resultado, tus aplicaciones actuarán más rápido y serán más receptivas.

¿Cómo puedo usar la API de SMS en C#?

La API de SMS en C# de Ozeki es un conjunto de clases en C# que te permiten enviar y recibir mensajes SMS. Puedes usarla abriendo el proyecto descargado en Visual Studio. Una vez que abras el proyecto, verás que el código completo está escrito en C#.Net. El envío de mensajes se realiza mediante llamadas a métodos en C#, y los mensajes entrantes llegan en forma de eventos en C#. Tu aplicación de SMS, que construyas basada en la API de SMS, podrá enviar mensajes SMS directamente a la red móvil usando un teléfono Android o una PC con una conexión SMS IP. La conexión a la red móvil será proporcionada por Ozeki SMS Gateway, que necesitas Linux. (Figura 2)

¿Qué es la API de SMS en C#?
Figura 2 - Cómo funciona la API de SMS en C#

¿Cuánto cuesta la API de SMS en C#?

La API es una biblioteca que se te proporciona gratuitamente, con una licencia MIT. Puedes modificarla y distribuirla libremente como desees. Cuando descargas la API, el paquete contiene una aplicación de consola de ejemplo y el código fuente completo de la DLL Ozeki.Libs.OZX.

El único costo que debes pagar es la tarifa de licencia del software Ozeki SMS Gateway. Una sola pasarela SMS puede usarse para servir a varios cientos de clientes de SMS en C# a través de la red. Puedes instalar la pasarela SMS en múltiples computadoras para aumentar la capacidad o aprovechar las ofertas de SMS de redes locales.

En cuanto a los costos de SMS, si envías mensajes de texto a través de un teléfono móvil conectado a tu PC, el costo depende de las tarifas de SMS de la tarjeta SIM en tu teléfono. En la mayoría de los países, puedes enviar mensajes SMS gratis si eliges esta opción. Sin embargo, hay una limitación: un solo teléfono móvil no puede enviar más de 12000 SMS por día. Solo puedes aumentar esta capacidad conectando múltiples teléfonos móviles a tu computadora. Cuando envías un SMS a través de tu teléfono móvil (Figura 2), necesitas instalar el software Ozeki Android SMS Gateway en tu teléfono y conectarte a él a través de Wi-Fi.

Si instalas Ozeki SMS Gateway en tu computadora con Windows o Linux, puedes enviar SMS de forma inalámbrica con un módem GSM o un conjunto de módems GSM conectados a la PC. En estos casos, se aplican las mismas tarifas de SMS gratuitas porque los módems GSM y los conjuntos de módems GSM operan de forma inalámbrica con tarjetas SIM.

Si necesitas un un enlace inalámbrico de respaldo.

¿Cómo me conecto a la pasarela SMS?

Cuando desarrollas tu aplicación de SMS en C#, es probable que uses tu portátil. Visual Studio estará instalado en tu portátil. Este portátil se conectará a la red de área local (LAN) de tu oficina a través de Wi-Fi o una conexión Ethernet. Tu teléfono Android o tu sistema de pasarela SMS en Windows (Figura 3) también se conectarán a la LAN de la oficina. Cuando te conectes a la pasarela SMS, usarás la dirección IP de la LAN de la computadora de la pasarela SMS.

Ozeki SMS Gateway instalado en un servidor
Figura 3 - Ozeki SMS Gateway instalado en un servidor

Para conectar tu aplicación en C# a la pasarela SMS, necesitarás conocer la dirección IP y el número de puerto de la pasarela SMS, y necesitarás un nombre de usuario y contraseña. La dirección IP de la pasarela SMS será su dirección IP en la LAN. Dado que la mayoría de las veces el software de la pasarela SMS estará instalado en una computadora diferente a tu portátil de desarrollo, esta dirección IP será diferente a la dirección IP de tu portátil. El número de puerto es fácil. Por lo general, es el número de puerto predeterminado, que es 9580. Para obtener un nombre de usuario y contraseña, necesitas crear un usuario OZX (Figura 4). Cuando creas el usuario OZX, puedes especificar cualquier nombre de usuario o contraseña que desees.

Una vez que hayas encontrado la dirección IP, el número de puerto y hayas creado el nombre de usuario y contraseña, necesitas ingresar estos detalles en el método de conexión de tu aplicación de SMS en C#.

Figura 4 - Crear usuario OZX para la API de SMS en C#

Si no deseas usar dos computadoras, puedes instalar la pasarela SMS en tu portátil (la misma computadora donde desarrollas tu aplicación en C#). En este caso, debes proporcionar "127.0.0.1" como la dirección IP y el puerto "9580" en el método de conexión. (Sí, también puedes usar direcciones IPv6 o nombres de host, como 'localhost")

Beneficios de usar tu propia pasarela SMS

Pruebas gratuitas: Es muy beneficioso operar tu propia pasarela SMS, porque puedes probar tu aplicación de SMS sin costo. Puedes simular mensajes SMS entrantes, puedes enviar mensajes de prueba a la conexión de prueba de la pasarela SMS, y puedes simular informes de entrega de SMS que indiquen entrega exitosa o fallida. Es una buena idea leer la guía del simulador SMPP para obtener más información sobre pruebas.

Pruebas de rendimiento ilimitadas: Una vez que hayas desarrollado tu solución de SMS en C#, es probable que quieras hacer algunas pruebas de rendimiento. Con Ozeki SMS Gateway es muy fácil probar tu sistema con un alto volumen de mensajes SMS. En la mayoría de los casos, solo enviarás unos pocos miles de SMS, pero si un cliente lo solicita, incluso puedes hacer una prueba con varios millones de mensajes. Consulta los resultados de pruebas de rendimiento de SMS que hemos realizado con Ozeki SMS Gateway con 1 000 000 de SMS.

Cambiar fácilmente de proveedores: Si desarrollas tu código en C# que funciona con Ozeki SMS Gateway, no tendrás que preocuparte por quedar atrapado en una red SMS o en un solo proveedor de servicios SMS. Puedes usar el mismo código en C# y simplemente cambiar a otro proveedor de servicios SMS si obtienes un mejor trato configurando la conexión del nuevo proveedor en la pasarela SMS.

¿Qué es OZX?

OZX significa OZeki eXchange. Es un protocolo SMS altamente optimizado utilizado para comunicarse entre tu aplicación de SMS en C# y Ozeki SMS Gateway. Es un protocolo basado en TCP/IP que es significativamente más eficiente que los protocolos SMS tradicionales, como los protocolos protocolo SMS SMPP. La eficiencia proviene de dos hechos principales: no se transmiten datos innecesarios (nota que hay una gran sobrecarga de datos tanto en HTTP como en SMPP), y es posible un procesamiento de protocolo más fácil y eficiente debido a la estructura PDU del protocolo.

¿Qué contiene el ZIP de la API de SMS en C#?

El archivo ZIP contiene dos proyectos (como en la Figura 5): una aplicación de consola que es un código muy fácil de entender para mostrarte cómo usar la API de SMS en C#, y contiene el código fuente de la API de SMS en C# en sí.

Contenido del paquete de la API de SMS en C#:

  • Código de ejemplo (código fuente completo)
  • Biblioteca cliente de Ozeki (código fuente completo)

Figura 5 - Contenido del paquete de la API de SMS en C#

¿Cómo abro la solución .sln de la API de SMS en C#?

Para abrir la API de SMS de Ozeki, necesitas ubicar el archivo OzekiConsole.sln después de descomprimir el paquete OzekiConsole.zip, y necesitas abrir este archivo en Visual Studio. (Figura 6) Puedes hacer doble clic en el archivo de solución (.sln), o puedes navegar hasta él en Visual Studio.

Figura 6 - Abrir el OzekiConsole.sln

Una vez que hayas abierto el .sln, verás dos proyectos en tu solución. El proyecto OzekiConsole contiene el código de ejemplo que te muestra cómo puedes usar la biblioteca cliente de la API de SMS en C# para conectarte a la Pasarela SMS. (Figura 7) El otro proyecto es el proyecto DLL Ozeki.Libs.OZX. Este proyecto contiene el código fuente completo de la biblioteca cliente de la API de SMS en C#.

Figura 7 - Solución de SMS en C#

Cómo iniciar sesión en la pasarela SMS con la API de SMS en C#

Para usar la API de SMS en C#, necesitas crear un nombre de usuario y contraseña en tu pasarela SMS. Si has instalado tu pasarela SMS en tu teléfono Android, necesitas iniciar sesión en el teléfono usando un navegador web. Si has instalado tu pasarela SMS en Windows o Linux, simplemente conéctate a ella con tu navegador. Si aún no has instalado tu pasarela SMS, configúrala ahora usando una de las siguientes instrucciones de configuración: Cómo configurar mi pasarela SMS en Windows, Cómo configurar mi pasarela SMS en Linux. (Figura 8)

cómo usar la api de sms en c#
Figura 8 - Cómo usar la API de SMS en C#

Cómo enviar SMS desde C#

Para enviar SMS desde C#, necesitas agregar la DLL ozekisms.dll como referencia a tu solución de Visual Studio. Puedes decidir agregar la DLL binaria o puedes agregar el proyecto que contiene el código fuente. Si agregas la DLL binaria, tu proyecto se compilará más rápido; si agregas el código fuente, tendrás mejores capacidades de depuración. (Figura 9)

Cómo enviar un mensaje de texto SMS desde C#
Figura 9 - Cómo enviar un mensaje de texto desde C#

Cómo enviar SMS desde C#:

  1. Descarga la biblioteca de SMS en C# de Ozeki (archivo ZIP)
  2. Extrae el archivo ZIP
  3. Abre Microsoft Visual Studio
  4. Crea una nueva aplicación de consola
  5. En el explorador de soluciones, haz clic en "Agregar..."
  6. Selecciona "Proyecto existente"
  7. Busca el OzekiSMSLibrary.csproj
  8. Haz clic en Abrir
  9. Agrega el espacio de nombres "Ozeki" a tu aplicación de consola
  10. Copia y pega el ejemplo
  11. Envía tu primer SMS usando la función SendMessage

Cómo recibir SMS en C#

Para recibir SMS desde C#, necesitas configurar tu proyecto de la misma manera que lo harías para enviar un mensaje SMS. En resumen, descarga la DLL ozekisms.dll como binario o como código fuente y agrégala a tu proyecto como una biblioteca de referencia. Después de esto, puedes crear una instancia de la clase en C# y suscribirte al evento que se llama cuando se recibe un SMS. (Figura 10)

Cómo recibir un mensaje de texto SMS usando C#
Figura 10 - Cómo recibir un SMS usando C#

Cómo recibir SMS en C#:

  1. Descarga la biblioteca de SMS en C# de Ozeki (archivo ZIP)
  2. Abre Microsoft Visual Studio
  3. Crea una nueva aplicación de consola o abre uno de tus proyectos existentes
  4. Agrega la biblioteca de SMS en C# a tu solución en C#
  5. Agrega el espacio de nombres "Ozeki" a tu clase
  6. Crea una instancia de la clase de mensaje
  7. Regístrate para el evento OnMessageReceived
  8. Escribe el código del manejador de eventos
  9. Establece un punto de interrupción en el manejador de eventos
  10. Envía un mensaje de prueba
  11. Espera a que el SMS llegue al punto de interrupción

Entender el código fuente de la API de SMS en C#

//*********************************************************************
// API de SMS en C# de Ozeki - v1.0.0
// Documentación: https://ozeki-sms-gateway.com/p_5755-c-sharp-sms-api.html
//*********************************************************************

using System;
using OZX;

namespace OzekiConsoleClient
{
    class Program
    {
        static OzxClient Client;

        //*************************************************************
        // Main
        //*************************************************************

        static void Main(string[] args)
        {
            createClient();
            printWelcome();

            string command = null;
            string parameters;

            while (command != "exit")
            {
                if (!_promptAvailable) printPrompt();
                readCommand(out command, out parameters);
                _promptAvailable = false;
                dispatchCommand(command, parameters);
            }
        }

        //*************************************************************
        // Leer siguiente comando
        //*************************************************************
        static bool _promptAvailable;

        static void printPrompt()
        {
            Console.Write("> ");
            _promptAvailable = true;
        }

        static void readCommand(out string command, out string parameters)
        {
            command = Console.ReadLine();
            parameters = null;
            int paramSep = command.IndexOf(' ');
            if (paramSep > -1)
            {
                parameters = command.Substring(paramSep + 1);
                command = command.Substring(0, paramSep);
            }
        }

        static void dispatchCommand(string command, string parameters)
        {
            switch (command)
            {
                case "help":
                    printHelp();
                    break;
                case "exit":
                    Console.WriteLine("¡Gracias por usar Ozeki Client!");
                    break;
                case "connect":
                    connect(parameters);
                    break;
                case "disconnect":
                    disconnect();
                    break;
                case "send":
                    send(parameters);
                    break;
            }
        }

        //*************************************************************
        // Comandos / Bienvenida
        //*************************************************************

        static void printWelcome()
        {
            Console.WriteLine("**********************************");
            Console.WriteLine("* Bienvenido a Ozeki Client v1.0.0 *");
            Console.WriteLine("**********************************");
            Console.WriteLine("Escribe 'help' para ver los comandos disponibles");
        }

        //*************************************************************
        // Comandos / Ayuda
        //*************************************************************

        static void printHelp()
        {
            Console.WriteLine("**********************");
            Console.WriteLine("* Comandos disponibles *");
            Console.WriteLine("**********************");
            Console.WriteLine("help");
            Console.WriteLine("connect [host:port] [username] [password]");
            Console.WriteLine("disconnect");
            Console.WriteLine("send [recipient] [message]");
            Console.WriteLine("exit");
        }

        //*************************************************************
        // Comandos / Conectar
        //*************************************************************

        static void connect(string parameters)
        {
            if (!parseConnectParameters(parameters, out string host, out int port, out string username, out string password, out string errormessage))
            {
                Console.WriteLine("Error. "+errormessage);
                Console.WriteLine("Sintaxis: connect [host:port] [username] [password]");
                Console.WriteLine("Ejemplo: connect 127.0.0.1:9580 testuser testpass");
            }
            Console.WriteLine("Conectando a "+parameters+"...");
            Client.Connect(host, port, username, password);
        }

        static bool parseConnectParameters(string parameters, out string host, out int port, out string username, out string password, out string errormessage)
        {
            string[] parts = parameters.Split(' ');
            if (parts.Length < 3)
            {
                errormessage = "Connect espera 3 parámetros.";
                username = null;
                password = null;
                host = null;
                port = 0;
                return false;
            }

            string hostandport = parts[0];
            username = parts[1];
            password = parts[2];

            string[] hostandportparts = hostandport.Split(':');
            if (hostandportparts.Length < 2)
            {
                errormessage = "Host y puerto inválidos.";
                host = null;
                port = 0;
                return false;                
            }

            host = hostandportparts[0];
            string portstring = hostandportparts[1];

            if (!int.TryParse(portstring, out port))
            {
                errormessage = "Número de puerto inválido.";
                port = 0;
                return false;
            }

            errormessage = null;
            return true;
        }

        //*************************************************************
        // Comandos / Desconectar
        //*************************************************************

        static void disconnect()
        {
            Client.Disconnect();
        }

        //*************************************************************
        // Comandos / Enviar
        //*************************************************************

        static void send(string parameters)
        {
            string[] parts = parameters.Split(new char[] { ' ' },2);
            if (parts.Length < 2)
            {
                Console.WriteLine("Error. Send espera 2 parámetros.");
                Console.WriteLine("Sintaxis: send [recipient] [message]");
                Console.WriteLine("Ejemplo: send +441234567 Hola mundo");
                return;
            }

            string recipient = parts[0];
            string message = parts[1];

            var msg = new OzxMessage();
            msg.ToAddress = recipient;
            msg.Text = message
					

More information