Keyword-Regeln
Bird liefert den Keyword-Katalog mit, sodass ein Empfänger, der auf eine Ihrer empfangsfähigen Nummern mit STOP antwortet, ohne Ihr Zutun abgemeldet wird. START macht das rückgängig. Eine eigene Regel überschreibt den Standard von Bird für den Geltungsbereich, den sie abdeckt.
Diese Seite behandelt, was Bird erkennt, wie eine eingehende Nachricht abgeglichen wird und wie Sie den Wortlaut ändern oder Keywords hinzufügen. Die Seite Keywords ist das Dashboard-Äquivalent.

Was Bird standardmäßig erkennt
Neun Wörter erfassen ein Opt-out:
stop, stop all, stopall, unsubscribe, cancel, end, quit, revoke, optout
Zwei machen es rückgängig: start und unstop.
Der Abgleich erfolgt gegen die gesamte Nachricht, nicht gegen einen Teilstring. Da cancel und end Keywords sind, ist diese Unterscheidung wichtig: "cancel my 3pm delivery" ist eine gewöhnliche Nachricht und kein Widerruf der Einwilligung. Groß-/Kleinschreibung, Akzente, wiederholte Leerzeichen und abschließende Satzzeichen werden ignoriert, sodass Stop! und STOP beide übereinstimmen. Satzzeichen vor oder innerhalb des Worts werden nicht ignoriert, daher stimmt #stop nicht überein.
Wo Keywords nicht abgeglichen werden
Ein Keyword in einer Gruppennachricht wird übersprungen, sodass sich ein Teilnehmer dort nicht per Antwort abmelden kann. Berücksichtigen Sie das erklärte Opt-out eines Gruppenmitglieds in Ihrer eigenen Versandlogik.
Wann die Präferenz gespeichert wird
Die Klassifizierung läuft parallel zum whatsapp.received-Event und nicht davor. Eine Integration, die dieses Event beobachtet, kann daher ein STOP sehen, bevor die zugehörige Präferenz existiert. Wenn Ihr Handler auf die eingehende Nachricht mit einem Versand reagiert, lesen Sie die Datensätze des Empfängers erneut, anstatt die Event-Reihenfolge vorauszusetzen.
Sehen, was gilt
GET /v1/whatsapp/keyword-rules beschreibt, wie Antworten auf Ihre Nummern verarbeitet werden. Ohne Filter gibt es den Katalog von Bird zusammen mit allen von Ihnen erstellten Regeln zurück. Grenzen Sie mit country, waba, operation oder scope ein:
- scope=system gibt den Katalog von Bird zurück, einschließlich des Standards, den eine Ihrer Regeln überschreibt.
- scope=workspace gibt Ihre eigenen Regeln zurück.
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"Regeln werden in der Reihenfolge von der spezifischsten abwärts zurückgegeben, also in der Reihenfolge, in der eine eingehende Nachricht dagegen abgeglichen wird. Jede trägt effective_keywords: das Set von Bird für die jeweilige Operation und das Land, plus alles, was Sie hinzugefügt haben.
Für eine eigene Regel ohne country zeigt effective_keywords das weltweite Set von Bird, weil die Regel kein Land hat und das Land des Absenders bis zum Eintreffen einer Nachricht unbekannt ist. Diese Regel wird gegen das Set von Bird für das Land des Absenders abgeglichen, das größer sein kann. Setzen Sie ein country an Ihrer Regel, um genau zu sehen, was diese Absender matchen.
country ist das Land des Absenders, ermittelt aus dessen eigener Telefonnummer und nicht aus der angeschriebenen Nummer. Es ist das Ländersignal, das WhatsApp sendet. Ein Absender, der nur über eine geschäftsbezogene User-ID identifiziert wird, trägt kein Land, sodass eine Nachricht von diesem die länderspezifischen Regeln überspringt und stattdessen eine weltweite Regel greift.
Die Antwort ändern
Die Standardantworten von Bird sind korrekt, aber generisch. Um in Ihrem eigenen Namen zu antworten, erstellen Sie eine Regel:
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."}'Ihre Regel ersetzt die Antwort von Bird für diesen Geltungsbereich und behält die Keywords von Bird bei. Ihre keywords sind Ergänzungen statt eines Ersatzes, sodass ein Keyword, das Bird später ausliefert, ohne Änderung Ihrerseits zu matchen beginnt.
Um nichts zu senden, aber das Opt-out trotzdem zu erfassen, lassen Sie reply beim Erstellen der Regel weg. Um eine bestehende Regel stumm zu schalten, setzen Sie reply auf null in einem JSON-Body beim unten beschriebenen Update; ein CLI-Flag kann null nicht transportieren.

Eigene Keywords hinzufügen
// 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"]}'Wenn Sie keywords weglassen, bleiben Ihre Ergänzungen unverändert. Ein leeres Array setzt sie auf das Set von Bird zurück.
Regelbereich und Duplikate
Eine Regel lässt sich mit waba auf einen WhatsApp Business Account eingrenzen, mit country auf ein Absenderland, auf beides oder auf keines von beiden. Sie halten eine Regel pro Kombination aus Operation, Land und Account. Ein zweiter Schreibvorgang für dieselbe Kombination gibt einen Duplikatfehler zurück.
Bird lehnt eine Regel ab, die stop an opt_in bindet, egal ob das Wort aus dem Katalog von Bird oder aus einer anderen Ihrer Regeln stammt, sodass ein Opt-out-Wort nicht dazu gebracht werden kann, eine Einwilligung zu erteilen.
Eine Regel löschen
Wenn Sie Ihre Regel löschen, geht der Geltungsbereich an die nächste Regel in der Abgleichreihenfolge über, und das ist nicht immer eine Ihrer eigenen. Die Reihenfolge lautet:
- Ihre Regel für ein Account und ein Land.
- Ihre Regel für das Account.
- Ihre Regel für das Land.
- Die Regel von Bird für das Land des Absenders.
- Ihre weltweite Regel.
- Die weltweite Regel von Bird.
Wenn Sie Ihre Regel für ein Land löschen, geht der Geltungsbereich daher an die Regel von Bird für dieses Land über, bevor Ihre eigene weltweite Regel greift:
// 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"Das Löschen einer Regel stoppt STOP nicht. Es setzt den Wortlaut und das Keyword-Set auf die jeweils nächste Regel in dieser Reihenfolge zurück.
Nächste Schritte
- Präferenzen: die Datensätze, die ein Keyword erzeugt, und welche davon Sie rückgängig machen können.
- Unterdrückungen: die Adressen, die Ihr Workspace direkt blockiert.
- Opt-outs und Keywords für SMS: derselbe Mechanismus auf dem anderen Kanal, der zusätzlich Hilfe- und Kampagnen-Keywords umfasst.
Verwandte Ressourcen
Weiter mit der Dokumentation, Anleitungen und Beispielen zu diesem Thema. Die Ressourcen sind auf Englisch.
Anleitung ansehenConnecting WhatsApp to Bird: from buying a number to a live channelDas Konzept verstehenWhat is the 24-hour customer service window on WhatsApp?Das Tool verwendenWhatsApp message builderDie Funktion erkundenWhatsApp
Übung ausprobieren und ein Implementierungs-Briefing erhalten