Sign inGet started

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

यह पेज Twilio के Programmable Messaging API, Messaging Services और स्टेटस कॉलबैक को Bird पर मैप करता है। मुख्य माइग्रेशन गाइड को क्रम से फ़ॉलो करें और स्टेप 3, 4 और 5 के लिए इन मैपिंग का उपयोग करें।
दो अंतर पूरे पोर्ट को आकार देते हैं। Twilio का POST /2010-04-01/Accounts/{AccountSid}/Messages.json form-encoded PascalCase पैरामीटर लेता है जो आपके Account SID और Auth Token से ऑथेंटिकेट होते हैं; POST /v1/sms/messages JSON लेता है जो आपके रीजनल होस्ट पर bearer API key से ऑथेंटिकेट होता है। और एक Twilio Messaging Service सेंडर चयन, ऑप्ट-आउट हैंडलिंग और कॉलबैक कॉन्फ़िगरेशन को बंडल कर सकती है। हर व्यवहार को Bird owner पर अलग-अलग मैप करें; इसके SID का नाम बदलकर sender वैल्यू रखने से पूरी सर्विस संरक्षित नहीं होती।

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

इस ब्रीफ़ का उपयोग अपने कोडिंग एजेंट में करें। यह डिस्कवरी से शुरू होता है और किसी भी प्रोडक्शन बदलाव से पहले एक समीक्षा-योग्य माइग्रेशन प्लान तैयार करता है।
कोड उदाहरण
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 कॉल मैप करें

क्या करता हैTwilioBird
प्राप्तकर्ताToto (प्रति रिक्वेस्ट एक)
सेंडरFrom या MessagingServiceSidfrom
बॉडीBodytext
कॉन्टेंट टेम्प्लेटContentSid + ContentVariablesकॉन्टेंट अलग से रिव्यू करें; Bird सिस्टम टेम्प्लेट Twilio Content का इम्पोर्ट नहीं हैं
इंटेंट(कोई नहीं)category, फ़्री टेक्स्ट पर आवश्यक
फ़िल्टर करने योग्य लेबल(कोई नहीं)tags: {name, value} पेयर
राउंड-ट्रिप कॉन्टेक्स्टआपका अपना स्टोर, SID से keyedmetadata: आर्बिट्रेरी JSON, हर इवेंट पर echo होता है
डिलीवरी रिपोर्टStatusCallbackनीचे दिए गए डिलीवरी इवेंट पर सब्सक्राइब एक वर्कस्पेस webhook
ट्रांसलिटरेशनSmartEncodedoptions.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 के sender-and-subscriber suppressions में इम्पोर्ट करते समय यह व्यापकता बनाए रखें, या वास्तव में वर्कस्पेस-वाइड रिक्वेस्ट के लिए उचित वर्कस्पेस प्रेफ़रेंस का उपयोग करें।
Twilio का Advanced Opt-Out डॉक्यूमेंटेशन कहता है कि ब्लॉक-नंबर रिपोर्टिंग उसके Console या REST API के ज़रिए एक्सपोज़ नहीं है। उपलब्ध सपोर्ट प्रक्रिया के ज़रिए एक्सपोर्ट का अनुरोध करें और उसे अपने प्रेफ़रेंस रिकॉर्ड, इनबाउंड लॉग और सपोर्ट रिक्वेस्ट से मिलाएँ। केवल कीवर्ड लॉग अधूरा हो सकता है।
समीक्षित परिणाम को suppression वर्कफ़्लो के ज़रिए इम्पोर्ट करें। मैनुअल suppression उस पेयर की हर कैटेगरी ब्लॉक करता है, इसलिए चुपचाप स्कोप संकीर्ण या विस्तृत करने के बजाय इच्छित स्कोप जाँचें।
Twilio का 21610 ऑप्ट-आउट किए गए प्राप्तकर्ता का संकेत देता है। Bird में, एक suppressed पेयर E12077 SMSRecipientSuppressed के साथ admission पर ही रिफ़्यूज़ होता है, मैसेज बनने से पहले। डिलीवरी एरर recipient_opted_out इसके बजाय डाउनस्ट्रीम ऑप्ट-आउट रिपोर्ट करता है। किसी मौजूदा हैंडलर को रिटायर करने से पहले Bird की कीवर्ड कवरेज जाँचें, और बिल्ट-इन कैटलॉग के बाहर के ऑप्ट-आउट मैकेनिज़्म संरक्षित रखें।

डिलीवरी स्टेटस ट्रांसलेट करें

