SMS

Apa itu delivery receipt (DLR), dan seberapa andal hasilnya?

Delivery receipt (DLR) melaporkan hasil pengiriman pesan teks di jaringan, tetapi tidak membuktikan bahwa seseorang membacanya.

Permintaan pengiriman Anda bisa berhasil sebelum ponsel penerima menerima apa pun. Laporan operator yang datang kemudian memberikan hasil tambahan, yang harus ditangani aplikasi Anda secara terpisah dari penerimaan permintaan.

Apa yang disampaikan delivery receipt?

Tanda terima melaporkan keberhasilan pengiriman atau masalah pengiriman dari sudut pandang jaringan.

Hasil pengiriman SMS bisa tiba saat ponsel tergeletak belum dibaca di laci. Tanda terima ini tidak membuktikan bahwa penerima melihat identitas pengirim. Tanda terima ini juga tidak membuktikan bahwa mereka membaca seluruh isi pesan.

Jaringan mengirim tanda terima secara terpisah dari respons terhadap permintaan pengiriman. Jaringan juga dapat menahan sebagian laporan. Referensi tanda terima SMPP mendokumentasikan kontrol ini untuk koneksi operator.

Tanda terima operator mana yang ditampilkan Bird?

Anda menerima event publik untuk hasil pengiriman yang dikenali. Tanda terima yang di-buffer tetap bersifat internal.

Tanda terima yang di-buffer menunjukkan bahwa operator sedang menahan pesan. Bird mencatatnya di log event internal tanpa mengubah status pesan publik. Anda tidak melihat pembaruan di timeline publik maupun webhook Anda.

Status tanda terima operatorEvent Bird
deliveredsms.delivered
expiredsms.expired
rejectedsms.rejected
delivery_failed dengan alasan yang dapat dipulihkansms.undelivered
delivery_failed dengan alasan permanen atau tidak terpetakansms.failed
bufferedTidak ada event publik

Status operator yang tidak dikenali tidak menghasilkan event. Oleh karena itu, tidak adanya pembaruan publik tidak membuktikan bahwa operator tidak mengirim tanda terima.

Mengapa satu status kegagalan menghasilkan event yang berbeda?

Bird menggunakan alasan kegagalan dari operator untuk menentukan apakah masalah yang mendasarinya dapat teratasi.

Alasan operatorKode error BirdKlasifikasi
unavailable_subscriberunreachableDapat dipulihkan
received_network_errorprovider_unavailableDapat dipulihkan
capacity_limit_reachedprovider_unavailableDapat dipulihkan
unknown_subscriberinvalid_destinationPermanen
opted_outrecipient_opted_outPermanen
carrier_rejectedcontent_rejectedPermanen

Kegagalan yang dapat dipulihkan menghasilkan sms.undelivered. Pesan tetap bersifat final: Bird tidak mencoba ulang secara otomatis. Untuk menjangkau penerima, diperlukan pengiriman baru setelah masalah yang mendasarinya teratasi.

Kegagalan permanen menghasilkan sms.failed. Alasan yang tidak terpetakan juga menghasilkan event tersebut dengan kode error unknown. Hasil itu berarti Bird tidak dapat mengklasifikasikan alasan dari operator. Hal ini tidak secara independen membuktikan bahwa tujuan benar-benar tidak dapat dijangkau secara permanen.

Bisakah saya mengatur kapan operator berhenti mencoba?

Anda tidak dapat mengatur batas waktu pengiriman operator melalui endpoint pengiriman Bird.

Bird menolak validity_period yang dikirimkan dengan HTTP 422 SMSUnsupportedFeature. Field tersebut akan mengontrol berapa lama operator terus mencoba mengirim pesan.

Field respons yang bersesuaian tidak dikembalikan. Bird menghasilkan sms.expired saat operator melaporkan kedaluwarsa. Aplikasi Anda tidak dapat menyimpulkan periode tunggu operator dari field yang tidak ada.

Bagaimana cara menangani tanda terima di aplikasi saya?

Anda harus melacak hasil pengiriman secara terpisah dari penerimaan permintaan dan dari tindakan apa pun yang dilakukan penerima.

Perlakukan pesan tanpa hasil pengiriman final sebagai tertunda. Baca kode error bersama event kegagalan agar Anda dapat menyelidiki penyebabnya. Simpan kode yang tidak dikenal di log Anda karena set kode error dapat diperluas.

Gunakan event delivered untuk metrik pengiriman. Untuk alur kode verifikasi atau konfirmasi, catat keberhasilan saat penerima menyelesaikan tindakan. Delivery receipt saja tidak dapat memberikan pengukuran tersebut.

Event SMS mendokumentasikan payload event publik dan timeline pesan.

Singkatnya

  1. Pengiriman tidak membuktikan pembacaan.

    Tanda terima melaporkan hasil pengiriman di jaringan tanpa mengonfirmasi bahwa seseorang melihat pesan tersebut.

  2. Beberapa tanda terima tidak memiliki event publik.

    Bird mencatat tanda terima yang di-buffer secara internal tanpa mengubah status publik, timeline, atau aliran webhook.

  3. Alasan kegagalan menentukan event yang dihasilkan.

    Alasan operator yang dapat dipulihkan menghasilkan sms.undelivered; alasan permanen atau yang tidak terpetakan menghasilkan sms.failed.

  4. Alasan yang dapat dipulihkan tidak memicu pengiriman ulang.

    Pesan yang tidak terkirim bersifat final, sehingga percobaan berikutnya memerlukan pengiriman terpisah.

Terapkan dalam praktik.

Lanjutkan dengan dokumentasi, panduan, dan contoh untuk topik ini. Sumber daya tersedia dalam bahasa Inggris.

Dapatkan ringkasan implementasi

Bangun di jaringan yang sama.

Kunci API uji coba langsung tersedia untuk Anda. Akses produksi terbuka saat Anda menambahkan metode pembayaran dan memverifikasi pengirim.

Ide Anda berikutnya.
Siap terhubung.