Si diriges un negocio de servicios locales, como una clínica médica, una escuela de tutoría o un taller mecánico, saber si tus clientes realmente ven tus mensajes es fundamental. En este tutorial, te explicaremos cómo obtener el estado de un SMS (si se ha leído o no) desde la pasarela de SMS, aclararemos las limitaciones técnicas de los protocolos de SMS y te mostraremos cómo implementar un seguimiento fiable de entrega y lectura para tus notificaciones salientes.

Paso 1: Comprender la diferencia entre el estado de SMS entregado y leído

Antes de sumergirte en las integraciones de API, es vital comprender la diferencia técnica entre el estado de SMS entregado y leído. La tecnología de SMS tradicional se basa en protocolos celulares diseñados hace décadas. En este entorno, "los usuarios pueden comunicarse utilizando actualizaciones rápidas de estado de 160 caracteres o menos." Debido a esta infraestructura heredada, la red de telecomunicaciones global solo admite confirmaciones de entrega, no confirmaciones de apertura o lectura.

Esto es muy diferente de las aplicaciones de mensajería instantánea modernas (como WhatsApp, iMessage o RCS), donde "este diálogo fluido te permite enviar mensajes, fotos y videos a cualquier persona" con indicadores de escritura nativos y marcas de verificación azules de "leído". El SMS estándar de los operadores no dispone de un paquete de red nativo que indique a la pasarela cuándo un usuario ha pulsado en un mensaje de texto para abrirlo.

En su lugar, dependemos del significado del estado de la pasarela de SMS (smsgate status meaning) definido por tu proveedor de pasarela. Esto es lo que suelen significar esos estados en los registros de tu pasarela de SMS:

EstadoSignificado técnico¿Significa "Leído"?
SentEl mensaje ha salido de la pasarela y ha sido aceptado por la red del operador de telefonía móvil.No. El teléfono podría incluso estar apagado.
DeliveredEl terminal móvil del destinatario ha enviado una confirmación de recepción al operador. Este es tu estado de confirmación de SMS.No necesariamente. Está en su dispositivo, pero es posible que aún no lo hayan abierto.
FailedEl mensaje no pudo llegar al terminal móvil (por ejemplo, número desconectado, error de enrutamiento de red).No.

Para realizar un seguimiento preciso de si un mensaje se leyó realmente, las empresas utilizan una combinación de informes de entrega a nivel de operador y enlaces de seguimiento inteligentes a nivel de aplicación, que configuraremos en los siguientes pasos.

Paso 2: Configurar tu pasarela de SMS Android para verificar el estado de entrega de SMS

Para empezar a realizar el seguimiento de tus mensajes, necesitas una pasarela de SMS que muestre de forma nativa los informes de entrega sin ocultarlos tras costosos contratos corporativos. Las pasarelas tradicionales como Twilio requieren un registro complejo de A2P 10DLC, la aprobación del operador y cobran tarifas elevadas por segmento. Una alternativa más sencilla y rentable para las pequeñas empresas es MySMSGate.

MySMSGate convierte tu propio teléfono Android y tarjeta SIM en una pasarela de SMS. Como realizas los envíos desde tu propio número de teléfono local, evitas los bloqueos de registro de los operadores y puedes verificar el estado de entrega del SMS fácilmente de forma directa desde tu panel de control o API.

Para configurar tu pasarela y comenzar a realizar el seguimiento del estado de entrega, sigue estos pasos:

  1. Ve a la página de registro de MySMSGate y crea una cuenta gratuita.
  2. Descarga e instala la aplicación de MySMSGate para Android en tu teléfono.
  3. Escanea el código QR que se muestra en tu panel de control web utilizando la aplicación móvil para vincular instantáneamente tu teléfono. No es necesario escribir manualmente ninguna clave API.
  4. Envía un SMS de prueba desde el panel de control web.

Una vez enviado el mensaje, tu teléfono Android devolverá el informe de entrega de nivel de operador a tu panel de control de MySMSGate en tiempo real. Si un mensaje falla, MySMSGate reembolsa automáticamente tu saldo, protegiendo tus costes operativos.

Paso 3: Configurar el webhook de callback para el estado de los informes de entrega de la pasarela de SMS Android

Para los desarrolladores que integran notificaciones de SMS en su propio CRM, motor de reservas o software personalizado, realizar consultas periódicas (polling) a un endpoint de la API para verificar el estado de entrega es ineficiente. En su lugar, debes configurar un callback de estado de informes de entrega de la pasarela de SMS Android utilizando webhooks.

Esta sección explica cómo obtener el estado de entrega de SMS desde la configuración de un webhook de API. Cuando tu teléfono Android conectado entrega el mensaje al terminal del destinatario, recibe un informe de entrega interno del operador local. MySMSGate captura este evento y publica instantáneamente la actualización de estado en tu servidor.

A continuación, se muestra un ejemplo de cómo manejar la carga útil (payload) del callback de estado de informes de entrega de la pasarela de SMS Android en una aplicación Python Flask:

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/webhooks/sms-status', methods=['POST'])
def handle_sms_status_callback():
    data = request.json
    
    # Extract key parameters from the MySMSGate webhook payload
    message_id = data.get('message_id')
    status = data.get('status')  # e.g., 'delivered', 'failed', 'sent'
    recipient = data.get('to')
    error_code = data.get('error_code')
    
    print(f"Message {message_id} to {recipient} updated to status: {status}")
    
    if status == 'delivered':
        # Update your database to mark notification as delivered
        # update_booking_notification_status(message_id, 'Delivered')
        pass
    elif status == 'failed':
        # Handle failed delivery (e.g., alert staff, retry via alternative channel)
        # log_failed_delivery(message_id, error_code)
        pass
        
    return jsonify({"status": "success"}), 200

