Suppression
Suppression adalah alamat yang tidak akan dikirim pesan oleh workspace Anda, dicatat dengan cakupan tertentu. Bird memblokir pengiriman ke alamat yang di-suppress sebelum mencapai WhatsApp.
Buka halaman Suppressions untuk mengelola daftar, atau gunakan API di bawah. Catatan yang dinyatakan penerima ada di tab Preferences pada halaman yang sama dan mengikuti aturan berbeda.

Meng-suppress akun bisnis
Dari tab Suppressions, buat suppression untuk nomor telepon dan pilih akun bisnis yang berlaku. Bird memblokir pesan dari akun tersebut, dan akun lain Anda tetap dapat mengirim pesan ke nomor itu. Kolom Business account di daftar menampilkan akun yang dicakup suppression, atau bertuliskan All accounts jika mencakup seluruh workspace Anda.
POST /v1/whatsapp/suppressions mencatat hal yang sama dari kode. waba adalah akun yang akan dicakup; hilangkan untuk memblokir alamat di seluruh workspace Anda, termasuk akun yang Anda hubungkan nanti:
// Omit waba to block the address for the whole workspace, whichever account
// sends. With it, your other accounts keep reaching them, and the same
// address for two accounts is two records.
const suppression = await bird.whatsapp.suppressions.add({
address: "+15550001234",
waba: "102290129340398",
});
console.log(suppression.id, suppression.applies_to);# Omit waba to block the address for the whole workspace, whichever account
# sends. With it, your other accounts keep reaching them, and the same
# address for two accounts is two records.
suppression = client.whatsapp.suppressions.add(
address="+15550001234",
waba="102290129340398",
)
print(suppression.id, suppression.applies_to)suppression, err := client.Whatsapp.Suppressions.Add(context.Background(), bird.WhatsappSuppressionsAddParams{
Address: "+15550001234",
// Omit Waba to block the address for the whole workspace, whichever account
// sends. With it, your other accounts keep reaching them, and the same
// address for two accounts is two records.
Waba: &waba,
})
if err != nil {
log.Fatal(err)
}
fmt.Println(suppression.Id, suppression.AppliesTo)// Omit setWaba to block the address for the whole workspace, whichever account
// sends. With it, your other accounts keep reaching them, and the same address
// for two accounts is two records.
$suppression = $bird->whatsapp->suppressions->add(
(new WhatsAppSuppressionCreate())
->setAddress('+15550001234')
->setWaba('102290129340398'),
);
echo $suppression->getId(), ' ', $suppression->getAppliesTo();bird whatsapp suppressions add --address +5511977670804curl -X POST https://us1.platform.bird.com/v1/whatsapp/suppressions \
-H "Authorization: Bearer $BIRD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"address":"+15550001234","waba":"102290129340398"}'
Satu cakupan, satu catatan
Sebuah suppression memiliki satu cakupan, jadi alamat yang sama diblokir untuk dua akun berarti dua catatan, bukan satu. Untuk mencakup seluruh workspace, buat satu panggilan tanpa waba.
Menambahkan alamat yang sudah di-suppress untuk cakupan tersebut mengembalikan 200 beserta catatan yang ada, bukan membuat catatan kedua. Catatan baru mengembalikan 201.
Suppression dikunci berdasarkan alamat yang Anda catat. Penerima yang dijangkau melalui nomor telepon dan penerima yang sama yang dijangkau melalui user ID bercakupan bisnis adalah dua kunci berbeda, jadi meng-suppress satu tidak meng-suppress yang lain. Catat keduanya jika Anda mengirim ke orang yang sama dengan kedua cara.
Membaca daftar suppression Anda
GET /v1/whatsapp/suppressions mengembalikan suppression yang berlaku, terbaru lebih dulu, sebagai halaman kursor. address memfilter berdasarkan prefiks dan mengabaikan huruf besar-kecil: nilai parsial mencocokkan setiap alamat di bawahnya, dan nilai lengkap mencocokkan alamat itu saja. reason mempersempit ke kategori, misalnya manual untuk yang Anda tambahkan sendiri:
// address is a prefix, so a partial value matches every address under it.
const suppressions = await bird.whatsapp.suppressions.list({ address: "+1555" });
for (const suppression of suppressions.data ?? []) {
console.log(suppression.address, suppression.waba ?? "every account");
}# address is a prefix, so a partial value matches every address under it.
suppressions = client.whatsapp.suppressions.list(address="+1555")
for suppression in suppressions.data or []:
print(suppression.address, suppression.waba or "every account")for suppression, err := range client.Whatsapp.Suppressions.List(context.Background(), bird.WhatsappSuppressionsListParams{
Address: "+1555", // a prefix, so a partial value matches every address under it
}) {
if err != nil {
log.Fatal(err)
}
fmt.Println(suppression.Address, suppression.Reason)
}// address is a prefix, so a partial value matches every address under it.
foreach ($bird->whatsapp->suppressions->list(['address' => '+1555']) as $suppression) {
echo $suppression->getAddress(), ' ', $suppression->getWaba() ?? 'every account', PHP_EOL;
}bird whatsapp suppressions listcurl "https://us1.platform.bird.com/v1/whatsapp/suppressions?address=%2B1555" \
-H "Authorization: Bearer $BIRD_API_KEY"Daftar berisi yang sedang berlaku, dan catatan yang sudah berakhir tidak disertakan. Alamat yang tidak ada tidak membuktikan workspace tidak pernah meng-suppress-nya; catatannya mungkin sudah berakhir. Baca berdasarkan ID untuk memastikan.
Membaca satu catatan
GET /v1/whatsapp/suppressions/{suppression_id} menampilkan catatan yang sudah berakhir maupun yang masih berlaku, melaporkan kapan berakhir dan apa yang mengakhirinya:
// Resolves a record that has already ended, which the list leaves out.
const suppression = await bird.whatsapp.suppressions.get("was_01krdgeqcxet5s7t44vh8rt9mg");
console.log(suppression.reason, suppression.ended_at ?? "still in force");# Resolves a record that has already ended, which the list leaves out.
suppression = client.whatsapp.suppressions.get("was_01krdgeqcxet5s7t44vh8rt9mg")
print(suppression.reason, suppression.ended_at or "still in force")suppression, err := client.Whatsapp.Suppressions.Get(context.Background(), "was_01krdgeqcxet5s7t44vh8rt9mg")
if err != nil {
log.Fatal(err)
}
fmt.Println(suppression.Reason, suppression.EndedAt)// Resolves a record that has already ended, which the list leaves out.
$suppression = $bird->whatsapp->suppressions->get('was_01krdgeqcxet5s7t44vh8rt9mg');
echo $suppression->getReason(), ' ', $suppression->getEndedAt()?->format(DATE_ATOM) ?? 'still in force';bird whatsapp suppressions get <suppression-id>curl https://us1.platform.bird.com/v1/whatsapp/suppressions/was_01krdgeqcxet5s7t44vh8rt9mg \
-H "Authorization: Bearer $BIRD_API_KEY"Mengakhiri suppression
Aksi Delete pada baris suppression mengakhiri suppression, bukan menghapusnya. Pemblokiran berhenti. Catatan tetap dapat dibaca dan menunjukkan kapan berakhir serta siapa yang mengakhirinya. DELETE /v1/whatsapp/suppressions/{suppression_id} melakukan hal yang sama dan mengembalikan 204:
// Only a manual suppression can be ended; a recipient's own opt-out is
// theirs to reverse. The record is kept and still reads back by id.
await bird.whatsapp.suppressions.remove("was_01krdgeqcxet5s7t44vh8rt9mg");# Only a manual suppression can be ended; a recipient's own opt-out is
# theirs to reverse. The record is kept and still reads back by id.
client.whatsapp.suppressions.remove("was_01krdgeqcxet5s7t44vh8rt9mg")if err := client.Whatsapp.Suppressions.Remove(context.Background(), "was_01krdgeqcxet5s7t44vh8rt9mg"); err != nil {
log.Fatal(err)
}// Only a manual suppression can be ended; a recipient's own opt-out is theirs
// to reverse. The record is kept and still reads back by id.
$bird->whatsapp->suppressions->remove('was_01krdgeqcxet5s7t44vh8rt9mg');bird whatsapp suppressions remove <suppression-id> --yescurl -X DELETE https://us1.platform.bird.com/v1/whatsapp/suppressions/was_01krdgeqcxet5s7t44vh8rt9mg \
-H "Authorization: Bearer $BIRD_API_KEY"Suppression yang Anda tambahkan sendiri memiliki reason manual dan dapat diakhiri. Opt-out dari penerima sendiri hanya dapat dibalik oleh mereka, dan upaya mengakhirinya mengembalikan 422. Memanggil ini lagi pada suppression yang sudah berakhir berhasil tanpa mengubah apa pun, dan ID yang tidak dimiliki workspace mengembalikan 404.
Mengakhiri suppression memerlukan ID-nya, jadi cari dulu melalui daftar.
Memantau suppression baru
whatsapp_suppression.created terpicu saat suppression dicatat, sehingga sistem Anda dapat melihat pemblokiran baru tanpa polling. Payload-nya berisi:
- suppression_id, identifier catatan.
- address, nomor yang di-suppress dalam format E.164.
- waba, akun yang dicakup pemblokiran, atau null jika mencakup seluruh workspace.
- reason dan workspace_id.
Tidak ada event yang terpicu saat suppression berakhir, jadi baca ulang daftar sebelum memercayai salinan yang Anda simpan. Lihat event WhatsApp untuk payload lengkap.
Langkah berikutnya
- Preferences: catatan yang dinyatakan penerima, dan mana yang dapat Anda balik.
- Event WhatsApp: payload whatsapp.rejected yang dihasilkan saat pengiriman diblokir.
- Mengirim pesan WhatsApp: API pengiriman dan model pengiriman asinkronnya.
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