# Règles de mots-clés

Bird fournit le catalogue de mots-clés : un destinataire qui répond `STOP` à l'un de vos numéros capables de recevoir est désinscrit sans aucune configuration de votre part. `START` annule cette désinscription. Une règle que vous créez remplace le comportement par défaut de Bird pour la portée qu'elle couvre.

Cette page décrit ce que Bird reconnaît, comment un message entrant est comparé aux mots-clés, et comment modifier le texte de réponse ou ajouter des mots-clés. La page [**Keywords**](https://bird.com/dashboard/w/whatsapp/keyword-rules) est l'équivalent dans le tableau de bord.

![Une liste de règles de mots-clés, avec les règles de l'espace de travail au-dessus des règles par défaut qu'elles remplacent](/images/docs/dashboard-whatsapp-keyword-rules.png)

## Ce que Bird reconnaît par défaut

Neuf mots enregistrent une désinscription :

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

Deux l'annulent : `start` et `unstop`.

La correspondance porte sur le message entier et non sur une sous-chaîne. Comme `cancel` et `end` sont des mots-clés, cette distinction compte : "cancel my 3pm delivery" est un message ordinaire et non un retrait de consentement. La casse, les accents, les espaces répétés et la ponctuation finale sont ignorés : `Stop!` et `STOP` correspondent tous les deux. La ponctuation avant ou à l'intérieur du mot n'est pas ignorée : `#stop` ne correspond pas.

## Cas où les mots-clés ne sont pas comparés

Un mot-clé dans un message de groupe est ignoré : un participant ne peut pas se désinscrire en y répondant. Respectez la désinscription exprimée par un membre du groupe dans votre propre logique d'envoi.

## Quand la préférence est enregistrée

La classification s'exécute en parallèle de l'événement `whatsapp.received`, et non avant. Une intégration qui surveille cet événement peut donc voir un `STOP` arriver avant que la préférence qu'il enregistre n'existe. Si votre gestionnaire réagit au message entrant en envoyant quelque chose, relisez les enregistrements du destinataire au lieu de supposer l'ordre des événements.

## Voir ce qui s'applique

`GET /v1/whatsapp/keyword-rules` décrit comment les réponses à vos numéros sont traitées. Sans filtre, il renvoie le catalogue de Bird ainsi que les règles que vous avez créées. Affinez avec `country`, `waba`, `operation` ou `scope` :

- `scope=system` renvoie le catalogue de Bird, y compris la règle par défaut qu'une de vos règles remplace.
- `scope=workspace` renvoie vos propres règles.

**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](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.ts.md) · [Python](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.py.md) · [Go](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.go.md) · [PHP](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.php.md) · [CLI](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.cli.md) · [MCP](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.mcp.md) · [cURL](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.curl.md)

Les règles sont renvoyées de la plus spécifique à la moins spécifique, c'est-à-dire l'ordre dans lequel un message entrant est comparé à celles-ci. Chacune contient `effective_keywords` : l'ensemble de Bird pour cette opération et ce pays, plus ce que vous avez ajouté.

Pour une de vos règles sans `country`, `effective_keywords` affiche l'ensemble mondial de Bird, car la règle n'a pas de pays et celui de l'expéditeur est inconnu tant qu'un message n'arrive pas. Cette règle est comparée à l'ensemble de Bird pour le pays de l'expéditeur, qui peut être plus large. Définissez un `country` sur votre règle pour voir exactement ce que ces expéditeurs déclenchent.

`country` est le pays de l'expéditeur, déterminé à partir de son propre numéro de téléphone et non du numéro qu'il a contacté. C'est le signal de pays que WhatsApp envoie. Un expéditeur identifié par un identifiant utilisateur au niveau du compte n'a pas de pays : un message provenant de celui-ci saute les règles par pays et correspond à une règle mondiale à la place.

## Modifier la réponse

Les réponses par défaut de Bird sont correctes mais génériques. Pour répondre en votre propre nom, créez une règle :

**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](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.ts.md) · [Python](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.py.md) · [Go](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.go.md) · [PHP](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.php.md) · [CLI](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.cli.md) · [MCP](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.mcp.md) · [cURL](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.curl.md)

Votre règle remplace la réponse de Bird pour cette portée et conserve les mots-clés de Bird. Vos `keywords` sont des ajouts et non un remplacement : un mot-clé que Bird expédie plus tard commence à correspondre sans modification de votre part.

Pour n'envoyer aucune réponse tout en enregistrant la désinscription, omettez `reply` lorsque vous créez la règle. Pour rendre muette une règle existante, définissez `reply` à `null` dans un corps JSON lors de la mise à jour ci-dessous ; un indicateur CLI ne peut pas contenir `null`.

![Un dialogue pour ajouter une règle de mot-clé, avec des champs pour les mots-clés supplémentaires et une réponse](/images/docs/dashboard-whatsapp-keyword-rule-dialog.png)

## Ajouter vos propres mots-clés

**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](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.ts.md) · [Python](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.py.md) · [Go](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.go.md) · [PHP](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.php.md) · [CLI](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.cli.md) · [MCP](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.mcp.md) · [cURL](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.curl.md)

Omettre `keywords` laisse vos ajouts en place. Envoyer un tableau vide les réinitialise à l'ensemble de Bird.

## Portée des règles et doublons

Une règle se restreint à un seul compte WhatsApp Business Account avec `waba`, à un seul pays d'expéditeur avec `country`, aux deux, ou à aucun. Vous ne pouvez avoir qu'une seule règle par combinaison d'opération, de pays et de compte. Une deuxième écriture pour la même combinaison renvoie une erreur de doublon.

Bird rejette une règle qui lie `stop` à `opt_in`, que le mot provienne du catalogue de Bird ou d'une autre de vos règles : un mot de désinscription ne peut pas être utilisé pour accorder un consentement.

## Supprimer une règle

Supprimer votre règle transfère cette portée à la règle suivante dans l'ordre de correspondance, qui n'est pas toujours l'une des vôtres. L'ordre est le suivant :

1. Votre règle pour un compte et un pays.
2. Votre règle pour le compte.
3. Votre règle pour le pays.
4. La règle de Bird pour le pays de l'expéditeur.
5. Votre règle mondiale.
6. La règle mondiale de Bird.

Supprimer votre règle pour un pays transfère donc la portée à la règle de Bird pour ce pays avant votre propre règle mondiale :

**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](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.ts.md) · [Python](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.py.md) · [Go](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.go.md) · [PHP](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.php.md) · [CLI](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.cli.md) · [MCP](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.mcp.md) · [cURL](/fr-fr/documentation/guides/whatsapp/opt-outs/keyword-rules.curl.md)

Supprimer une règle n'arrête pas le fonctionnement de `STOP`. Le texte de réponse et l'ensemble de mots-clés reviennent à la règle suivante dans cet ordre.

## Étapes suivantes

- [Préférences](/docs/guides/whatsapp/opt-outs/preferences) : les enregistrements créés par un mot-clé, et lesquels vous pouvez annuler.
- [Suppressions](/docs/guides/whatsapp/opt-outs/suppressions) : les adresses que votre espace de travail bloque directement.
- [Désinscriptions et mots-clés pour SMS](/docs/guides/sms/opt-outs-and-keywords) : le même mécanisme sur l'autre canal, qui gère aussi les mots-clés d'aide et de campagne.

## 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)
