Wie man Daten in das SMPP SM-Feld einfügt
In SMPP (Short Message Peer-to-Peer) ist die Short Message (SM)-Nutzlast der eigentliche Text (oder Binärdaten) der zu übertragenden SMS-Nachricht. Um die korrekte Interpretation dieses Inhalts sicherzustellen, spielt das Feld data_coding in der PDU eine entscheidende Rolle, indem es das Kodierungsformat der Nachricht angibt.
Häufige SMPP-Kodierungen
Das Feld data_coding
ist 1 Byte groß und informiert die SMSC darüber, wie die Nachrichtennutzlast zu interpretieren ist.
Hex | Dezimal | Kodierung | Beschreibung |
---|---|---|---|
0x00 | 0 | GSM 7-bit Standard | Standard-SMS-Zeichensatz |
0x01 | 1 | ASCII | 8-bit ASCII (Latin-1-Teilmenge) |
0x03 | 3 | Latin-1 (ISO 8859-1) | Westeuropäischer Zeichensatz |
0x08 | 8 | UCS2 | Unicode (16-bit, big-endian) |
0x04 | 4 | Binär | Roh-8-bit-Binärdaten |
Beispiele für kodierte Nachrichten
1. GSM 7-bit (data_coding = 0x00)
Standard-SMS-Kodierung. Effizient (bis zu 160 Zeichen in einer einzelnen Nachricht).
Text: "Hello" GSM 7-bit Packed: C8 32 9B FD 06
2. UCS2 (data_coding = 0x08)
Wird für nicht-lateinische Schriften verwendet (z.B. Arabisch, Chinesisch, Emojis). Unterstützt 70 Zeichen pro Nachricht.
Text: "مرحبا" UCS2 Hex: 0645 0631 062D 0628 0627 Bytes (hex): 06 45 06 31 06 2D 06 28 06 27
3. ASCII (data_coding = 0x01)
Nur grundlegende lateinische Zeichen, weniger platzsparend als GSM 7-bit.
Text: "Hello" ASCII Hex: 48 65 6C 6C 6F
SMPP PDU-Beispiel mit UCS2-Kodierung
Hier ist eine SMPP submit_sm
-PDU mit einer Unicode-Nachricht:
0000004B // Befehlslänge (75 Bytes) 00000004 // Befehls-ID (submit_sm) 00000000 // Befehlsstatus 00000001 // Sequenznummer 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 Bytes 06450631 // Nachricht in UCS2 (z.B. "مر") 062D0628
Kodierung und Verkettung
Lange Nachrichten werden mithilfe von UDH (User Data Header) in Teile aufgeteilt. Dies verringert die maximale Nutzlastgröße:
- GSM 7-bit: 160 → 153 Zeichen pro Teil
- UCS2: 70 → 67 Zeichen pro Teil
Beispiel-UDH für einen Nachrichtenteil:
05 00 03 CC 02 01 // 05: Header-Länge // 00 03: Verkettungs-IEI // CC: Nachrichtenreferenz // 02: Gesamtteile // 01: aktueller Teil
Zusammenfassung
SMPP bietet durch das Feld data_coding
flexible Kodierungsoptionen. Die richtige Kodierung gewährleistet die Kompatibilität über globale Netzwerke hinweg, insbesondere bei der Handhabung von mehrsprachigem Text oder Binärdaten. Entwickler müssen die Kodierungstypen mit dem Inhalt und den erwarteten Empfängern abgleichen, um Nachrichtenkorruption zu vermeiden.
Referenzen
- SMPP 3.4 Spezifikation
- GSM 03.38 Zeichensatz
- Unicode-Standard
More information
- Wie man das SMPP Service Typ Feld konfiguriert
- Wie man die SMPP Telefonnummer Felder konfiguriert
- Wie man das SMPP ESM Class Feld konfiguriert
- Wie man das SMPP PID Feld konfiguriert
- Wie man das SMPP Prioritätsfeld konfiguriert
- Wie man das SMPP Geplante Zeit Feld konfiguriert
- Wie man das SMPP Gültigkeitsdauer Feld konfiguriert
- Wie man das SMPP Registrierte Zustellung Feld konfiguriert
- Wie man das SMPP Ersetzen falls vorhanden Feld konfiguriert
- Wie man das sm_default_msg_id Feld konfiguriert
- Wie man das SMPP DCS Feld konfiguriert
- Wie man das SMPP SM Länge Feld berechnet
- Wie man Daten in das SMPP SM Feld einfügt