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 |
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
- 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