# SMS von der Bird Connectivity Platform migrieren

Diese Seite bildet die Bird Connectivity Platform API unter `rest.messagebird.com`, die Sie vielleicht noch als MessageBird API kennen, auf Bird ab. Folgen Sie der [Hauptmigrationsanleitung](/docs/guides/sms/migrate) der Reihe nach und verwenden Sie diese Zuordnungen für die Schritte 3, 4 und 5.

Beide Plattformen gehören zu Bird, und die API ist der Teil, der sich ändert. Drei Unterschiede betreffen jeden Aufruf. Anfragen gehen an Ihren regionalen Host, `https://us1.platform.bird.com` oder `https://eu1.platform.bird.com`, statt an einen globalen Host. Die Authentifizierung erfolgt über einen Bearer-API-Schlüssel (`Authorization: Bearer bk_us1_…`) statt über `Authorization: AccessKey`. Und der Versand ist asynchron: [`POST /v1/sms/messages`](/docs/api/reference/create-sms-message) gibt `202 Accepted` mit der eingereihten Nachricht zurück, während die Connectivity Platform das Nachrichtenobjekt mit einem bereits angehängten Status pro Empfänger zurückgab.

## Übergeben Sie dies an Ihren Agent

Verwenden Sie dieses Briefing in Ihrem Coding-Agent. Es beginnt mit einer Bestandsaufnahme und erstellt einen überprüfbaren Migrationsplan, bevor produktive Änderungen erfolgen.

```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.
```

## Den Sendeaufruf abbilden

| Funktion             | Connectivity Platform    | Bird                                                                       |
| -------------------- | ------------------------ | -------------------------------------------------------------------------- |
| Empfänger            | `recipients` (bis zu 50) | `to`, einer pro Anfrage                                                    |
| Absender             | `originator`             | `from`                                                                     |
| Inhalt               | `body`                   | `text`                                                                     |
| Intent               | (keiner)                 | `category`, erforderlich bei Freitext                                      |
| Kodierung            | `datacoding`             | wird automatisch erkannt                                                   |
| Transliteration      | (keine)                  | `options.smart_encoding` (Standard `false`)                                |
| Clientreferenz       | `reference`              | `metadata` oder `tags`, wenn Sie danach filtern                            |
| Statusberichte       | `reportUrl`              | ein Workspace-Webhook, der die unten genannten Zustellereignisse abonniert |
| Sichere Wiederholung | (keine)                  | `Idempotency-Key`-Header                                                   |
| Zeitplanung          | `scheduledDatetime`      | kein Äquivalent: `scheduled_at` wird abgelehnt                             |
| Gültigkeit           | `validity`               | kein Äquivalent: `validity_period` wird abgelehnt                          |
| Routenwahl           | `gateway`                | Bird wählt die Route                                                       |
| Nachrichtenklasse    | `mclass`                 | kein Äquivalent                                                            |
| Binär und Flash      | `type`, `typeDetails`    | nur Text                                                                   |

