Az SMPP SM Length mező kiszámítása

Az SMPP protokollban a sm_length mező a short_message mezőben található rövid üzenet tartalmának hosszát adja meg bájtban, olyan PDU-kban, mint a submit_sm, deliver_sm és data_sm.

Mező részletei

  • Mező neve: sm_length
  • Méret: 1 bájt (előjel nélküli egész szám)
  • Tartomány: 0–254 (az SMPP 3.4 által megengedett maximum)
  • Hely: Közvetlenül a short_message mező előtt
  • Cél: A short_message adattartalom bájtjainak számát jelzi

Kulcsfontosságú viselkedés

A sm_length értéke a használt kódolástól függ:

KódolásKarakterek száma SMS-enkéntBájt méretMegjegyzések
GSM 7-bit Legfeljebb 160 Legfeljebb 140 Csomagolt bitek; a tényleges bájtméret a tartalomtól függ
UCS2 Legfeljebb 70 2 × a karakterek száma Minden karakter 2 bájt
8-bit bináris N/A Legfeljebb 140 Nyers bájthossz

Példa: ASCII üzenet

Egy egyszerű üzenet alapértelmezett 7 bites kódolással:

Szöveg: "Hello"
Kódolás: GSM 7-bit
Csomagolt bájtok (Hex): C8 32 9B FD 06
Bájthossz: 5
sm_length: 5

Példa: UCS2 kódolt üzenet

Egy Unicode üzenet UCS2 kódolással (data_coding = 0x08):

Szöveg: "Hi"
UCS2 Hex: 0048 0069
Bájt tömb: 00 48 00 69
Bájthossz: 4
sm_length: 4

SMPP PDU példa (submit_sm)

0000003B  // Parancs hossza (59 bájt)
00000004  // Parancs azonosító: submit_sm
00000000  // Parancs állapot
00000001  // Sorszám
00        // service_type
01        // source_addr_ton
01        // source_addr_npi
31323334  // source_addr ("1234")
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
04        // sm_length: 4
00480069  // short_message: "Hi" UCS2-ben

Fontos megjegyzések

  • A sm_length a bájthosszra utal, nem a karakterek számára.
  • Ha az üzenet tartalma több üzenetre van felosztva (összefűzés), minden résznek saját sm_length értéke van.
  • Ne keverjük össze a sm_length értékét a teljes üzenet hosszával (PDU hossz).

Üzenet felosztás és összefűzés

Ha egy üzenet meghaladja a maximális adattartalom méretét, akkor UDH (User Data Header) segítségével részekre osztják. Az ilyen esetekben a sm_length magában foglalja az UDH-t is:

Példa: UDH (6 bájt) + 67 UCS2 bájt = 73
sm_length = 73

Összegzés

A sm_length mező kritikus fontosságú az SMPP üzenetküldésben, mert meghatározza, hogy az SMSC hány bájtot olvasson az üzenet törzséhez. A kódolás hatásának megértése biztosítja a pontos és sikeres üzenetkézbesítést.

Hivatkozások

  • SMPP 3.4 specifikáció
  • GSM 03.38 karakterkészlet
  • Unicode UCS2 kódolás

More information