# Migracja SMS z Bird Connectivity Platform

Ta strona mapuje API Connectivity Platform Bird pod adresem `rest.messagebird.com`, które możesz nadal znać jako MessageBird API, na Bird. Postępuj zgodnie z [głównym przewodnikiem migracji](/docs/guides/sms/migrate) po kolei i użyj tych mapowań w krokach 3, 4 i 5.

Obie platformy należą do Bird, a API to element, który się zmienia. Trzy różnice dotyczą każdego wywołania. Żądania trafiają do Twojego regionalnego hosta, `https://us1.platform.bird.com` lub `https://eu1.platform.bird.com`, zamiast jednego globalnego hosta. Uwierzytelnienie to klucz bearer API (`Authorization: Bearer bk_us1_…`) zamiast `Authorization: AccessKey`. Wysyłka jest asynchroniczna: [`POST /v1/sms/messages`](/docs/api/reference/create-sms-message) zwraca `202 Accepted` z wiadomością w kolejce, podczas gdy Connectivity Platform zwracał obiekt wiadomości z już dołączonym statusem dla każdego odbiorcy.

## Przekaż to swojemu agentowi

Użyj tego briefu w swoim agencie kodującym. Zaczyna od rozpoznania i tworzy plan migracji do przeglądu, zanim cokolwiek zmienisz na produkcji.

```text
Help me migrate my SMS integration from Bird Connectivity Platform to Bird.
1. Inspect this repository's sends, senders, callbacks, schedules, templates, opt-outs and tests. List the traffic and behavior that must survive the migration.
2. Read the Markdown guides at https://bird.com/docs/guides/sms/migrate/connectivity-platform.md and https://bird.com/docs/guides/sms/migrate.md. Use an existing authenticated Bird MCP or CLI connection. If neither is available, follow https://bird.com/docs/ai/set-up-your-agent.md. Discover the actual operations; do not invent commands or ask me to paste credentials into chat.
3. Prepare the code changes, sender/destination requirements, consent migration, webhook verification and rollout/rollback plan. Preserve the scope of each customer's preferences, including requests outside SMS replies. Separate API batches from audience broadcasts and preserve any behavior that has no direct endpoint equivalent.
4. Show me the exact affected resources, destinations, test volume and known costs before an action that sends messages, spends money, registers or changes a sender, or moves production traffic. Require explicit human authorization for each paid submission or production change. Name one-off 10DLC registration and resubmission fees before requesting approval. An existing explicit approval for that exact action is sufficient; broad migration approval is not. Simulated SMS destinations are billable and still require authorization.
5. If I am keeping Connectivity Platform numbers, prepare the human support port request and obtain authorization to send it. Read bird support-tickets create --help, then use the available CLI or MCP support operation with the reviewed number list and requirements. Return the ticket ID and follow the reply; support arranges the port on its own schedule, separately from the code cutover.
6. Run local and intercepted tests first. When authorized, perform the agreed bounded integration tests, inspect accepted and final outcomes separately, and report failures or uncertainty. Do not claim a delivery receipt proves reading or that request idempotency guarantees exactly-once delivery.
7. Keep production cutover and retiring the old provider as explicit steps in the approved rollout. Finish with the diff, evidence, unresolved requirements and the next action.
```

## Zmapuj wywołanie wysyłki

| Co robi               | Connectivity Platform | Bird                                                                    |
| --------------------- | --------------------- | ----------------------------------------------------------------------- |
| Odbiorca              | `recipients` (do 50)  | `to`, jeden na żądanie                                                  |
| Nadawca               | `originator`          | `from`                                                                  |
| Treść                 | `body`                | `text`                                                                  |
| Intencja              | (brak)                | `category`, wymagane dla dowolnego tekstu                               |
| Kodowanie             | `datacoding`          | wykrywane automatycznie                                                 |
| Transliteracja        | (brak)                | `options.smart_encoding` (domyślnie `false`)                            |
| Referencja klienta    | `reference`           | `metadata` lub `tags`, gdy filtrujesz po nim                            |
| Raporty statusu       | `reportUrl`           | webhook obszaru roboczego subskrybujący poniższe zdarzenia dostarczenia |
| Bezpieczne ponawianie | (brak)                | nagłówek `Idempotency-Key`                                              |
| Planowanie            | `scheduledDatetime`   | brak odpowiednika: `scheduled_at` jest odrzucane                        |
| Ważność               | `validity`            | brak odpowiednika: `validity_period` jest odrzucane                     |
| Wybór trasy           | `gateway`             | Bird wybiera trasę                                                      |
| Klasa wiadomości      | `mclass`              | brak odpowiednika                                                       |
| Binarne i flash       | `type`, `typeDetails` | tylko tekst                                                             |

