Sign inGet Started

Telnyx से SMS पर माइग्रेट करें

यह पेज Telnyx के Messages API, मैसेजिंग प्रोफ़ाइल और डिलीवरी वेबहुक को Bird से मिलाता है। मुख्य माइग्रेशन गाइड के चरणों का क्रम से पालन करें और चरण 3, 4 और 5 के लिए ये मैपिंग इस्तेमाल करें।

यहाँ दिए गए सभी प्रदाताओं में से इसकी भेजने वाली कॉल Bird की कॉल से सबसे ज़्यादा मिलती है: JSON, एक bearer कुंजी और फ़ील्ड के वही नाम। POST https://api.telnyx.com/v2/messages में from, to और text दिए जाते हैं, और POST /v1/sms/messages में भी यही दिए जाते हैं। जो चीज़ साथ नहीं आती, वह है मैसेजिंग प्रोफ़ाइल। Telnyx लगभग हर चीज़ इसी प्रोफ़ाइल के स्तर पर रखता है: सेंडर पूल, वेबहुक URL, ऑप्ट-आउट का दायरा और कीवर्ड कॉन्फ़िगरेशन। Bird इन्हें सेंडर, वेबहुक सब्सक्रिप्शन और सप्रेशन में बाँट देता है। इस माइग्रेशन का ज़्यादातर काम इसी ऑब्जेक्ट को अलग-अलग हिस्सों में बाँटना है।

इसे अपने एजेंट को सौंपें

यह ब्रीफ़ अपने कोडिंग एजेंट में इस्तेमाल करें। यह पहले मौजूदा सेटअप की जाँच करता है और प्रोडक्शन में कोई भी बदलाव करने से पहले एक माइग्रेशन योजना बनाता है, जिसकी आप समीक्षा कर सकते हैं।

कोड उदाहरण
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 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.

भेजने वाली कॉल को मैप करें

यह क्या करता हैTelnyxBird
प्राप्तकर्ताtoto (प्रति अनुरोध एक)
प्रेषकfrom या messaging_profile_idfrom
संदेश का मुख्य भागtexttext
उद्देश्य(कोई नहीं)category, मुक्त टेक्स्ट के लिए आवश्यक
डिलीवरी रिपोर्टप्रोफ़ाइल का वेबहुक URLनीचे दिए गए डिलीवरी इवेंट के लिए सब्सक्राइब किया गया वर्कस्पेस वेबहुक
राउंड-ट्रिप संदर्भआपका अपना स्टोर, ID के आधार परmetadata: मनचाहा JSON, हर इवेंट में वापस भेजा जाता है
फ़िल्टर करने योग्य लेबल(कोई नहीं)tags: {name, value} जोड़े
सुरक्षित रूप से फिर से प्रयास करना(कोई दस्तावेज़ नहीं)Idempotency-Key हेडर
मीडियाmedia_urlsकोई समकक्ष नहीं: media_urls अस्वीकार कर दिया जाता है

पोर्टिंग से जुड़ी बातें:

  • मैसेजिंग प्रोफ़ाइल ID एक सीधी sender वैल्यू बन जाती है। Telnyx प्रोफ़ाइल के पीछे नंबर पूल और उसके भेजने के नियम तय करता है। Bird में आप sender को सीधे from में देते हैं, इसलिए हर भेजने पर उसे चुनें, या टेम्पलेट से भेजना इस्तेमाल करें, जो गंतव्य के लिए एक मान्य sender चुनता है और from को अस्वीकार करता है।
  • Messages API में category के समकक्ष कुछ भी नहीं है। हर मैसेज प्रकार के लिए तय करें कि वह transactional, marketing, authentication या service है। ख़ास तौर पर ऑथेंटिकेशन ट्रैफ़िक को मार्केटिंग डिफ़ॉल्ट में छोड़ने के बजाय उसी रूप में लेबल करें।
  • फिर से प्रयास करने का व्यवहार अलग से जाँचें। Telnyx के send रेफ़रेंस में कोई idempotency कुंजी दर्ज नहीं है, इसलिए वहाँ टाइमआउट होने पर आपको पता नहीं चलता कि मैसेज गया या नहीं। पहले पोर्ट से ही Idempotency-Key हेडर भेजें।

ऑप्ट-आउट साथ लाएँ

यही वह चरण है जो लोगों को चौंकाता है, और सबसे पहले यह गिनें कि आपकी सूची कितने सप्रेशन में बदलेगी।

