Konfiguration des SMPP Replace if Present Feldes

Was ist das Replace If Present Feld?

Das Replace If Present Feld in SMPP ist ein 1-Byte-Flag in PDUs wie submit_sm, das die SMSC anweist, eine vorhandene Nachricht auf dem Gerät des Empfängers oder in der SMSC-Warteschlange zu ersetzen. Wichtige Anwendungsfälle sind:

  • Aktualisierung zeitkritischer Inhalte (z.B. OTPs, Statusbenachrichtigungen)
  • Vermeidung doppelter Nachrichten
  • Verwaltung von Speicherbeschränkungen auf Geräten

Feldwerte und Interpretation

Das Feld verwendet eine einfache boolesche Struktur:

Wert (Hex) Beschreibung
0x00 Vorhandene Nachrichten NICHT ersetzen (Standard)
0x01 Vorhandene Nachrichten ersetzen, falls vorhanden
Hinweis: Die Ersetzungslogik hängt von der SMSC-Implementierung ab. Häufige Kriterien sind:
  • Quell-/Zieladressen
  • Nachrichten-ID (falls angegeben)
  • Protokoll-ID (PID=0x41 löst oft Ersetzung aus)

Anwendungsfälle

1. OTP-Nachrichtenaktualisierung

replace_if_present: 0x01  // Vorherige OTP-Nachricht ersetzen
PID: 0x41                 // Protokoll-ID für Ersetzung
payload: "Ihr neues OTP: 5678"
    

2. Kampagnennachrichtenaktualisierung

replace_if_present: 0x01  // Werbeinhalte aktualisieren
PID: 0x00                 // Standardprotokoll
payload: "Flash Sale: Neue Preise!"
    

3. Warteschlangenverwaltung

replace_if_present: 0x01  // Warteschlangennachricht überschreiben
scheduled_delivery_time: (zukünftiger Zeitstempel)
    

Beispiel-SMPP-PDUs

Beispiel 1: Ersetzung deaktiviert (0x00)

0000001D  // Befehlslänge (29 Bytes)
00000004  // Befehls-ID (SubmitSM)
00000001  // Sequenznummer
...
00        // Replace If Present (0x00: Deaktiviert)
...
07        // SM-Länge (7 Septets)
C8329BFD06DDDF72  // Nutzlast ("Hallo!")
    

Beispiel 2: Ersetzung aktiviert (0x01)

0000001D  // Befehlslänge (29 Bytes)
00000004  // Befehls-ID (SubmitSM)
00000002  // Sequenznummer
...
01        // Replace If Present (0x01: Aktiviert)
...
07        // SM-Länge (7 Septets)
E8329BFD0E...  // Nutzlast ("Aktualisiert: 15 Uhr")
    

Beispiel 3: Kombiniert mit PID=0x41

0000001D  // Befehlslänge (29 Bytes)
00000004  // Befehls-ID (SubmitSM)
00000003  // Sequenznummer
...
41        // Protokoll-ID (PID=0x41: Ersetzen)
01        // Replace If Present (0x01)
...
07        // SM-Länge (7 Septets)
C8329BFD06...  // Nutzlast ("OTP: 9876")
    

Interaktion mit anderen Feldern

  • Protokoll-ID (PID): PID=0x41 löst in vielen SMSCs explizit Ersetzung aus
  • message_id: Einige SMSCs verwenden dies zur Identifikation von Nachrichten für Ersetzung
  • registered_delivery: Empfangsbestätigungen zeigen an, ob Ersetzung erfolgreich war

Häufige Fallstricke

  • Aktivierung der Ersetzung ohne SMSC-Unterstützung
  • Nicht-Setzen der message_id für gezielte Ersetzung
  • Annahme, dass alle SMSCs dieselbe Ersetzungslogik verwenden
  • Nicht übereinstimmende PID- und replace_if_present-Werte
Hinweis zum SMSC-Verhalten:
Ersetzungsrichtlinien variieren stark. Einige SMSCs:
  • Ersetzen nur Nachrichten mit übereinstimmenden Quell-/Zieladressen
  • Ignorieren replace_if_present, wenn PID≠0x41
  • Beschränken Ersetzung auf Nachrichten in der SMSC-Warteschlange (nicht zugestellte)

Fazit

Das Replace If Present Feld bietet entscheidende Kontrolle über den Nachrichtenlebenszyklus, erfordert jedoch sorgfältige Abstimmung mit den SMSC-Fähigkeiten. Überprüfen Sie immer das Ersetzungsverhalten mit Ihrem Anbieter und verwenden Sie PID=0x41 für explizite Ersetzungsanfragen. Für detaillierte Implementierungen siehe SMPP v3.4 Abschnitt 5.2.20 und GSM 03.40 Dokumentation zur Nachrichtenverarbeitung.

More information