इस टेबल का उपयोग लाइफ़साइकल कॉन्सेप्ट की तुलना के लिए करें, इवेंट का मशीनी नाम बदलने के लिए नहीं। Bird रिपोर्ट किए गए स्टेटस और कारण से फ़ेलियर इवेंट चुनता है। एक रिफ़्यूज़्ड API रिक्वेस्ट कोई मैसेज नहीं बनाती; acceptance के बाद रिजेक्शन sms.rejected उत्पन्न कर सकता है, जिसमें कैरियर रिजेक्शन भी शामिल है। डिलीवरी का प्रमाण न मिलने पर स्टेटस unknown रहता है। अपने normalized outcome के साथ raw प्रोवाइडर स्टेटस और कोड भी संरक्षित रखें।
परिणामTwilio MessageStatusBird
API ने मैसेज स्वीकार कियाqueued, acceptedsms.accepted
कैरियर को सौंपा गयाsending, sentsms.sent
कैरियर ने डिलीवरी की पुष्टि कीdeliveredsms.delivered
कैरियर ने नॉन-डिलीवरी रिपोर्ट कीundeliveredsms.undelivered
स्थायी विफलताfailedsms.failed
admission पर रिक्वेस्ट रिफ़्यूज़रिक्वेस्ट एररHTTP एरर; कोई मैसेज या इवेंट नहीं
वैलिडिटी विंडो समाप्त(कोई नहीं)sms.expired
शेड्यूल या कैंसलscheduled, canceledअभी कोई समकक्ष नहीं
नामों के साथ तीन मैकेनिक्स बदलते हैं:
  • एंडपॉइंट कॉलबैक URL की जगह लेते हैं। Twilio मैसेज या Messaging Service पर StatusCallback को पोस्ट करता है। Bird आपके वर्कस्पेस द्वारा रजिस्टर किए गए एंडपॉइंट पर डिलीवर करता है, जिनमें से हर एक अपने इच्छित इवेंट टाइप पर सब्सक्राइब होता है, इसलिए एक नया कंज्यूमर एक नई सब्सक्रिप्शन है, रीडिप्लॉय नहीं।
  • साइन किया गया JSON form-encoded पोस्ट की जगह लेता है। Twilio X-Twilio-Signature हेडर के साथ application/x-www-form-urlencoded भेजता है; Bird Standard Webhooks के अनुसार साइन किया गया JSON भेजता है। वेरिफ़िकेशन को Webhooks & events की रेसिपी से बदलें।
  • इनबाउंड मैसेज इवेंट के रूप में आते हैं। Twilio का प्रति-नंबर "A message comes in" webhook TwiML रिस्पॉन्स की अपेक्षा करता है जिसे आपका ऐप ऑटो-रिप्लाई के लिए उपयोग कर सकता है। Bird बाकी सबकी तरह उसी सब्सक्राइब एंडपॉइंट पर sms.received एमिट करता है, और कोई ऐसा रिस्पॉन्स बॉडी नहीं है जो रिप्लाई भेजे: send endpoint कॉल करके जवाब दें, या कीवर्ड नियमों को आपके लिए जवाब देने दें।
एंडपॉइंट एक बार रजिस्टर करें, उन इवेंट टाइप के नाम देकर जो आपका हैंडलर चाहता है: ऊपर टेबल में sms.* इवेंट वह सूची है जिन पर सब्सक्राइब करना है, और उनकी जगह लेने वाला कोई वाइल्डकार्ड नहीं है। एंडपॉइंट बनाएँ में कमांड है, कैटलॉग को enumerate क्यों करना पड़ता है, और पहली कॉल में एक चीज़ सही करनी ज़रूरी है: वह signing secret स्टोर करना जो रिस्पॉन्स केवल एक बार दिखाता है।
Twilio के न्यूमेरिक एरर कोड का कोई वन-टू-वन मैप नहीं है। Bird फ़ेलियर को एक मानकीकृत error कोड के साथ रिपोर्ट करता है जैसे invalid_destination, content_rejected, provider_unavailable या recipient_opted_out; पूरी सूची इवेंट पेज पर है। अपनी अलर्टिंग को 30000-रेंज कोड के बजाय इन पर मैप करें।

कटओवर

डेस्टिनेशन, सेंडर और ट्रैफ़िक रैम्प प्रोवाइडर-इंडिपेंडेंट हैं और मुख्य गाइड में कवर हैं। दो Twilio-विशिष्ट आइटम कटओवर प्लान में होने चाहिए: आपका 10DLC ब्रांड और कैंपेन Twilio के ज़रिए The Campaign Registry में रजिस्टर हैं और स्वचालित रूप से Bird रजिस्ट्रेशन नहीं बनते। पेड वर्क सबमिट करने से पहले लागू माइग्रेशन या रजिस्ट्रेशन प्रक्रिया की पुष्टि करें। Twilio पर आपके नंबरों को एक पोर्ट की ज़रूरत है जो सपोर्ट अपने शेड्यूल पर अरेंज करता है, आपके शेड्यूल पर नहीं।
Bird-साइड आवश्यकताओं के लिए, Register for 10DLC से शुरू करें: यह बताता है कि हर फ़ील्ड का क्या मतलब है, रजिस्ट्री कौन से एंटिटी टाइप पहचानती है, और requirements कॉल जो बताती है कि ब्रांड बनाने से पहले आपको क्या देना है, जो कि चार्जेबल स्टेप है।

अगले कदम

संबंधित संसाधन

इस विषय के लिए डॉक्यूमेंटेशन, गाइड और उदाहरणों के साथ आगे बढ़ें। संसाधन अंग्रेज़ी में हैं।