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.

HexDesítkověKódováníPopis
0x000GSM 7-bit výchozíStandardní znaková sada SMS
0x011ASCII8-bit ASCII (podmnožina Latin-1)
0x033Latin-1 (ISO 8859-1)Západní evropská znaková sada
0x088UCS2Unicode (16-bit, big-endian)
0x044Biná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