Comprendre le champ PID dans SMPP

Qu'est-ce que le champ PID dans SMPP ?

Le Protocole Identifiant (PID) dans SMPP (Short Message Peer-to-Peer Protocol) est un champ de 1 octet dans les PDU (Unités de Données de Protocole) SMPP. Il identifie le protocole utilisé par le système d'origine ou fournit des instructions spéciales pour le traitement des messages. Le champ PID est défini dans les opérations submit_sm, deliver_sm et data_sm et est crucial pour :

  • Spécifier des protocoles de couche supérieure (par exemple, X.400, Telnet)
  • Déclencher des types de messages spéciaux (par exemple, notifications de messagerie vocale)
  • Gérer le remplacement de messages (par exemple, écraser des messages existants)

Structure et masque de bits du PID

Le PID est un masque de bits où des bits spécifiques contrôlent le comportement du protocole. Sa structure est alignée avec les spécifications GSM 03.40 :

Bits Description
7-5 Type de protocole : Indique le protocole (par exemple, GSM, Telex ou SMS).
4-0 Instructions/Drapeaux : Traitement spécial (par exemple, remplacer un message, messagerie vocale).

Valeurs clés du PID et leur interprétation

PID (Hex) Binaire Description
0x00 00000000 Par défaut (aucun protocole spécial)
0x01 00000001 Telex (obsolète)
0x03 00000011 X.400 (obsolète)
0x40 01000000 Message de rappel (traitement par carte SIM)
0x41 01000001 Remplacer un message court (écraser un message existant)
0x42 01000010 Notification de messagerie vocale
0x7F 01111111 Réservé pour une utilisation future
Note : Les valeurs comme 0x40–0x7F sont spécifiques au réseau et peuvent varier selon le SMSC. Vérifiez toujours avec votre fournisseur.

Cas d'utilisation et scénarios

1. Remplacement de message (PID=0x41)

Utilisé pour écraser un message existant stocké sur l'appareil du destinataire. Courant dans les systèmes OTP (One-Time Password) où un nouveau mot de passe remplace l'ancien.

2. Notification de messagerie vocale (PID=0x42)

Déclenche une alerte visuelle/audible sur l'appareil du destinataire pour une nouvelle messagerie vocale. Le corps du SMS est souvent vide, car le PID lui-même est le déclencheur.

3. Téléchargement de données SIM (PID=0x40)

Instruit la carte SIM de traiter le message (par exemple, mise à jour des paramètres préconfigurés).

Exemples de PDU SMPP avec PID

Exemple 1 : PID par défaut (0x00)

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        // Protocole ID (PID=0x00)
00        // Drapeau de priorité
00        // Heure de livraison planifiée
00        // Période de validité
00        // Livraison enregistrée
00        // Remplacer-si-présent
00        // Schéma de codage des données (DCS=0x00)
00        // ID de message par défaut SM
07        // Longueur SM (7 septets)
C8329BFD06DDDF72  // Charge utile ("Bonjour !")
    

Exemple 2 : Notification de messagerie vocale (PID=0x42)

0000001D  // Longueur de commande (29 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
42        // Protocole ID (PID=0x42 : Messagerie vocale)
00        // Drapeau de priorité
00        // Heure de livraison planifiée
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 SM
00        // Longueur SM (0 octet : Pas de charge utile)
    

Exemple 3 : Remplacer un message existant (PID=0x41)

0000001D  // Longueur de commande (29 octets)
00000004  // ID de commande (SubmitSM)
00000003  // 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
41        // Protocole ID (PID=0x41 : Remplacer)
00        // Drapeau de priorité
00        // Heure de livraison planifiée
00        // Période de validité
01        // Livraison enregistrée (accusé de réception demandé)
00        // Remplacer-si-présent
00        // Codage des données (DCS=0x00)
00        // ID de message par défaut SM
07        // Longueur SM (7 septets)
C8329BFD06DDDF72  // Charge utile ("Nouvel OTP : 1234")
    

Interaction du PID avec TP-Protocol-Identifier (GSM)

Dans les réseaux GSM, le PID correspond au TP-Protocol-Identifier dans les TPDU SMS. Les correspondances clés incluent :

  • 0x41 : Commande de remplacement (GSM 03.40 TP-PID=0x41)
  • 0x42 : Messagerie vocale (GSM 03.40 TP-PID=0x42)

Pièges courants

  • Utiliser des valeurs PID réservées (par exemple, 0x7F) sans support SMSC.
  • Incompatibilité entre PID et DCS (par exemple, utiliser l'encodage UCS2 pour les données SIM).
  • Ignorer les règles spécifiques au réseau (par exemple, PID=0x40 peut nécessiter une configuration SMSC spéciale).

Conclusion

Le champ PID est essentiel pour le routage et le traitement avancés des SMS. Bien qu'il soit souvent défini à 0x00 (par défaut), ses valeurs spécialisées permettent des fonctionnalités comme le remplacement de messages, les mises à jour SIM et les alertes de messagerie vocale. Testez toujours les configurations PID avec votre SMSC et référez-vous aux spécifications GSM 03.40 ou SMPP v5.0 pour un comportement précis.

More information