Mengirim ulang setelah hanya melihat penerimaan dapat menghasilkan pesan duplikat. Lacak pengiriman pertama melalui event berikutnya sebelum memutuskan untuk mencoba lagi.
Simpan identifier pesan yang dikembalikan oleh permintaan pengiriman Anda. Identifier ini menghubungkan penerimaan awal ke event berikutnya tentang pesan tersebut.
Apa yang terjadi antara accepted dan delivered?
Email melewati tahap persiapan. Pesan SMS melewati tahap serah terima ke operator seluler.
Anda dapat melacak pengiriman Bird melalui tipe event berikut:
| Kanal | Event | Yang terjadi |
|---|---|---|
email.accepted | Bird menerima pengiriman dan menyiapkannya, satu per penerima yang diminta. | |
email.processed | Bird menyiapkan pesan untuk dikirim ke mail server penerima. | |
email.delivered | Mail server penerima menerima pesan tersebut. | |
| SMS | sms.accepted | Bird menerima permintaan pengiriman dan memasukkannya ke antrean untuk diproses. |
| SMS | sms.sent | Bird menyerahkan pesan ke operator. |
| SMS | sms.delivered | Operator melaporkan pengiriman ke perangkat penerima. |
Bandingkan waktu event di timestamp untuk menemukan keterlambatan. Waktu kedatangan webhook juga mencakup keterlambatan pengirimannya sendiri.
Untuk email, kurangi waktu penerimaan dari waktu persiapan untuk mengukur durasi persiapan di dalam Bird. Interval setelah persiapan juga mencakup waktu menunggu untuk mencapai server penerima.
Untuk SMS, kurangi waktu penerimaan dari waktu serah terima ke operator untuk mengukur durasi sebelum serah terima. Interval dari serah terima ke pengiriman mengukur sisa waktu pengiriman.
Sebagai contoh, sebuah SMS yang diterima pada siang hari dan diserahkan dua detik kemudian menghabiskan dua detik sebelum serah terima ke operator. Jika pengiriman terjadi delapan detik setelahnya, totalnya adalah sepuluh detik.
Mengapa pesan masih belum terkirim?
Pesan mungkin masih menunggu. Event berikutnya mungkin justru melaporkan pengiriman yang gagal.
Event penerimaan saja tidak dapat membedakan kedua hasil tersebut. Baca event berikutnya untuk pesan yang sama sebelum memutuskan apakah akan mengirimnya lagi.
Email melaporkan hasil berikut:
email.deferredberarti pengiriman tertunda setelah kegagalan sementara. Bird mencoba lagi, sehingga pesan masih dapat terkirim atau bounce kemudian.email.bouncedberarti server penerima menolak pengiriman.email.rejectedberarti Bird menolak pesan sebelum percobaan pengiriman. Selidiki alasan penolakan sebelum mengubah pengaturan mail server penerima.
SMS menggunakan rangkaian yang berbeda:
sms.undeliveredmelaporkan kegagalan pengiriman tidak permanen dari operator.sms.failedmelaporkan kegagalan pengiriman permanen.sms.rejectedberarti Bird menolak pesan sebelum serah terima ke operator.sms.expiredberarti masa berlaku pesan habis sebelum terkirim.
Baca error yang menyertai hasil gagal untuk mengidentifikasi penyebabnya. Pemfilteran operator terhadap SMS menjelaskan salah satu kemungkinan penyebab.
Apakah ada satu siklus hidup yang bisa saya pelajari?
Setiap kanal memiliki urutan status pengiriman sendiri.
Server email dapat meminta pengirim untuk mencoba lagi nanti. Operator SMS dapat berhenti mencoba ketika pesan kedaluwarsa. Hasil-hasil tersebut memerlukan tindakan pemulihan yang berbeda.
WhatsApp dan voice juga melaporkan tipe event mereka sendiri. Panduan event mereka menjelaskan status yang relevan: email, SMS, WhatsApp, dan voice.
Bisakah pesan yang sudah terkirim berubah menjadi tidak terkirim?
Sebuah email dapat berpindah dari delivered ke bounced setelah mail server penerima melaporkan kegagalan pengiriman di kemudian waktu.
Server terlebih dahulu menerima pesan melalui SMTP. Server dapat melaporkan kegagalan secara terpisah setelah pertukaran tersebut selesai.
Bird mencatat laporan tersebut sebagai email.out_of_band_bounce. Ketika laporan diklasifikasikan sebagai bounce, status penerima berpindah dari delivered ke bounced. Untuk hard bounce, Bird juga menekan alamat tersebut untuk memblokir pengiriman selanjutnya karena kegagalannya bersifat permanen.
Auto-reply dapat muncul di timeline tanpa mengubah status pengiriman. Klasifikasi laporan menentukan apakah penerimaan sebelumnya dibatalkan.
Pertahankan status pengiriman agar dapat diperbarui setelah event yang berhasil. Webhook dapat tiba tidak berurutan, jadi bandingkan timestamp event sebelum menerapkan perubahan yang akan menimpa status yang lebih baru.
Singkatnya
Penerimaan mengonfirmasi permintaan pengiriman.
Bird mulai menyiapkan pesan setelah penerimaan. Event ini tidak mengonfirmasi pesan tiba di mail server atau perangkat.
Persiapan dan serah terima adalah batas yang berbeda.
Email melaporkan persiapan dengan email.processed. SMS melaporkan serah terima ke operator dengan sms.sent.
Kegagalan memiliki arti spesifik per kanal.
Email dapat ditunda, bounce, atau ditolak. SMS membedakan hasil undelivered, failed, rejected, dan expired.
Pengiriman email dapat diikuti oleh bounce.
Laporan bounce yang datang kemudian dapat mengubah status penerima email dari delivered menjadi bounced. Auto-reply tidak mengubah status pengiriman.