Kako konfigurisati SMPP polje "Replace if Present"

Šta je polje "Replace If Present"?

Polje Replace If Present u SMPP-u je 1-bajtna zastavica u PDU-ima kao što je submit_sm koja daje instrukciju SMSC-u da zameni postojeću poruku sačuvanu na uređaju primaoca ili u redu čekanja SMSC-a. Ključne primene uključuju:

  • Ažuriranje vremenski osetljivog sadržaja (npr. OTP-ova, statusnih upozorenja)
  • Sprečavanje duplih poruka
  • Upravljanje ograničenjima memorije uređaja

Vrednosti polja i interpretacija

Polje koristi jednostavnu strukturu sličnu boolean-u:

Vrednost (Hex) Opis
0x00 NE zamenjuj postojeće poruke (podrazumevano)
0x01 Zameni postojeće poruke ako postoje
Napomena: Logika zamene poruka zavisi od implementacije SMSC-a. Uobičajeni kriterijumi za podudaranje uključuju:
  • Izvorne/odredišne adrese
  • ID poruke (ako je dostavljen)
  • ID protokola (PID=0x41 često pokreće zamenu)

Primeri upotrebe

1. Ažuriranje OTP poruke

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

2. Osvežavanje promotivne poruke

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

3. Upravljanje redom čekanja

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

Primeri SMPP PDU-a

Primer 1: Zamena onemogućena (0x00)

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

Primer 2: Zamena omogućena (0x01)

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

Primer 3: Kombinovano sa PID=0x41

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

Interakcije sa drugim poljima

  • ID protokola (PID): PID=0x41 eksplicitno pokreće zamenu u mnogim SMSC-ovima
  • message_id: Neki SMSC-ovi koriste ovo za identifikaciju poruka za zamenu
  • registered_delivery: Potvrde ukazuju na uspešnost zamene

Uobičajene greške

  • Omogućavanje zamene bez podrške SMSC-a
  • Nepostavljanje message_id za ciljanu zamenu
  • Pretpostavka da svi SMSC-ovi koriste istu logiku zamene
  • Nepodudaranje vrednosti PID i replace_if_present
Napomena o ponašanju SMSC-a:
Politike zamene se veoma razlikuju. Neki SMSC-ovi:
  • Zamenjuju samo poruke sa podudarnim izvorom/odredištem
  • Ignorišu replace_if_present ako PID≠0x41
  • Ograničavaju zamenu 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 zahteva pažljivu koordinaciju sa mogućnostima SMSC-a. Uvek proverite ponašanje zamene sa vašim provajderom i koristite PID=0x41 za eksplicitne zahteve za zamenu. Za detaljne implementacije, pogledajte SMPP v3.4 odeljak 5.2.20 i GSM 03.40 dokumentaciju o obradi poruka.

More information