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
- Comment configurer le champ Type de service SMPP
- Comment configurer les champs de numéro de téléphone SMPP
- Comment configurer le champ Classe ESM SMPP
- Comment configurer le champ PID SMPP
- Comment configurer le champ Priorité SMPP
- Comment configurer le champ Heure programmée SMPP
- Comment configurer le champ Période de validité SMPP
- Comment configurer le champ Livraison enregistrée SMPP
- Comment configurer le champ Remplacer si présent SMPP
- Comment configurer le champ sm_default_msg_id
- Comment configurer le champ DCS SMPP
- Comment calculer le champ Longueur SM SMPP
- Comment insérer des données dans le champ SM SMPP