# Preferencje

Preferencja to deklaracja dotycząca tego, czego dana osoba chce, zapisana dla jej identyfikatora na jednym kanale. Na WhatsApp identyfikatorem jest numer telefonu w formacie E.164. Jest to oddzielny wpis od [blokady](/docs/guides/whatsapp/opt-outs/suppressions) i oba są sprawdzane przed wysyłką.

Preferencje trafiają do Twojego obszaru roboczego na trzy sposoby: WhatsApp zgłasza jedną, odbiorca wpisuje słowo kluczowe albo sam ją rejestrujesz. To, co możesz z nią zrobić, zależy od tego, kto ją złożył.

## Co zawiera preferencja

Deklaracja to albo `revoked`, rezygnacja, albo `granted`, zgoda.

Niesie też zakres, który decyduje, ile ruchu blokuje. `non_transactional` obejmuje wiadomości marketingowe i inne nieistotne, a wiadomości transakcyjne, takie jak potwierdzenia i kody weryfikacyjne, nadal docierają. `all` obejmuje każdą wiadomość. Karta **Preferences** pokazuje te wartości w kolumnie **Covers** jako **Non-transactional** i **All messages**.

Deklarację można zawęzić do jednego nadawcy za pomocą `sender_scope`, który na WhatsApp identyfikuje konto firmowe. Bez niego deklaracja obejmuje cały kanał w Twoim obszarze roboczym, łącznie z kontami podłączonymi w przyszłości.

Jedna osoba może mieć kilka wierszy na jednym kanale, na przykład rezygnację dla całego kanału obok rezygnacji dla konkretnego nadawcy. Najbardziej restrykcyjna deklaracja decyduje, czy wiadomość zostanie wysłana.

## Preferencje rejestrowane przez Bird

Gdy Bird odbierze zdarzenie Meta informujące, że odbiorca zrezygnował z wiadomości marketingowych, rejestruje preferencję pochodzącą od odbiorcy dla tego konta WhatsApp Business Account. Preferencja obejmuje wiadomości nietransakcyjne. Nie tworzy blokady wszystkich wiadomości ani nie wypisuje osoby ze wszystkich kont w Twoim obszarze roboczym.

Odbiorca może wyrazić to samo, odpowiadając `STOP`. Ta preferencja jest przypisana do konta firmowego, do którego napisał, tak jak powyższa. Obejmuje wszystkie wiadomości, ponieważ wpisane `STOP` jest szersze niż marketingowa rezygnacja WhatsApp. Zobacz [reguły słów kluczowych](/docs/guides/whatsapp/opt-outs/keyword-rules), aby dowiedzieć się, co rozpoznaje Bird i jak zmienić odpowiedź.

Późniejsze zdarzenie wznowienia aktualizuje preferencję tego konta. Blokady i inne obowiązujące preferencje nadal działają, więc samo zdarzenie wznowienia nie dowodzi, że wysyłka jest dozwolona.

## Preferencje rejestrowane przez Ciebie

