Je verzendverzoek kan slagen voordat de telefoon van de ontvanger iets ontvangt. Een later carrier-rapport levert een aanvullend resultaat op, dat je applicatie apart van de acceptatie van het verzoek moet verwerken.
Wat vertelt een afleverbevestiging me?
Een ontvangstbewijs rapporteert een geslaagde aflevering of een afleverprobleem vanuit het perspectief van het netwerk.
Een afleverresultaat met SMS kan binnenkomen terwijl de telefoon ongelezen in een la ligt. Het bewijst niet dat de ontvanger de afzender heeft gezien. Het bewijst ook niet dat de ontvanger de volledige tekst heeft gelezen.
Het netwerk stuurt ontvangstbewijzen apart van zijn antwoord op een verzendverzoek. Het kan sommige rapporten ook onderdrukken. De SMPP-ontvangstbewijs-referentie documenteert deze instellingen voor carrier-verbindingen.
Welke carrier-ontvangstbewijzen toont Bird?
Je ontvangt publieke events voor herkende afleverresultaten. Gebufferde ontvangstbewijzen blijven intern.
Een gebufferd ontvangstbewijs geeft aan dat de carrier het bericht vasthoudt. Bird registreert het in zijn interne event-log zonder de publieke berichtstatus te wijzigen. Je ziet geen update in de publieke tijdlijn of je webhooks.
| Carrier-ontvangstbewijsstatus | Bird-event |
|---|---|
delivered | sms.delivered |
expired | sms.expired |
rejected | sms.rejected |
delivery_failed met een herstelbare reden | sms.undelivered |
delivery_failed met een permanente of niet-geclassificeerde reden | sms.failed |
buffered | Geen publiek event |
Een niet-herkende carrier-status levert geen event op. Een ontbrekende publieke update bewijst daarom niet dat de carrier geen ontvangstbewijs heeft gestuurd.
Waarom levert één foutstatus verschillende events op?
Bird gebruikt de foutreden van de carrier om te bepalen of het onderliggende probleem kan verdwijnen.
| Carrier-reden | Bird-foutcode | Classificatie |
|---|---|---|
unavailable_subscriber | unreachable | Herstelbaar |
received_network_error | provider_unavailable | Herstelbaar |
capacity_limit_reached | provider_unavailable | Herstelbaar |
unknown_subscriber | invalid_destination | Permanent |
opted_out | recipient_opted_out | Permanent |
carrier_rejected | content_rejected | Permanent |
Een herstelbare fout levert sms.undelivered op. Het bericht is nog steeds definitief: Bird probeert het niet automatisch opnieuw. Om de ontvanger te bereiken is een nieuwe verzending nodig nadat het onderliggende probleem is opgelost.
Een permanente fout levert sms.failed op. Een niet-geclassificeerde reden levert ook dat event op met de foutcode unknown. Dat resultaat betekent dat Bird de reden van de carrier niet kon classificeren. Het bewijst op zichzelf niet dat de bestemming permanent onbereikbaar is.
Kan ik instellen wanneer de carrier stopt met proberen?
Je kunt de afleverdeadline van de carrier niet instellen via het verzendendpoint van Bird.
Bird weigert elke meegegeven validity_period met HTTP 422 SMSUnsupportedFeature. Dat veld zou bepalen hoe lang de carrier blijft proberen het bericht af te leveren.
Het bijbehorende antwoordveld wordt niet geretourneerd. Bird levert sms.expired op wanneer een carrier een verlopen bericht rapporteert. Je applicatie kan de wachttijd van de carrier niet afleiden uit een afwezig veld.
Hoe verwerk ik ontvangstbewijzen in mijn applicatie?
Volg afleverresultaten apart van de acceptatie van het verzoek en van elke actie die de ontvanger onderneemt.
Beschouw een bericht zonder definitief afleverresultaat als in behandeling. Lees de foutcode bij een fout-event zodat je de oorzaak kunt onderzoeken. Bewaar onbekende codes in je logs, want de foutcodeset is uitbreidbaar.
Gebruik delivered-events voor een aflevermetriek. Bij een verificatiecode- of bevestigingsflow registreer je succes wanneer de ontvanger de actie voltooit. Een afleverbevestiging alleen kan die meting niet leveren.
SMS-events documenteert de publieke event-payloads en de berichttijdlijn.
Kort gezegd
Aflevering bewijst niet dat het bericht is gelezen.
Een ontvangstbewijs rapporteert het afleverresultaat van het netwerk zonder te bevestigen dat iemand de tekst heeft gezien.
Sommige ontvangstbewijzen hebben geen publiek event.
Bird registreert gebufferde ontvangstbewijzen intern zonder de publieke status, tijdlijn of webhook-stream te wijzigen.
De reden bepaalt het fout-event.
Herstelbare carrier-redenen leveren sms.undelivered op; permanente of niet-geclassificeerde redenen leveren sms.failed op.
Een herstelbare reden leidt niet tot een nieuwe verzending.
Een niet-afgeleverd bericht is definitief, dus een nieuwe poging vereist een aparte verzending.