Comment configurer le champ Replace if Present dans SMPP
Qu'est-ce que le champ Replace If Present ?
Le champ Replace If Present dans SMPP est un indicateur d'1 octet dans les PDU comme submit_sm
qui indique au SMSC de remplacer
un message existant stocké sur l'appareil du destinataire ou dans la file d'attente du SMSC. Les principales applications incluent :
- Mise à jour de contenu sensible au temps (ex : OTP, alertes de statut)
- Prévention des messages en double
- Gestion des contraintes de stockage des appareils
Valeurs du champ et interprétation
Le champ utilise une structure simple de type booléen :
Valeur (Hex) | Description |
---|---|
0x00 | Ne PAS remplacer les messages existants (par défaut) |
0x01 | Remplacer les messages existants s'ils sont présents |
- Adresses source/destination
- ID du message (si fourni)
- ID de protocole (PID=0x41 déclenche souvent le remplacement)
Cas d'utilisation
1. Mise à jour d'un message OTP
replace_if_present: 0x01 // Remplacer le message OTP précédent PID: 0x41 // ID de protocole pour le remplacement payload: "Votre nouvel OTP : 5678"
2. Actualisation d'un message de campagne
replace_if_present: 0x01 // Mettre à jour le contenu promotionnel PID: 0x00 // Protocole par défaut payload: "Soldes Flash : Nouveaux prix !"
3. Gestion de file d'attente
replace_if_present: 0x01 // Écraser le message en file d'attente scheduled_delivery_time: (horodatage futur)
Exemples de PDU SMPP
Exemple 1 : Remplacement désactivé (0x00)
0000001D // Longueur de commande (29 octets) 00000004 // ID de commande (SubmitSM) 00000001 // Numéro de séquence ... 00 // Replace If Present (0x00 : Désactivé) ... 07 // Longueur SM (7 septets) C8329BFD06DDDF72 // Payload ("Bonjour !")
Exemple 2 : Remplacement activé (0x01)
0000001D // Longueur de commande (29 octets) 00000004 // ID de commande (SubmitSM) 00000002 // Numéro de séquence ... 01 // Replace If Present (0x01 : Activé) ... 07 // Longueur SM (7 septets) E8329BFD0E... // Payload ("Mis à jour : 15h")
Exemple 3 : Combiné avec PID=0x41
0000001D // Longueur de commande (29 octets) 00000004 // ID de commande (SubmitSM) 00000003 // Numéro de séquence ... 41 // ID de protocole (PID=0x41 : Remplacer) 01 // Replace If Present (0x01) ... 07 // Longueur SM (7 septets) C8329BFD06... // Payload ("OTP : 9876")
Interactions avec d'autres champs
- ID de protocole (PID) : PID=0x41 déclenche explicitement le remplacement dans de nombreux SMSC
- message_id : Certains SMSC l'utilisent pour identifier les messages à remplacer
- registered_delivery : Les accusés indiquent si le remplacement a réussi
Pièges courants
- Activer le remplacement sans support du SMSC
- Ne pas définir
message_id
pour un remplacement ciblé - Supposer que tous les SMSC utilisent la même logique de remplacement
- Incompatibilité entre les valeurs PID et replace_if_present
Les politiques de remplacement varient considérablement. Certains SMSC :
- Ne remplacent que les messages avec des adresses source/destination correspondantes
- Ignorent replace_if_present si PID≠0x41
- Limitent le remplacement aux messages dans la file d'attente du SMSC (non livrés)
Conclusion
Le champ Replace If Present offre un contrôle crucial sur la gestion du cycle de vie des messages, mais nécessite une coordination minutieuse avec les capacités du SMSC. Vérifiez toujours le comportement de remplacement avec votre fournisseur et utilisez PID=0x41 pour des demandes de remplacement explicites. Pour des implémentations détaillées, reportez-vous à la section 5.2.20 de SMPP v3.4 et à la documentation GSM 03.40 sur la gestion des messages.
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