Oba odrzucone pola są [zarezerwowane](/docs/guides/sms/sending-sms#reserved-fields) i odpowiadają na `422 SMSUnsupportedFeature`.

Uwagi dotyczące przenoszenia:

- **Tablica odbiorców zamienia się w jedno wywołanie na odbiorcę.** Wywołanie Connectivity Platform z 50 odbiorcami staje się 50 wysyłkami lub jedną [partią](/docs/guides/sms/sending-sms#batch-sending) niezależnych wiadomości. Partia nie jest rozgałęzieniem jednej treści: każdy wpis zawiera własnego odbiorcę, nadawcę i tekst.
- **`datacoding` nie ma odpowiednika i jest to celowe.** Bird wykrywa kodowanie na podstawie treści i raportuje liczbę segmentów w wiadomości. Jeśli ustawisz `datacoding: auto`, aby wiadomości mieściły się w GSM-7, najbliższym odpowiednikiem jest `options.smart_encoding`, który stosuje udokumentowaną tabelę zamienników Bird. Nie jest to transliterator ogólnego przeznaczenia; nieobsługiwane znaki nadal mogą wymagać kodowania Unicode.
- **`reference` dzieli się na dwa pola.** Umieść wewnętrzny identyfikator w `metadata`, który jest zwracany w każdym zdarzeniu webhooka, a `tags` używaj do etykiet o niskiej kardynalności, po których chcesz filtrować i segmentować analitykę.
- **Wiadomości flash, dane binarne i konkatenacja UDH nie podlegają migracji.** Jeśli korzystasz z `mclass` lub `typeDetails`, zgłoś to do wsparcia przed planowaniem przełączenia, a nie po.
- **Korzystasz też z Connectivity Platform Verify API?** Przeniesienie to osobne zadanie z własnym przewodnikiem: zobacz [Migracja Verify od innego dostawcy](/docs/guides/verify/migrate).

## Przenieś rezygnacje z subskrypcji

Connectivity Platform pozostawiał obsługę słów kluczowych stop Tobie, bez względu na to, czy zbudowałeś ją we Flows, czy we własnej aplikacji przetwarzającej wiadomości przychodzące. Bird robi to sam: rozpoznaje słowa kluczowe stop, start i help na Twoich numerach w obsługiwanych krajach, rejestruje blokadę i egzekwuje ją przy każdej wysyłce. Wycofaj stary handler dopiero po potwierdzeniu, że katalog Bird pokrywa jego zachowanie i Twój szerszy proces zarządzania preferencjami nadal działa.

Lista się nie wycofuje. Wyeksportuj to, co przechowujesz, jako pary: numer subskrybenta i nadawca, od którego subskrybent się wypisał, i zaimportuj je przez [pętlę blokad](/docs/guides/sms/migrate#4-carry-over-your-opt-out-list) przed pierwszą wysyłką produkcyjną. Jeśli prowadzisz tylko globalną listę subskrybentów, którzy zrezygnowali, zaimportuj każdego subskrybenta raz na każdego nadawcę, od którego nadal wysyłasz.

## Przetłumacz raporty statusu

Użyj tej tabeli do porównania koncepcji cyklu życia, a nie do mechanicznego zmieniania nazw zdarzeń. Bird wybiera zdarzenie niepowodzenia na podstawie zgłoszonego statusu i przyczyny. Odrzucone żądanie API nie tworzy wiadomości; odrzucenie po zaakceptowaniu może wygenerować `sms.rejected`, w tym odrzucenie przez operatora. Brak potwierdzenia dostarczenia oznacza status nieznany. Zachowaj surowy status i kod dostawcy obok swojego znormalizowanego wyniku.

| Wynik                             | Connectivity Platform | Bird                                     |
| --------------------------------- | --------------------- | ---------------------------------------- |
| Zaakceptowane przez API           | (synchronicznie)      | `sms.accepted`                           |
| Przekazane do operatora           | `sent`, `buffered`    | `sms.sent`                               |
| Operator potwierdził dostarczenie | `delivered`           | `sms.delivered`                          |
| Dostarczenie nie powiodło się     | `delivery_failed`     | `sms.failed`                             |
| Upłynęło okno ważności            | `expired`             | `sms.expired`                            |
| Żądanie odrzucone przy przyjęciu  | błąd żądania          | błąd HTTP; brak wiadomości ani zdarzenia |
| Oczekuje na wysłanie              | `scheduled`           | brak odpowiednika                        |

Mechanizm dostarczania zmienia się bardziej niż słownictwo:

- **Podpisane posty JSON zastępują callbacki GET `reportUrl`.** Raporty statusu docierały jako żądania `GET` z wynikiem w query stringu (`status`, `statusReason`, `statusErrorCode`, `mccmnc`, `price[amount]`). Bird wysyła (`POST`) zdarzenie JSON do endpointów zarejestrowanych w Twoim obszarze roboczym, podpisane zgodnie ze [Standard Webhooks](https://www.standardwebhooks.com). Handler wymaga przepisania, a nie tylko zmiany URL-a.
- **Korelacja nie zależy już od `reference`.** Raport statusu był użyteczny tylko wtedy, gdy ustawiłeś referencję; zdarzenie Bird zawsze zawiera `sms_id`, oba numery oraz Twoje zwrócone `metadata` i `tags`.
- **Semantyka ponawiania jest inna.** Connectivity Platform ponawiał nieudany raport do 10 razy. Dostarczenia Bird działają w trybie at-least-once i bez gwarancji kolejności, więc deduplikuj po nagłówku `webhook-id` i sortuj po `timestamp` z payloadu.
- **Uzgadniaj koszty przez wiadomość i właścicieli rozliczeń.** Raport Connectivity Platform zawierał `price[amount]` i `price[currency]`. Odczytaj zarejestrowany koszt wiadomości za pomocą [`GET /v1/sms/messages/{id}`](/docs/api/reference/get-sms-message) i uzgodnij opłaty z rozliczeniami. [Stats API](/docs/guides/sms/stats-api) służy do metryk dostarczenia, a nie jako autorytatywne podsumowanie rozliczeń.

Wiadomości przychodzące działają tak samo: subskrybuj `sms.received` raz dla obszaru roboczego, zamiast kierować każdy numer na osobny URL.

## Przełączenie

[Destynacje](/docs/guides/sms/migrate#1-enable-your-destination-countries), [nadawcy](/docs/guides/sms/migrate#2-set-up-a-sender) i [rampa ruchu](/docs/guides/sms/migrate#6-test-against-simulated-destinations) są niezależne od dostawcy i opisane w głównym przewodniku. Kwestią do zgłoszenia na wczesnym etapie są Twoi nadawcy: alfanumeryczne identyfikatory nadawcy są tworzone od nowa i, jeśli kraj tego wymaga, ponownie rejestrowane, a numery utrzymywane na Connectivity Platform przenoszone przez port, który organizuje wsparcie, a nie przez przełączenie ustawienia.

## Następne kroki

- [Poznaj Bird SMS](/products/sms): przepływy produktowe i ścieżki implementacji

- [Wysyłanie SMS](/docs/guides/sms/sending-sms): pełny payload, na który migrujesz
- [Rezygnacje i słowa kluczowe](/docs/guides/sms/opt-outs-and-keywords): co Bird obsługuje za Ciebie i jak zarządzać blokadami
- [Zdarzenia SMS](/docs/guides/sms/events): słownictwo zdarzeń, na które przenosi się Twój handler statusów
- [Webhooki i zdarzenia](/docs/guides/webhooks): konfiguracja endpointów i weryfikacja Standard Webhooks

## Related resources

- [Choose a sender for your markets](/explained/sms/which-sms-sender-type-should-i-use) (answer)
- [Check your message segments](/tools/sms-segment-calculator) (tool)
- [Compare SMS providers](/products/sms/compare) (product)
