Sign inGet Started

SMS migreren van Telnyx

Deze pagina vertaalt Telnyx' Messages API, messaging profiles en delivery webhooks naar Bird. Volg de hoofdmigratiegids op volgorde en gebruik deze mappings voor stap 3, 4 en 5.

Van alle providers hier lijkt de verzendaanroep het meest op die van Bird: JSON, een bearer key en dezelfde veldnamen. POST https://api.telnyx.com/v2/messages accepteert from, to en text, en POST /v1/sms/messages ook. Het messaging profile krijgt een andere vorm. Telnyx maakt het de eenheid van bijna alles: afzenderpool, webhook-URL, opt-outscope en de keywordconfiguratie. Een Bird-messaging profile bevat de verzendkant: de afzender per bestemmingsland plus een standaardafzender, de nummers die antwoorden ontvangen, verzendstandaarden en een callback-URL. Opt-outs en keywords vallen erbuiten, als suppressies en keyword rules. Het meeste werk in deze migratie bestaat uit bepalen waar elk onderdeel van een Telnyx-profile terechtkomt.

Geef dit aan je agent

Gebruik deze briefing in je coding agent. Hij begint met discovery en levert een reviewbaar migratieplan op voordat er iets in productie verandert.

Codevoorbeeld
Help me migrate my SMS integration from Telnyx 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/telnyx.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 Telnyx numbers, prepare the human support port request and obtain authorization to send it. Read bird platform support 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.

Vertaal de verzendaanroep

Wat het doetTelnyxBird
Ontvangertoto (één per request)
Afzenderfrom of messaging_profile_idfrom, of messaging_profile_id met de naam van een Bird-messaging profile
Inhoudtexttext
Intent(geen)category, verplicht bij vrije tekst tenzij het profile een standaardwaarde instelt
Afleverrapportende webhook-URL van het profilede options.callback_url van het profile, of een werkruimte-webhook geabonneerd op de afleverevents hieronder
Retourcontextje eigen opslag, op ID gekeyedmetadata: willekeurige JSON, meegestuurd bij elk event
Filterbare labels(geen)tags: {name, value}-paren
Veilig opnieuw proberen(niet gedocumenteerd)Idempotency-Key-header
Mediamedia_urlsgeen equivalent: media_urls wordt geweigerd

Porteernotities:

  • Een messaging-profile-ID wordt een Bird-messaging-profile-ID. Maak een messaging profile aan met de afzender voor elk bestemmingsland, of een standaardafzender, en noem het in messaging_profile_id. Als je from weglaat, verzendt Bird vanaf de afzender van het profile voor het bestemmingsland. Een Bird-profile bevat één afzender per bestemmingsland, dus een Telnyx-nummerpool wordt één gekozen afzender per land. Een from bij de verzending heeft voorrang, en een template send selecteert nog steeds een geldige afzender voor de bestemming en weigert from.
  • Niets op de Messages API komt overeen met category. Beslis per berichttype of het transactional, marketing, authentication of service is. Vooral authenticatieverkeer moet je als zodanig labelen in plaats van het in een marketingstandaard te laten staan.
  • Bekijk het gedrag bij opnieuw proberen apart. De send-referentie van Telnyx documenteert geen idempotency key, dus na een timeout moet je raden of het bericht is verstuurd. Stuur de Idempotency-Key-header mee vanaf de eerste port.

Neem opt-outs over

Dit is de stap die mensen verrast, en het getal dat je eerst moet uitrekenen is hoeveel suppressies je lijst wordt.

Telnyx beperkt een opt-out tot het hele messaging profile: een abonnee die STOP sms't naar een willekeurig nummer op een profile wordt geblokkeerd voor elk nummer op dat profile, en een verzending naar die persoon geeft fout 40300, "Blocked due to STOP message". Aparte opt-outlijsten voor aparte programma's bijhouden doe je door aparte profiles te gebruiken.

Bird beperkt een suppressie tot een afzender-en-abonneepaar. Eén Telnyx-opt-out tegen een profile met twaalf nummers wordt dus twaalf Bird-suppressies, en een profile met honderd nummers wordt er honderd. Tel voordat je importeert: de vermenigvuldigingsfactor is het aantal afzenders dat je overneemt van dat profile, en dat bepaalt of de import een lus van honderden of van tienduizenden is.

Behoud de profile-brede intrekking over alle relevante afzenders. Opslag op afzenderniveau is geen toestemming om een programma onder een ander nummer te hervatten. Controleer of een werkruimte-brede voorkeur de juiste representatie is van het daadwerkelijke verzoek van de persoon.

Importeer via de suppressielus. Suppressies lezen en beheren bevat het commando, en de reden waarom een handmatige suppressie elke categorie blokkeert, inclusief transactioneel.

Maak de aangepaste keywords en auto-responses die via autoresp_configs geconfigureerd zijn opnieuw als Bird keyword rules. Een verzending naar een onderdrukt paar wordt geweigerd bij toelating met E12077 SMSRecipientSuppressed; een downstream opt-out is een apart recipient_opted_out-afleverresultaat. Vang beide paden op wanneer je Telnyx-fout 40300 vervangt.

