Kako konfigurirati SMPP polje Replace if Present

Što je polje Replace If Present?

Polje Replace If Present u SMPP-u je 1-bajtna zastavica u PDU-ovima poput submit_sm koja upućuje SMSC da zamijeni postojeću poruku pohranjenu na uređaju primatelja ili u redu čekanja SMSC-a. Ključne primjene uključuju:

  • Ažuriranje vremenski osjetljivog sadržaja (npr. OTP-ovi, statusna upozorenja)
  • Sprečavanje dupliciranih poruka
  • Upravljanje ograničenjima pohrane na uređaju

Vrijednosti polja i tumačenje

Polje koristi jednostavnu strukturu sličnu booleanu:

Vrijednost (Hex) Opis
0x00 NE zamjenjuj postojeće poruke (zadano)
0x01 Zamijeni postojeće poruke ako su prisutne
Napomena: Logika zamjene poruka ovisi o implementaciji SMSC-a. Uobičajeni kriteriji podudaranja uključuju:
  • Izvorne/Odredišne adrese
  • ID poruke (ako je dostupan)
  • ID protokola (PID=0x41 često pokreće zamjenu)

Primjeri upotrebe

1. Ažuriranje OTP poruke

replace_if_present: 0x01  // Zamijeni prethodnu OTP poruku
PID: 0x41                 // ID protokola za zamjenu
payload: "Vaš novi OTP: 5678"

2. Osvježavanje kampanjske poruke

replace_if_present: 0x01  // Ažuriraj promotivni sadržaj
PID: 0x00                 // Zadani protokol
payload: "Flash rasprodaja: Nove cijene!"

3. Upravljanje redom čekanja

replace_if_present: 0x01  // Nadpiši poruku u redu čekanja
scheduled_delivery_time: (budući vremenski pečat)

Primjeri SMPP PDU-ova

Primjer 1: Zamjena onemogućena (0x00)

0000001D  // Duljina naredbe (29 bajtova)
00000004  // ID naredbe (SubmitSM)
00000001  // Redni broj
...
00        // Replace If Present (0x00: Onemogućeno)
...
07        // Duljina SM (7 septeta)
C8329BFD06DDDF72  // Sadržaj ("Bok!")

Primjer 2: Zamjena omogućena (0x01)

0000001D  // Duljina naredbe (29 bajtova)
00000004  // ID naredbe (SubmitSM)
00000002  // Redni broj
...
01        // Replace If Present (0x01: Omogućeno)
...
07        // Duljina SM (7 septeta)
E8329BFD0E...  // Sadržaj ("Ažurirano: 15 sati")

Primjer 3: Kombinirano s PID=0x41

0000001D  // Duljina naredbe (29 bajtova)
00000004  // ID naredbe (SubmitSM)
00000003  // Redni broj
...
41        // ID protokola (PID=0x41: Zamijeni)
01        // Replace If Present (0x01)
...
07        // Duljina SM (7 septeta)
C8329BFD06...  // Sadržaj ("OTP: 9876")

Interakcije s drugim poljima

  • ID protokola (PID): PID=0x41 eksplicitno pokreće zamjenu u mnogim SMSC-ovima
  • message_id: Neki SMSC-ovi koriste ovo za identifikaciju poruka za zamjenu
  • registered_delivery: Potvrde pokazuju je li zamjena uspjela

Uobičajene zamke

  • Omogućavanje zamjene bez podrške SMSC-a
  • Nepostavljanje message_id za ciljanu zamjenu
  • Pretpostavka da svi SMSC-ovi koriste istu logiku zamjene
  • Nepodudaranje vrijednosti PID i replace_if_present
Napomena o ponašanju SMSC-a:
Politike zamjene uvelike variraju. Neki SMSC-ovi:
  • Zamjenjuju samo poruke s podudarnim izvorom/odredištem
  • Zanemaruju replace_if_present ako PID≠0x41
  • Ograničavaju zamjenu na poruke u redu čekanja SMSC-a (ne i isporučene)

Zaključak

Polje Replace If Present pruža ključnu kontrolu nad upravljanjem životnim ciklusom poruka, ali zahtijeva pažljivu koordinaciju s mogućnostima SMSC-a. Uvijek provjerite ponašanje zamjene s vašim pružateljem usluge i koristite PID=0x41 za eksplicitne zahtjeve za zamjenu. Za detaljne implementacije, pogledajte SMPP v3.4 Odjeljak 5.2.20 i GSM 03.40 dokumentaciju o rukovanju porukama.

More information