Zurück zum Blog SMS-Betrieb

Zeitstempel bei A2P-SMS-Ereignissen: Zeitangaben der Plattform, des Anbieters und von DLRs abgleichen

Ein praktischer Leitfaden zum Erfassen, Vergleichen und Prüfen von SMS-Ereigniszeiten, ohne den Eingang eines DLR mit einer unabhängigen Zustellbestätigung auf dem Endgerät zu verwechseln.

Zeitachse mit A2P-SMS-Ereignissen, die Zeitstempel von Plattform, Anbieter und DLR-Eingang vergleicht

Warum sich erfasste Zeitangaben unterscheiden können

Bei einem A2P-Versand können in mehreren Systemen Protokolleinträge entstehen: in der sendenden Anwendung oder Plattform, beim Anbieter, der die Nachricht entgegennimmt, und in den Systemen, die einen Statusbericht ausgeben oder zustellen. Jeder Eintrag kann einen anderen Zeitpunkt abbilden und auf einer anderen Zeitquelle, Zeitzone oder Genauigkeit beruhen.

Zwei unterschiedliche Zeitstempel belegen daher für sich genommen keinen Fehler. Um sie richtig einzuordnen, muss zunächst klar sein, welches Ereignis jedes Feld darstellen soll und welches System es erzeugt hat. Die für diesen Artikel verfügbaren Informationen erlauben es nicht, universelle Definitionen für Zeitstempel oder DLRs einer bestimmten Spezifikation zuzuschreiben. Vereinbaren und dokumentieren Sie diese Bedeutungen daher mit jedem Anbieter.

  • Vergleichen Sie eine Erstellungszeit nicht mit einer Eingangszeit, als würden beide dasselbe Ereignis beschreiben.
  • Erfassen Sie das Quellsystem und die angegebene Bedeutung jedes Zeitstempels.
  • Behandeln Sie Genauigkeit und Semantik jedes Felds als Eigenschaften, die geprüft und nicht einfach vorausgesetzt werden müssen.
Warum sich erfasste Zeitangaben unterscheiden können

Erstellung, Versand, Annahme und Callback-Eingang getrennt erfassen

Verwenden Sie eindeutige Ereignisnamen. Unterscheiden Sie mindestens, wann der Eintrag oder die Anfrage erstellt wurde, wann die Plattform den Versand versucht hat, wann sie eine Annahmebestätigung erhalten hat, welche Ereigniszeit der Anbieter angibt und wann der Callback in Ihrem System eingetroffen ist. Setzen Sie „angenommen“ nicht mit einer Zustellung an das Endgerät gleich.

Halten Sie die vom Anbieter gemeldete Ereigniszeit und den Zeitpunkt, zu dem Ihre Plattform diesen Bericht empfangen hat, getrennt fest. Die erste ist eine Angabe des Systems, das das Ereignis meldet; die zweite dokumentiert den lokalen Eingang. Wenn der Anbieter nicht erläutert, wofür sein Zeitstempel steht, bewahren Sie ihn als Quelldatum auf, ohne ihn umzudeuten.

  • Definieren Sie ein Ereignisverzeichnis mit Namen, sendendem System und Bedeutung.
  • Speichern Sie den vom Anbieter angegebenen Zeitstempel und den lokalen Eingangszeitpunkt getrennt.
  • Leiten Sie aus Annahme oder Eingang eines Berichts keine Behauptung über die Zustellung an das Gerät ab.
Erstellung, Versand, Annahme und Callback-Eingang getrennt erfassen

Für den Vergleich normalisieren, Originaldaten aber bewahren

Um die Suche und den Vergleich zwischen Systemen zu erleichtern, sollten Sie ein einheitliches Zeitformat verwenden, zum Beispiel UTC, und eine eindeutige Serialisierungskonvention festlegen. Ermitteln Sie vor der Umrechnung die Zeitzone oder den UTC-Versatz eines Werts. Ist diese Angabe nicht verfügbar, dokumentieren Sie das ausdrücklich: Nehmen Sie nicht an, dass der Wert der Server- oder Betreiberzeitzone entspricht.

