Preferensi
Preferensi adalah pernyataan tentang keinginan seseorang, yang dicatat berdasarkan handle mereka di satu kanal. Di WhatsApp handle-nya adalah nomor telepon dalam format E.164. Ini adalah catatan terpisah dari supresi, dan keduanya diperiksa sebelum pengiriman.
Preferensi masuk ke workspace Anda melalui tiga cara: WhatsApp melaporkannya, penerima mengetik kata kunci, atau Anda mencatatnya sendiri. Apa yang dapat Anda lakukan terhadap masing-masing bergantung pada siapa yang menyatakannya.
Isi sebuah preferensi
Sebuah pernyataan berupa revoked, opt-out, atau granted, persetujuan.
Pernyataan juga membawa cakupan, yang menentukan seberapa banyak lalu lintas yang dihentikan. non_transactional mencakup pesan pemasaran dan pesan non-esensial lainnya, sementara pesan transaksional seperti tanda terima dan kode verifikasi tetap terkirim. all mencakup semua pesan. Tab Preferences menampilkan ini di kolom Covers sebagai Non-transactional dan All messages.
Pernyataan dapat dipersempit ke satu pengirim dengan sender_scope, yang di WhatsApp mengidentifikasi akun bisnis. Tanpa itu, pernyataan mencakup seluruh kanal di workspace Anda, termasuk akun yang Anda hubungkan nanti.
Seseorang dapat memiliki beberapa baris di satu kanal, misalnya opt-out seluruh kanal di samping opt-out cakupan pengirim. Pernyataan paling ketat yang menentukan apakah pesan dikirim.
Preferensi yang dicatat Bird untuk Anda
Ketika Bird menerima event Meta yang menyatakan penerima telah menghentikan pesan pemasaran, sistem mencatat preferensi asal-penerima untuk WhatsApp Business Account tersebut. Preferensi ini mencakup pesan non-transaksional. Ini tidak membuat supresi semua-pesan, dan tidak meng-opt-out orang tersebut dari setiap akun di workspace Anda.
Penerima dapat menyatakan hal yang sama dengan membalas STOP. Preferensi tersebut dicakupkan ke akun bisnis yang mereka kirimi pesan, seperti di atas. Cakupannya adalah semua pesan, karena STOP yang diketik lebih luas daripada opt-out pemasaran WhatsApp. Lihat aturan kata kunci untuk mengetahui apa yang dikenali Bird dan cara mengubah balasannya.
Event resume berikutnya memperbarui preferensi akun tersebut. Supresi dan preferensi lain yang berlaku tetap diterapkan, sehingga event resume saja tidak membuktikan bahwa pengiriman diizinkan.
Preferensi yang Anda catat
Buka halaman Suppressions dan beralih ke tab Preferences. Mencatat satu preferensi di sana dengan Every business account in the workspace menghentikan alamat tersebut dari menerima pesan WhatsApp dari setiap akun yang Anda miliki, termasuk akun yang Anda hubungkan nanti.

Dialog Record opt-out di tab tersebut mencatat cakupan semua-pesan.

