Comment configurer le champ Période de Validité SMPP

Qu'est-ce que le champ Période de Validité ?

La Période de Validité dans SMPP (Short Message Peer-to-Peer Protocol) est un champ de chaîne de caractères terminée par un nul dans les PDU comme submit_sm qui définit combien de temps un SMSC tentera de délivrer un message avant de le supprimer. Ce champ est crucial pour :

  • Éviter des tentatives infinies pour les messages non livrables
  • Gérer les ressources de stockage du SMSC
  • Gérer les contenus sensibles au temps (ex : OTP, promotions)

Format et structure du champ

La période de validité utilise le même format de temps absolu que l'heure de livraison programmée (spécification SMPP v3.4) :

YYMMDDhhmmssnnp

Où les composants correspondent au format de l'heure de livraison programmée. Des raccourcis de format relatif sont également supportés :

Format Exemple Description
Absolu 231215235959000+ 15 déc. 2023 23:59:59 UTC+0
Relatif 000003000000000R 3 jours à partir de l'heure d'envoi
Valeurs spéciales :
- NULL : Utilise la validité par défaut du SMSC (généralement 24-72 heures)
- 00 : Validité par défaut du SMSC (systèmes legacy)

Formats clés de la période de validité

1. Format de temps absolu

YYMMDDhhmmssnnp // Format complet
231215143000000+  // 15 déc. 2023 14:30:00 UTC+0

2. Format de temps relatif

00000X000000000R // X = Jours (00-99)
000003000000000R  // Validité de 3 jours

Cas d'utilisation

1. Expiration d'OTP (Validité courte)

validity_period: "000000010000000R" // Validité de 1 heure
    

2. Campagne promotionnelle (Validité étendue)

validity_period: "000007000000000R" // Validité de 7 jours
    

3. Expiration à minuit (Temps absolu)

validity_period: "231215235959000+" // Expire le 15 déc. 2023 23:59:59 UTC+0
    

Exemples de PDU SMPP

Exemple 1 : Validité de 24 heures (Format relatif)

0000001D  // Longueur de commande (29 octets)
00000004  // ID de commande (SubmitSM)
00000001  // Numéro de séquence
...
00        // Drapeau de priorité
00        // Heure de livraison programmée
303030303234303030303030305200  // "00002400000000R" (24 heures)
00        // Livraison enregistrée
...
    

Exemple 2 : Temps d'expiration absolu

0000002A  // Longueur de commande (42 octets)
00000004  // ID de commande (SubmitSM)
00000002  // Numéro de séquence
...
00        // Heure de livraison programmée
3233313231323332353935393030302B00  // "231212235959000+" (12 déc. 2023 23:59:59 UTC+0)
...
    

Interactions avec d'autres champs

  • scheduled_delivery_time : Le compte à rebours de la période de validité commence à l'heure programmée si définie
  • priority_flag : Les messages haute priorité peuvent outrepasser les paramètres de période de validité sur certains SMSC
  • registered_delivery : Les reçus de livraison sont envoyés même après l'expiration de la période de validité

Pièges courants

  • Utiliser le format relatif sans le suffixe 'R'
  • Définir des périodes de validité plus longues que les limites du SMSC (ex : 30 jours max)
  • Incompatibilité des fuseaux horaires entre l'heure programmée et la période de validité
  • Supposer que tous les SMSC supportent le format relatif (vérifier avec le fournisseur)
Note sur le comportement du SMSC :
De nombreux SMSC convertissent les périodes relatives en horodatages absolus à la réception du message. Le compte à rebours continue même si le SMSC redémarre.

Période de Validité vs Valeurs par défaut du SMSC

Valeur de la Période de Validité Comportement du SMSC
NULL ou 00 Utilise la valeur par défaut du SMSC (varie selon le fournisseur)
Valeur explicite Honore la valeur (dans les limites du SMSC)
Horodatage passé Message supprimé immédiatement

Conclusion

Le champ Période de Validité est essentiel pour contrôler le cycle de vie des messages dans SMPP. Alors que les horodatages absolus offrent de la précision, les formats relatifs offrent une simplicité pour les cas d'utilisation courants. Coordonnez toujours les paramètres de validité avec les politiques du SMSC et testez les cas limites (ex : transitions d'heure d'été). Pour des implémentations détaillées, référez-vous à la section 5.2.18 de SMPP v3.4 et à la documentation GSM 03.40.

More information