OTP SMPP Integration Guide - Enhance Your Security with SMPP
Información de la interfaz
Este protocolo define el protocolo de comunicación SMPP para servicios de OTP, con el objetivo de lograr una entrega de mensajes y un informe de estados 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. Es necesario asegurarse de que las credenciales proporcionadas por los canales autorizados estén configuradas correctamente.
Dirección SMPP
Obtener la siguiente información de los 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
Después de 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 del sistema asignada al cliente para la verificación de identidad.
- password: La contraseña de acceso correspondiente a la cuenta del sistema para la autenticación.
Respuesta del servidor
Respuesta correcta
- El servidor enviará un comando
BindTransceiverResp(0x80000009) como respuesta. - El campo
system_idse completará con el valor recibido en el camposystem_id.
Respuesta de error
- 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:
- El servidor analiza el contenido de la solicitud y utiliza el canal de SMS para la entrega.
- Los mensajes se entregan en modo síncrono y los resultados se devolverán mediante el comando
SUBMIT_SM_RESP(0x80000004). - Se enviarán informes de entrega, tal y como se detalla en la sección Informe de entrega.
- Se recomienda utilizar la codificación
UCS2para admitir caracteres especiales y la internacionalización.
Paquete de datos del cliente
El cliente envía el comando SUBMIT_SM (0x00000004) para enviar mensajes con los siguientes campos:
- service_type
- Valores:
MSG/CODE/MRKT - Predeterminado:
MSG
- Valores:
- source_addr
- Puede dejarse en blanco; actualmente no se utiliza en OTP.
- destination_addr
- El destino del mensaje; debe estar en formato internacional de número de teléfono (p. ej.,
+8613800138000).
- El destino del mensaje; debe estar en formato internacional de número de teléfono (p. ej.,
- short_message
- Contenido del mensaje en formato JSON, tal y 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
- Contenido del mensaje en formato JSON, tal y como se muestra a continuación:
- data_coding
- Se recomienda utilizar la codificación
UCS2para garantizar que los caracteres especiales{}se analicen correctamente. - Si
{}se puede enviar directamente, se puede utilizar la codificación predeterminada (0x00).
- Se recomienda utilizar la codificación
- header status
- Establecer en
0x00000000.
- Establecer en
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 header status:
0x00000000 - Campo MESSAGE_ID: el ID del mensaje utilizado para asociar informes de entrega.
Respuesta de error
- El servidor completa el campo header status 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 |
Error 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 de los resultados de entrega mediante el comando DELIVER_SM (0x00000005). Los campos son los siguientes:
- service_type
- Valor fijo:
MSG
- Valor fijo:
- source_addr
- En blanco.
- destination_addr
- Coincide con el campo
destination_addrdel comandoSUBMIT_SM.
- Coincide con el campo
- data_coding
- Método de codificación: valor predeterminado
0x00.
- Método de codificación: valor predeterminado
- esm_class
- Establecer en
0x00.
- Establecer en
- short_message
- Encapsula el informe de entrega en formato
delivery receipt.
- Encapsula el informe de entrega en formato
- ReceiptedMessageID en tlv
- ID del mensaje para la asociación.
- MessageState en tlv
- Estado del mensaje; valor del campo
0x0427.
- Estado del mensaje; valor del campo
Análisis de estado
El campo short_message contiene el valor stat, que indica lo siguiente:
| Estado | Significado |
|---|---|
DELIVRD |
Entregado correctamente |
UNDELIV |
Error 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:
- Comando
EnquireLink(0x00000015) - Comando
Unbind(0x00000006) - Comando
SubmitSM(0x00000004) - Comando
DeliverSMResp(0x80000005) - Comando
BindTransceiver(0x00000009)
Mantenimiento de la conexión
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 |
Error 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 |
Error de entrega |
Terminología
- SMPP: Short Message Peer-to-Peer Protocol para el intercambio de mensajes entre pasarelas 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, se puede contactar con Soporte técnico.

