SMS

Wat is een afleverbevestiging (DLR) en hoe betrouwbaar is die?

Een afleverbevestiging (DLR) rapporteert het afleverresultaat van een tekstbericht op netwerkniveau, maar bewijst niet dat iemand het heeft gelezen.

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-ontvangstbewijsstatusBird-event
deliveredsms.delivered
expiredsms.expired
rejectedsms.rejected
delivery_failed met een herstelbare redensms.undelivered
delivery_failed met een permanente of niet-geclassificeerde redensms.failed
bufferedGeen 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-redenBird-foutcodeClassificatie
unavailable_subscriberunreachableHerstelbaar
received_network_errorprovider_unavailableHerstelbaar
capacity_limit_reachedprovider_unavailableHerstelbaar
unknown_subscriberinvalid_destinationPermanent
opted_outrecipient_opted_outPermanent
carrier_rejectedcontent_rejectedPermanent

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

  1. 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.

  2. Sommige ontvangstbewijzen hebben geen publiek event.

    Bird registreert gebufferde ontvangstbewijzen intern zonder de publieke status, tijdlijn of webhook-stream te wijzigen.

  3. De reden bepaalt het fout-event.

    Herstelbare carrier-redenen leveren sms.undelivered op; permanente of niet-geclassificeerde redenen leveren sms.failed op.

  4. Een herstelbare reden leidt niet tot een nieuwe verzending.

    Een niet-afgeleverd bericht is definitief, dus een nieuwe poging vereist een aparte verzending.

Breng het in de praktijk.

Ga verder met de documentatie, gidsen en voorbeelden voor dit onderwerp. De bronnen zijn in het Engels.

Ontvang een implementatieoverzicht

Bouw op hetzelfde netwerk.

Een test-API-key is direct beschikbaar. Productietoegang wordt ontgrendeld zodra u een betaalmethode toevoegt en een afzender verifieert.

Jouw volgende idee.
Klaar om te verbinden.