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_idza 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:
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.