Otwórz stronę [**Suppressions**](https://bird.com/dashboard/w/whatsapp/suppressions) i przejdź do karty **Preferences**. Zarejestrowanie preferencji z opcją **Every business account in the workspace** blokuje odbiór wiadomości WhatsApp z każdego konta, które posiadasz, łącznie z kontami podłączonymi w przyszłości.

![Lista subskrybentów, którzy wyrazili zgodę lub z niej zrezygnowali, z zakresem każdego oświadczenia](/images/docs/dashboard-whatsapp-preferences.png)

Okno dialogowe **Record opt-out** na tej karcie rejestruje zakres obejmujący wszystkie wiadomości.

![Okno dialogowe rejestrowania rezygnacji z wybranym zakresem obejmującym cały obszar roboczy](/images/docs/dashboard-whatsapp-preference-new.png)

Aby zarejestrować preferencję blokującą tylko marketing, użyj strony **Contacts** > **Preferences** dla całego obszaru roboczego. Jej okno dialogowe oferuje opcję **Marketing messages** oprócz **All messages**.

## Odczytywanie preferencji z kodu

`GET /v1/preferences` zwraca preferencje zapisane w obszarze roboczym, od najnowszych. Przekaż `channel=whatsapp`, aby zawęzić do tego kanału, i `handle` razem z nim, aby sprawdzić wszystko zarejestrowane dla jednego numeru przed wysyłką:

**TypeScript**

```typescript
for await (const preference of bird.preferences.list({
  channel: "whatsapp",
  handle: "+15550001234",
})) {
  console.log(preference.status, preference.coverage, preference.sender_scope);
}
```

Examples: [TypeScript](/pl-pl/dokumentacja/guides/whatsapp/opt-outs/preferences.ts.md) · [Python](/pl-pl/dokumentacja/guides/whatsapp/opt-outs/preferences.py.md) · [Go](/pl-pl/dokumentacja/guides/whatsapp/opt-outs/preferences.go.md) · [PHP](/pl-pl/dokumentacja/guides/whatsapp/opt-outs/preferences.php.md) · [CLI](/pl-pl/dokumentacja/guides/whatsapp/opt-outs/preferences.cli.md) · [cURL](/pl-pl/dokumentacja/guides/whatsapp/opt-outs/preferences.curl.md)

`handle` wymaga `channel`, ponieważ ten sam identyfikator może istnieć na więcej niż jednym kanale.

## Rejestrowanie preferencji z kodu

`POST /v1/preferences` rejestruje jedną deklarację. Zapis działa jako upsert po kluczu złożonym z kanału, identyfikatora i zakresu nadawcy, więc nowa deklaracja zastępuje bieżącą dla danego klucza:

**TypeScript**

```typescript
const result = await bird.preferences.create({
  channel: "whatsapp",
  handle: "+15550001234",
  status: "revoked",
  coverage: "non_transactional",
});
console.log(result.applied, result.preference?.id);
```

Examples: [TypeScript](/pl-pl/dokumentacja/guides/whatsapp/opt-outs/preferences.ts.md) · [Python](/pl-pl/dokumentacja/guides/whatsapp/opt-outs/preferences.py.md) · [Go](/pl-pl/dokumentacja/guides/whatsapp/opt-outs/preferences.go.md) · [PHP](/pl-pl/dokumentacja/guides/whatsapp/opt-outs/preferences.php.md) · [CLI](/pl-pl/dokumentacja/guides/whatsapp/opt-outs/preferences.cli.md) · [cURL](/pl-pl/dokumentacja/guides/whatsapp/opt-outs/preferences.curl.md)

Deklaracje są uporządkowane według momentu złożenia, nie momentu dotarcia. API odrzuca deklarację z datą wcześniejszą niż bieżąca dla danego klucza i zwraca `applied: false` z deklaracją, która przetrwała. Odrzucenie pozostaje w historii klucza.

`201` oznacza, że klucz nie miał wpisu i ta deklaracja go utworzyła. `200` zwraca przetrwały wpis klucza, niezależnie od tego, czy ta deklaracja go zastąpiła, powtórzyła, czy została odrzucona.

## Co możesz cofnąć

Preferencję zarejestrowaną przez Ciebie możesz usunąć z karty **Preferences** lub za pomocą `DELETE /v1/preferences/{preference_id}`, gdy odbiorca poprosi o wznowienie wysyłki.

Deklarację złożoną przez samą osobę może cofnąć tylko ona. Wypisanie lub słowo kluczowe stop kończy się, gdy osoba ponownie wyrazi zgodę, a usunięcie zwraca `422`. Aby wznowić wysyłkę za jej zgodą, zarejestruj deklarację `granted` z `consented_at`, momentem wyrażenia zgody. Zgoda obowiązuje, gdy ten moment jest późniejszy niż rezygnacja, którą odwraca, więc rejestruje zmianę decyzji zamiast kasować pierwotną deklarację.

Usunięcie jest porządkowane jak każda inna deklaracja, według czasu odbioru. Jeśli wpis zawiera deklarację złożoną po tym momencie, usunięcie jest odrzucane i zwracane z `applied: false` obok przetrwałego wpisu.

## Gdy błąd dostarczenia dotrze pierwszy

Błąd dostarczenia od operatora może zgłosić rezygnację, zanim Bird zarejestruje odpowiadające zdarzenie. Zachowaj wybór odbiorcy i zbadaj historię preferencji oraz zdarzeń, zamiast traktować brak lokalnego wpisu jako zgodę na wysyłkę.

## Następne kroki

- [Blokady](/docs/guides/whatsapp/opt-outs/suppressions): adresy, które Twój obszar roboczy blokuje bezpośrednio.
- [Reguły słów kluczowych](/docs/guides/whatsapp/opt-outs/keyword-rules): słowa, które rejestrują preferencję na Twoich numerach.
- [Zdarzenia WhatsApp](/docs/guides/whatsapp/events): ładunek `whatsapp.rejected` generowany przy zablokowanej wysyłce.

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