Telnyx ऑप्ट-आउट को पूरी मैसेजिंग प्रोफ़ाइल पर लागू करता है: जो सब्सक्राइबर किसी प्रोफ़ाइल के किसी भी एक नंबर पर STOP भेजता है, वह उस प्रोफ़ाइल के हर नंबर से ब्लॉक हो जाता है, और उसे भेजने पर त्रुटि 40300, "Blocked due to STOP message" मिलती है। अलग-अलग प्रोग्राम के लिए अलग ऑप्ट-आउट सूचियाँ रखने के लिए अलग प्रोफ़ाइल रखनी पड़ती हैं।

इसके बजाय Bird सप्रेशन को sender और सब्सक्राइबर की जोड़ी पर लागू करता है। इसलिए बारह नंबरों वाली प्रोफ़ाइल पर एक Telnyx ऑप्ट-आउट बारह Bird सप्रेशन बन जाता है, और सौ नंबरों वाली प्रोफ़ाइल पर सौ। इम्पोर्ट से पहले गिनें: गुणक उन senders की संख्या है जिन्हें आप उस प्रोफ़ाइल से ला रहे हैं, और इसी से तय होता है कि इम्पोर्ट सैकड़ों का लूप होगा या दसियों हज़ार का।

प्रोफ़ाइल-स्तर की सहमति वापसी को सभी संबंधित senders पर बनाए रखें। sender-स्तर पर संग्रह होने का मतलब यह नहीं है कि आप किसी दूसरे नंबर से प्रोग्राम फिर शुरू कर सकते हैं। जाँचें कि क्या व्यक्ति के वास्तविक अनुरोध को दर्शाने के लिए वर्कस्पेस-स्तर की प्राथमिकता सही तरीका है।

सप्रेशन लूप के ज़रिए इम्पोर्ट करें। सप्रेशन पढ़ना और प्रबंधित करना में कमांड है, और यह कारण भी कि मैन्युअल सप्रेशन ट्रांज़ैक्शनल समेत हर श्रेणी को क्यों रोकता है।

autoresp_configs के ज़रिए कॉन्फ़िगर किए गए कस्टम कीवर्ड और ऑटो-रिस्पॉन्स को Bird कीवर्ड नियमों के रूप में फिर से बनाएँ। सप्रेस किए गए जोड़े को भेजा गया संदेश प्रवेश पर ही E12077 SMSRecipientSuppressed के साथ अस्वीकार हो जाता है; आगे के चरण में हुआ ऑप्ट-आउट एक अलग recipient_opted_out डिलीवरी परिणाम है। Telnyx की त्रुटि 40300 को बदलते समय दोनों रास्तों को संभालें।

कारण आपस में मिलते नहीं, बल्कि एक के ऊपर एक जुड़ते हैं, और ट्रैफ़िक शुरू होने के बाद इसका असर पड़ता है: जिस जोड़े को आपने manual के रूप में इम्पोर्ट किया और जो फिर STOP टेक्स्ट करता है, उसे keyword_stop कारण वाला दूसरा रिकॉर्ड मिलता है। उस जोड़े के सभी रिकॉर्ड समाप्त होने तक संदेश रुके रहते हैं। किसी इम्पोर्ट किए गए सब्सक्राइबर को फिर से शुरू करने के लिए आपको दोनों रिकॉर्ड हटाने होंगे।

डिलीवरी स्टेटस का अनुवाद करें

इस तालिका का उपयोग लाइफ़साइकल की अवधारणाओं की तुलना के लिए करें, इवेंट के नाम यांत्रिक रूप से बदलने के लिए नहीं। Bird रिपोर्ट किए गए स्टेटस और कारण के आधार पर विफलता इवेंट चुनता है। अस्वीकार किया गया API अनुरोध कोई संदेश नहीं बनाता; स्वीकृति के बाद हुई अस्वीकृति, जिसमें कैरियर की अस्वीकृति भी शामिल है, sms.rejected उत्पन्न कर सकती है। डिलीवरी का प्रमाण न होने पर परिणाम अज्ञात ही रहता है। अपने सामान्यीकृत परिणाम के साथ प्रदाता का मूल स्टेटस और कोड भी सुरक्षित रखें।

परिणामTelnyxBird
API ने संदेश स्वीकार कियाqueuedsms.accepted
कैरियर को सौंपा गयाsent, message.sent परsms.sent
कैरियर ने डिलीवरी की पुष्टि कीdelivered, message.finalized परsms.delivered
डिलीवरी विफल रहीdelivery_failedsms.undelivered
स्थायी विफलताsending_failedsms.failed
अनुरोध स्वीकृति के समय अस्वीकार हुआअनुरोध त्रुटिHTTP त्रुटि; कोई संदेश या इवेंट नहीं
वैधता अवधि समाप्त हो गई(कोई नहीं)sms.expired

