Ihr Senderequest kann erfolgreich sein, bevor das Telefon des Empfängers etwas erhält. Ein späterer Carrier-Bericht liefert ein weiteres Ergebnis, das Ihre Anwendung getrennt von der Request-Annahme verarbeiten muss.
Was sagt mir eine Zustellbestätigung?
Eine Quittung meldet aus Sicht des Netzes eine erfolgreiche Zustellung oder ein Zustellproblem.
Ein SMS-Zustellergebnis kann eintreffen, während das Telefon ungelesen in einer Schublade liegt. Es beweist nicht, dass der Empfänger die Absenderkennung gesehen hat. Es belegt auch nicht, dass er den vollständigen Text gelesen hat.
Das Netz sendet Quittungen getrennt von seiner Antwort auf einen Senderequest. Es kann außerdem manche Berichte unterdrücken. Die SMPP-Quittungsreferenz dokumentiert diese Steuerungen für Carrier-Verbindungen.
Welche Carrier-Quittungen stellt Bird bereit?
Sie erhalten öffentliche Events für erkannte Zustellergebnisse. Gepufferte Quittungen bleiben intern.
Eine gepufferte Quittung besagt, dass der Carrier die Nachricht zurückhält. Bird erfasst sie im internen Event-Log, ohne den öffentlichen Nachrichtenstatus zu ändern. In der öffentlichen Timeline oder in Ihren Webhooks sehen Sie kein Update.
| Carrier-Quittungsstatus | Bird-Event |
|---|---|
delivered | sms.delivered |
expired | sms.expired |
rejected | sms.rejected |
delivery_failed mit behebbarem Grund | sms.undelivered |
delivery_failed mit permanentem oder nicht zugeordnetem Grund | sms.failed |
buffered | Kein öffentliches Event |
Ein nicht erkannter Carrier-Status erzeugt kein Event. Ein fehlendes öffentliches Update belegt daher nicht, dass der Carrier keine Quittung gesendet hat.
Warum erzeugt ein Fehlerstatus unterschiedliche Events?
Bird nutzt den Fehlergrund des Carriers, um zu entscheiden, ob sich das zugrunde liegende Problem beheben kann.
| Carrier-Grund | Bird-Fehlercode | Klassifizierung |
|---|---|---|
unavailable_subscriber | unreachable | Behebbar |
received_network_error | provider_unavailable | Behebbar |
capacity_limit_reached | provider_unavailable | Behebbar |
unknown_subscriber | invalid_destination | Permanent |
opted_out | recipient_opted_out | Permanent |
carrier_rejected | content_rejected | Permanent |
Ein behebbarer Fehler erzeugt sms.undelivered. Die Nachricht ist dennoch endgültig: Bird wiederholt den Versand nicht automatisch. Um den Empfänger zu erreichen, ist ein erneuter Versand erforderlich, nachdem das zugrunde liegende Problem behoben ist.
Ein permanenter Fehler erzeugt sms.failed. Ein nicht zugeordneter Grund erzeugt dasselbe Event mit dem Fehlercode unknown. Dieses Ergebnis bedeutet, dass Bird den Grund des Carriers nicht klassifizieren konnte. Es beweist nicht eigenständig, dass das Ziel dauerhaft nicht erreichbar ist.
Kann ich festlegen, wann der Carrier aufhört zu versuchen?
Sie können die Zustellfrist des Carriers nicht über den Sende-Endpoint von Bird festlegen.
Bird lehnt jedes übergebene validity_period mit HTTP 422 SMSUnsupportedFeature ab. Dieses Feld würde steuern, wie lange der Carrier versucht, den Text zuzustellen.
Das entsprechende Antwortfeld wird nicht zurückgegeben. Bird erzeugt sms.expired, wenn ein Carrier einen Ablauf meldet. Ihre Anwendung kann die Wartezeit des Carriers nicht aus einem fehlenden Feld ableiten.
Wie sollte ich Quittungen in meiner Anwendung verarbeiten?
Sie sollten Zustellergebnisse getrennt von der Request-Annahme und von jeder Aktion des Empfängers verfolgen.
Behandeln Sie eine Nachricht ohne endgültiges Zustellergebnis als ausstehend. Lesen Sie den Fehlercode bei einem Fehler-Event, damit Sie die Ursache untersuchen können. Speichern Sie unbekannte Codes in Ihren Logs, weil der Fehlercode-Satz erweiterbar ist.
Verwenden Sie Delivered-Events für eine Zustellmetrik. Erfassen Sie bei einem Bestätigungscode- oder Bestätigungsablauf den Erfolg, wenn der Empfänger die Aktion abschließt. Eine Zustellbestätigung allein kann diesen Nachweis nicht liefern.
SMS-Events dokumentiert die öffentlichen Event-Payloads und die Nachrichten-Timeline.
Kurz gesagt
Zustellung belegt kein Lesen.
Eine Quittung meldet das Zustellergebnis des Netzes, ohne zu bestätigen, dass eine Person den Text gesehen hat.
Manche Quittungen haben kein öffentliches Event.
Bird erfasst gepufferte Quittungen intern, ohne den öffentlichen Status, die Timeline oder den Webhook-Stream zu ändern.
Der Grund bestimmt das Fehler-Event.
Behebbare Carrier-Gründe erzeugen sms.undelivered; permanente oder nicht zugeordnete Gründe erzeugen sms.failed.
Ein behebbarer Grund löst keinen erneuten Versand aus.
Eine unzugestellte Nachricht ist endgültig, ein weiterer Versuch erfordert daher einen separaten Versand.