Redenen stapelen in plaats van samen te voegen, en dat doet ertoe zodra er verkeer loopt: een paar dat je importeerde als manual en dat vervolgens STOP sms't, krijgt een tweede record met reden keyword_stop, en berichten blijven geblokkeerd totdat elk record voor dat paar is beëindigd. Een abonnee hervatten die je ooit importeerde betekent beide verwijderen.

Vertaal afleverstatussen

Gebruik deze tabel om levenscyclusconcepten te vergelijken, niet om events mechanisch te hernoemen. Bird kiest een fout-event op basis van de gerapporteerde status en reden. Een geweigerd API-request maakt geen bericht aan; een weigering na acceptatie kan sms.rejected opleveren, inclusief een carrierweigering. Ontbrekend afleverbewijs blijft onbekend. Bewaar de ruwe providerstatus en -code naast je genormaliseerde uitkomst.

UitkomstTelnyxBird
API heeft het bericht geaccepteerdqueuedsms.accepted
Overgedragen aan de carriersent, op message.sentsms.sent
Carrier bevestigde afleveringdelivered, op message.finalizedsms.delivered
Aflevering misluktdelivery_failedsms.undelivered
Permanente foutsending_failedsms.failed
Request geweigerd bij toelatingrequestfoutHTTP-fout; geen bericht of event
Geldigheidsvenster verstreken(geen)sms.expired als de carrier het verlopen meldt; sms.rejected of sms.failed als validity_period afloopt vóór de overdracht

Zowel de eventnamen als de eventstructuur veranderen. Telnyx stuurt één message.finalized-webhook met de eindstatus in een status-veld, dus je handler vertakt op een waarde binnen één eventtype. Bird stuurt in plaats daarvan aparte eventtypen, en je abonneert je op de typen die je wilt. Zo verplaatst de vertakking zich uit je code naar de subscription. Daarom noemt de linkerkolom hierboven een event en een status samen en de rechterkolom alleen een event.

Er veranderen nog twee mechanismen met de namen:

  • Een callback-URL van het profile of subscriptions vervangen de webhook-URL van het profile. Telnyx post afleverupdates naar de URL op het messaging profile, dus de bestemming is een eigenschap van het profile waarmee elk bericht is verzonden. De options.callback_url van een Bird-profile behoudt die vorm: events voor berichten die met het profile zijn verzonden, gaan naar die URL in plaats van naar je webhook-endpoints, en antwoorden gaan naar de inbound.callback_url ervan als die is ingesteld. Als het profile callback_events instelt, bereikt een uitgaand event dat het weglaat noch de URL noch je endpoints. Neem dus de afleverevents op die je handler nodig heeft. SMS-callback-URL's behandelt routering, nieuwe pogingen en replay. Zonder callback-URL levert Bird af op endpoints die je werkruimte registreert, elk geabonneerd op de eventtypen die het wil. Een tweede consumer is dus een tweede subscription in plaats van een wijziging aan een gedeeld object.
  • Standard Webhooks vervangt Telnyx' ondertekeningsschema. Bird stuurt JSON ondertekend volgens Standard Webhooks; vervang de verificatie door het recept in Webhooks & events. Een callback-URL gebruikt hetzelfde schema met het callback signing secret van je werkruimte. Dat secret moet je eerst roteren voordat je kunt verifiëren.

Registreer het endpoint eenmalig en noem de eventtypen die je handler wil: de sms.*-events hierboven zijn de lijst om op te abonneren, en er is geen wildcard die ze vervangt. Maak een endpoint aan bevat het commando en het enige dat je bij de eerste aanroep goed moet doen: het signing secret opslaan dat de response precies één keer toont.

Bird rapporteert een fout met een gestandaardiseerde error-code zoals invalid_destination, content_rejected, provider_unavailable of recipient_opted_out; de volledige lijst staat op de eventpagina. Koppel je alerting daaraan.

Overschakelen

Bestemmingen, afzenders en de verkeersopbouw zijn provideronafhankelijk en worden behandeld in de hoofdgids. Twee Telnyx-specifieke punten horen op het overschakelplan: je 10DLC-merk en -campagne zijn via Telnyx geregistreerd bij The Campaign Registry en worden niet automatisch Bird-registraties. Bevestig de toepasselijke migratie- of registratieprocedure voordat je betaald werk indient. Nummers die je bij Telnyx bezit, moeten geport worden. Support regelt dat volgens zijn eigen planning, niet de jouwe.

Begin voor de Bird-vereisten bij Registreren voor 10DLC: die pagina behandelt wat elk veld betekent, de entitytypen die het register erkent, en de requirements-aanroep die je vertelt wat je moet aanleveren voordat je het merk aanmaakt, want dat is de betaalde stap.

Volgende stappen

Ga verder met de documentatie, handleidingen en voorbeelden voor dit onderwerp.