Interfaz SMPP

Información de la interfaz

Este protocolo define el protocolo de comunicación SMPP del servicio EngageLab OTP, cuyo objetivo es lograr un envío de mensajes y un reporte 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 la información de autenticación necesaria para la conexión. Asegúrese de realizar la configuración correctamente con la cuenta y la contraseña proporcionadas por el canal autorizado.

Dirección SMPP

Dirección smpp: otpsmpp.api.engagelab.cc Obtenga la siguiente información del canal autorizado (por ejemplo, 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 la verificación de autenticación. Este paquete de datos debe incluir los siguientes campos:

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

Respuesta del servidor

Respuesta de éxito

  • El servidor enviará el comando BindTransceiverResp (es decir, 0x80000009) como respuesta.
  • Rellena el campo system_id con un valor idéntico al del 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 en modo síncrono y el resultado se devuelve mediante el comando SUBMIT_SM_RESP (es decir, 0x80000004).
  3. El estado de entrega se reporta mediante el mensaje; para más detalles, consulte Informe de entrega.
  4. Se recomienda usar la codificación UCS2 para admitir caracteres especiales y la 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 usa en OTP.
  3. destination_addr
    • Destino del mensaje; debe tener formato de número de teléfono internacional (por ejemplo, +6598765432).
  4. short_message
    • 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" // val con formato de 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"       // val con formato de 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 se admite enviar directamente {}, se puede usar la codificación predeterminada (es decir, 0x00).
  6. status del header
    • Establecer en 0x00000000.

Respuesta del servidor

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

Respuesta de éxito

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

Respuesta de error

  • El servidor rellena el campo status del header para indicar el motivo del fallo:
Código de estado Descripción Valor
ESME_RINVPARAM Parámetro no válido; compruebe 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 Error de envío; puede deberse a un problema con la plantilla u otra causa 0x00000045
ESME_RINVNUMMSGS Formato incorrecto del contenido del campo short_message 0x00000055
ESME_RUNKNOWNERR Error desconocido; póngase en contacto con el soporte técnico 0x000000FF

Informe de entrega

El servidor reporta 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
    • Idéntico al destination_addr del comando SUBMIT_SM.
  4. data_coding
    • Modo de codificación: valor predeterminado 0x00.
  5. esm_class
    • Establecer en 0x00.
  6. short_message
    • Encapsula el informe de entrega con el formato delivery receipt.
  7. ReceiptedMessageID en tlv
    • ID del mensaje, utilizado para la asociación e identificación.
  8. MessageState en tlv
    • Estado del mensaje; valor del campo 0x0427.

Análisis del estado

En el campo short_message, los valores de stat tienen el siguiente significado:

Estado Significado
DELIVRD Entrega correcta
UNDELIV Error de entrega

Otras consideraciones

Comandos no válidos

Ante los comandos no válidos enviados por el cliente, el servidor devolverá el comando GENERIC_NACK (es decir, 0x80000000) y registrará los logs correspondientes. 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 actividad

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 permanezca activa.

Significado de los estados de envío

Código de estado Significado
ESME_RINVPARAM Parámetro no válido; compruebe el formato del contenido de la solicitud
ESME_RINVNUMMSGS Formato incorrecto del contenido del campo short_message
ESME_RSUBMITFAIL Error de envío; puede deberse a 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; póngase en contacto con el soporte técnico
DELIVRD El mensaje se entregó correctamente
UNDELIV El mensaje no se pudo entregar

Glosario

  • SMPP: protocolo de igual a igual para mensajes cortos (Short Message Peer-to-Peer Protocol), utilizado para el intercambio de mensajes de las pasarelas de SMS.
  • SUBMIT_SM: comando SMPP para enviar un mensaje corto.
  • DELIVER_SM: comando SMPP que el servidor utiliza para reportar el estado de entrega del mensaje.

Si tiene alguna pregunta, póngase en contacto con el Soporte técnico de OTP.

Icon Solid Transparent White Qiyu
Contacto