Kako konfigurirati polje Replace if Present v SMPP

Kaj je polje Replace If Present?

Polje Replace If Present v SMPP je 1-bajtna zastavica v PDU-jih, kot je submit_sm, ki navaja SMSC, naj zamenja obstoječe sporočilo, shranjeno na napravi prejemnika ali v čakalni vrsti SMSC. Ključne uporabe vključujejo:

  • Posodabljanje časovno občutljive vsebine (npr. OTP-ji, statusna opozorila)
  • Preprečevanje podvojenih sporočil
  • Upravljanje omejitev shranjevanja naprave

Vrednosti polja in interpretacija

Polje uporablja preprosto logiko, podobno logični vrednosti:

Vrednost (Hex) Opis
0x00 NE zamenjuj obstoječih sporočil (privzeto)
0x01 Zamenjaj obstoječa sporočila, če so prisotna
Opomba: Logika zamenjave sporočil je odvisna od implementacije SMSC. Pogosti kriteriji za ujemanje vključujejo:
  • Izvorne/ciljne naslove
  • ID sporočila (če je podan)
  • Protokol ID (PID=0x41 pogosto sproži zamenjavo)

Primeri uporabe

1. Posodobitev OTP sporočila

replace_if_present: 0x01  // Zamenjaj prejšnje OTP sporočilo
PID: 0x41                 // Protokol ID za zamenjavo
payload: "Vaš nov OTP: 5678"
    

2. Osvežitev kampanjskega sporočila

replace_if_present: 0x01  // Posodobi promocijsko vsebino
PID: 0x00                 // Privzeti protokol
payload: "Hitra razprodaja: Nove cene!"
    

3. Upravljanje čakalne vrste

replace_if_present: 0x01  // Prepiši sporočilo v čakalni vrsti
scheduled_delivery_time: (prihodnji časovni žig)
    

Primeri SMPP PDU-jev

Primer 1: Zamenjava onemogočena (0x00)

0000001D  // Dolžina ukaza (29 bajtov)
00000004  // ID ukaza (SubmitSM)
00000001  // Zaporedna številka
...
00        // Replace If Present (0x00: Onemogočeno)
...
07        // Dolžina SM (7 septetov)
C8329BFD06DDDF72  // Vsebina ("Pozdravljeni!")
    

Primer 2: Zamenjava omogočena (0x01)

0000001D  // Dolžina ukaza (29 bajtov)
00000004  // ID ukaza (SubmitSM)
00000002  // Zaporedna številka
...
01        // Replace If Present (0x01: Omogočeno)
...
07        // Dolžina SM (7 septetov)
E8329BFD0E...  // Vsebina ("Posodobljeno: 15:00")
    

Primer 3: Kombinacija s PID=0x41

0000001D  // Dolžina ukaza (29 bajtov)
00000004  // ID ukaza (SubmitSM)
00000003  // Zaporedna številka
...
41        // Protokol ID (PID=0x41: Zamenjaj)
01        // Replace If Present (0x01)
...
07        // Dolžina SM (7 septetov)
C8329BFD06...  // Vsebina ("OTP: 9876")
    

Interakcije z drugimi polji

  • Protokol ID (PID): PID=0x41 eksplicitno sproži zamenjavo v mnogih SMSC-jih
  • message_id: Nekateri SMSC-ji uporabljajo to za identifikacijo sporočil za zamenjavo
  • registered_delivery: Potrdila nakazujejo, ali je bila zamenjava uspešna

Pogoste napake

  • Omogočanje zamenjave brez podpore SMSC
  • Nastavitev message_id za ciljno zamenjavo
  • Predpostavka, da vsi SMSC-ji uporabljajo enako logiko zamenjave
  • Neujemanje vrednosti PID in replace_if_present
Opomba o obnašanju SMSC:
Politike zamenjave se zelo razlikujejo. Nekateri SMSC-ji:
  • Zamenjajo samo sporočila z ujemajočimi se izvornimi/ciljnimi naslovi
  • Ignorirajo replace_if_present, če PID≠0x41
  • Omejijo zamenjavo na sporočila v čakalni vrsti SMSC (ne na dostavljena)

Zaključek

Polje Replace If Present omogoča ključni nadzor nad upravljanjem življenjskega cikla sporočil, vendar zahteva skrbno usklajevanje z zmogljivostmi SMSC. Vedno preverite vedenje zamenjave pri svojem ponudniku in uporabite PID=0x41 za eksplicitne zahteve za zamenjavo. Za podrobnejše implementacije glejte SMPP v3.4, razdelek 5.2.20 in dokumentacijo GSM 03.40 o obdelavi sporočil.

More information