API SMPP
Información de la API
Este documento define el protocolo de comunicación SMPP para el servicio OTP de EngageLab y está diseñado para permitir una entrega de mensajes y una notificación de estado eficientes y fiables a través de conexiones TCP. La información de la API incluye la dirección IP, el número de puerto y los datos de autenticación necesarios para la conexión. Asegúrate de que la cuenta y la contraseña proporcionadas a través de canales autorizados estén configuradas correctamente.
Dirección SMPP
Dirección SMPP: otpsmpp.api.engagelab.cc
Obtén la siguiente información a través de un canal autorizado, como el soporte comercial o técnico:
- Puerto:
{ port } - Cuenta:
{ system_id } - Contraseña:
{ password }
Establecimiento de una conexión
Paquete del cliente
Después de establecer la conexión TCP, el primer paquete debe enviar el comando BindTransceiver (0x00000009) para la autenticación. Este paquete debe incluir los siguientes campos:
- system_id: la cuenta del sistema asignada al cliente, utilizada para identificarlo.
- password: la contraseña de acceso correspondiente a la cuenta del sistema, utilizada para la autenticación.
Respuesta del servidor
Respuesta correcta
- El servidor devuelve el comando
BindTransceiverResp(0x80000009). - El campo
system_idse rellena con el mismo valor que el camposystem_idrecibido.
Respuesta fallida
- Si la autenticación falla, el servidor desconecta la conexión TCP y registra el motivo del fallo.
Envío de mensajes
Lógica del servidor
El envío de mensajes utiliza el comando SUBMIT_SM (0x00000004) para enviar una solicitud de entrega de mensajes. La lógica del servidor es la siguiente:
- El servidor analiza el contenido de la solicitud y siempre utiliza el canal SMS para la entrega.
- La entrega del mensaje es síncrona y el resultado se devuelve mediante el comando
SUBMIT_SM_RESP(0x80000004). - El estado de la entrega se notifica mediante informes de entrega. Para obtener más información, consulta Informes de entrega.
- Se recomienda utilizar la codificación
UCS2para admitir caracteres especiales e internacionalización.
Paquete del cliente
El cliente envía el comando SUBMIT_SM (0x00000004) para enviar un mensaje. El paquete debe incluir los siguientes campos:
service_type
- Valor:
MSG/CODE/MRKT - Valor predeterminado:
MSG
- Valor:
source_addr
- Puede dejarse vacío y actualmente no se utiliza en OTP.
destination_addr
- El destino del mensaje, que debe estar en formato internacional de número de móvil (por ejemplo,
+6598765432).
- El destino del mensaje, que debe estar en formato internacional de número de móvil (por ejemplo,
short_message
- El contenido del mensaje utiliza formato JSON, como se muestra a continuación:{ "id": "xxx", // ID de plantilla "language": "default", // Idioma utilizado; el valor predeterminado es default "code": "xx", // Código de verificación; se utiliza solo cuando service_type es CODE "params": { // Pares clave-valor personalizados "key1": "val1" // val debe estar en formato de cadena } }
{ "id": "xxx", // ID de plantilla "language": "default", // Idioma utilizado; el valor predeterminado es default "code": "xx", // Código de verificación; se utiliza solo cuando service_type es CODE "params": { // Pares clave-valor personalizados "key1": "val1" // val debe estar en formato de cadena } }Este bloque de código se muestra en una ventana flotante
- El contenido del mensaje utiliza formato JSON, como se muestra a continuación:
data_coding
- Se recomienda utilizar la codificación
UCS2para garantizar que los caracteres especiales como{}se analicen correctamente. - Si se admite la transmisión directa de
{}, puede utilizarse la codificación predeterminada (0x00).
- Se recomienda utilizar la codificación
status en la cabecera
- Establecer en
0x00000000.
- Establecer en
Respuesta del servidor
El servidor envía el comando SUBMIT_SM_RESP (0x80000004) como respuesta al resultado de la entrega del mensaje.
Respuesta correcta
- Valor del campo status en la cabecera:
0x00000000 - Campo MESSAGE_ID: ID del mensaje de respuesta, utilizado para correlacionar los informes de entrega.
Respuesta fallida
- El servidor rellena el campo status en la cabecera 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 |
La entrega falló, posiblemente debido a un problema de plantilla u otras razones. | 0x00000045 |
ESME_RINVNUMMSGS |
Formato de contenido incorrecto en el campo short_message. |
0x00000055 |
ESME_RUNKNOWNERR |
Error desconocido. Ponte en contacto con el soporte técnico. | 0x000000FF |
Informes de entrega
El servidor informa del estado de la entrega mediante el comando DELIVER_SM (0x00000005). Los campos relevantes son los siguientes:
service_type
- Valor fijo:
MSG
- Valor fijo:
source_addr
- Déjalo vacío.
destination_addr
- Igual que
destination_addren el comandoSUBMIT_SM.
- Igual que
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
- El informe de entrega se empaqueta utilizando el formato
delivery receipt.
- El informe de entrega se empaqueta utilizando el formato
ReceiptedMessageID in TLV
- ID del mensaje, utilizado para correlación e identificación.
MessageState in TLV
- Estado del mensaje, valor del campo
0x0427.
- Estado del mensaje, valor del campo
Análisis del estado
En el campo short_message, el significado de los valores de stat es el siguiente:
| Estado | Significado |
|---|---|
DELIVRD |
Entregado correctamente |
UNDELIV |
Entrega fallida |
Otras notas
Comandos no válidos
Para los comandos no válidos enviados por el cliente, el servidor devuelve el comando GENERIC_NACK (0x80000000) y registra los registros correspondientes. El servidor solo admite los siguientes comandos:
- Comando
EnquireLink(0x00000015) - Comando
Unbind(0x00000006) - Comando
SubmitSM(0x00000004) - Comando
DeliverSMResp(0x80000005) - Comando
BindTransceiver(0x00000009)
Keepalive
El cliente debe enviar el comando EnquireLink (0x00000015) una vez cada 30 segundos (tolerancia: ±5 segundos) para garantizar que la conexión permanezca activa.
Significado del estado 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 |
Formato de contenido incorrecto en el campo short_message. |
ESME_RSUBMITFAIL |
La entrega falló, posiblemente debido a un problema de plantilla u otras razones. |
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 |
Mensaje entregado correctamente |
UNDELIV |
No se pudo entregar el mensaje |
Terminología
- SMPP: protocolo Short Message Peer-to-Peer, utilizado para el intercambio de mensajes con pasarelas SMS.
- SUBMIT_SM: comando SMPP para enviar mensajes SMS.
- DELIVER_SM: comando SMPP utilizado por el servidor para informar del estado de entrega del mensaje.
Si tienes alguna pregunta, ponte en contacto con el soporte técnico de OTP.