सिर्फ़ नाम नहीं, इवेंट की संरचना भी बदलती है। Telnyx एक ही message.finalized वेबहुक भेजता है, जिसके status फ़ील्ड में अंतिम स्थिति होती है, इसलिए आपका हैंडलर एक ही इवेंट टाइप के अंदर किसी मान के आधार पर शाखाएँ बनाता है। Bird इसके बजाय अलग-अलग इवेंट टाइप भेजता है, और आप उन्हीं को सब्सक्राइब करते हैं जो आपको चाहिए। इस तरह शाखा आपके कोड से निकलकर सब्सक्रिप्शन में चली जाती है। इसी कारण ऊपर बाएँ कॉलम में इवेंट और स्थिति दोनों लिखे हैं, जबकि दाएँ कॉलम में केवल इवेंट।

नामों के साथ दो और कार्यप्रणालियाँ बदलती हैं:

  • प्रोफ़ाइल के वेबहुक URL की जगह सब्सक्रिप्शन लेते हैं। Telnyx डिलीवरी अपडेट मैसेजिंग प्रोफ़ाइल पर दर्ज URL पर भेजता है, इसलिए गंतव्य उस प्रोफ़ाइल की विशेषता होता है जिससे हर संदेश भेजा गया। Bird उन एंडपॉइंट पर डिलीवर करता है जिन्हें आपका वर्कस्पेस पंजीकृत करता है, और हर एंडपॉइंट अपने चाहे गए इवेंट टाइप सब्सक्राइब करता है। इसलिए दूसरा उपभोक्ता जोड़ने के लिए किसी साझा ऑब्जेक्ट को बदलने के बजाय दूसरा सब्सक्रिप्शन बनाना होता है।
  • Telnyx की सिग्नेचर योजना की जगह Standard Webhooks लेता है। Bird Standard Webhooks के अनुसार साइन किए गए JSON भेजता है; अपने सत्यापन को वेबहुक और इवेंट में दी गई विधि से बदलें।

एंडपॉइंट एक बार पंजीकृत करें और उन इवेंट टाइप के नाम दें जो आपके हैंडलर को चाहिए। ऊपर दिए गए sms.* इवेंट ही सब्सक्राइब करने की सूची हैं, और उनकी जगह लेने वाला कोई वाइल्डकार्ड नहीं है। एंडपॉइंट बनाएँ में कमांड दी गई है, साथ ही वह एक बात भी जिसे पहली कॉल में ही सही करना ज़रूरी है: रिस्पॉन्स में सिर्फ़ एक बार दिखने वाले साइनिंग सीक्रेट को सहेजना।

Bird विफलता को एक मानकीकृत error कोड के साथ रिपोर्ट करता है, जैसे invalid_destination, content_rejected, provider_unavailable या recipient_opted_out; पूरी सूची इवेंट पेज पर है। अपनी अलर्टिंग को इन्हीं कोड से जोड़ें।

स्विच करें

गंतव्य, सेंडर और ट्रैफ़िक रैंप किसी प्रदाता पर निर्भर नहीं हैं और मुख्य गाइड में शामिल हैं। स्विच करने की योजना में Telnyx से जुड़ी दो बातें शामिल करें। पहली, आपका 10DLC ब्रांड और कैंपेन Telnyx के माध्यम से The Campaign Registry में पंजीकृत हैं, और वे अपने-आप Bird पंजीकरण नहीं बन जाते। सशुल्क काम सबमिट करने से पहले लागू माइग्रेशन या पंजीकरण प्रक्रिया की पुष्टि करें। दूसरी, Telnyx पर आपके स्वामित्व वाले नंबरों के लिए पोर्ट की ज़रूरत होती है, जिसे सपोर्ट टीम आपके नहीं, बल्कि अपने समय के अनुसार व्यवस्थित करती है।

Bird की ओर की आवश्यकताओं के लिए 10DLC के लिए पंजीकरण करें से शुरू करें। इसमें बताया गया है कि हर फ़ील्ड का क्या अर्थ है और रजिस्ट्री किन इकाई प्रकारों को मान्यता देती है। इसमें आवश्यकताओं वाला कॉल भी है, जो बताता है कि ब्रांड बनाने से पहले आपको क्या देना है। ब्रांड बनाना ही वह चरण है जिसका शुल्क लगता है।

अगले चरण

इस विषय के लिए दस्तावेज़, गाइड और उदाहरणों के साथ आगे बढ़ें।