Jak vložit data do pole SM v SMPP
V SMPP (Short Message Peer-to-Peer) je užitečné zatížení krátké zprávy (SM) skutečný text (nebo binární data) přenášené SMS zprávy. Pro zajištění správné interpretace tohoto obsahu hraje pole data_coding v PDU klíčovou roli tím, že označuje formát kódování zprávy.
Běžná kódování SMPP
Pole data_coding
má 1 bajt a informuje SMSC, jak interpretovat užitečné zatížení zprávy.
Hex | Desítkově | Kódování | Popis |
---|---|---|---|
0x00 | 0 | GSM 7-bit výchozí | Standardní znaková sada SMS |
0x01 | 1 | ASCII | 8-bit ASCII (podmnožina Latin-1) |
0x03 | 3 | Latin-1 (ISO 8859-1) | Západní evropská znaková sada |
0x08 | 8 | UCS2 | Unicode (16-bit, big-endian) |
0x04 | 4 | Binární | Surová 8-bit binární data |
Příklady zakódovaných zpráv
1. GSM 7-bit (data_coding = 0x00)
Standardní kódování SMS. Efektivní (až 160 znaků v jedné zprávě).
Text: "Hello" GSM 7-bit Packed: C8 32 9B FD 06
2. UCS2 (data_coding = 0x08)
Používá se pro nelatinské skripty (např. arabština, čínština, emoji). Podporuje 70 znaků na zprávu.
Text: "مرحبا" UCS2 Hex: 0645 0631 062D 0628 0627 Bajty (hex): 06 45 06 31 06 2D 06 28 06 27
3. ASCII (data_coding = 0x01)
Pouze základní latinské znaky, méně prostorově efektivní než GSM 7-bit.
Text: "Hello" ASCII Hex: 48 65 6C 6C 6F
Příklad SMPP PDU s kódováním UCS2
Zde je SMPP PDU submit_sm
přenášející Unicode zprávu:
0000004B // Délka příkazu (75 bajtů) 00000004 // ID příkazu (submit_sm) 00000000 // Stav příkazu 00000001 // Pořadové číslo 74657374 // service_type: "test" 01 // source_addr_ton: Mezinárodní 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 bajtů 06450631 // Zpráva v UCS2 (např. "مر") 062D0628
Kódování a spojování
Dlouhé zprávy jsou rozděleny na části pomocí UDH (User Data Header). Tím se snižuje maximální velikost užitečného zatížení:
- GSM 7-bit: 160 → 153 znaků na část
- UCS2: 70 → 67 znaků na část
Příklad UDH pro část zprávy:
05 00 03 CC 02 01 // 05: délka hlavičky // 00 03: IEI pro spojování // CC: reference zprávy // 02: celkový počet částí // 01: aktuální část
Shrnutí
SMPP poskytuje flexibilní možnosti kódování prostřednictvím pole data_coding
. Správné kódování zajišťuje kompatibilitu napříč globálními sítěmi, zejména při práci s vícejazyčným textem nebo binárními daty. Vývojáři musí sladit typy kódování s obsahem a očekávanými příjemci, aby se předešlo poškození zpráv.
Reference
- Specifikace SMPP 3.4
- Znaková sada GSM 03.38
- Unicode Standard
More information
- Jak nakonfigurovat pole Typ služby SMPP
- Jak nakonfigurovat pole Telefonní čísla SMPP
- Jak nakonfigurovat pole Třída ESM SMPP
- Jak nakonfigurovat pole PID SMPP
- Jak nakonfigurovat pole Priorita SMPP
- Jak nakonfigurovat pole Naplánovaný čas SMPP
- Jak nakonfigurovat pole Platnost SMPP
- Jak nakonfigurovat pole Registrované doručení SMPP
- Jak nakonfigurovat pole Nahradit pokud existuje SMPP
- Jak nakonfigurovat pole sm_default_msg_id
- Jak nakonfigurovat pole DCS SMPP
- Jak vypočítat pole Délka SM SMPP
- Jak vložit data do pole SMPP SM