Adatok elhelyezése az SMPP SM mezőben

Az SMPP (Short Message Peer-to-Peer) protokollban a Short Message (SM) hasznos adat az SMS üzenet tényleges szövege (vagy bináris adata). Ennek a tartalomnak a helyes értelmezéséhez a PDU-ban található data_coding mező kulcsfontosságú, mivel jelzi az üzenet kódolási formátumát.

Gyakori SMPP kódolások

A data_coding mező 1 bájtos, és azt jelzi az SMSC-nek, hogyan értelmezze az üzenet hasznos adatát.

HexDecimálisKódolásLeírás
0x000GSM 7 bites alapértelmezettStandard SMS karakterkészlet
0x011ASCII8 bites ASCII (Latin-1 részhalmaz)
0x033Latin-1 (ISO 8859-1)Nyugat-európai karakterkészlet
0x088UCS2Unicode (16 bites, big-endian)
0x044BinárisNyers 8 bites bináris adat

Példák kódolt üzenetekre

1. GSM 7 bites (data_coding = 0x00)

Standard SMS kódolás. Hatékony (legfeljebb 160 karakter egyetlen üzenetben).

Szöveg: "Hello"
GSM 7 bites csomagolt: C8 32 9B FD 06

2. UCS2 (data_coding = 0x08)

Nem latin írásrendszerekhez használatos (pl. arab, kínai, emojik). Legfeljebb 70 karaktert támogat üzenetenként.

Szöveg: "مرحبا"
UCS2 Hex: 0645 0631 062D 0628 0627
Bájtok (hex): 06 45 06 31 06 2D 06 28 06 27

3. ASCII (data_coding = 0x01)

Csak alap latin karakterek, kevésbé helytakarékos, mint a GSM 7 bites.

Szöveg: "Hello"
ASCII Hex: 48 65 6C 6C 6F

SMPP PDU példa UCS2 kódolással

Íme egy SMPP submit_sm PDU, amely Unicode üzenetet hordoz:

0000004B  // Parancs hossza (75 bájt)
00000004  // Parancs azonosító (submit_sm)
00000000  // Parancs állapot
00000001  // Sorszám
74657374  // service_type: "test"
01        // source_addr_ton: Nemzetközi
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 bájt
06450631  // Üzenet UCS2-ben (pl. "مر")
062D0628

Kódolás és összefűzés

A hosszú üzenetek részekre oszthatók UDH (User Data Header) segítségével. Ez csökkenti a maximális hasznos adat méretét:

  • GSM 7 bites: 160 → 153 karakter részegenként
  • UCS2: 70 → 67 karakter részegenként

Példa UDH-ra üzenet részhez:

05 00 03 CC 02 01
// 05: fejléc hossza
// 00 03: Összefűzés IEI
// CC: Üzenet hivatkozás
// 02: összes rész
// 01: aktuális rész

Összefoglalás

Az SMPP rugalmas kódolási lehetőségeket kínál a data_coding mezőn keresztül. A megfelelő kódolás biztosítja a kompatibilitást a globális hálózatokon, különösen többnyelvű szöveg vagy bináris adatok kezelésekor. A fejlesztőknek meg kell egyezniük a kódolási típusokat a tartalommal és a várható címzettekkel, hogy elkerüljék az üzenet sérülését.

Hivatkozások

  • SMPP 3.4 specifikáció
  • GSM 03.38 karakterkészlet
  • Unicode szabvány

More information