Sign inGet started

SMS von Twilio migrieren

Diese Seite bildet Twilios Programmable Messaging API, Messaging Services und Status-Callbacks auf Bird ab. Befolgen Sie die Hauptmigrationsanleitung der Reihe nach und verwenden Sie diese Zuordnungen für die Schritte 3, 4 und 5.
Zwei Unterschiede prägen die gesamte Portierung. Twilios POST /2010-04-01/Accounts/{AccountSid}/Messages.json nimmt formcodierte PascalCase-Parameter entgegen, authentifiziert mit Ihrer Account-SID und Ihrem Auth Token; POST /v1/sms/messages nimmt JSON entgegen, authentifiziert mit einem Bearer-API-Schlüssel gegen Ihren regionalen Host. Und ein Twilio Messaging Service kann Absenderauswahl, Opt-out-Handling und Callback-Konfiguration bündeln. Bilden Sie jedes Verhalten separat auf den Bird-Eigentümer ab; die SID einfach in einen Absenderwert umzubenennen, erhält nicht den gesamten Service.

Übergeben Sie dies an Ihren Agenten

Verwenden Sie dieses Briefing in Ihrem Coding-Agenten. Es beginnt mit einer Bestandsaufnahme und erstellt einen überprüfbaren Migrationsplan, bevor eine Produktionsänderung erfolgt.
Codebeispiel
Help me migrate my SMS integration from Twilio 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 https://bird.com/docs/guides/sms/migrate/twilio.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 Twilio 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 Sende-Aufruf abbilden

FunktionTwilioBird
EmpfängerToto (einer pro Request)
AbsenderFrom oder MessagingServiceSidfrom
NachrichtentextBodytext
InhaltsvorlageContentSid + ContentVariablesInhalte separat prüfen; Bird-Systemvorlagen sind kein Import von Twilio Content
Intent(keiner)category, erforderlich bei Freitext
Filterbare Labels(keine)tags: {name, value}-Paare
Round-Trip-Kontexteigener Speicher, nach SID indiziertmetadata: beliebiger JSON, wird bei jedem Event zurückgegeben
ZustellberichteStatusCallbackein Workspace-Webhook, der die unten aufgeführten Zustellevents abonniert hat
TransliterationSmartEncodedoptions.smart_encoding (Standard false)
Sichere Wiederholungen(keine bei Messages)Idempotency-Key-Header
ZeitplanungScheduleType + SendAtkein Äquivalent: scheduled_at wird abgelehnt
MedienMediaUrlkein Äquivalent: media_urls wird abgelehnt
GültigkeitsdauerValidityPeriodkein Äquivalent: validity_period wird abgelehnt
LinkverkürzungShortenUrlskein Äquivalent
Die drei abgelehnten Felder sind reserviert und beantworten 422 SMSUnsupportedFeature. Behalten Sie Zeitplanung und Medienverarbeitung vorerst dort, wo sie sind.
Portierungshinweise:
  • Lösen Sie die Messaging-Service-Verhaltensweisen separat auf. Twilio löst Absenderpool, Sticky Sender und Geomatch hinter der SID auf. Bird erwartet den Absender selbst in from; wählen Sie den Absender also pro Versand, oder nutzen Sie einen Vorlagenversand, der einen gültigen Absender für das Ziel auswählt und from ablehnt.
  • Ein Zeichenlimit wird zu einem Segmentlimit. Die Längen liegen bei GSM-7-Text nah beieinander, das Fehlerverhalten jedoch nicht: Bird kürzt nie, daher wird ein zu langer Nachrichtentext mit einem 422 abgelehnt statt beschnitten.
  • Nichts in der Messages-API entspricht category. Entscheiden Sie pro Nachrichtentyp, ob es sich um transactional, marketing, authentication oder service handelt. Insbesondere Authentifizierungsverkehr sollte entsprechend gekennzeichnet werden, statt ihn im Marketing-Standard zu belassen.
  • Twilios Test-Credentials werden auf simulierte Ziele abgebildet. Die Magic Numbers, mit denen Sie bereits testen, einschließlich +15005550006 und +15005550001, erzeugen auch hier synthetisierte Ergebnisse – mit zwei Unterschieden: Es gibt keine separaten Test-Credentials, und die Sendungen werden berechnet. Die Ergebnisse sind in der Hauptanleitung aufgelistet.

Opt-outs übernehmen

Twilio kann ein Opt-out auf eine Nummer oder einen Messaging Service beschränken. Eine serviceweite Anfrage kann mehrere Absender abdecken. Bewahren Sie diesen Umfang bei der Übernahme in die Absender-und-Abonnenten-Sperrungen von Bird, oder verwenden Sie die entsprechende Workspace-Einstellung für eine tatsächlich workspace-weite Anfrage.
Twilios Advanced Opt-Out-Dokumentation besagt, dass das Reporting gesperrter Nummern weder über die Console noch über REST API zugänglich ist. Fordern Sie einen Export über den verfügbaren Supportprozess an und gleichen Sie ihn mit Ihren eigenen Präferenz-Einträgen, Eingangsprotokollen und Supportanfragen ab. Ein Keyword-Protokoll allein kann unvollständig sein.
Importieren Sie das geprüfte Ergebnis über den Sperrungs-Workflow. Eine manuelle Sperrung blockiert jede Kategorie für dieses Paar; prüfen Sie daher den beabsichtigten Umfang, statt ihn stillschweigend einzuengen oder auszuweiten.
Twilios 21610 signalisiert einen abgemeldeten Empfänger. In Bird wird ein gesperrtes Paar bei der Annahme mit E12077 SMSRecipientSuppressed abgewiesen, bevor eine Nachricht existiert. Der Zustellfehler recipient_opted_out meldet hingegen ein nachgelagertes Opt-out. Prüfen Sie die Keyword-Abdeckung von Bird, bevor Sie einen bestehenden Handler außer Betrieb nehmen, und erhalten Sie Opt-out-Mechanismen außerhalb des integrierten Katalogs.

