SMS

Czym jest potwierdzenie dostarczenia (DLR) i na ile jest wiarygodne?

Potwierdzenie dostarczenia (DLR) raportuje wynik dostarczenia wiadomości tekstowej w sieci, ale nie potwierdza, że ktokolwiek ją przeczytał.

Twoje żądanie wysyłki może się powieść, zanim telefon odbiorcy cokolwiek otrzyma. Późniejszy raport operatora dostarcza kolejny wynik, który Twoja aplikacja musi obsłużyć niezależnie od akceptacji żądania.

Co mówi mi potwierdzenie dostarczenia?

Potwierdzenie raportuje sukces dostarczenia lub problem z dostarczeniem z perspektywy sieci.

Wynik dostarczenia SMS może nadejść, gdy telefon leży nieprzeczytany w szufladzie. Nie dowodzi, że odbiorca zobaczył tożsamość nadawcy. Nie potwierdza też, że przeczytał całą wiadomość.

Sieć wysyła potwierdzenia niezależnie od odpowiedzi na żądanie wysyłki. Może też pomijać niektóre raporty. Dokumentacja potwierdzeń SMPP opisuje te mechanizmy dla połączeń z operatorem.

Które potwierdzenia od operatora udostępnia Bird?

Otrzymujesz publiczne zdarzenia dla rozpoznanych wyników dostarczenia. Zbuforowane potwierdzenia pozostają wewnętrzne.

Zbuforowane potwierdzenie oznacza, że operator wstrzymuje wiadomość. Bird rejestruje je w wewnętrznym logu zdarzeń, nie zmieniając publicznego statusu wiadomości. Nie zobaczysz aktualizacji na publicznej osi czasu ani w webhookach.

Status potwierdzenia od operatoraZdarzenie Bird
deliveredsms.delivered
expiredsms.expired
rejectedsms.rejected
delivery_failed z odwracalną przyczynąsms.undelivered
delivery_failed z trwałą lub niesklasyfikowaną przyczynąsms.failed
bufferedBrak publicznego zdarzenia

Nierozpoznany status operatora nie generuje zdarzenia. Brak publicznej aktualizacji nie oznacza więc, że operator nie wysłał potwierdzenia.

Dlaczego jeden status błędu generuje różne zdarzenia?

Bird używa przyczyny błędu od operatora, aby ustalić, czy problem może ustąpić.

Przyczyna operatoraKod błędu BirdKlasyfikacja
unavailable_subscriberunreachableOdwracalny
received_network_errorprovider_unavailableOdwracalny
capacity_limit_reachedprovider_unavailableOdwracalny
unknown_subscriberinvalid_destinationTrwały
opted_outrecipient_opted_outTrwały
carrier_rejectedcontent_rejectedTrwały

Odwracalny błąd generuje sms.undelivered. Wiadomość jest mimo to ostateczna: Bird nie ponawia jej automatycznie. Dotarcie do odbiorcy wymaga osobnego wysłania po ustąpieniu problemu.

Trwały błąd generuje sms.failed. Niesklasyfikowana przyczyna również generuje to zdarzenie z kodem błędu unknown. Ten wynik oznacza, że Bird nie zdołał sklasyfikować przyczyny od operatora. Nie dowodzi to samo w sobie, że cel jest trwale nieosiągalny.

Czy mogę ustawić, kiedy operator przestaje próbować?

Nie możesz ustawić terminu dostarczenia operatora przez endpoint wysyłki Bird.

Bird odrzuca każde podane validity_period z HTTP 422 SMSUnsupportedFeature. To pole kontrolowałoby, jak długo operator próbuje dostarczyć wiadomość.

Odpowiadające pole odpowiedzi nie jest zwracane. Bird generuje sms.expired, gdy operator zgłosi wygaśnięcie. Twoja aplikacja nie może wywnioskować okresu oczekiwania operatora z nieobecnego pola.

Jak obsługiwać potwierdzenia w mojej aplikacji?

Śledź wyniki dostarczenia niezależnie od akceptacji żądania i od działań odbiorcy.

Traktuj wiadomość bez ostatecznego wyniku dostarczenia jako oczekującą. Odczytaj kod błędu ze zdarzenia błędu, aby móc zbadać jego przyczynę. Zachowuj nieznane kody w logach, ponieważ zbiór kodów błędów jest rozszerzalny.

Używaj zdarzeń dostarczenia do metryki dostarczeń. W przypadku kodu weryfikacyjnego lub przepływu potwierdzenia rejestruj sukces, gdy odbiorca wykona akcję. Samo potwierdzenie dostarczenia nie dostarcza takiego pomiaru.

Zdarzenia SMS dokumentuje ładunki publicznych zdarzeń i oś czasu wiadomości.

W skrócie

  1. Dostarczenie nie potwierdza odczytania.

    Potwierdzenie raportuje wynik dostarczenia w sieci, nie potwierdzając, że odbiorca zobaczył wiadomość.

  2. Niektóre potwierdzenia nie mają publicznego zdarzenia.

    Bird rejestruje zbuforowane potwierdzenia wewnętrznie, nie zmieniając publicznego statusu, osi czasu ani strumienia webhooków.

  3. Przyczyna determinuje zdarzenie błędu.

    Odwracalne przyczyny operatora generują sms.undelivered; trwałe lub niesklasyfikowane przyczyny generują sms.failed.

  4. Odwracalna przyczyna nie wyzwala ponownego wysłania.

    Niedostarczona wiadomość jest ostateczna, więc kolejna próba wymaga osobnego wysłania.

Zastosuj w praktyce.

Kontynuuj z dokumentacją, przewodnikami i przykładami dotyczącymi tego tematu. Zasoby są w języku angielskim.

Uzyskaj brief wdrożeniowy

Buduj na tej samej sieci.

Testowy klucz API otrzymasz od razu. Dostęp produkcyjny odblokujesz po dodaniu metody płatności i zweryfikowaniu nadawcy.

Twój kolejny pomysł.
Gotowy do połączenia.