A "Replace if Present" mező konfigurálása SMPP-ben

Mi a "Replace If Present" mező?

A Replace If Present mező az SMPP-ben egy 1 bájtos flag olyan PDU-kban, mint a submit_sm, amely arra utasítja az SMSC-t, hogy cserélje le a címzett eszközén vagy az SMSC várólistáján tárolt meglévő üzenetet. Fő alkalmazási területei:

  • Időérzékeny tartalom frissítése (pl. OTP-k, állapotértesítések)
  • Duplikált üzenetek megelőzése
  • Eszköztárhely kezelése

Mezőértékek és értelmezés

A mező egyszerű, logikai szerkezetet használ:

Érték (Hex) Leírás
0x00 Ne cserélje le a meglévő üzeneteket (alapértelmezett)
0x01 Cserélje le a meglévő üzeneteket, ha vannak
Megjegyzés: Az üzenetcsere logikája az SMSC implementációtól függ. Gyakori egyezési kritériumok:
  • Forrás/cél címek
  • Üzenetazonosító (ha meg van adva)
  • Protokoll azonosító (PID=0x41 gyakran vált ki cserét)

Használati esetek

1. OTP üzenet frissítése

replace_if_present: 0x01  // Cserélje a korábbi OTP üzenetet
PID: 0x41                 // Protokoll azonosító cserehez
payload: "Az új OTP: 5678"
    

2. Kampányüzenet frissítése

replace_if_present: 0x01  // Promóciós tartalom frissítése
PID: 0x00                 // Alapértelmezett protokoll
payload: "Flash akció: Új árak!"
    

3. Várólista kezelése

replace_if_present: 0x01  // Felülírja a várólistán lévő üzenetet
scheduled_delivery_time: (jövőbeli időbélyeg)
    

Példa SMPP PDU-k

1. példa: Csere letiltva (0x00)

0000001D  // Parancs hossza (29 bájt)
00000004  // Parancs azonosító (SubmitSM)
00000001  // Sorszám
...
00        // Replace If Present (0x00: Letiltva)
...
07        // SM hossza (7 szeptett)
C8329BFD06DDDF72  // Tartalom ("Hello!")
    

2. példa: Csere engedélyezve (0x01)

0000001D  // Parancs hossza (29 bájt)
00000004  // Parancs azonosító (SubmitSM)
00000002  // Sorszám
...
01        // Replace If Present (0x01: Engedélyezve)
...
07        // SM hossza (7 szeptett)
E8329BFD0E...  // Tartalom ("Frissítve: 15:00")
    

3. példa: Kombinálva PID=0x41-gyel

0000001D  // Parancs hossza (29 bájt)
00000004  // Parancs azonosító (SubmitSM)
00000003  // Sorszám
...
41        // Protokoll azonosító (PID=0x41: Csere)
01        // Replace If Present (0x01)
...
07        // SM hossza (7 szeptett)
C8329BFD06...  // Tartalom ("OTP: 9876")
    

Interakciók más mezőkkel

  • Protokoll azonosító (PID): PID=0x41 expliciten vált ki cserét számos SMSC-ben
  • message_id: Néhány SMSC ezt használja a cserélni kívánt üzenetek azonosítására
  • registered_delivery: A visszaigazolások jelzik, hogy a csere sikerült-e

Gyakori buktatók

  • A csere engedélyezése SMSC támogatás nélkül
  • A message_id beállításának elmulasztása célzott csere esetén
  • Feltételezés, hogy minden SMSC ugyanazt a csere logikát használja
  • PID és replace_if_present értékek eltérése
SMSC viselkedés megjegyzés:
A csere szabályok jelentősen eltérhetnek. Néhány SMSC:
  • Csak azonos forrás/cél című üzeneteket cserél
  • Figyelmen kívül hagyja a replace_if_present-t, ha PID≠0x41
  • Csak az SMSC várólistában lévő üzenetekre korlátozza a cserét (nem kézbesítettekre)

Összegzés

A Replace If Present mező kulcsfontosságú irányítást biztosít az üzenetek életciklus-kezeléséhez, de gondos egyeztetést igényel az SMSC képességeivel. Mindig ellenőrizze a csere viselkedést a szolgáltatójával, és használja a PID=0x41-et explicit csere kérésekhez. Részletes implementációkhoz lásd az SMPP v3.4 5.2.20. szakaszát és a GSM 03.40 dokumentációt az üzenetkezelésről.

More information