Durch die Normalisierung darf der empfangene Wert nicht überschrieben werden. Bewahren Sie den ursprünglichen Text oder Wert, die angegebene Zeitzone, die Quelle und den daraus abgeleiteten normalisierten Wert auf. So lassen sich Umrechnungen überprüfen, Abweichungen klären und die Angaben der einzelnen Systeme nachvollziehen.

  • Speichern Sie den ursprünglichen Wert unverändert.
  • Erfassen Sie Zeitzone oder UTC-Versatz und kennzeichnen Sie ausdrücklich, wenn diese Angaben unbekannt sind.
  • Speichern Sie den normalisierten Wert in einem eigenen Feld und dokumentieren Sie die Umrechnungsregel.
  • Erfinden Sie keine Genauigkeit: Bewahren Sie die verfügbare Genauigkeit und kennzeichnen Sie, wenn sie unbekannt ist.

Zeitabweichungen, unterschiedliche Genauigkeit, Duplikate und Ereignisse außerhalb der Reihenfolge

Ein Zeitstempel allein reicht nicht aus, um eine nicht synchronisierte Uhr festzustellen. Vergleichen Sie Felder nur dann, wenn ihre Bedeutung und Zeitzone bekannt sind, und erfassen Sie beobachtete Abweichungen als Hinweise, nicht als automatischen Beweis für deren Ursache. Wenn das System verlässliche Informationen zur Synchronisierung oder Uhrqualität bereitstellt, speichern Sie diese separat; leiten Sie sie nicht aus einer ungewöhnlich wirkenden Abfolge ab.

Callbacks können nach anderen Ereignissen eintreffen oder mehrfach vorkommen. Gestalten Sie die Verarbeitung so, dass eingehende Ereignisse erhalten bleiben, mögliche Duplikate anhand stabiler Kennungen erkannt werden, sofern vorhanden, und der Änderungsverlauf bewahrt wird. Gibt es keine geeignete Kennung, schließen Sie nicht allein aus übereinstimmendem Status und Zeit darauf, dass zwei Berichte dasselbe Ereignis sind.

  • Unterscheiden Sie zwischen der angegebenen Ereigniszeit und dem lokalen Eingangszeitpunkt.
  • Erfassen Sie die angegebene oder verfügbare Genauigkeit; ergänzen Sie keine Millisekunden, die nicht vorhanden waren.
  • Bewahren Sie verspätete und nicht chronologisch eingetroffene Ereignisse auf, statt sie wegen ihres späteren Eingangs zu verwerfen.
  • Verwenden Sie Nachrichten- und Ereigniskennungen, sofern verfügbar, und dokumentieren Sie ihre Grenzen.
  • Löschen Sie Duplikate nicht unwiderruflich: Bewahren Sie Nachweise der Deduplizierung auf.

Regeln für den Abgleich: Prioritäten ohne vorgetäuschte Gewissheit

Es gibt hier keine allgemein belegte Regel, nach der alle A2P-SMS-Ereignisse zeitlich priorisiert werden können. Legen Sie interne Regeln für die jeweiligen Ereignistypen sowie auf Grundlage des Vertrags oder der technischen Dokumentation des Anbieters fest. Eine Annahmebestätigung, ein vom Anbieter gemeldetes Statusereignis und der Eingang des Callbacks müssen getrennte Sachverhalte bleiben.

