Cum să configurezi câmpul SMPP Replace if Present
Ce este câmpul Replace If Present?
Câmpul Replace If Present în SMPP este un flag de 1 octet în PDU-uri precum submit_sm
care instruiește SMSC să înlocuiască
un mesaj existent stocat pe dispozitivul destinatarului sau în coada SMSC. Aplicații cheie includ:
- Actualizarea conținutului sensibil la timp (de ex., OTP-uri, alerte de stare)
- Prevenirea mesajelor duplicate
- Gestionarea constrângerilor de stocare a dispozitivului
Valori ale câmpului și interpretare
Câmpul utilizează o structură simplă asemănătoare cu cea booleană:
Valoare (Hex) | Descriere |
---|---|
0x00 | NU înlocui mesajele existente (implicit) |
0x01 | Înlocuiește mesajele existente dacă sunt prezente |
- Adrese sursă/destinație
- ID mesaj (dacă este furnizat)
- Protocol ID (PID=0x41 deseori declanșează înlocuirea)
Cazuri de utilizare
1. Actualizare mesaj OTP
replace_if_present: 0x01 // Înlocuiește mesajul OTP anterior PID: 0x41 // Protocol ID pentru înlocuire payload: "Noul tău OTP: 5678"
2. Reîmprospătare mesaj campanie
replace_if_present: 0x01 // Actualizează conținutul promoțional PID: 0x00 // Protocol implicit payload: "Vânzare Flash: Prețuri noi!"
3. Gestionare coadă
replace_if_present: 0x01 // Suprascrie mesajul din coadă scheduled_delivery_time: (timestamp viitor)
Exemple de PDU-uri SMPP
Exemplul 1: Înlocuire dezactivată (0x00)
0000001D // Lungime comandă (29 de octeți) 00000004 // ID comandă (SubmitSM) 00000001 // Număr de secvență ... 00 // Replace If Present (0x00: Dezactivat) ... 07 // Lungime SM (7 septeți) C8329BFD06DDDF72 // Payload ("Bună!")
Exemplul 2: Înlocuire activată (0x01)
0000001D // Lungime comandă (29 de octeți) 00000004 // ID comandă (SubmitSM) 00000002 // Număr de secvență ... 01 // Replace If Present (0x01: Activat) ... 07 // Lungime SM (7 septeți) E8329BFD0E... // Payload ("Actualizat: 15:00")
Exemplul 3: Combinat cu PID=0x41
0000001D // Lungime comandă (29 de octeți) 00000004 // ID comandă (SubmitSM) 00000003 // Număr de secvență ... 41 // Protocol ID (PID=0x41: Înlocuire) 01 // Replace If Present (0x01) ... 07 // Lungime SM (7 septeți) C8329BFD06... // Payload ("OTP: 9876")
Interacțiuni cu alte câmpuri
- Protocol ID (PID): PID=0x41 declanșează explicit înlocuirea în multe SMSC-uri
- message_id: Unele SMSC-uri folosesc acest lucru pentru a identifica mesajele pentru înlocuire
- registered_delivery: Confirmările indică dacă înlocuirea a reușit
Capcane comune
- Activarea înlocuirii fără suport SMSC
- Nesetarea
message_id
pentru înlocuire direcționată - Presupunerea că toate SMSC-urile folosesc aceeași logică de înlocuire
- Neconcordanța între valorile PID și replace_if_present
Politicile de înlocuire variază semnificativ. Unele SMSC-uri:
- Înlocuiesc doar mesajele cu sursă/destinație potrivite
- Ignoră replace_if_present dacă PID≠0x41
- Limitează înlocuirea la mesajele din coada SMSC (nu livrate)
Concluzie
Câmpul Replace If Present oferă control critic asupra gestionării ciclului de viață al mesajelor, dar necesită o coordonare atentă cu capacitățile SMSC. Verifică întotdeauna comportamentul de înlocuire cu furnizorul tău și folosește PID=0x41 pentru cereri explicite de înlocuire. Pentru implementări detaliate, consultă SMPP v3.4 Secțiunea 5.2.20 și documentația GSM 03.40 privind gestionarea mesajelor.
More information
- How to configure the SMPP Service Type field
- How to configure the SMPP Phone Number fields
- How to configure the SMPP ESM Class field
- How to configure the SMPP PID field
- How to configure the SMPP Prioirity field
- How to configure the SMPP Scheduled Time field
- How to configure the SMPP Validity Period field
- How to configure the SMPP Registered Delivery field
- How to configure the SMPP Replace if Present field
- How to configure the sm_default_msg_id field
- How to configure the SMPP DCS field
- How to calculate the SMPP SM Length field
- How to put data into the SMPP SM field