Zustellstatus übersetzen

Verwenden Sie diese Tabelle, um Lebenszykluskonzepte zu vergleichen, nicht um Events mechanisch umzubenennen. Bird wählt ein Fehler-Event anhand des gemeldeten Status und Grundes. Ein abgelehnter API-Request erzeugt keine Nachricht; eine Ablehnung nach Annahme kann sms.rejected erzeugen, einschließlich einer Carrier-Ablehnung. Fehlende Zustellnachweise bleiben unbekannt. Bewahren Sie den rohen Provider-Status und -Code zusammen mit Ihrem normalisierten Ergebnis auf.
ErgebnisTwilio MessageStatusBird
API hat die Nachricht angenommenqueued, acceptedsms.accepted
An den Carrier übergebensending, sentsms.sent
Carrier hat Zustellung bestätigtdeliveredsms.delivered
Carrier hat Nichtzustellung gemeldetundeliveredsms.undelivered
Permanenter Fehlerfailedsms.failed
Request bei Annahme abgelehntRequest-FehlerHTTP-Fehler; keine Nachricht oder Event
Gültigkeitsfenster abgelaufen(keiner)sms.expired
Geplant oder storniertscheduled, cancelednoch kein Äquivalent
Drei Mechanismen ändern sich mit den Bezeichnungen:
  • Endpoints ersetzen Callback-URLs. Twilio postet an die StatusCallback der Nachricht oder des Messaging Service. Bird liefert an Endpoints, die Ihr Workspace registriert, jeweils abonniert auf die gewünschten Event-Typen; ein neuer Consumer ist also ein neues Abonnement statt eines Redeployments.
  • Signiertes JSON ersetzt formcodierte Posts. Twilio sendet application/x-www-form-urlencoded mit einem X-Twilio-Signature-Header; Bird sendet JSON, signiert gemäß Standard Webhooks. Tauschen Sie die Verifizierung gegen das Rezept in Webhooks & Events.
  • Eingehende Nachrichten treffen als Events ein. Twilios nummernspezifischer "A message comes in"-Webhook erwartet eine TwiML-Antwort, die Ihre App für automatische Antworten nutzen kann. Bird sendet sms.received an denselben abonnierten Endpoint wie alles andere, und es gibt keinen Response-Body, der eine Antwort sendet: Antworten Sie durch Aufruf des Sende-Endpoints, oder lassen Sie Keyword-Regeln für Sie antworten.
Registrieren Sie den Endpoint einmal und benennen Sie die Event-Typen, die Ihr Handler verarbeiten soll: Die sms.*-Events in der obigen Tabelle sind die Liste, die Sie abonnieren müssen, und es gibt keinen Wildcard-Platzhalter dafür. Endpoint erstellen enthält den Befehl, warum der Katalog aufgezählt werden muss, und die eine Sache, die beim ersten Aufruf stimmen muss: das Signiergeheimnis zu speichern, das die Antwort genau einmal anzeigt.
Twilios numerische Fehlercodes haben keine 1:1-Zuordnung. Bird meldet einen Fehler mit einem standardisierten error-Code wie invalid_destination, content_rejected, provider_unavailable oder recipient_opted_out; die vollständige Liste finden Sie auf der Events-Seite. Bilden Sie Ihr Alerting auf diese Codes ab, nicht auf die Codes im 30000er-Bereich.

Umstellung

Ziele, Absender und die Traffic-Rampe sind anbieterunabhängig und in der Hauptanleitung behandelt. Zwei Twilio-spezifische Punkte gehören auf den Umstellungsplan: Ihre 10DLC-Marke und -Kampagne sind über Twilio bei The Campaign Registry registriert und werden nicht automatisch zu Bird-Registrierungen. Bestätigen Sie das geltende Migrations- oder Registrierungsverfahren, bevor Sie kostenpflichtige Arbeit einreichen. Nummern, die Sie bei Twilio besitzen, erfordern eine Portierung, die der Support arrangiert – nach dessen Zeitplan, nicht nach Ihrem.
Für die Bird-seitigen Anforderungen beginnen Sie mit Für 10DLC registrieren: Die Seite erklärt, was jedes Feld bedeutet, welche Entitätstypen die Registry anerkennt, und den Requirements Call, der Ihnen sagt, was Sie liefern müssen, bevor Sie die Marke erstellen – das ist der kostenpflichtige Schritt.

Nächste Schritte

Verwandte Ressourcen

Weiter mit der Dokumentation, Anleitungen und Beispielen zu diesem Thema. Die Ressourcen sind auf Englisch.