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_rejectedsender_unregistered, content_rejected of blocked_by_carrierPermanent

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.

SMS-pumping is fraude waarbij je product betaalde berichten stuurt naar nummers die een aanvaller beheert. Bird rapporteert blocked_by_fraud_protection wanneer fraudebescherming vermoedelijke pumping blokkeert.

Een verder niet-geclassificeerde reden levert sms.failed 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 een afleverdeadline instellen met validity_period, van 60 tot 172.800 seconden (twee dagen), gerekend vanaf het moment dat Bird het bericht accepteert.

Bird geeft het bericht na die deadline niet meer door aan de carrier. Als de route het ondersteunt, geeft Bird de resterende tijd aan de carrier door als geldigheidsduur van het bericht. Voor een verificatiecode die tien minuten geldig is, kun je het veld op 600 zetten. Een bericht dat de carrier niet binnen tien minuten heeft bereikt, wordt dan niet verstuurd.

Een bericht dat de deadline mist voordat het de carrier bereikt, eindigt als rejected of failed. Bird levert alleen sms.expired op wanneer een carrier een verlopen bericht rapporteert.

Laat het veld weg om de geldigheidsduur van het berichtenprofiel in messaging_profile_id te gebruiken, of de eigen regels van de carrier als geen van beide er een instelt. Het berichtantwoord rapporteert welke validity_period van toepassing was.

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, handleidingen en voorbeelden voor dit onderwerp.

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.

Start building with Bird in minutes.