A "Replace if Present" mező konfigurálása SMPP-ben
Mi a "Replace If Present" mező?
A Replace If Present mező az SMPP-ben egy 1 bájtos flag olyan PDU-kban, mint a submit_sm
, amely arra utasítja az SMSC-t, hogy cserélje le a címzett eszközén vagy az SMSC várólistáján tárolt meglévő üzenetet. Fő alkalmazási területei:
- Időérzékeny tartalom frissítése (pl. OTP-k, állapotértesítések)
- Duplikált üzenetek megelőzése
- Eszköztárhely kezelése
Mezőértékek és értelmezés
A mező egyszerű, logikai szerkezetet használ:
Érték (Hex) | Leírás |
---|---|
0x00 | Ne cserélje le a meglévő üzeneteket (alapértelmezett) |
0x01 | Cserélje le a meglévő üzeneteket, ha vannak |
Megjegyzés: Az üzenetcsere logikája az SMSC implementációtól függ. Gyakori egyezési kritériumok:
- Forrás/cél címek
- Üzenetazonosító (ha meg van adva)
- Protokoll azonosító (PID=0x41 gyakran vált ki cserét)
Használati esetek
1. OTP üzenet frissítése
replace_if_present: 0x01 // Cserélje a korábbi OTP üzenetet PID: 0x41 // Protokoll azonosító cserehez payload: "Az új OTP: 5678"
2. Kampányüzenet frissítése
replace_if_present: 0x01 // Promóciós tartalom frissítése PID: 0x00 // Alapértelmezett protokoll payload: "Flash akció: Új árak!"
3. Várólista kezelése
replace_if_present: 0x01 // Felülírja a várólistán lévő üzenetet scheduled_delivery_time: (jövőbeli időbélyeg)
Példa SMPP PDU-k
1. példa: Csere letiltva (0x00)
0000001D // Parancs hossza (29 bájt) 00000004 // Parancs azonosító (SubmitSM) 00000001 // Sorszám ... 00 // Replace If Present (0x00: Letiltva) ... 07 // SM hossza (7 szeptett) C8329BFD06DDDF72 // Tartalom ("Hello!")
2. példa: Csere engedélyezve (0x01)
0000001D // Parancs hossza (29 bájt) 00000004 // Parancs azonosító (SubmitSM) 00000002 // Sorszám ... 01 // Replace If Present (0x01: Engedélyezve) ... 07 // SM hossza (7 szeptett) E8329BFD0E... // Tartalom ("Frissítve: 15:00")
3. példa: Kombinálva PID=0x41-gyel
0000001D // Parancs hossza (29 bájt) 00000004 // Parancs azonosító (SubmitSM) 00000003 // Sorszám ... 41 // Protokoll azonosító (PID=0x41: Csere) 01 // Replace If Present (0x01) ... 07 // SM hossza (7 szeptett) C8329BFD06... // Tartalom ("OTP: 9876")
Interakciók más mezőkkel
- Protokoll azonosító (PID): PID=0x41 expliciten vált ki cserét számos SMSC-ben
- message_id: Néhány SMSC ezt használja a cserélni kívánt üzenetek azonosítására
- registered_delivery: A visszaigazolások jelzik, hogy a csere sikerült-e
Gyakori buktatók
- A csere engedélyezése SMSC támogatás nélkül
- A
message_id
beállításának elmulasztása célzott csere esetén - Feltételezés, hogy minden SMSC ugyanazt a csere logikát használja
- PID és replace_if_present értékek eltérése
SMSC viselkedés megjegyzés:
A csere szabályok jelentősen eltérhetnek. Néhány SMSC:
A csere szabályok jelentősen eltérhetnek. Néhány SMSC:
- Csak azonos forrás/cél című üzeneteket cserél
- Figyelmen kívül hagyja a replace_if_present-t, ha PID≠0x41
- Csak az SMSC várólistában lévő üzenetekre korlátozza a cserét (nem kézbesítettekre)
Összegzés
A Replace If Present mező kulcsfontosságú irányítást biztosít az üzenetek életciklus-kezeléséhez, de gondos egyeztetést igényel az SMSC képességeivel. Mindig ellenőrizze a csere viselkedést a szolgáltatójával, és használja a PID=0x41-et explicit csere kérésekhez. Részletes implementációkhoz lásd az SMPP v3.4 5.2.20. szakaszát és a GSM 03.40 dokumentációt az üzenetkezelésről.
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