Untuk mencatat preferensi yang hanya menghentikan pemasaran, gunakan halaman Contacts > Preferences tingkat workspace, yang dialognya menawarkan Marketing messages maupun All messages.
Membaca preferensi dari kode
GET /v1/preferences mengembalikan preferensi yang tercatat di workspace, dimulai dari yang paling baru dibuat. Kirim channel=whatsapp untuk mempersempit ke kanal ini, dan handle bersamanya untuk melihat semua catatan satu nomor sebelum mengirim pesan kepada mereka:
for await (const preference of bird.preferences.list({
channel: "whatsapp",
handle: "+15550001234",
})) {
console.log(preference.status, preference.coverage, preference.sender_scope);
}for preference in client.preferences.list(channel="whatsapp", handle="+15550001234"):
print(preference.status, preference.coverage, preference.sender_scope)for pref, err := range client.Preferences.List(context.Background(), bird.PreferencesListParams{
Channel: bird.PreferenceChannelWhatsapp,
Handle: "+15550001234",
}) {
if err != nil {
log.Fatal(err)
}
fmt.Println(*pref.Status, *pref.Coverage)
}foreach ($bird->preferences->list(['channel' => 'whatsapp', 'handle' => '+15550001234']) as $preference) {
echo $preference->getStatus(), ' ', $preference->getCoverage(), PHP_EOL;
}bird preferences list --channel whatsapp --handle +15550001234curl "https://us1.platform.bird.com/v1/preferences?channel=whatsapp&handle=%2B15550001234" \
-H "Authorization: Bearer $BIRD_API_KEY"handle memerlukan channel, karena handle yang sama dapat ada di lebih dari satu kanal.
Mencatat preferensi dari kode
POST /v1/preferences mencatat satu pernyataan. Penulisan adalah upsert berdasarkan kunci kanal, handle, dan cakupan pengirim, sehingga pernyataan baru menggantikan pernyataan saat ini pada kunci tersebut:
const result = await bird.preferences.create({
channel: "whatsapp",
handle: "+15550001234",
status: "revoked",
coverage: "non_transactional",
});
console.log(result.applied, result.preference?.id);result = client.preferences.create(
channel="whatsapp",
handle="+15550001234",
status="revoked",
coverage="non_transactional",
)
print(result.applied, result.preference.id)result, err := client.Preferences.Create(context.Background(), bird.PreferencesCreateParams{
Channel: bird.PreferenceChannelWhatsapp,
Handle: "+15550001234",
Status: bird.PreferenceStatusRevoked,
Coverage: bird.PreferenceCoverageNonTransactional,
})
if err != nil {
log.Fatal(err)
}
// A newer statement already on file answers Applied false instead of an
// error, with the surviving statement in Preference.
if result.Applied != nil && *result.Applied {
fmt.Println("opt-out recorded")
}$result = $bird->preferences->create(
channel: 'whatsapp',
handle: '+15550001234',
status: 'revoked',
coverage: 'non_transactional',
);
echo var_export($result->getApplied(), true);bird preferences create \
--channel whatsapp \
--handle +15550001234 \
--status revoked \
--coverage non_transactionalcurl -X POST https://us1.platform.bird.com/v1/preferences \
-H "Authorization: Bearer $BIRD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"channel":"whatsapp","handle":"+15550001234","status":"revoked","coverage":"non_transactional"}'Pernyataan diurutkan berdasarkan kapan dibuat, bukan kapan tiba. API menolak pernyataan yang bertanggal lebih awal dari pernyataan saat ini pada kunci tersebut dan mengembalikan applied: false beserta pernyataan yang bertahan. Penolakan tetap tersimpan di riwayat kunci.
201 berarti kunci tersebut tidak memiliki catatan dan pernyataan ini membuatnya. 200 mengembalikan catatan yang bertahan pada kunci tersebut, baik pernyataan ini menggantikannya, mengulanginya, maupun ditolak.
Apa yang dapat Anda batalkan
Preferensi yang Anda catat dapat dihapus dari tab Preferences atau dengan DELETE /v1/preferences/{preference_id} setelah penerima meminta Anda melanjutkan pengiriman.
Pernyataan yang dibuat sendiri oleh penerima hanya dapat dibatalkan oleh mereka. Unsubscribe atau kata kunci stop berakhir ketika mereka opt-in kembali, dan delete mengembalikan 422. Untuk melanjutkan pengiriman pesan dengan persetujuan mereka, catat pernyataan granted yang membawa consented_at, momen saat mereka menyetujui. Pemberian berlaku ketika momen tersebut lebih baru dari opt-out yang dibatalkannya, sehingga mencatat perubahan keputusan alih-alih menghapus pernyataan asli.
Delete diurutkan seperti pernyataan lainnya, menggunakan waktu penerimaannya. Jika catatan memiliki pernyataan yang dibuat setelah momen tersebut, delete ditolak dan dikembalikan dengan applied: false beserta catatan yang bertahan.
Ketika kesalahan pengiriman tiba lebih dulu
Kesalahan pengiriman dari penyedia dapat melaporkan stop sebelum Bird mencatat event yang sesuai. Hormati pilihan penerima dan periksa riwayat preferensi serta event, alih-alih memperlakukan ketiadaan catatan lokal sebagai izin untuk mengirim.
Langkah selanjutnya
- Supresi: alamat yang diblokir langsung oleh workspace Anda.
- Aturan kata kunci: kata-kata yang mencatat preferensi pada nomor Anda.
- Event WhatsApp: payload whatsapp.rejected yang dihasilkan oleh pengiriman yang diblokir.
Sumber daya terkait
Lanjutkan dengan dokumentasi, panduan, dan contoh untuk topik ini. Sumber daya tersedia dalam bahasa Inggris.
Tonton panduannyaConnecting WhatsApp to Bird: from buying a number to a live channelPahami konsepnyaWhat is the 24-hour customer service window on WhatsApp?Gunakan alatnyaWhatsApp message builderJelajahi kemampuannyaWhatsApp
Coba praktiknya dan dapatkan ringkasan implementasi