Jak nakonfigurovat pole Replace if Present v SMPP
Co je pole Replace If Present?
Pole Replace If Present v SMPP je 1bajtový příznak v PDU jako submit_sm, který instruuje SMSC, aby nahradil existující zprávu uloženou na zařízení příjemce nebo ve frontě SMSC. Klíčové aplikace zahrnují:
- Aktualizaci časově citlivého obsahu (např. OTP, stavové upozornění)
- Zabránění duplicitním zprávám
- Správu omezení úložiště zařízení
Hodnoty pole a jejich interpretace
Pole používá jednoduchou logiku podobnou booleanu:
| Hodnota (Hex) | Popis |
|---|---|
| 0x00 | NEnahrazovat existující zprávy (výchozí) |
| 0x01 | Nahradit existující zprávy, pokud jsou přítomny |
Poznámka: Logika nahrazování zpráv závisí na implementaci SMSC. Běžná kritéria pro shodu zahrnují:
- Zdrojové/cílové adresy
- ID zprávy (pokud je poskytnuto)
- ID protokolu (PID=0x41 často spouští nahrazení)
Příklady použití
1. Aktualizace OTP zprávy
replace_if_present: 0x01 // Nahradit předchozí OTP zprávu
PID: 0x41 // ID protokolu pro nahrazení
payload: "Váš nový OTP: 5678"
2. Obnovení kampaně
replace_if_present: 0x01 // Aktualizovat propagační obsah
PID: 0x00 // Výchozí protokol
payload: "Bleskový výprodej: Nové ceny!"
3. Správa fronty
replace_if_present: 0x01 // Přepsat zprávu ve frontě
scheduled_delivery_time: (budoucí časové razítko)
Příklady SMPP PDU
Příklad 1: Nahrazení zakázáno (0x00)
0000001D // Délka příkazu (29 bajtů)
00000004 // ID příkazu (SubmitSM)
00000001 // Číslo sekvence
...
00 // Replace If Present (0x00: Zakázáno)
...
07 // Délka SM (7 septetů)
C8329BFD06DDDF72 // Obsah ("Ahoj!")
Příklad 2: Nahrazení povoleno (0x01)
0000001D // Délka příkazu (29 bajtů)
00000004 // ID příkazu (SubmitSM)
00000002 // Číslo sekvence
...
01 // Replace If Present (0x01: Povoleno)
...
07 // Délka SM (7 septetů)
E8329BFD0E... // Obsah ("Aktualizováno: 15:00")
Příklad 3: Kombinace s PID=0x41
0000001D // Délka příkazu (29 bajtů)
00000004 // ID příkazu (SubmitSM)
00000003 // Číslo sekvence
...
41 // ID protokolu (PID=0x41: Nahradit)
01 // Replace If Present (0x01)
...
07 // Délka SM (7 septetů)
C8329BFD06... // Obsah ("OTP: 9876")
Interakce s dalšími poli
- ID protokolu (PID): PID=0x41 explicitně spouští nahrazení v mnoha SMSC
- message_id: Některé SMSC používají toto ID k identifikaci zpráv pro nahrazení
- registered_delivery: Potvrzení indikují, zda nahrazení proběhlo úspěšně
Běžné problémy
- Povolení nahrazení bez podpory SMSC
- Nenastavení
message_idpro cílené nahrazení - Předpoklad, že všechny SMSC používají stejnou logiku nahrazení
- Nesoulad hodnot PID a replace_if_present
Poznámka k chování SMSC:
Zásady nahrazení se výrazně liší. Některé SMSC:
Zásady nahrazení se výrazně liší. Některé SMSC:
- Nahrazují pouze zprávy se shodnými zdrojovými/cílovými adresami
- Ignorují replace_if_present, pokud PID≠0x41
- Omezují nahrazení na zprávy ve frontě SMSC (ne doručené)
Závěr
Pole Replace If Present poskytuje kritickou kontrolu nad správou životního cyklu zpráv, ale vyžaduje pečlivou koordinaci s možnostmi SMSC. Vždy ověřte chování nahrazení u vašeho poskytovatele a použijte PID=0x41 pro explicitní požadavky na nahrazení. Pro podrobné implementace se řiďte SMPP v3.4, oddíl 5.2.20 a dokumentací GSM 03.40 o zpracování zpráv.