Cómo configurar el campo Replace if Present en SMPP
¿Qué es el campo Replace If Present?
El campo Replace If Present en SMPP es un indicador de 1 byte en PDUs como submit_sm
que instruye al SMSC a reemplazar
un mensaje existente almacenado en el dispositivo del destinatario o en la cola del SMSC. Las aplicaciones clave incluyen:
- Actualizar contenido sensible al tiempo (ej. OTPs, alertas de estado)
- Evitar mensajes duplicados
- Gestionar limitaciones de almacenamiento en dispositivos
Valores del campo e interpretación
El campo utiliza una estructura simple similar a un booleano:
Valor (Hex) | Descripción |
---|---|
0x00 | NO reemplazar mensajes existentes (predeterminado) |
0x01 | Reemplazar mensajes existentes si están presentes |
- Direcciones de origen/destino
- ID del mensaje (si se proporciona)
- ID de protocolo (PID=0x41 suele activar el reemplazo)
Casos de uso
1. Actualización de mensaje OTP
replace_if_present: 0x01 // Reemplazar mensaje OTP anterior PID: 0x41 // ID de protocolo para reemplazo payload: "Tu nuevo OTP: 5678"
2. Actualización de mensaje de campaña
replace_if_present: 0x01 // Actualizar contenido promocional PID: 0x00 // Protocolo predeterminado payload: "¡Oferta flash: Nuevos precios!"
3. Gestión de colas
replace_if_present: 0x01 // Sobrescribir mensaje en cola scheduled_delivery_time: (marca de tiempo futura)
Ejemplos de PDUs SMPP
Ejemplo 1: Reemplazo deshabilitado (0x00)
0000001D // Longitud del comando (29 bytes) 00000004 // ID del comando (SubmitSM) 00000001 // Número de secuencia ... 00 // Replace If Present (0x00: Deshabilitado) ... 07 // Longitud SM (7 septetos) C8329BFD06DDDF72 // Payload ("¡Hola!")
Ejemplo 2: Reemplazo habilitado (0x01)
0000001D // Longitud del comando (29 bytes) 00000004 // ID del comando (SubmitSM) 00000002 // Número de secuencia ... 01 // Replace If Present (0x01: Habilitado) ... 07 // Longitud SM (7 septetos) E8329BFD0E... // Payload ("Actualizado: 3 PM")
Ejemplo 3: Combinado con PID=0x41
0000001D // Longitud del comando (29 bytes) 00000004 // ID del comando (SubmitSM) 00000003 // Número de secuencia ... 41 // ID de protocolo (PID=0x41: Reemplazar) 01 // Replace If Present (0x01) ... 07 // Longitud SM (7 septetos) C8329BFD06... // Payload ("OTP: 9876")
Interacciones con otros campos
- ID de protocolo (PID): PID=0x41 activa explícitamente el reemplazo en muchos SMSCs
- message_id: Algunos SMSCs usan esto para identificar mensajes a reemplazar
- registered_delivery: Los recibos indican si el reemplazo tuvo éxito
Errores comunes
- Habilitar el reemplazo sin soporte del SMSC
- No configurar
message_id
para reemplazo dirigido - Asumir que todos los SMSCs usan la misma lógica de reemplazo
- Valores de PID y replace_if_present no coincidentes
Las políticas de reemplazo varían ampliamente. Algunos SMSCs:
- Solo reemplazan mensajes con origen/destino coincidentes
- Ignoran replace_if_present si PID≠0x41
- Limitan el reemplazo a mensajes en la cola del SMSC (no entregados)
Conclusión
El campo Replace If Present proporciona un control crítico sobre la gestión del ciclo de vida de los mensajes, pero requiere una coordinación cuidadosa con las capacidades del SMSC. Siempre verifique el comportamiento de reemplazo con su proveedor y use PID=0x41 para solicitudes de reemplazo explícitas. Para implementaciones detalladas, consulte la Sección 5.2.20 de SMPP v3.4 y la documentación de GSM 03.40 sobre manejo de mensajes.
More information
- How to configure the SMPP Service Type field
- How to configure the SMPP Phone Number fields
- How to configure the SMPP ESM Class field
- How to configure the SMPP PID field
- How to configure the SMPP Prioirity field
- How to configure the SMPP Scheduled Time field
- How to configure the SMPP Validity Period field
- How to configure the SMPP Registered Delivery field
- How to configure the SMPP Replace if Present field
- How to configure the sm_default_msg_id field
- How to configure the SMPP DCS field
- How to calculate the SMPP SM Length field
- How to put data into the SMPP SM field