SMPP

Información de la interfaz

Este protocolo define el protocolo de comunicación SMPP para servicios de SMS, con el objetivo de lograr una entrega de mensajes y un informe de estado eficientes y fiables mediante conexiones TCP. La información de la interfaz incluye la dirección IP, el puerto y las credenciales de autenticación. Se debe asegurar de que las credenciales proporcionadas por canales autorizados estén configuradas correctamente.

Dirección SMPP

Se debe obtener la siguiente información de canales autorizados (p. ej., ventas o soporte técnico):

  • Dirección IP: { ip }
  • Puerto: { port }
  • Cuenta: { system_id }
  • Contraseña: { password }

Establecimiento de la conexión

Paquete de datos del cliente

Tras establecer una conexión TCP, el primer paquete de datos debe enviar el comando BindTransceiver (0x00000009) para la autenticación. El paquete debe incluir los siguientes campos:

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

Respuesta del servidor

Respuesta correcta

  • El servidor enviará un comando BindTransceiverResp (0x80000009) como respuesta.
  • El campo system_id se rellenará con el valor recibido en el campo system_id.

Respuesta fallida

  • Si la autenticación falla, el servidor desconectará la conexión TCP y registrará el motivo.

Envío de mensajes

Lógica del servidor

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

  1. El servidor analiza el contenido de la solicitud y utiliza el canal de SMS para la entrega.
  2. Los mensajes se entregan en modo síncrono y se responderá con los resultados mediante el comando SUBMIT_SM_RESP (0x80000004).
  3. Se enviarán informes de entrega, tal como se detalla en la sección Informe de entrega.
  4. Se recomienda utilizar la codificación UCS2 para admitir caracteres especiales e internacionalización.

Paquete de datos del cliente

El cliente envía el comando SUBMIT_SM (0x00000004) para enviar mensajes con los siguientes campos:

  1. service_type
    • Valores: MSG / CODE / MRKT
    • Predeterminado: MSG
  2. source_addr
    • Se puede dejar en blanco; actualmente no se utiliza en SMS.
  3. destination_addr
    • El destinatario del mensaje; debe estar en formato de número de teléfono internacional (p. ej., +6598765432).
  4. short_message
    • El contenido del mensaje en formato JSON, como se muestra a continuación:
      { "id": "xxx", // Template ID "language": "default", // Language, default is "default" "code": "xx", // Verification code, used when service_type is "code" "params": { // Custom key-value pairs "key1": "val1" // Value must be a string } }
                    
                    {
        "id": "xxx",          // Template ID
        "language": "default", // Language, default is "default"
        "code": "xx",          // Verification code, used when service_type is "code"
        "params": {            // Custom key-value pairs
          "key1": "val1"       // Value must be a string
        }
      }
      
                  
      Este bloque de código se muestra en una ventana flotante
  5. data_coding
    • Se recomienda utilizar la codificación UCS2 para garantizar que los caracteres especiales {} se analicen correctamente.
    • Si {} se pueden enviar directamente, se puede utilizar la codificación predeterminada (0x00).
  6. Estado del encabezado
    • Establecer en 0x00000000.

Respuesta del servidor

El servidor responde a las solicitudes de entrega de mensajes con el comando SUBMIT_SM_RESP (0x80000004).

Respuesta correcta

  • valor del campo de estado del encabezado: 0x00000000
  • campo MESSAGE_ID: el ID de mensaje utilizado para asociar los informes de entrega.

Respuesta fallida

  • El servidor rellena el campo de estado del encabezado para indicar el motivo del fallo:
Código de estado Descripción Valor
ESME_RINVPARAM Parámetros no válidos; comprobar el formato de la solicitud 0x00000032
ESME_RSYSERR Error interno del servidor; reintentar más tarde 0x00000008
ESME_RSUBMITFAIL Fallo de entrega; posiblemente debido a problemas de plantilla 0x00000045
ESME_RINVNUMMSGS Formato de short_message no válido 0x00000055
ESME_RUNKNOWNERR Error desconocido; contactar con soporte técnico 0x000000FF

Informe de entrega

El servidor informa los resultados de entrega mediante el comando DELIVER_SM (0x00000005). Los campos son los siguientes:

  1. service_type
    • Valor fijo: MSG
  2. source_addr
    • En blanco.
  3. destination_addr
    • Coincide con el campo destination_addr del comando SUBMIT_SM.
  4. data_coding
    • Método de codificación: valor predeterminado 0x00.
  5. esm_class
    • Establecer en 0x00.
  6. short_message
    • Encapsula el informe de entrega en formato delivery receipt.
  7. ReceiptedMessageID en TLV
    • El ID de mensaje para la asociación.
  8. MessageState en TLV
    • El estado del mensaje; valor del campo 0x0427.

Análisis de estado

El campo short_message contiene el valor stat, que indica lo siguiente:

Estado Significado
DELIVRD Entregado correctamente
UNDELIV Fallo de entrega

Información adicional

Comandos no válidos

Para comandos no válidos enviados por el cliente, el servidor devolverá el comando GENERIC_NACK (0x80000000) y registrará el evento. El servidor solo admite los siguientes comandos:

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

Mantenimiento de conexión (keep-alive)

El cliente debe enviar el comando EnquireLink (0x00000015) cada 30 segundos (±5 segundos) para mantener la actividad de la conexión.

Significado del estado de entrega

Código de estado Significado
ESME_RINVPARAM Parámetros no válidos; comprobar el formato de la solicitud
ESME_RINVNUMMSGS Formato de short_message no válido
ESME_RSUBMITFAIL Fallo de entrega; posiblemente debido a problemas de plantilla
ESME_RSYSERR Error interno del servidor; reintentar más tarde
ESME_RUNKNOWNERR Error desconocido; contactar con soporte técnico
DELIVRD Entregado correctamente
UNDELIV Fallo de entrega

Terminología

  • SMPP: Short Message Peer-to-Peer Protocol para el intercambio de mensajes entre pasarelas de SMS.
  • SUBMIT_SM: comando SMPP para el envío de mensajes.
  • DELIVER_SM: comando SMPP para informar del estado de entrega de mensajes.

Para cualquier consulta, contactar con el Soporte técnico.

Icon Solid Transparent White Qiyu
Contacto