SMPP

Este protocolo define el protocolo de comunicación SMPP del servicio de SMS de EngageLab, cuyo objetivo es lograr un envío de mensajes y una notificación de estado eficientes y fiables a través de una conexión TCP. La información de la interfaz incluye la dirección IP, el número de puerto y los datos de autenticación necesarios para la conexión. Asegúrate de configurarlo correctamente con la cuenta y la contraseña proporcionadas por el canal autorizado.

Dirección SMPP

otpsmpp.api.engagelab.cc

Obtén la siguiente información del canal autorizado (como el equipo comercial o de soporte técnico):

  • Puerto: { port }
  • Cuenta: { system_id }
  • Contraseña: { password }

Establecer la conexión

Paquete de datos del cliente

Una vez establecida la conexión TCP, el primer paquete de datos debe enviar el comando BindTransceiver (es decir, 0x00000009) para realizar la verificación de autenticación. Este paquete de datos debe incluir los siguientes campos:

  • system_id: la cuenta de sistema asignada al cliente, utilizada para identificar la identidad.
  • password: la contraseña de acceso correspondiente a la cuenta de sistema, utilizada para la autenticación de la identidad.

Respuesta del servidor

Respuesta correcta

  • El servidor enviará el comando BindTransceiverResp (es decir, 0x80000009) como respuesta.
  • Rellenará el campo system_id con un valor idéntico al campo system_id recibido.

Respuesta de error

  • Si la autenticación falla, el servidor cerrará esa conexión TCP y registrará el motivo del fallo.

Envío de mensajes

Lógica del servidor

El envío de mensajes utiliza el comando SUBMIT_SM (es decir, 0x00000004) para enviar la solicitud de envío del mensaje. La lógica del servidor es la siguiente:

  1. El servidor analiza el contenido de la solicitud y utiliza siempre el canal SMS para el envío.
  2. El envío del mensaje es síncrono y el resultado se devuelve mediante el comando SUBMIT_SM_RESP (es decir, 0x80000004).
  3. La situación de la entrega se notifica mediante un informe del mensaje; para más detalles, consulta Informe de entrega.
  4. Se recomienda usar la codificación UCS2 para admitir caracteres especiales e internacionalización.

Paquete de datos del cliente

El cliente envía el comando SUBMIT_SM (es decir, 0x00000004) para enviar el mensaje y debe incluir los siguientes campos:

  1. service_type
    • Valores: MSG / CODE / MRKT
    • Valor predeterminado: MSG
  2. source_addr
    • Puede dejarse vacío; actualmente no se utiliza en SMS.
  3. destination_addr
    • El destino del mensaje, que debe tener el formato de un número de teléfono móvil internacional (por ejemplo, +6598765432).
  4. short_message
    • El contenido del mensaje, en formato JSON, con el siguiente formato:
      { "id": "xxx", // ID de la plantilla "language": "default", // idioma utilizado, default por defecto "code": "xx", // código de verificación, solo se usa cuando service_type es code "params": { // pares clave-valor personalizados "key1": "val1" // el formato de val es una cadena } }
                    
                    {
        "id": "xxx",          // ID de la plantilla
        "language": "default", // idioma utilizado, default por defecto
        "code": "xx",          // código de verificación, solo se usa cuando service_type es code
        "params": {            // pares clave-valor personalizados
          "key1": "val1"       // el formato de val es una cadena
        }
      }
      
                  
      Este bloque de código se muestra en una ventana flotante
  5. data_coding
    • Se recomienda usar la codificación UCS2 para garantizar que los caracteres especiales {} se analicen correctamente.
    • Si admite el envío directo de {}, puedes usar la codificación predeterminada (es decir, 0x00).
  6. status en la cabecera (header)
    • Se establece en 0x00000000.

Respuesta del servidor

El servidor envía el comando SUBMIT_SM_RESP (es decir, 0x80000004) para responder al resultado del envío del mensaje.

Respuesta correcta

  • Valor del campo status de la cabecera (header): 0x00000000
  • Campo MESSAGE_ID: el ID del mensaje de respuesta, utilizado para asociar el informe de entrega.

Respuesta de error

  • El servidor rellena el campo status de la cabecera (header) para indicar el motivo del fallo:
Código de estado Descripción Valor
ESME_RINVPARAM Parámetro no válido; comprueba el formato del contenido de la solicitud 0x00000032
ESME_RSYSERR Error interno del servicio; se recomienda volver a intentarlo más tarde 0x00000008
ESME_RSUBMITFAIL Fallo en el envío, posiblemente por un problema con la plantilla u otra causa 0x00000045
ESME_RINVNUMMSGS El contenido del campo short_message tiene un formato incorrecto 0x00000055
ESME_RUNKNOWNERR Error desconocido; ponte en contacto con el soporte técnico 0x000000FF

Informe de entrega

El servidor notifica el informe de entrega mediante el comando DELIVER_SM (es decir, 0x00000005). Los campos concretos son los siguientes:

  1. service_type
    • Valor fijo: MSG
  2. source_addr
    • Vacío.
  3. destination_addr
    • Coincide con el destination_addr del comando SUBMIT_SM.
  4. data_coding
    • Método de codificación: valor predeterminado 0x00.
  5. esm_class
    • Se establece en 0x00.
  6. short_message
    • Encapsula el informe de entrega con el formato delivery receipt.
  7. ReceiptedMessageID en el tlv
    • El ID del mensaje, utilizado para la asociación y la identificación.
  8. MessageState en el tlv
    • El estado del mensaje, con valor de campo 0x0427.

Análisis del estado

En el campo short_message, el significado del valor de stat es el siguiente:

Estado Significado
DELIVRD Entrega correcta
UNDELIV Fallo en la entrega

Otras consideraciones

Comandos no válidos

Ante un comando no válido enviado por el cliente, el servidor devolverá el comando GENERIC_NACK (es decir, 0x80000000) y registrará el log correspondiente. El servidor solo admite los siguientes comandos:

  1. Comando EnquireLink (es decir, 0x00000015)
  2. Comando Unbind (es decir, 0x00000006)
  3. Comando SubmitSM (es decir, 0x00000004)
  4. Comando DeliverSMResp (es decir, 0x80000005)
  5. Comando BindTransceiver (es decir, 0x00000009)

Mantenimiento de la conexión activa

El cliente debe enviar el comando EnquireLink (es decir, 0x00000015) cada 30 segundos (con una tolerancia de ±5 segundos) para garantizar que la conexión se mantenga activa.

Significado de los estados de envío

Código de estado Significado
ESME_RINVPARAM Parámetro no válido; comprueba el formato del contenido de la solicitud
ESME_RINVNUMMSGS El contenido del campo short_message tiene un formato incorrecto
ESME_RSUBMITFAIL Fallo en el envío, posiblemente por un problema con la plantilla u otra causa
ESME_RSYSERR Error interno del servicio; se recomienda volver a intentarlo más tarde
ESME_RUNKNOWNERR Error desconocido; ponte en contacto con el soporte técnico
DELIVRD El mensaje se entregó correctamente
UNDELIV El mensaje no pudo entregarse

Glosario

  • SMPP: protocolo de mensajes cortos entre pares (Short Message Peer-to-Peer Protocol), utilizado para el intercambio de mensajes en las pasarelas de SMS.
  • SUBMIT_SM: comando SMPP para enviar mensajes SMS.
  • DELIVER_SM: comando SMPP que utiliza el servidor para notificar el estado de entrega de los mensajes.
Icon Solid Transparent White Qiyu
Contacto