Jak nakonfigurovat pole Replace if Present v SMPP

Co je pole Replace If Present?

Pole Replace If Present v SMPP je 1bajtový příznak v PDU jako submit_sm, který instruuje SMSC, aby nahradil existující zprávu uloženou na zařízení příjemce nebo ve frontě SMSC. Klíčové aplikace zahrnují:

  • Aktualizaci časově citlivého obsahu (např. OTP, stavové upozornění)
  • Zabránění duplicitním zprávám
  • Správu omezení úložiště zařízení

Hodnoty pole a jejich interpretace

Pole používá jednoduchou logiku podobnou booleanu:

Hodnota (Hex) Popis
0x00 NEnahrazovat existující zprávy (výchozí)
0x01 Nahradit existující zprávy, pokud jsou přítomny
Poznámka: Logika nahrazování zpráv závisí na implementaci SMSC. Běžná kritéria pro shodu zahrnují:
  • Zdrojové/cílové adresy
  • ID zprávy (pokud je poskytnuto)
  • ID protokolu (PID=0x41 často spouští nahrazení)

Příklady použití

1. Aktualizace OTP zprávy

replace_if_present: 0x01  // Nahradit předchozí OTP zprávu
PID: 0x41                 // ID protokolu pro nahrazení
payload: "Váš nový OTP: 5678"
    

2. Obnovení kampaně

replace_if_present: 0x01  // Aktualizovat propagační obsah
PID: 0x00                 // Výchozí protokol
payload: "Bleskový výprodej: Nové ceny!"
    

3. Správa fronty

replace_if_present: 0x01  // Přepsat zprávu ve frontě
scheduled_delivery_time: (budoucí časové razítko)
    

Příklady SMPP PDU

Příklad 1: Nahrazení zakázáno (0x00)

0000001D  // Délka příkazu (29 bajtů)
00000004  // ID příkazu (SubmitSM)
00000001  // Číslo sekvence
...
00        // Replace If Present (0x00: Zakázáno)
...
07        // Délka SM (7 septetů)
C8329BFD06DDDF72  // Obsah ("Ahoj!")
    

Příklad 2: Nahrazení povoleno (0x01)

0000001D  // Délka příkazu (29 bajtů)
00000004  // ID příkazu (SubmitSM)
00000002  // Číslo sekvence
...
01        // Replace If Present (0x01: Povoleno)
...
07        // Délka SM (7 septetů)
E8329BFD0E...  // Obsah ("Aktualizováno: 15:00")
    

Příklad 3: Kombinace s PID=0x41

0000001D  // Délka příkazu (29 bajtů)
00000004  // ID příkazu (SubmitSM)
00000003  // Číslo sekvence
...
41        // ID protokolu (PID=0x41: Nahradit)
01        // Replace If Present (0x01)
...
07        // Délka SM (7 septetů)
C8329BFD06...  // Obsah ("OTP: 9876")
    

Interakce s dalšími poli

  • ID protokolu (PID): PID=0x41 explicitně spouští nahrazení v mnoha SMSC
  • message_id: Některé SMSC používají toto ID k identifikaci zpráv pro nahrazení
  • registered_delivery: Potvrzení indikují, zda nahrazení proběhlo úspěšně

Běžné problémy

  • Povolení nahrazení bez podpory SMSC
  • Nenastavení message_id pro cílené nahrazení
  • Předpoklad, že všechny SMSC používají stejnou logiku nahrazení
  • Nesoulad hodnot PID a replace_if_present
Poznámka k chování SMSC:
Zásady nahrazení se výrazně liší. Některé SMSC:
  • Nahrazují pouze zprávy se shodnými zdrojovými/cílovými adresami
  • Ignorují replace_if_present, pokud PID≠0x41
  • Omezují nahrazení na zprávy ve frontě SMSC (ne doručené)

Závěr

Pole Replace If Present poskytuje kritickou kontrolu nad správou životního cyklu zpráv, ale vyžaduje pečlivou koordinaci s možnostmi SMSC. Vždy ověřte chování nahrazení u vašeho poskytovatele a použijte PID=0x41 pro explicitní požadavky na nahrazení. Pro podrobné implementace se řiďte SMPP v3.4, oddíl 5.2.20 a dokumentací GSM 03.40 o zpracování zpráv.

More information