Preferenze
Una preferenza è una dichiarazione su ciò che una persona desidera, registrata sul suo handle in un canale. Su WhatsApp l'handle è un numero di telefono in formato E.164. È un record separato da una soppressione, ed entrambi vengono verificati prima di un invio.
Le preferenze raggiungono il tuo spazio di lavoro in tre modi: WhatsApp ne segnala una, un destinatario digita una keyword, oppure ne registri una tu stesso. Cosa puoi fare con ciascuna dipende da chi l'ha dichiarata.
Cosa contiene una preferenza
Una dichiarazione è revoked, un opt-out, oppure granted, un consenso.
Contiene anche una copertura, che determina quanto traffico blocca. non_transactional copre i messaggi di marketing e altri messaggi non essenziali, mentre i messaggi transazionali come ricevute e codici di verifica continuano a essere recapitati. all copre ogni messaggio. La scheda Preferences li mostra nella colonna Covers come Non-transactional e All messages.
Una dichiarazione può restringersi a un singolo mittente con sender_scope, che su WhatsApp identifica l'account business. Senza di esso, la dichiarazione copre il canale nell'intero spazio di lavoro, compresi gli account che colleghi in seguito.
Una persona può avere più righe su un canale, ad esempio un opt-out a livello di canale accanto a uno con ambito mittente. La dichiarazione più restrittiva decide se un messaggio viene inviato.
Preferenze che Bird registra per te
Quando Bird riceve un evento Meta che indica che un destinatario ha interrotto i messaggi di marketing, registra una preferenza di origine destinatario per quell'account business WhatsApp. La preferenza copre i messaggi non transazionali. Non crea una soppressione per tutti i messaggi e non esclude la persona da ogni account nel tuo spazio di lavoro.
Un destinatario può dichiarare la stessa cosa rispondendo STOP. Quella preferenza ha come ambito l'account business a cui ha scritto, come quella precedente. Copre tutti i messaggi, perché un STOP digitato è più ampio dell'opt-out marketing di WhatsApp. Consulta le regole keyword per sapere cosa riconosce Bird e come modificare la risposta.
Un evento di ripresa successivo aggiorna la preferenza di quell'account. Le soppressioni e le altre preferenze applicabili restano in vigore, quindi un evento di ripresa da solo non dimostra che un invio sia consentito.
Preferenze che registri tu
Apri la pagina Suppressions e passa alla scheda Preferences. Registrandone una con Every business account in the workspace impedisci all'indirizzo di ricevere messaggi WhatsApp da ogni account che possiedi, compresi quelli che colleghi in seguito.

Il dialog Record opt-out in quella scheda registra una copertura per tutti i messaggi.

Per registrarne una che blocchi solo il marketing, usa la pagina Contacts > Preferences a livello di spazio di lavoro, il cui dialog offre Marketing messages oltre a All messages.
Leggere le preferenze da codice
GET /v1/preferences restituisce le preferenze registrate dello spazio di lavoro, dalla più recente alla meno recente. Passa channel=whatsapp per restringere a questo canale e handle insieme per consultare tutto ciò che è registrato per un numero prima di inviargli un messaggio:
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 richiede channel, poiché lo stesso handle può esistere su più di un canale.
Registrare una preferenza da codice
POST /v1/preferences registra una dichiarazione. La scrittura è un upsert con chiave su canale, handle e ambito mittente, quindi una nuova dichiarazione sostituisce quella corrente della chiave:
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"}'Le dichiarazioni sono ordinate in base a quando sono state fatte, non a quando arrivano. API rifiuta una dichiarazione con data anteriore a quella corrente della chiave e restituisce applied: false con la dichiarazione rimasta in vigore. Il rifiuto resta nella cronologia della chiave.
Un 201 significa che la chiave non aveva alcun record e questa dichiarazione ne ha creato uno. Un 200 restituisce il record rimasto in vigore della chiave, sia che questa dichiarazione lo abbia sostituito, ripetuto o sia stata rifiutata.
Cosa puoi annullare
Una preferenza che hai registrato tu puoi rimuoverla dalla scheda Preferences o con DELETE /v1/preferences/{preference_id} quando il destinatario ti chiede di riprendere l'invio.
Una dichiarazione fatta dalla persona stessa spetta a lei annullarla. Un'annullamento dell'iscrizione o una keyword di stop termina quando la persona effettua di nuovo l'opt-in, e un'eliminazione restituisce 422. Per riprendere l'invio con il suo consenso, registra una dichiarazione granted con consented_at, il momento in cui ha acconsentito. Il consenso si applica quando quel momento è successivo all'opt-out che annulla, registrando così il cambio di decisione anziché cancellare la dichiarazione originale.
Un'eliminazione è ordinata come qualsiasi altra dichiarazione, in base al momento in cui viene ricevuta. Se il record contiene una dichiarazione fatta dopo quel momento, l'eliminazione viene rifiutata e restituita con applied: false insieme al record rimasto in vigore.
Quando un errore di recapito arriva prima
Un errore di recapito del provider può segnalare uno stop prima che Bird abbia registrato un evento corrispondente. Rispetta la scelta del destinatario e indaga la cronologia delle preferenze e degli eventi anziché trattare l'assenza di un record locale come permesso di inviare.
Passaggi successivi
- Soppressioni: gli indirizzi che il tuo spazio di lavoro blocca direttamente.
- Regole keyword: le parole che registrano una preferenza sui tuoi numeri.
- Eventi WhatsApp: il payload whatsapp.rejected prodotto da un invio bloccato.
Risorse correlate
Prosegui con la documentazione, le guide e gli esempi per questo argomento. Le risorse sono in inglese.
Guarda la guidaConnecting WhatsApp to Bird: from buying a number to a live channelComprendi il concettoWhat is the 24-hour customer service window on WhatsApp?Usa lo strumentoWhatsApp message builderEsplora la funzionalitàWhatsApp
Prova l'esercitazione e ottieni un brief di implementazione