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_idcon un valor idéntico al camposystem_idrecibido.
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:
- El servidor analiza el contenido de la solicitud y utiliza siempre el canal SMS para el envío.
- El envío del mensaje es síncrono y el resultado se devuelve mediante el comando
SUBMIT_SM_RESP(es decir,0x80000004). - La situación de la entrega se notifica mediante un informe del mensaje; para más detalles, consulta Informe de entrega.
- Se recomienda usar la codificación
UCS2para 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:
- service_type
- Valores:
MSG/CODE/MRKT - Valor predeterminado:
MSG
- Valores:
- source_addr
- Puede dejarse vacío; actualmente no se utiliza en SMS.
- destination_addr
- El destino del mensaje, que debe tener el formato de un número de teléfono móvil internacional (por ejemplo,
+6598765432).
- El destino del mensaje, que debe tener el formato de un número de teléfono móvil internacional (por ejemplo,
- 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
- El contenido del mensaje, en formato JSON, con el siguiente formato:
- data_coding
- Se recomienda usar la codificación
UCS2para garantizar que los caracteres especiales{}se analicen correctamente. - Si admite el envío directo de
{}, puedes usar la codificación predeterminada (es decir,0x00).
- Se recomienda usar la codificación
- status en la cabecera (header)
- Se establece en
0x00000000.
- Se establece en
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:
- service_type
- Valor fijo:
MSG
- Valor fijo:
- source_addr
- Vacío.
- destination_addr
- Coincide con el
destination_addrdel comandoSUBMIT_SM.
- Coincide con el
- data_coding
- Método de codificación: valor predeterminado
0x00.
- Método de codificación: valor predeterminado
- esm_class
- Se establece en
0x00.
- Se establece en
- short_message
- Encapsula el informe de entrega con el formato
delivery receipt.
- Encapsula el informe de entrega con el formato
- ReceiptedMessageID en el tlv
- El ID del mensaje, utilizado para la asociación y la identificación.
- MessageState en el tlv
- El estado del mensaje, con valor de campo
0x0427.
- El estado del mensaje, con valor de campo
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:
- Comando
EnquireLink(es decir,0x00000015) - Comando
Unbind(es decir,0x00000006) - Comando
SubmitSM(es decir,0x00000004) - Comando
DeliverSMResp(es decir,0x80000005) - 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.










