# Reguły słów kluczowych

Bird dostarcza katalog słów kluczowych, więc odbiorca, który odpowie `STOP` na jeden z Twoich numerów obsługujących wiadomości przychodzące, zostaje wypisany bez żadnej konfiguracji z Twojej strony. `START` cofa wypisanie. Twoja własna reguła nadpisuje domyślną regułę Bird w zakresie, który obejmuje.

Ta strona opisuje, co Bird rozpoznaje, jak dopasowywane są wiadomości przychodzące i jak zmienić treść odpowiedzi lub dodać słowa kluczowe. Strona [**Keywords**](https://bird.com/dashboard/w/whatsapp/keyword-rules) to odpowiednik w dashboardzie.

![Lista reguł słów kluczowych, z regułami obszaru roboczego nad domyślnymi regułami, które nadpisują](/images/docs/dashboard-whatsapp-keyword-rules.png)

## Co Bird rozpoznaje domyślnie

Dziewięć słów rejestruje wypisanie:

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

Dwa cofają wypisanie: `start` i `unstop`.

Dopasowanie dotyczy całej wiadomości, a nie fragmentu. Ponieważ `cancel` i `end` są słowami kluczowymi, to rozróżnienie ma znaczenie: "cancel my 3pm delivery" jest zwykłą wiadomością, a nie wycofaniem zgody. Wielkość liter, znaki diakrytyczne, powtórzone spacje i końcowe znaki interpunkcyjne są ignorowane, więc `Stop!` i `STOP` pasują. Interpunkcja przed słowem lub wewnątrz niego nie jest ignorowana, więc `#stop` nie pasuje.

## Gdzie słowa kluczowe nie są dopasowywane

Słowo kluczowe w wiadomości grupowej jest pomijane, więc uczestnik nie może się wypisać, odpowiadając w grupie. Uwzględnij deklarowane wypisanie członka grupy we własnej logice wysyłania.

## Kiedy preferencja jest zapisywana

Klasyfikacja przebiega równolegle ze zdarzeniem `whatsapp.received`, a nie przed nim. Integracja nasłuchująca tego zdarzenia może więc zobaczyć `STOP` przed pojawieniem się preferencji, którą ono rejestruje. Jeśli Twój handler reaguje na wiadomość przychodzącą, wysyłając coś w odpowiedzi, odczytaj ponownie rekordy odbiorcy zamiast zakładać kolejność zdarzeń.

## Sprawdzanie obowiązujących reguł

`GET /v1/whatsapp/keyword-rules` opisuje, jak obsługiwane są odpowiedzi na Twoje numery. Bez filtrów zwraca katalog Bird wraz z utworzonymi przez Ciebie regułami. Zawęź wyniki za pomocą `country`, `waba`, `operation` lub `scope`:

- `scope=system` zwraca katalog Bird, w tym domyślną regułę, którą nadpisuje Twoja reguła.
- `scope=workspace` zwraca Twoje własne reguły.

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

Reguły są zwracane od najbardziej szczegółowej, co odpowiada kolejności dopasowywania wiadomości przychodzących. Każda zawiera `effective_keywords`: zestaw Bird dla danej operacji i kraju oraz to, co sam dodałeś.

Dla Twojej reguły bez `country` pole `effective_keywords` pokazuje globalny zestaw Bird, ponieważ reguła nie ma kraju, a kraj nadawcy nie jest znany do momentu nadejścia wiadomości. Ta reguła dopasowuje się do zestawu Bird dla kraju nadawcy, który może być większy. Ustaw `country` w regule, aby zobaczyć dokładnie, co ci nadawcy dopasują.

`country` to kraj nadawcy, ustalany na podstawie jego numeru telefonu, a nie numeru, na który wysłał wiadomość. To sygnał kraju, który WhatsApp przekazuje. Nadawca zidentyfikowany przez identyfikator użytkownika w zakresie firmy nie ma przypisanego kraju, więc wiadomość od niego pomija reguły dla danego kraju i dopasowuje się do reguły globalnej.

## Zmiana odpowiedzi

Domyślne odpowiedzi Bird są poprawne, ale ogólne. Aby odpowiadać pod własną nazwą, utwórz regułę:

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

Twoja reguła zastępuje odpowiedź Bird w danym zakresie i zachowuje słowa kluczowe Bird. Twoje `keywords` to dodatki, a nie zamienniki, więc słowo kluczowe dodane później przez Bird zacznie pasować bez zmian z Twojej strony.

Aby nie wysyłać niczego, ale nadal rejestrować wypisanie, pomiń `reply` przy tworzeniu reguły. Aby wyciszyć istniejącą regułę, ustaw `reply` na `null` w ciele JSON w poniższym wywołaniu aktualizacji; flaga CLI nie może przenosić `null`.

![Okno dialogowe dodawania reguły słowa kluczowego, z polami na dodatkowe słowa kluczowe i odpowiedź](/images/docs/dashboard-whatsapp-keyword-rule-dialog.png)

## Dodawanie własnych słów kluczowych

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

Pominięcie `keywords` pozostawia Twoje dodatki bez zmian. Wysłanie pustej tablicy przywraca zestaw Bird.

## Zakres reguły i duplikaty

Regułę można zawęzić do jednego konta WhatsApp Business Account za pomocą `waba`, do jednego kraju nadawcy za pomocą `country`, do obu lub do żadnego. Możesz mieć jedną regułę na kombinację operacji, kraju i konta. Drugi zapis dla tej samej kombinacji zwraca błąd duplikatu.

Bird odrzuca regułę wiążącą `stop` z `opt_in`, niezależnie od tego, czy słowo pochodzi z katalogu Bird, czy z innej Twojej reguły, więc słowo wypisania nie może przyznawać zgody.

## Usuwanie reguły

Usunięcie Twojej reguły przekazuje dany zakres następnej regule w kolejności dopasowywania, która nie zawsze jest Twoja. Kolejność jest następująca:

1. Twoja reguła dla konta i kraju.
2. Twoja reguła dla konta.
3. Twoja reguła dla kraju.
4. Reguła Bird dla kraju nadawcy.
5. Twoja reguła globalna.
6. Reguła globalna Bird.

Usunięcie Twojej reguły dla kraju przekazuje więc zakres regule Bird dla tego kraju, zanim trafi do Twojej reguły globalnej:

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

Usunięcie reguły nie zatrzymuje działania `STOP`. Treść odpowiedzi i zestaw słów kluczowych przechodzą na następną regułę w tej kolejności.

## Następne kroki

- [Preferencje](/docs/guides/whatsapp/opt-outs/preferences): rekordy tworzone przez słowa kluczowe i które z nich możesz cofnąć.
- [Blokady](/docs/guides/whatsapp/opt-outs/suppressions): adresy blokowane bezpośrednio przez Twój obszar roboczy.
- [Wypisania i słowa kluczowe dla SMS](/docs/guides/sms/opt-outs-and-keywords): ten sam mechanizm na drugim kanale, który obsługuje również słowa kluczowe pomocy i kampanii.

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