Jak skonfigurować pole Replace if Present w SMPP
Co to jest pole Replace If Present?
Pole Replace If Present w SMPP to 1-bajtowa flaga w PDU, takich jak submit_sm
, która instruuje SMSC, aby zastąpić istniejącą wiadomość przechowywaną na urządzeniu odbiorcy lub w kolejce SMSC. Kluczowe zastosowania obejmują:
- Aktualizowanie treści wrażliwych na czas (np. OTP, alerty statusowe)
- Zapobieganie duplikowaniu wiadomości
- Zarządzanie ograniczeniami pamięci urządzenia
Wartości pola i ich interpretacja
Pole używa prostej struktury podobnej do boolean:
Wartość (Hex) | Opis |
---|---|
0x00 | NIE zastępuj istniejących wiadomości (domyślnie) |
0x01 | Zastąp istniejące wiadomości, jeśli są obecne |
Uwaga: Logika zastępowania wiadomości zależy od implementacji SMSC. Typowe kryteria dopasowania obejmują:
- Adresy źródłowe/docelowe
- ID wiadomości (jeśli podane)
- ID protokołu (PID=0x41 często wywołuje zastąpienie)
Przykłady zastosowań
1. Aktualizacja wiadomości OTP
replace_if_present: 0x01 // Zastąp poprzednią wiadomość OTP PID: 0x41 // ID protokołu dla zastąpienia payload: "Twój nowy OTP: 5678"
2. Odświeżenie wiadomości kampanii
replace_if_present: 0x01 // Aktualizuj treść promocyjną PID: 0x00 // Domyślny protokół payload: "Wyprzedaż błyskawiczna: Nowe ceny!"
3. Zarządzanie kolejką
replace_if_present: 0x01 // Nadpisz wiadomość w kolejce scheduled_delivery_time: (przyszły znacznik czasu)
Przykłady PDU SMPP
Przykład 1: Zastępowanie wyłączone (0x00)
0000001D // Długość polecenia (29 bajtów) 00000004 // ID polecenia (SubmitSM) 00000001 // Numer sekwencji ... 00 // Replace If Present (0x00: Wyłączone) ... 07 // Długość SM (7 septetów) C8329BFD06DDDF72 // Ładunek ("Hello!")
Przykład 2: Zastępowanie włączone (0x01)
0000001D // Długość polecenia (29 bajtów) 00000004 // ID polecenia (SubmitSM) 00000002 // Numer sekwencji ... 01 // Replace If Present (0x01: Włączone) ... 07 // Długość SM (7 septetów) E8329BFD0E... // Ładunek ("Updated: 3 PM")
Przykład 3: Połączenie z PID=0x41
0000001D // Długość polecenia (29 bajtów) 00000004 // ID polecenia (SubmitSM) 00000003 // Numer sekwencji ... 41 // ID protokołu (PID=0x41: Zastąp) 01 // Replace If Present (0x01) ... 07 // Długość SM (7 septetów) C8329BFD06... // Ładunek ("OTP: 9876")
Interakcje z innymi polami
- ID protokołu (PID): PID=0x41 wyraźnie wywołuje zastąpienie w wielu SMSC
- message_id: Niektóre SMSC używają tego do identyfikacji wiadomości do zastąpienia
- registered_delivery: Potwierdzenia wskazują, czy zastąpienie się powiodło
Typowe pułapki
- Włączanie zastępowania bez wsparcia SMSC
- Nieustawianie
message_id
dla celowego zastąpienia - Zakładanie, że wszystkie SMSC używają tej samej logiki zastępowania
- Niezgodność wartości PID i replace_if_present
Uwaga dotycząca zachowania SMSC:
Zasady zastępowania różnią się znacznie. Niektóre SMSC:
Zasady zastępowania różnią się znacznie. Niektóre SMSC:
- Zastępują tylko wiadomości z pasującymi źródłami/docelowymi
- Ignorują replace_if_present, jeśli PID≠0x41
- Ograniczają zastępowanie do wiadomości w kolejce SMSC (nie dostarczonych)
Podsumowanie
Pole Replace If Present zapewnia kluczową kontrolę nad zarządzaniem cyklem życia wiadomości, ale wymaga starannej koordynacji z możliwościami SMSC. Zawsze weryfikuj zachowanie zastępowania z dostawcą i używaj PID=0x41 dla wyraźnych żądań zastąpienia. Szczegółowe implementacje można znaleźć w SMPP v3.4 Sekcja 5.2.20 oraz w dokumentacji GSM 03.40 dotyczącej obsługi wiadomości.
More information
- Jak skonfigurować pole Typ usługi SMPP
- Jak skonfigurować pola numerów telefonów SMPP
- Jak skonfigurować pole klasy ESM SMPP
- Jak skonfigurować pole PID SMPP
- Jak skonfigurować pole priorytetu SMPP
- Jak skonfigurować pole zaplanowanego czasu SMPP
- Jak skonfigurować pole okresu ważności SMPP
- Jak skonfigurować pole zarejestrowanej dostawy SMPP
- Jak skonfigurować pole Zastąp jeśli obecne SMPP
- Jak skonfigurować pole sm_default_msg_id
- Jak skonfigurować pole DCS SMPP
- Jak obliczyć pole długości wiadomości SMPP
- Jak umieścić dane w polu SM SMPP