Twilio से SMS माइग्रेट करें
यह पेज Twilio के Programmable Messaging API, Messaging Services और स्टेटस कॉलबैक को Bird से मैप करता है। मुख्य माइग्रेशन गाइड का क्रम से पालन करें और चरण 3, 4 और 5 के लिए इन मैपिंग का उपयोग करें।
दो अंतर पूरे पोर्ट को प्रभावित करते हैं। Twilio का POST /2010-04-01/Accounts/{AccountSid}/Messages.json फ़ॉर्म-एन्कोडेड PascalCase पैरामीटर लेता है, जो आपके Account SID और Auth Token से प्रमाणित होते हैं; POST /v1/sms/messages JSON लेता है, जो आपके क्षेत्रीय होस्ट पर bearer API कुंजी से प्रमाणित होता है। साथ ही, एक Twilio Messaging Service सेंडर चुनना, ऑप्ट-आउट संभालना और कॉलबैक कॉन्फ़िगरेशन एक साथ जोड़ सकती है। हर व्यवहार को अलग से Bird में उसके ज़िम्मेदार हिस्से से मैप करें; उसके SID को सेंडर मान के रूप में बदल देने से पूरी सेवा का व्यवहार सुरक्षित नहीं रहता।
यह अपने एजेंट को दें
यह ब्रीफ़ अपने कोडिंग एजेंट में इस्तेमाल करें। यह खोजबीन से शुरू होता है और किसी भी प्रोडक्शन बदलाव से पहले समीक्षा योग्य माइग्रेशन योजना तैयार करता है।
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.send कॉल को मैप करें
| यह क्या करता है | Twilio | Bird |
|---|---|---|
| प्राप्तकर्ता | To | to (प्रति अनुरोध एक) |
| प्रेषक | From या MessagingServiceSid | from |
| मुख्य पाठ | Body | text |
| कंटेंट टेम्पलेट | ContentSid + ContentVariables | कंटेंट की समीक्षा अलग से करें; Bird के सिस्टम टेम्पलेट Twilio Content का इम्पोर्ट नहीं हैं |
| उद्देश्य | (कोई नहीं) | category, फ़्री टेक्स्ट पर आवश्यक |
| फ़िल्टर किए जा सकने वाले लेबल | (कोई नहीं) | tags: {name, value} जोड़े |
| वापस लौटने वाला संदर्भ | आपका अपना स्टोर, SID के आधार पर | metadata: कोई भी JSON, हर इवेंट में वापस भेजा जाता है |
| डिलीवरी रिपोर्ट | StatusCallback | नीचे दिए गए डिलीवरी इवेंट के लिए सब्सक्राइब किया गया वर्कस्पेस वेबहुक |
| लिप्यंतरण | SmartEncoded | options.smart_encoding (डिफ़ॉल्ट false) |
| सुरक्षित रूप से फिर से प्रयास | (Messages पर कोई नहीं) | Idempotency-Key हेडर |
| शेड्यूलिंग | ScheduleType + SendAt | कोई समतुल्य नहीं: scheduled_at अस्वीकार कर दिया जाता है |
| मीडिया | MediaUrl | कोई समतुल्य नहीं: media_urls अस्वीकार कर दिया जाता है |
| वैधता अवधि | ValidityPeriod | कोई समकक्ष नहीं: validity_period अस्वीकार किया जाता है |
| लिंक छोटा करना | ShortenUrls | कोई समकक्ष नहीं |
अस्वीकार किए जाने वाले तीनों फ़ील्ड आरक्षित हैं और 422 SMSUnsupportedFeature लौटाते हैं। फ़िलहाल शेड्यूलिंग और मीडिया को उसी जगह संभालते रहें जहाँ वे अभी संभाले जाते हैं।
पोर्टिंग से जुड़ी बातें:
- Messaging Service के व्यवहारों को अलग-अलग सुलझाएँ। Twilio सेंडर पूल, स्टिकी सेंडर और जियोमैच को SID के पीछे तय करता है। Bird सेंडर को सीधे
fromमें लेता है, इसलिए हर भेजने पर सेंडर चुनें, या टेम्पलेट से भेजना इस्तेमाल करें, जो गंतव्य के लिए मान्य सेंडर चुनता है औरfromको अस्वीकार करता है। - कैरेक्टर सीमा की जगह सेगमेंट सीमा आती है। GSM-7 टेक्स्ट के लिए लंबाइयाँ लगभग बराबर बैठती हैं, लेकिन विफलता का तरीका अलग है: Bird कभी टेक्स्ट नहीं काटता, इसलिए तय लंबाई से बड़ा बॉडी छोटा करने के बजाय
422के साथ अस्वीकार किया जाता है। - Messages API में
categoryके अनुरूप कुछ नहीं है। हर संदेश प्रकार के लिए तय करें कि वहtransactional,marketing,authenticationयाserviceहै। ख़ास तौर पर ऑथेंटिकेशन ट्रैफ़िक को मार्केटिंग डिफ़ॉल्ट में छोड़ने के बजाय ऑथेंटिकेशन के रूप में ही चिह्नित करें। - Twilio के टेस्ट क्रेडेंशियल सिम्युलेटेड गंतव्यों से मेल खाते हैं। जिन मैजिक नंबरों से आप पहले से टेस्ट करते हैं, जैसे
+15005550006और+15005550001, वे यहाँ भी सिम्युलेटेड परिणाम देते हैं, पर दो अंतर हैं: कोई अलग टेस्ट क्रेडेंशियल नहीं है, और इन भेजों का बिल लगता है। परिणामों की सूची मुख्य गाइड में है।
ऑप्ट-आउट साथ ले जाएँ
Twilio किसी ऑप्ट-आउट को किसी नंबर या Messaging Service तक सीमित कर सकता है। पूरी सर्विस पर लागू अनुरोध कई सेंडर पर लागू हो सकता है। Bird के सेंडर-और-सब्सक्राइबर सप्रेशन में इम्पोर्ट करते समय उस दायरे को बनाए रखें, या जो अनुरोध सचमुच पूरे वर्कस्पेस पर लागू होता है, उसके लिए उपयुक्त वर्कस्पेस प्राथमिकता का उपयोग करें।
Twilio के Advanced Opt-Out दस्तावेज़ के अनुसार, ब्लॉक किए गए नंबरों की रिपोर्टिंग उसके Console या REST API के ज़रिए उपलब्ध नहीं है। उपलब्ध सपोर्ट प्रक्रिया से एक्सपोर्ट का अनुरोध करें और उसे अपने प्राथमिकता रिकॉर्ड, इनबाउंड लॉग और सपोर्ट अनुरोधों से मिलाएँ। केवल कीवर्ड लॉग अधूरा हो सकता है।
समीक्षा किए गए परिणाम को सप्रेशन वर्कफ़्लो से इम्पोर्ट करें। मैन्युअल सप्रेशन उस जोड़ी के लिए हर श्रेणी को ब्लॉक कर देता है, इसलिए दायरे को चुपचाप संकीर्ण या व्यापक करने के बजाय इच्छित दायरा जाँच लें।
Twilio का 21610 बताता है कि प्राप्तकर्ता ने ऑप्ट-आउट किया है। Bird में, सप्रेस की गई जोड़ी को मैसेज बनने से पहले ही स्वीकृति के चरण में E12077 SMSRecipientSuppressed के साथ अस्वीकार कर दिया जाता है। इसके विपरीत, डिलीवरी त्रुटि recipient_opted_out आगे के चरण में हुए ऑप्ट-आउट की रिपोर्ट करती है। किसी मौजूदा हैंडलर को हटाने से पहले Bird की कीवर्ड कवरेज जाँचें, और बिल्ट-इन कैटलॉग से बाहर के ऑप्ट-आउट तरीकों को बनाए रखें।
डिलीवरी स्टेटस का अनुवाद करें
इस तालिका का उपयोग लाइफ़साइकल अवधारणाओं की तुलना के लिए करें, इवेंट के नाम यांत्रिक रूप से बदलने के लिए नहीं। Bird रिपोर्ट किए गए स्टेटस और कारण के आधार पर विफलता इवेंट चुनता है। अस्वीकार किया गया API अनुरोध कोई मैसेज नहीं बनाता; स्वीकृति के बाद हुई अस्वीकृति, जिसमें कैरियर की अस्वीकृति भी शामिल है, sms.rejected उत्पन्न कर सकती है। डिलीवरी का प्रमाण न होने पर परिणाम अज्ञात ही रहता है। अपने सामान्यीकृत परिणाम के साथ प्रोवाइडर का मूल स्टेटस और कोड भी सुरक्षित रखें।
| परिणाम | Twilio MessageStatus | Bird |
|---|---|---|
| API ने मैसेज स्वीकार किया | queued, accepted | sms.accepted |
| कैरियर को सौंपा गया | sending, sent | sms.sent |
| कैरियर ने डिलीवरी की पुष्टि की | delivered | sms.delivered |
| कैरियर ने डिलीवरी न होने की सूचना दी | undelivered | sms.undelivered |
| स्थायी विफलता | failed | sms.failed |
| प्रवेश पर अनुरोध अस्वीकार किया गया | अनुरोध त्रुटि | HTTP त्रुटि; कोई संदेश या इवेंट नहीं |
| वैधता अवधि समाप्त हो गई | (कोई नहीं) | sms.expired |
| शेड्यूल किया गया या रद्द किया गया | scheduled, canceled | अभी कोई समकक्ष नहीं |
नामों के साथ तीन कार्यप्रणालियाँ भी बदलती हैं:
- कॉलबैक URL की जगह एंडपॉइंट लेते हैं। Twilio संदेश या Messaging Service पर सेट
StatusCallbackपर पोस्ट करता है। Bird उन एंडपॉइंट पर डिलीवर करता है जिन्हें आपका वर्कस्पेस रजिस्टर करता है, और हर एंडपॉइंट अपने चाहे गए इवेंट प्रकारों को सब्सक्राइब करता है। इसलिए नए उपभोक्ता के लिए दोबारा डिप्लॉय नहीं, बस एक नया सब्सक्रिप्शन चाहिए। - फ़ॉर्म-एन्कोडेड पोस्ट की जगह साइन किया गया JSON लेता है। Twilio
X-Twilio-Signatureहेडर के साथapplication/x-www-form-urlencodedभेजता है; Bird Standard Webhooks के अनुसार साइन किया गया JSON भेजता है। अपने सत्यापन को Webhooks और इवेंट में दी गई विधि से बदलें। - इनबाउंड संदेश इवेंट के रूप में आते हैं। Twilio का प्रति-नंबर "A message comes in" वेबहुक एक TwiML प्रतिक्रिया की अपेक्षा करता है, जिससे आपका ऐप अपने-आप जवाब दे सकता है। Bird बाकी सब की तरह
sms.receivedको भी उसी सब्सक्राइब किए गए एंडपॉइंट पर भेजता है, और ऐसी कोई प्रतिक्रिया बॉडी नहीं है जो जवाब भेजे: जवाब देने के लिए send एंडपॉइंट को कॉल करें, या कीवर्ड नियमों को आपकी ओर से जवाब देने दें।
एंडपॉइंट को एक बार रजिस्टर करें और उन इवेंट प्रकारों के नाम दें जो आपके हैंडलर को चाहिए: ऊपर की तालिका में दिए गए sms.* इवेंट ही सब्सक्राइब करने की सूची हैं, और उनकी जगह लेने वाला कोई वाइल्डकार्ड नहीं है। एंडपॉइंट बनाएँ में कमांड है, यह कारण है कि कैटलॉग को एक-एक करके क्यों गिनाना पड़ता है, और वह एक बात है जो पहली कॉल में सही करनी है: प्रतिक्रिया में केवल एक बार दिखने वाले साइनिंग सीक्रेट को सहेजना।
Twilio के संख्यात्मक त्रुटि कोड का कोई एक-से-एक मिलान नहीं है। Bird विफलता को एक मानकीकृत error कोड से रिपोर्ट करता है, जैसे invalid_destination, content_rejected, provider_unavailable या recipient_opted_out; पूरी सूची इवेंट पेज पर है। अपनी अलर्टिंग को 30000-श्रेणी के कोड के बजाय इन्हीं कोड से जोड़ें।
कटओवर करें
गंतव्य, सेंडर और ट्रैफ़िक रैंप किसी प्रदाता पर निर्भर नहीं हैं और मुख्य गाइड में शामिल हैं। कटओवर योजना में Twilio से जुड़ी दो बातें शामिल होनी चाहिए। पहली, आपका 10DLC ब्रांड और कैंपेन Twilio के ज़रिए The Campaign Registry में रजिस्टर हैं और अपने-आप Bird रजिस्ट्रेशन नहीं बन जाते। सशुल्क काम जमा करने से पहले लागू माइग्रेशन या रजिस्ट्रेशन प्रक्रिया की पुष्टि करें। दूसरी, Twilio पर आपके स्वामित्व वाले नंबरों को पोर्ट करना होगा, जिसकी व्यवस्था सपोर्ट करता है, और यह आपके नहीं बल्कि उसके अपने शेड्यूल पर होता है।
Bird की ओर की आवश्यकताओं के लिए 10DLC के लिए रजिस्टर करें से शुरू करें: इसमें हर फ़ील्ड का अर्थ, रजिस्ट्री द्वारा मान्य इकाई प्रकार, और वह requirements कॉल शामिल है जो बताती है कि ब्रांड बनाने से पहले आपको क्या देना है। ब्रांड बनाना ही वह चरण है जिसका शुल्क लगता है।
अगले कदम
-
SMS के लिए Bird और Twilio की तुलना करें: प्रोडक्ट का मूल्यांकन और माइग्रेशन से जुड़ी बातें
-
SMS भेजना: जिस पेलोड पर आप पोर्ट कर रहे हैं, उसका पूरा विवरण
-
ऑप्ट-आउट और कीवर्ड: हर देश के लिए कीवर्ड कवरेज और सप्रेशन प्रबंधन
-
SMS इवेंट: वह इवेंट शब्दावली जिस पर आपका स्टेटस हैंडलर जाता है
-
वेबहुक और इवेंट: एंडपॉइंट सेटअप और Standard Webhooks सत्यापन
संबंधित संसाधन
इस विषय के लिए दस्तावेज़, गाइड और उदाहरणों के साथ आगे बढ़ें।