if __name__ == '__main__':
    app.run(port=5000)

Al implementar este callback, tu aplicación backend siempre estará sincronizada con el estado en tiempo real de tus mensajes salientes, lo que te permitirá crear flujos de trabajo de seguimiento automatizados para las entregas fallidas.

Paso 4: Realizar el seguimiento del estado real de "Lectura" mediante el seguimiento de enlaces inteligentes

Dado que los protocolos de SMS estándar no admiten una confirmación de "Lectura" nativa, ¿cómo realizan las empresas de servicios inteligentes el seguimiento de si un cliente abrió y leyó su mensaje? La solución estándar del sector es el seguimiento de enlaces inteligentes (Smart Link Tracking).

En su lugar de enviar un mensaje de texto plano, incluyes un enlace de seguimiento único y acortado en tu SMS. Cuando el destinatario pulsa en el enlace, se le dirige brevemente a través de tu servidor de seguimiento antes de ser redirigido a su destino (como una factura, una confirmación de reserva o una página de detalles de la cita). Esta redirección ocurre en milisegundos y actúa como tu "Confirmación de lectura".

Aquí tienes el flujo de trabajo paso a paso para implementar esto:

  1. Genera un token único: Para cada SMS que envíes, genera un identificador corto y único (por ejemplo, myshop.co/r/x89D2).
  2. Asocia el token en tu base de datos: Asocia x89D2 con el número de teléfono del destinatario, el mensaje específico enviado y un estado de "Leído" inicializado en False.
  3. Envía el SMS: Envía el mensaje que contiene la URL corta a través de la API o el panel de control de MySMSGate.
  4. Registra la redirección: Cuando el usuario pulsa en el enlace, tu servidor registra la solicitud entrante para x89D2, actualiza el registro de la base de datos a Read = True junto con la marca de tiempo, y redirige inmediatamente al usuario a la página de destino real.

Este método te ofrece un seguimiento de lectura 100% preciso y proporciona datos valiosos sobre la interacción del usuario, lo que te ayuda a optimizar tus plantillas de comunicación.

Paso 5: Comparar el seguimiento del estado de SMS entre pasarelas

Al seleccionar una plataforma para tu negocio, es útil analizar cómo las diferentes pasarelas gestionan el seguimiento de la entrega, los precios y la complejidad del sistema. Aunque muchos desarrolladores buscan un tutorial de callback de estado de entrega de SMS de Twilio, a menudo descubren que configurar y mantener la infraestructura en la nube de Twilio para notificaciones locales básicas es demasiado complejo y costoso.

A continuación se presenta una comparación directa de las capacidades de seguimiento y las características entre MySMSGate y las pasarelas en la nube tradicionales:

CaracterísticaMySMSGatePasarelas en la nube tradicionales (Twilio / Plivo)
Seguimiento del estado de entregaEn tiempo real a través de webhooks y panel de controlEn tiempo real a través de webhooks
Modelo de preciosTarifa plana de 0,02 $ por SMS. Sin cuotas mensuales.Variable (0,05 $ - 0,08 $ o más por SMS) + alquiler mensual de números
Facturación por longitud de mensajeUn cargo único por mensaje, independientemente de la longitudFacturado por segmento de 160 caracteres (los mensajes concatenados cuestan el doble o el triple)
Sender ID y registro 10DLCNo se requiere ninguno. Se envía desde tu propia SIM de Android.Registro obligatorio, tarifas del operador y estrictos retrasos de aprobación
Reembolsos por mensajes fallidosReembolso automático en caso de entrega fallidaSin reembolsos. Pagas por los intentos fallidos.
Complejidad de configuraciónEscanear código QR en el teléfono AndroidConfiguración técnica de API y verificación regulatoria muy complejas

Para los negocios de servicios locales que operan fuera de los Estados Unidos, MySMSGate ofrece un enfoque mucho más práctico. Puedes leer más sobre otras opciones en nuestra guía completa sobre la comparación de alternativas a Twilio o consultar nuestra guía de la API de SMS más barata para optimizar tu presupuesto de comunicación.

Preguntas frecuentes

Aquí tienes las respuestas a las preguntas más comunes sobre la entrega de SMS y el seguimiento del estado de lectura.

¿Se puede ver si un SMS se ha leído o abierto?

No, el protocolo estándar de SMS celular no admite confirmaciones de lectura nativas. Para realizar el seguimiento de si un SMS ha sido leído, debes incluir un enlace de seguimiento único y acortado en el cuerpo del mensaje y monitorizar cuándo el destinatario pulsa en ese enlace.

¿Cuál es la diferencia entre el estado de entregado y leído?

El estado de entregado significa que la red del operador ha transferido con éxito el mensaje de texto al terminal móvil del destinatario. El estado de leído significa que el usuario ha abierto y visto activamente el mensaje. El SMS estándar solo realiza el seguimiento de la entrega; se requieren enlaces de seguimiento a nivel de aplicación para rastrear el estado de lectura.

¿Cómo obtengo informes de entrega en tiempo real usando MySMSGate?

MySMSGate reenvía los informes de entrega directamente desde la red del operador de tu teléfono Android de vuelta a tu cuenta. Puedes ver estos estados de entrega en tiempo real en tu panel de control web o configurar un webhook de callback de estado para recibir solicitudes POST instantáneas en tu servidor.

¿Necesito la aprobación del operador o el registro 10DLC para realizar el seguimiento del estado de entrega?

No. Cuando utilizas MySMSGate, envías mensajes a través de tu propio teléfono Android y tarjeta SIM. Dado que estás utilizando tu propia línea móvil personal o comercial, no necesitas el registro 10DLC, la verificación de marca ni la aprobación del operador para enviar y realizar el seguimiento de tus mensajes.