Beide abgelehnten Felder sind [reserviert](/docs/guides/sms/sending-sms#reserved-fields) und beantworten `422 SMSUnsupportedFeature`.

Portierungshinweise:

- **Das Empfänger-Array wird zu einem Aufruf pro Empfänger.** Ein Connectivity-Platform-Aufruf mit 50 Empfängern wird zu 50 Sendevorgängen oder einem [Batch](/docs/guides/sms/sending-sms#batch-sending) unabhängiger Nachrichten. Der Batch ist kein Fan-out eines einzelnen Inhalts: Jeder Eintrag enthält seinen eigenen Empfänger, Absender und Text.
- **`datacoding` hat kein Äquivalent, und das ist beabsichtigt.** Bird erkennt die Kodierung anhand des Inhalts und gibt die Segmentanzahl zur Nachricht zurück. Wenn Sie `datacoding: auto` setzen, um Nachrichten innerhalb von GSM-7 zu halten, ist das nächstliegende Verhalten `options.smart_encoding`, das die dokumentierte Ersetzungstabelle von Bird anwendet. Es handelt sich nicht um einen allgemeinen Transliterator; nicht unterstützte Zeichen können weiterhin Unicode-Kodierung erfordern.
- **`reference` wird in zwei Felder aufgeteilt.** Geben Sie einen internen Bezeichner in `metadata` an, der bei jedem Webhook-Ereignis zurückgegeben wird, und verwenden Sie `tags` für die Labels mit niedriger Kardinalität, nach denen Sie filtern und Analysen aufschlüsseln möchten.
- **Flash-Nachrichten, binäre Payloads und UDH-Verkettung lassen sich nicht portieren.** Wenn Sie auf `mclass` oder `typeDetails` angewiesen sind, klären Sie das mit dem Support, bevor Sie die Umstellung planen, nicht danach.
- **Nutzen Sie auch die Connectivity Platform Verify API?** Die Portierung ist ein separates Vorhaben mit eigener Anleitung: siehe [Verify von einem anderen Anbieter migrieren](/docs/guides/verify/migrate).

## Opt-outs übernehmen

Die Connectivity Platform überließ die Verarbeitung von Stopp-Schlüsselwörtern Ihnen, ob Sie sie in Flows oder in Ihrer eigenen Anwendung über eingehende Nachrichten umgesetzt haben. Bird übernimmt diese Aufgabe selbst: Es erkennt Stopp-, Start- und Hilfe-Schlüsselwörter auf Ihren Nummern in unterstützten Ländern, speichert die Unterdrückung und setzt sie bei jedem Versand durch. Deaktivieren Sie einen alten Handler erst, nachdem Sie bestätigt haben, dass der Katalog von Bird dessen Verhalten abdeckt und Ihr übergreifender Präferenzprozess weiterhin funktioniert.

Was nicht abgeschafft wird, ist die Liste. Exportieren Sie Ihren aktuellen Bestand als Paare aus Teilnehmernummer und dem Absender, den sie gestoppt haben, und importieren Sie ihn über den [Suppression-Loop](/docs/guides/sms/migrate#4-carry-over-your-opt-out-list) vor Ihrem ersten produktiven Versand. Falls Sie bisher nur eine globale Liste abgemeldeter Teilnehmer geführt haben, importieren Sie jeden Teilnehmer einmal pro Absender, von dem Sie noch senden.

## Statusberichte übersetzen

Verwenden Sie diese Tabelle, um Lifecycle-Konzepte zu vergleichen, nicht um Ereignisse mechanisch umzubenennen. Bird wählt ein Fehlerereignis anhand des gemeldeten Status und Grunds. Eine abgelehnte API-Anfrage erzeugt keine Nachricht; eine Ablehnung nach der Annahme kann `sms.rejected` erzeugen, einschließlich einer Carrier-Ablehnung. Fehlender Zustellnachweis bleibt unbekannt. Bewahren Sie den rohen Anbieterstatus und -code zusammen mit Ihrem normalisierten Ergebnis auf.

| Ergebnis                         | Connectivity Platform | Bird                                            |
| -------------------------------- | --------------------- | ----------------------------------------------- |
| Von der API angenommen           | (synchron)            | `sms.accepted`                                  |
| An den Carrier übergeben         | `sent`, `buffered`    | `sms.sent`                                      |
| Carrier hat Zustellung bestätigt | `delivered`           | `sms.delivered`                                 |
| Zustellung fehlgeschlagen        | `delivery_failed`     | `sms.failed`                                    |
| Gültigkeitsfenster abgelaufen    | `expired`             | `sms.expired`                                   |
| Anfrage bei Eingang abgelehnt    | Anfragefehler         | HTTP-Fehler; keine Nachricht oder kein Ereignis |
| Wartet auf Versand               | `scheduled`           | noch kein Äquivalent                            |

Der Zustellmechanismus ändert sich stärker als das Vokabular:

- **Signierte JSON-Posts ersetzen `reportUrl`-GET-Callbacks.** Statusberichte kamen als `GET`-Anfragen mit dem Ergebnis im Query-String (`status`, `statusReason`, `statusErrorCode`, `mccmnc`, `price[amount]`). Bird `POST`t ein JSON-Ereignis an Endpunkte, die Ihr Workspace registriert, signiert gemäß [Standard Webhooks](https://www.standardwebhooks.com). Der Handler muss neu geschrieben werden, nicht nur die URL geändert.
- **Korrelation hängt nicht mehr von `reference` ab.** Ein Statusbericht war nur nützlich, wenn Sie eine Referenz gesetzt hatten; ein Bird-Ereignis enthält immer `sms_id`, beide Nummern sowie Ihr zurückgegebenes `metadata` und `tags`.
- **Die Wiederholungssemantik unterscheidet sich.** Die Connectivity Platform hat einen fehlgeschlagenen Bericht bis zu 10-mal erneut versucht. Die Zustellungen von Bird erfolgen mindestens einmal und ohne feste Reihenfolge. Deduplizieren Sie daher anhand des `webhook-id`-Headers und sortieren Sie nach dem `timestamp` im Payload.
- **Kosten über die Nachricht und den Billing-Owner abgleichen.** Der Connectivity-Platform-Bericht enthielt `price[amount]` und `price[currency]`. Lesen Sie die erfassten Kosten der Nachricht mit [`GET /v1/sms/messages/{id}`](/docs/api/reference/get-sms-message) aus und gleichen Sie die Gebühren mit dem Billing ab. Die [Stats API](/docs/guides/sms/stats-api) dient Zustellmetriken, nicht als verbindliche Abrechnungssumme.

Eingehende Nachrichten funktionieren genauso: Abonnieren Sie `sms.received` einmal für den Workspace, statt jede Nummer auf eine URL zu verweisen.

## Umstellung durchführen

[Ziele](/docs/guides/sms/migrate#1-enable-your-destination-countries), [Absender](/docs/guides/sms/migrate#2-set-up-a-sender) und die [Traffic-Rampe](/docs/guides/sms/migrate#6-test-against-simulated-destinations) sind anbieterunabhängig und in der Hauptanleitung beschrieben. Frühzeitig klären sollten Sie Ihre Absenderkennungen: Alphanumerische Sender-IDs werden neu erstellt und, wenn das jeweilige Land es verlangt, hier neu registriert. Nummern, die Sie auf der Connectivity Platform halten, werden per Portierung verschoben, die der Support arrangiert, nicht per Einstellung, die Sie umschalten.

## Nächste Schritte

- [Bird SMS entdecken](/products/sms): Produkt-Workflows und Implementierungspfade

- [SMS senden](/docs/guides/sms/sending-sms): das Payload, auf das Sie portieren, vollständig
- [Opt-outs und Schlüsselwörter](/docs/guides/sms/opt-outs-and-keywords): was Bird für Sie übernimmt und wie Sie Unterdrückungen verwalten
- [SMS-Ereignisse](/docs/guides/sms/events): das Ereignisvokabular, auf das Ihr Status-Handler wechselt
- [Webhooks & Events](/docs/guides/webhooks): Endpunkt-Einrichtung und Standard-Webhooks-Verifizierung

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