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 to odpowiednik w dashboardzie.

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.
const rules = await bird.whatsapp.keywordRules.list({ operation: "opt_out" });
for (const rule of rules.data ?? []) {
console.log(rule.scope, rule.effective_keywords);
}rules = client.whatsapp.keyword_rules.list(operation="opt_out")
for rule in rules.data or []:
print(rule.scope, rule.effective_keywords)rules, err := client.Whatsapp.KeywordRules.List(context.Background(), bird.WhatsappKeywordRulesListParams{
Operation: "opt_out", // omit for both operations, Bird's rules and your own
})
if err != nil {
log.Fatal(err)
}
for _, rule := range rules.Data {
fmt.Println(rule.Scope, rule.EffectiveKeywords)
}$rules = $bird->whatsapp->keywordRules->list(['operation' => 'opt_out']);
foreach ($rules->getData() ?? [] as $rule) {
echo $rule->getScope(), ' ', implode(',', $rule->getEffectiveKeywords() ?? []), PHP_EOL;
}bird whatsapp keyword-rules listcurl "https://us1.platform.bird.com/v1/whatsapp/keyword-rules?operation=opt_out" \
-H "Authorization: Bearer $BIRD_API_KEY"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łę:
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);rule = client.whatsapp.keyword_rules.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.
print(rule.id, rule.effective_keywords)rule, err := client.Whatsapp.KeywordRules.Create(context.Background(), bird.WhatsappKeywordRulesCreateParams{
Operation: "opt_out",
Country: bird.String("US"), // the SENDER's country, from their own number
Reply: bird.String("You're off the list. ACME Courier won't message you again."),
})
if err != nil {
log.Fatal(err)
}
// EffectiveKeywords is Bird's set plus any of your own.
fmt.Println(rule.Id, rule.EffectiveKeywords)$rule = $bird->whatsapp->keywordRules->create(
(new WhatsAppKeywordRuleCreate())
->setOperation('opt_out')
->setCountry('US')
->setReply("You're off the list. ACME Courier won't message you again."),
);
// getEffectiveKeywords() is Bird's set plus any of your own.
echo $rule->getId(), ' ', implode(',', $rule->getEffectiveKeywords() ?? []);bird whatsapp keyword-rules create \
--country US \
--keywords 'no more texts' \
--keywords 'remove me' \
--operation opt_out \
--reply "You're off the list. ACME Courier won't message you again." \
--waba 102290129340398curl -X POST https://us1.platform.bird.com/v1/whatsapp/keyword-rules \
-H "Authorization: Bearer $BIRD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"operation":"opt_out","country":"US","reply":"You'"'"'re off the list. ACME Courier won'"'"'t message you again."}'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.

Dodawanie własnych słów kluczowych
// 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);# Omitting keywords leaves the set alone; an empty list clears your additions
# back to Bird's.
rule = client.whatsapp.keyword_rules.update(
"wkr_01m2kj8x4te9p0rr7e5w2n1abc", keywords=["no more texts", "remove me"]
)
print(rule.effective_keywords)// Omitting keywords leaves the set alone; an empty slice clears your
// additions back to Bird's.
rule, err := client.Whatsapp.KeywordRules.Update(context.Background(),
"wkr_01m2kj8x4te9p0rr7e5w2n1abc", bird.WhatsappKeywordRulesUpdateParams{
Keywords: []string{"no more texts", "remove me"},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(rule.EffectiveKeywords)// Omitting keywords leaves the set alone; an empty array clears your additions
// back to Bird's.
$rule = $bird->whatsapp->keywordRules->update(
'wkr_01m2kj8x4te9p0rr7e5w2n1abc',
(new WhatsAppKeywordRuleUpdate())->setKeywords(['no more texts', 'remove me']),
);
echo implode(',', $rule->getEffectiveKeywords() ?? []);bird whatsapp keyword-rules update <id> \
--keywords 'no more texts' \
--reply "You're off the list. ACME Courier won't message you again."curl -X PATCH https://us1.platform.bird.com/v1/whatsapp/keyword-rules/wkr_01m2kj8x4te9p0rr7e5w2n1abc \
-H "Authorization: Bearer $BIRD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"keywords":["no more texts"]}'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:
- Twoja reguła dla konta i kraju.
- Twoja reguła dla konta.
- Twoja reguła dla kraju.
- Reguła Bird dla kraju nadawcy.
- Twoja reguła globalna.
- 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:
// 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");# 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.
client.whatsapp.keyword_rules.delete("wkr_01m2kj8x4te9p0rr7e5w2n1abc")if err := client.Whatsapp.KeywordRules.Delete(context.Background(),
"wkr_01m2kj8x4te9p0rr7e5w2n1abc"); err != nil {
log.Fatal(err)
}// 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.
$bird->whatsapp->keywordRules->delete('wkr_01m2kj8x4te9p0rr7e5w2n1abc');bird whatsapp keyword-rules delete <id> --yescurl -X DELETE https://us1.platform.bird.com/v1/whatsapp/keyword-rules/wkr_01m2kj8x4te9p0rr7e5w2n1abc \
-H "Authorization: Bearer $BIRD_API_KEY"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: rekordy tworzone przez słowa kluczowe i które z nich możesz cofnąć.
- Blokady: adresy blokowane bezpośrednio przez Twój obszar roboczy.
- Wypisania i słowa kluczowe dla SMS: ten sam mechanizm na drugim kanale, który obsługuje również słowa kluczowe pomocy i kampanii.
Powiązane zasoby
Kontynuuj z dokumentacją, przewodnikami i przykładami dotyczącymi tego tematu. Zasoby są w języku angielskim.
Obejrzyj przewodnikConnecting WhatsApp to Bird: from buying a number to a live channelZrozum koncepcjęWhat is the 24-hour customer service window on WhatsApp?Użyj narzędziaWhatsApp message builderPoznaj możliwościWhatsApp
Wypróbuj ćwiczenie i uzyskaj brief wdrożeniowy