Wenn zwei Quellen voneinander abweichen, sollten Sie nicht ohne dokumentierte Begründung einen einzelnen Zeitwert als „den richtigen“ auswählen. Sie können für Berichte eine operative Referenzzeit festlegen, müssen aber alle Beobachtungen bewahren und das angewandte Kriterium kennzeichnen. Sind Bedeutung oder Zeitzone eines Werts unklar, kennzeichnen Sie den Vergleich als nicht eindeutig.

  • Legen Sie Prioritäten anhand der Ereignissemantik fest, nicht anhand einer allgemeinen Feldbezeichnung.
  • Dokumentieren Sie die angewandte Regel, ihre Version und die beteiligten Quellen.
  • Trennen Sie den von Ihrer Plattform berechneten Status von den Statusmeldungen Dritter.
  • Eskalieren Sie ungeklärte Abweichungen, statt sie in eine Zustellbestätigung umzudeuten.

Mindestfelder für ein prüfbares Protokoll

Ein nützlicher Protokolleintrag sollte nachvollziehbar machen, was empfangen wurde, von wem es kam und wie es interpretiert wurde. Das genaue Schema hängt von der Integration ab. Sinnvoll ist jedoch, Korrelationsdaten, Originaldaten, normalisierte Zeitangaben und Abgleichentscheidungen getrennt zu speichern.

Beschränken Sie den Zugriff auf identifizierende Daten und wenden Sie die für Ihre Organisation geltenden Aufbewahrungs- und Sicherheitsrichtlinien an. Prüfbarkeit erfordert nicht, mehr personenbezogene Daten als für die Zuordnung und Fehlerbehebung notwendig zu verarbeiten.

  • Interne Nachrichtenkennung und, falls vorhanden, vom Anbieter vergebene Kennung.
  • Ereignistyp und empfangener Status, wobei der Originalwert erhalten bleibt.
  • Quellsystem oder Anbieter sowie, sofern verfügbar, Version oder Referenz der Schnittstelle.
  • Ursprünglicher Zeitstempel, angegebene Zeitzone oder UTC-Versatz und verfügbare Genauigkeit.
  • Lokaler Eingangszeitpunkt und normalisierter Zeitstempel, jeweils separat gespeichert.
  • Ereignis- oder Callback-Kennung, falls vorhanden, und Ergebnis der Duplikaterkennung.
  • Angewandte Abgleichregel, Ergebnis, Begründung und Zeitpunkt der Entscheidung.
  • Kennzeichnung von Unsicherheit, wenn Bedeutung, Zeitzone oder Reihenfolge nicht feststellbar sind.

Beispiel: verspäteter DLR und unklarer Endstatus

Nehmen wir an, eine Plattform protokolliert den Versand und erhält später eine Annahmebestätigung. Danach erfasst sie einen weiteren Statuswechsel und empfängt schließlich einen Callback, dessen angegebener Zeitstempel vor dem lokalen Eingangszeitpunkt zu liegen scheint. Die Abweichung kann auf eine Übertragungsverzögerung, unterschiedliche Kriterien für Zeitstempel, eine unbekannte Zeitzone oder nicht synchronisierte Uhren zurückgehen. Ohne weitere Daten lässt sich keine Ursache auswählen.

Bewahren Sie vorsichtshalber beide Zeitangaben auf, ordnen Sie den Callback der Nachricht nur anhand geeigneter Korrelationsschlüssel zu und kennzeichnen Sie die Abfolge zur Prüfung, falls sie den dokumentierten Regeln widerspricht. Der Callback belegt, dass die Plattform einen Bericht mit einem bestimmten Inhalt empfangen hat. Ohne Dokumentation, die Semantik und Geltungsbereich festlegt, sollte er nicht als unabhängiger Nachweis dafür dargestellt werden, dass das Endgerät die SMS erhalten hat.

  • Führen Sie den vom DLR angegebenen Zeitstempel und den Eingangszeitpunkt als getrennte Felder.
  • Ordnen oder löschen Sie den Verlauf nicht nachträglich, damit er chronologisch erscheint.
  • Dokumentieren Sie den gemeldeten Status und jede Unsicherheit bezüglich seiner Bedeutung.
  • Geben Sie das Ergebnis als vom Anbieter gemeldeten Status aus, nicht als unabhängigen Nachweis für den Empfang auf dem Endgerät.

