Behandlung des SMS-Status bei Mehrsegment-Nachrichten
Lange SMS-Nachrichten werden von den Mobilfunknetzen automatisch in mehrere Segmente aufgeteilt und anschließend auf dem Gerät des Empfängers wieder zusammengefügt, sodass der vollständige Text als eine einzige Nachricht angezeigt wird. In diesem Dokument wird erläutert, wie die Messages API Zustellbestätigungen (DLRs) für mehrteilige SMS verarbeitet und wie sich dies auf Status-Callbacks auswirkt.
Mehrsegment-SMS führen zu einer erhöhten Komplexität, da jedes Segment unabhängig über das Netz des Netzbetreibers übermittelt wird. In den meisten Fällen kommen alle Segmente innerhalb eines kurzen Zeitfensters erfolgreich an, es kann jedoch zu Teilausfällen kommen.
Um eine Zustellungsberichterstattung zu ermöglichen, fasst die Messages API die Zustellungsbestätigungen für alle Segmente zusammen, bevor ein abschließender Status-Callback gesendet wird.
Die Logik lautet:
- Die API wartet nach Erhalt der Empfangsbestätigung für das erste Segment bis zu 5 Minuten.
- In diesem Zeitraum sammelt es die Lieferbelege für alle Segmente.
- Es wird ein einziger Callback mit dem aggregierten Status gesendet, der eine Aufschlüsselung der Ergebnisse der einzelnen Segmente enthält.
Eine Nachricht wird als rejected wenn einer der folgenden Fälle eintritt:
- Mindestens ein Segment wird abgelehnt.
- Nicht alle Sendungsabschnitte werden innerhalb von 5 Minuten nach Erhalt der ersten Zustellbestätigung als zugestellt bestätigt.
Callbacks für aggregierte Status
Status-Callbacks für mehrteilige SMS geben das Ergebnis der gesamten Nachricht wieder, nicht nur das des ersten empfangenen Segments. Dadurch wird sichergestellt, dass der gemeldete Status widerspiegelt, ob die vollständige Nachricht erfolgreich an den Endnutzer zugestellt wurde.
Aggregierte Status-Callbacks bieten:
- Ein einziger, einheitlicher Callback für die Nachricht.
- Eine Aufschlüsselung der Lieferergebnisse auf Segmentebene.
- Genauere Zustell- und Ablehnungsstatus für lange Nachrichten.
Beispiel für einen Status-Callback
{
"message_uuid": "aaaaaaaa-bbbb-4ccc-8ddd-0123456789ab",
"to": "447700900000",
"from": "447700900001",
"timestamp": "2025-02-03T12:14:25Z",
"status": "delivered",
"channel": "sms",
"destination": {
"network_code": "12345"
},
"sms": {
"total_count": "2",
"segments": [
{
"timestamp": "2025-02-03T12:14:25Z",
"status": "delivered"
},
{
"timestamp": "2025-02-03T12:14:58Z",
"status": "delivered"
}
]
}
}