Comment insérer des données dans le champ SM SMPP
Dans SMPP (Short Message Peer-to-Peer), la charge utile du message court (SM) est le texte réel (ou les données binaires) du message SMS transmis. Pour garantir une interprétation correcte de ce contenu, le champ data_coding dans le PDU joue un rôle crucial en indiquant le format d'encodage du message.
Encodages courants dans SMPP
Le champ data_coding
fait 1 octet et informe le SMSC sur la manière d'interpréter la charge utile du message.
Hex | Décimal | Encodage | Description |
---|---|---|---|
0x00 | 0 | GSM 7-bit par défaut | Jeu de caractères SMS standard |
0x01 | 1 | ASCII | ASCII 8-bit (sous-ensemble Latin-1) |
0x03 | 3 | Latin-1 (ISO 8859-1) | Jeu de caractères d'Europe occidentale |
0x08 | 8 | UCS2 | Unicode (16-bit, big-endian) |
0x04 | 4 | Binaire | Données binaires brutes 8-bit |
Exemples de messages encodés
1. GSM 7-bit (data_coding = 0x00)
Encodage SMS standard. Efficace (jusqu'à 160 caractères dans un seul message).
Texte : "Hello" GSM 7-bit Packed : C8 32 9B FD 06
2. UCS2 (data_coding = 0x08)
Utilisé pour les scripts non latins (ex. arabe, chinois, emojis). Supporte 70 caractères par message.
Texte : "مرحبا" UCS2 Hex : 0645 0631 062D 0628 0627 Octets (hex) : 06 45 06 31 06 2D 06 28 06 27
3. ASCII (data_coding = 0x01)
Caractères latins de base uniquement, moins efficace en espace que GSM 7-bit.
Texte : "Hello" ASCII Hex : 48 65 6C 6C 6F
Exemple de PDU SMPP avec encodage UCS2
Voici un PDU SMPP submit_sm
transportant un message Unicode :
0000004B // Longueur de commande (75 octets) 00000004 // ID de commande (submit_sm) 00000000 // Statut de commande 00000001 // Numéro de séquence 74657374 // service_type : "test" 01 // source_addr_ton : International 01 // source_addr_npi : ISDN 31323334 // source_addr : "1234" (ASCII) 00 01 // dest_addr_ton 01 // dest_addr_npi 35363738 // destination_addr : "5678" 00 00 // esm_class 00 // protocol_id 00 // priority_flag 00 // schedule_delivery_time 00 // validity_period 00 // registered_delivery 00 // replace_if_present_flag 08 // data_coding : UCS2 00 // sm_default_msg_id 0A // sm_length : 10 octets 06450631 // Message en UCS2 (ex. "مر") 062D0628
Encodage et concaténation
Les messages longs sont divisés en parties à l'aide de l'UDH (User Data Header). Cela réduit la taille maximale de la charge utile :
- GSM 7-bit : 160 → 153 caractères par partie
- UCS2 : 70 → 67 caractères par partie
Exemple d'UDH pour une partie de message :
05 00 03 CC 02 01 // 05 : longueur de l'en-tête // 00 03 : IEI de concaténation // CC : Référence du message // 02 : nombre total de parties // 01 : partie actuelle
Résumé
SMPP offre des options d'encodage flexibles via le champ data_coding
. Un encodage approprié garantit la compatibilité entre les réseaux mondiaux, en particulier lors de la gestion de texte multilingue ou de données binaires. Les développeurs doivent faire correspondre les types d'encodage avec le contenu et les destinataires attendus pour éviter la corruption des messages.
Références
- Spécification SMPP 3.4
- Jeu de caractères GSM 03.38
- Standard Unicode
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