Regelmäßige Tests und Grenzen eines Zeitstempels

Prüfen Sie den Ablauf mit kontrollierten, zulässigen Tests in Ihren eigenen Integrationen. Stellen Sie sicher, dass Originalwerte erhalten bleiben, Zeitzonenumrechnungen reproduzierbar sind, verspätete Ereignisse nicht verloren gehen und Duplikate gekennzeichnet werden, ohne den Verlauf zu löschen. Wiederholen Sie die Prüfung, wenn sich Schnittstelle, Konfiguration oder Regeln des Anbieters ändern.

Ein Zeitstempel allein beweist weder, wer die Nachricht erhalten hat, noch dass die Uhr synchronisiert war, das Ereignis exakt zu diesem Zeitpunkt stattfand oder der Inhalt auf dem Endgerät angezeigt wurde. Schlussfolgerungen hängen von der Ereignisdefinition, der Quelle und den verfügbaren technischen Nachweisen ab. Dokumentieren Sie diese Grenzen in Betriebs- und Abgleichberichten.

  • Testen Sie Zeitstempel mit und ohne Zeitzone und prüfen Sie, ob die Originalwerte unverändert bleiben.
  • Berücksichtigen Sie verspätete, wiederholte und außerhalb der Reihenfolge eingetroffene Callbacks.
  • Vergleichen Sie die lokale Interpretation mit der aktuellen Dokumentation jeder Integration.
  • Prüfen Sie Zeitabweichungen und Abgleichergebnisse regelmäßig, ohne daraus Zustellgarantien abzuleiten.
FAQ

Häufige Fragen

Bestätigt ein empfangener DLR, dass die SMS auf dem Endgerät angekommen ist?

Der Eingang des Callbacks bestätigt, dass Ihr System einen Bericht empfangen hat. Seine Bedeutung hängt von der dokumentierten Semantik der Quelle ab und ist für sich genommen keine unabhängige Bestätigung des Empfangs auf dem Endgerät.

Sollte ich alle Zeitstempel in UTC speichern?

Sie können für den Systemvergleich ein normalisiertes UTC-Feld verwenden, sollten aber auch den Originalwert und die angegebene Zeitzone oder den UTC-Versatz bewahren. Ist die Zeitzone unbekannt, dokumentieren Sie das, statt sie anzunehmen.

Welche Zeitangabe gilt, wenn Plattform und Anbieter voneinander abweichen?

Es gibt keine universelle Prioritätsregel, die für alle Felder gilt. Legen Sie Regeln für die jeweiligen Ereignistypen anhand der Integrationsdokumentation fest, bewahren Sie beide Angaben auf und kennzeichnen Sie ungeklärte Abweichungen.

Wie gehe ich mit einem verspäteten oder doppelten Callback um?

Bewahren Sie ihn mit seinem Eingangszeitpunkt und dem angegebenen Zeitstempel auf. Verwenden Sie, sofern vorhanden, stabile Kennungen zur Duplikaterkennung, erhalten Sie den Verlauf und verwerfen Sie Ereignisse nicht allein deshalb, weil sie verspätet eingetroffen sind.

Was sagt eine Abweichung zwischen zwei Zeitstempeln aus?

Sie zeigt, dass die Protokolle unterschiedliche Werte enthalten; für sich genommen sagt sie nichts über die Ursache aus. Unterschiede können auf abweichende Semantik, Zeitzonen, Genauigkeit, Verzögerungen oder Uhren zurückgehen. Für eine Ursachenzuordnung sind zusätzliche Daten erforderlich.

Verwendete Quellen

  1. 3GPP specifications3GPP
  2. ITU-T E.164International Telecommunication Union
  3. GSMA resourcesGSMA