# Regole per le keyword di WhatsApp

Bird include il catalogo di keyword, quindi un destinatario che risponde `STOP` a uno dei tuoi numeri abilitati alla ricezione viene escluso senza alcuna configurazione da parte tua. `START` annulla l'esclusione. Una tua regola personalizzata sovrascrive il comportamento predefinito di Bird per l'ambito che copre.

Questa pagina illustra cosa riconosce Bird, come viene confrontato un messaggio in entrata e come modificare il testo o aggiungere keyword. La pagina [**Keywords**](https://bird.com/dashboard/w/whatsapp/keyword-rules) è l'equivalente nella dashboard.

![Un elenco di regole per parole chiave, con le regole dello spazio di lavoro sopra le regole predefinite che sostituiscono](/images/docs/dashboard-whatsapp-keyword-rules.png)

## Cosa riconosce Bird per impostazione predefinita

Nove parole registrano un opt-out:

`stop`, `stop all`, `stopall`, `unsubscribe`, `cancel`, `end`, `quit`, `revoke`, `optout`

Due lo annullano: `start` e `unstop`.

Il confronto avviene sull'intero messaggio, non su una sottostringa. Poiché `cancel` e `end` sono keyword, questa distinzione è importante: "cancel my 3pm delivery" è un messaggio normale, non una revoca del consenso. Maiuscole/minuscole, accenti, spazi ripetuti e punteggiatura finale vengono ignorati, quindi `Stop!` e `STOP` corrispondono entrambi. La punteggiatura prima o all'interno della parola non viene ignorata, quindi `#stop` non corrisponde.

## Dove le keyword non vengono confrontate

Una keyword all'interno di un messaggio di gruppo viene ignorata, quindi un partecipante non può fare opt-out rispondendo lì. Gestisci l'opt-out dichiarato da un membro del gruppo nella tua logica di invio.

## Quando viene registrata la preferenza

La classificazione avviene in parallelo all'evento `whatsapp.received`, non prima. Un'integrazione in ascolto su quell'evento può quindi vedere arrivare un `STOP` prima che la preferenza che registra esista. Se il tuo handler reagisce al messaggio in entrata inviando qualcosa, rileggi i record del destinatario invece di dare per scontato l'ordine degli eventi.

## Vedere cosa si applica

`GET /v1/whatsapp/keyword-rules` descrive come vengono gestite le risposte ai tuoi numeri. Senza filtri, restituisce il catalogo di Bird insieme a tutte le regole che hai creato. Restringi i risultati con `country`, `waba`, `operation` o `scope`:

- `scope=system` restituisce il catalogo di Bird, inclusa la regola predefinita che una tua regola sovrascrive.
- `scope=workspace` restituisce solo le tue regole.

**TypeScript**

```typescript
const rules = await bird.whatsapp.keywordRules.list({ operation: "opt_out" });
for (const rule of rules.data ?? []) {
  console.log(rule.scope, rule.effective_keywords);
}
```

Examples: [TypeScript](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.ts.md) · [Python](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.py.md) · [Go](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.go.md) · [PHP](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.php.md) · [CLI](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.cli.md) · [MCP](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.mcp.md) · [cURL](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.curl.md)

Le regole vengono restituite dalla più specifica, che è l'ordine in cui un messaggio in entrata viene confrontato con esse. Ciascuna include `effective_keywords`: l'insieme di Bird per quell'operazione e paese, più tutto ciò che hai aggiunto.

Per una tua regola senza `country`, `effective_keywords` mostra l'insieme globale di Bird, perché la regola non ha un paese e quello del mittente è sconosciuto finché non arriva un messaggio. Quella regola viene confrontata con l'insieme di Bird per il paese del mittente, che può essere più ampio. Imposta un `country` sulla tua regola per vedere esattamente con cosa corrispondono quei mittenti.

`country` è il paese del mittente, ricavato dal suo numero di telefono e non dal numero a cui ha scritto. È il segnale di paese che WhatsApp invia. Un mittente identificato da un user ID con ambito business non ha un paese associato, quindi un messaggio da esso salta le regole per paese e corrisponde a una regola globale.

## Modificare la risposta

Le risposte predefinite di Bird sono corrette ma generiche. Per rispondere a tuo nome, crea una regola:

**TypeScript**

```typescript
const rule = await bird.whatsapp.keywordRules.create({
  operation: "opt_out",
  country: "US", // the SENDER's country, from their own number
  reply: "You're off the list. ACME Courier won't message you again.",
});
// effective_keywords is Bird's set plus any of your own.
console.log(rule.id, rule.effective_keywords);
```

Examples: [TypeScript](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.ts.md) · [Python](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.py.md) · [Go](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.go.md) · [PHP](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.php.md) · [CLI](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.cli.md) · [MCP](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.mcp.md) · [cURL](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.curl.md)

La tua regola sostituisce la risposta di Bird per quell'ambito e mantiene le keyword di Bird. I tuoi `keywords` sono aggiunte, non una sostituzione, quindi una keyword che Bird introduce in seguito inizia a corrispondere senza modifiche da parte tua.

Per non inviare nulla pur registrando l'opt-out, ometti `reply` quando crei la regola. Per silenziare una regola esistente, imposta `reply` a `null` in un body JSON nell'aggiornamento qui sotto; un flag CLI non può contenere `null`.

![Una finestra di dialogo per aggiungere una regola per parole chiave, con campi per parole chiave aggiuntive e una risposta](/images/docs/dashboard-whatsapp-keyword-rule-dialog.png)

## Aggiungere keyword personalizzate

**TypeScript**

```typescript
// Omitting keywords leaves the set alone; an empty array clears your additions
// back to Bird's. reply: null switches the auto-reply off and still records
// the opt-out.
const rule = await bird.whatsapp.keywordRules.update("wkr_01m2kj8x4te9p0rr7e5w2n1abc", {
  keywords: ["no more texts", "remove me"],
});
console.log(rule.effective_keywords);
```

Examples: [TypeScript](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.ts.md) · [Python](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.py.md) · [Go](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.go.md) · [PHP](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.php.md) · [CLI](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.cli.md) · [MCP](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.mcp.md) · [cURL](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.curl.md)

Omettere `keywords` lascia invariate le tue aggiunte. Inviare un array vuoto le riporta all'insieme di Bird.

## Ambito delle regole e duplicati

Una regola può restringersi a un singolo WhatsApp Business Account con `waba`, a un singolo paese del mittente con `country`, a entrambi o a nessuno dei due. Puoi avere una sola regola per combinazione di operazione, paese e account. Una seconda scrittura per la stessa combinazione restituisce un errore di duplicato.

Bird rifiuta una regola che associa `stop` a `opt_in`, sia che la parola provenga dal catalogo di Bird sia da un'altra delle tue regole, in modo che una parola di opt-out non possa essere usata per concedere il consenso.

## Eliminare una regola

Eliminare la tua regola trasferisce quell'ambito alla regola successiva nell'ordine di corrispondenza, che non è sempre una delle tue. L'ordine è:

1. La tua regola per un account e un paese.
2. La tua regola per l'account.
3. La tua regola per il paese.
4. La regola di Bird per il paese del mittente.
5. La tua regola globale.
6. La regola globale di Bird.

Eliminare la tua regola per un paese trasferisce quindi l'ambito alla regola di Bird per quel paese prima della tua regola globale:

**TypeScript**

```typescript
// The next rule in the ladder answers the scope, which is another rule of yours if you hold a less specific one; STOP never stops working.
await bird.whatsapp.keywordRules.delete("wkr_01m2kj8x4te9p0rr7e5w2n1abc");
```

Examples: [TypeScript](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.ts.md) · [Python](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.py.md) · [Go](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.go.md) · [PHP](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.php.md) · [CLI](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.cli.md) · [MCP](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.mcp.md) · [cURL](/it-it/documentazione/guides/whatsapp/opt-outs/keyword-rules.curl.md)

Eliminare una regola non interrompe il funzionamento di `STOP`. Riporta il testo e l'insieme di keyword alla regola successiva in quell'ordine.

## Prossimi passi

- [Preferenze](/docs/guides/whatsapp/opt-outs/preferences): i record creati da una keyword e quali puoi annullare.
- [Soppressioni](/docs/guides/whatsapp/opt-outs/suppressions): gli indirizzi che il tuo spazio di lavoro blocca direttamente.
- [Opt-out e keyword per SMS](/docs/guides/sms/opt-outs-and-keywords): lo stesso meccanismo sull'altro canale, che include anche keyword di help e campagna.

## Related resources

- [Connecting WhatsApp to Bird: from buying a number to a live channel](/learn/whatsapp/connecting-whatsapp-to-bird) (video)
- [What is the 24-hour customer service window on WhatsApp?](/explained/whatsapp/what-is-the-24-hour-customer-service-window) (answer)
- [WhatsApp message builder](/tools/whatsapp-message-builder) (tool)
- [WhatsApp](/whatsapp-api) (product)

[Get an implementation brief](/learn/workspace?topic=whatsapp)
