Comment configurer le champ Scheduled Delivery Time dans SMPP

Qu'est-ce que le champ Scheduled Delivery Time ?

Le champ Scheduled Delivery Time dans SMPP (Short Message Peer-to-Peer Protocol) est un paramètre optionnel dans la PDU submit_sm qui permet de programmer un message pour une livraison à une date et une heure ultérieures. Ce champ est essentiel pour :

  • Retarder la livraison des messages en dehors des heures de pointe
  • Planifier des campagnes sensibles au temps (par exemple, messages d'anniversaire)
  • Coordonner les messages dans différents fuseaux horaires

Format et structure du champ

La spécification SMPP v3.4 définit ce champ comme une C-Octet String (terminée par un caractère nul) avec un format de date-heure spécifique :

YYMMDDhhmmssnnp

Où :

Composant Description Plage
YY Deux derniers chiffres de l'année 00-99
MM Mois 01-12
DD Jour 01-31
hh Heure (format 24h) 00-23
mm Minute 00-59
ss Seconde 00-59
nn Dixièmes de seconde (optionnel) 00-99
p Décalage horaire (par exemple, +, -) +/- suivi de 4 chiffres (HHMM)
Valeurs spéciales :
- NULL (livraison immédiate)
- 000000000000000 (livraison immédiate, systèmes hérités)

Exemples de chaînes de temps

Chaîne de temps Interprétation
231015143000000+ 15 oct. 2023 14:30:00 UTC+0
231015143000000-0800 15 oct. 2023 14:30:00 UTC-08:00
000000000000000 Livraison immédiate (hérité)
NULL Livraison immédiate (recommandé)

Cas d'utilisation

1. Messages d'anniversaire

Programmer un message pour qu'il soit livré exactement à minuit le jour de l'anniversaire du destinataire :

scheduled_delivery_time: "231016000000000+"
// 16 oct. 2023 00:00:00 UTC+0
    

2. Livraison en heures creuses

Éviter la congestion du réseau en envoyant des messages en masse la nuit :

scheduled_delivery_time: "231015020000000+"
// 15 oct. 2023 02:00:00 UTC+0
    

3. Coordination des fuseaux horaires

Livrer des messages à 9 heure locale pour les destinataires à New York (UTC-5) :

scheduled_delivery_time: "231015090000000-0500"
// 15 oct. 2023 09:00:00 UTC-05:00
    

Exemples de PDU SMPP

Exemple 1 : Livraison immédiate (NULL)

0000001D  // Longueur de commande (29 octets)
00000004  // ID de commande (SubmitSM)
00000001  // Numéro de séquence
00        // TON source
00        // NPI source
736F7572636500  // Adresse source ("source")
00        // TON destination
00        // NPI destination
36353433323100  // Adresse destination ("654321")
00        // Classe ESM
00        // ID de protocole
00        // Drapeau de priorité
00        // Scheduled Delivery Time (NULL : immédiat)
00        // Période de validité
00        // Livraison enregistrée
00        // Remplacer si présent
00        // Codage des données (DCS=0x00)
00        // ID de message par défaut
07        // Longueur du message (7 septets)
C8329BFD06DDDF72  // Charge utile ("Hello!")
    

Exemple 2 : Livraison future (15 oct. 2023 14:30 UTC)

0000002A  // Longueur de commande (42 octets)
00000004  // ID de commande (SubmitSM)
00000002  // Numéro de séquence
00        // TON source
00        // NPI source
736F7572636500  // Adresse source ("source")
00        // TON destination
00        // NPI destination
36353433323100  // Adresse destination ("654321")
00        // Classe ESM
00        // ID de protocole
00        // Drapeau de priorité
3233313031353134333030303030302B00  // "231015143000000+" (16 octets + nul)
00        // Période de validité
00        // Livraison enregistrée
00        // Remplacer si présent
00        // Codage des données (DCS=0x00)
00        // ID de message par défaut
07        // Longueur du message (7 septets)
C8329BFD06DDDF72  // Charge utile ("Hello!")
    

Interactions avec d'autres champs

  • validity_period : Définit la durée pendant laquelle le SMSC tentera la livraison. Le compte à rebours commence à l'heure programmée.
  • priority_flag : Les messages prioritaires peuvent contourner les files d'attente de programmation sur certains SMSC.

Pièges courants

  • Utiliser l'heure locale sans spécifier le décalage horaire.
  • Formater incorrectement la chaîne de date (par exemple, mois invalide "13").
  • Supposer que tous les SMSC prennent en charge la livraison programmée (vérifier avec le fournisseur).
  • Définir une heure dans le passé, ce qui entraîne une livraison immédiate.
Note sur le comportement du SMSC :
Certains SMSC ignorent les fractions de seconde (nn) ou limitent la durée de programmation des messages (par exemple, 7 jours maximum).

Conclusion

Le champ Scheduled Delivery Time permet un contrôle précis de la livraison des SMS. Son utilisation correcte nécessite un formatage minutieux des chaînes de temps et une coordination avec les capacités du SMSC. Testez toujours les messages programmés avec votre fournisseur et référez-vous à la spécification SMPP v3.4 pour les cas particuliers (par exemple, années bissextiles, transitions de fuseaux horaires).

More information