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_idse rellenará con el valor recibido en el camposystem_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:
- 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 se responderá con los resultados mediante el comando
SUBMIT_SM_RESP(0x80000004). - Se enviarán informes de entrega, tal como se detalla en la sección Informe de entrega.
- Se recomienda utilizar la codificación
UCS2para 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:
- service_type
- Valores:
MSG/CODE/MRKT - Predeterminado:
MSG
- Valores:
- source_addr
- Se puede dejar en blanco; actualmente no se utiliza en SMS.
- destination_addr
- El destinatario del mensaje; debe estar en formato de número de teléfono internacional (p. ej.,
+6598765432).
- El destinatario del mensaje; debe estar en formato de número de teléfono internacional (p. ej.,
- 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
- El contenido del mensaje en formato JSON, 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 pueden enviar directamente, se puede utilizar la codificación predeterminada (0x00).
- Se recomienda utilizar la codificación
- Estado del encabezado
- 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 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:
- 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
- El ID de mensaje para la asociación.
- MessageState en TLV
- El estado del mensaje; valor del campo
0x0427.
- El 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 |
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:
- Comando
EnquireLink(0x00000015) - Comando
Unbind(0x00000006) - Comando
SubmitSM(0x00000004) - Comando
DeliverSMResp(0x80000005) - 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.










