RCS Business Messaging — SMS का ज्यादा खूबसूरत भाई।
Rich cards, suggested replies, branded sender, read receipts. Fall back to SMS in one attribute. Same auth, same idempotency, same webhooks as every other Bird channel, because the same engineering team built them all.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.rcs.send({
to: "+15005550006",
card: {
title: "Your order has shipped",
subtitle: "Arriving Friday, May 22",
image: "https://cdn.example.com/orders/2891.jpg",
buttons: [
{ type: "url", label: "Track package", url: "https://example.com/track/2891" },
{ type: "reply", label: "Reschedule", postback: "reschedule_2891" },
],
},
fallback: "sms",
}).safe();
if (error) throw error;
console.log(data.id);
// → "rcs_4mP82wQ9..."
npm install से पहले send तक 5 मिनट
जिस भाषा का आप पहले से इस्तेमाल करते हैं, उसी से एक rich message भेजें।
SDKs in every major runtime. The first send goes to the sanctioned test number (+15005550006) and falls back to SMS automatically, so the CI check doesn't require an RCS-capable handset.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.rcs.send({
to: "+15005550006",
card: { title: "Hello", subtitle: "From Bird RCS" },
fallback: "sms",
}).safe();"text" और एक असली app surface के बीच दस प्रिमिटिव।
RCS, SMS से ज्यादा समृद्ध प्रोटोकॉल है। हम इस समृद्धि को प्रिमिटिव के रूप में देते हैं, किसी डिजाइनर कैनवास के रूप में नहीं।
- 01
Rich cards
प्रति कार्ड टाइटल, सबटाइटल, हीरो इमेज, और 4 तक actions। एक ही message में 10 कार्ड तक का carousel।
- 02
सुझाए गए जवाब
टैप-टू-रिप्लाई चिप्स जो एक ज्ञात स्ट्रिंग आपके webhook पर वापस भेजते हैं। आपकी तरफ कोई NLU अनुमान लगाने की जरूरत नहीं।
- 03
ब्रांडेड सेंडर
हैंडसेट चैट हेडर में लोगो, रंग, और छोटे विवरण के साथ सत्यापित व्यावसायिक पहचान।
- 04
Read receipts और टाइपिंग
Delivery, read, and "is typing" states as webhooks, the same envelope shape as every other channel.
- 05
एक ही attribute में SMS पर fallback
fallback: "sms" पास करें। अगर हैंडसेट RCS-सक्षम नहीं है, तो हम पारदर्शी तरीके से text वेरिएंट भेज देते हैं।
- 06
इंटरैक्टिव postbacks
बटन टैप rcs.replied events के रूप में वापस आते हैं, आपके सेट किए postback स्ट्रिंग के साथ। इसे एक state machine से जोड़ें।
- 07
मीडिया अटैचमेंट
इमेज, 100MB तक वीडियो, ऑडियो, PDF, vCard। हम एसेट होस्ट करते हैं और TTL के साथ एक signed URL सर्व करते हैं।
- 08
दोतरफा बातचीत
आने वाले यूजर जवाब HMAC-signed webhooks के रूप में आते हैं। आने वाले SMS और WhatsApp जैसा ही आकार।
- 09
कैरियर और डिवाइस गेटिंग
हम send से पहले RCS क्षमता जांचते हैं। अगर डिवाइस ऑफलाइन या non-RCS है, तो हम अपने आप fallback कर जाते हैं।
- 10
वही auth, वही error envelope
RCS, SMS, Email, WhatsApp, Voice के लिए एक API key। इन सबके लिए एक error type रजिस्ट्री।
हम RCS क्यों बनाते हैं
क्योंकि 2026 में सबसे सस्ता चैनल और सबसे समृद्ध चैनल एक ही send होना चाहिए।
RCS हैंडसेट को एक rich card मिलता है; बाकी सबको उसी payload से जनरेट किया गया SMS वेरिएंट मिलता है। हम दस साल से 240 direct-to-carrier कनेक्शन पर SMS चला रहे हैं; RCS वही routing लेयर है, बस एक समृद्ध payload टाइप और एक fallback फ्लैग के साथ। कवरेज के बारे में ईमानदारी से: आज RCS US कैरियर (T-Mobile, Verizon, AT&T) और ब्राज़ील पर पहुंचता है; EU और APAC 2026 के दौरान फैलेंगे। उस दायरे के बाहर, fallback फ्लैग काम संभाल लेता है।
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.rcs.send({
to: "+15005550006",
card: {
title: "Your order has shipped",
subtitle: "Arriving Friday, May 22",
image: "https://cdn.example.com/orders/2891.jpg",
buttons: [
{ type: "url", label: "Track package", url: "https://example.com/track/2891" },
{ type: "reply", label: "Reschedule", postback: "reschedule_2891" },
],
},
fallback: "sms",
}).safe();
if (error) throw error;
console.log(data.id);
// → "rcs_4mP82wQ9..."
हर स्टेट बदलाव एक webhook है।
HMAC-signed payloads, replay-protected, idempotent. The same envelope on every Bird channel: learn one, you've learned them all.
{
"type": "rcs.delivered",
"id": "evt_7nT91x...",
"created_at": "2026-05-19T15:42:01.221Z",
"data": {
"rcs_id": "rcs_4mP82wQ9",
"to": "+15005550006",
"carrier": "T-Mobile USA",
"rich": true,
"latency_ms": 612
}
}
रीट्राई शेड्यूल: 5s, 30s, 5m, 30m, 2h, 6h, 12h। अंतिम प्रयास के बाद dead-letter; हर dead-lettered event को dashboard या API से दोबारा चलाया जा सकता है।
rcs.queuedAPI ने स्वीकार किया और send के लिए कतारबद्ध किया।rcs.sentकैरियर RBM गेटवे को सौंप दिया गया।rcs.deliveredहैंडसेट ने rich message की प्राप्ति की पुष्टि की।rcs.readप्राप्तकर्ता ने message पढ़ा (अगर read receipts सक्षम हैं)।rcs.repliedयूजर ने एक सुझाए-गए-जवाब चिप को टैप किया या एक फ्री-फॉर्म जवाब भेजा।rcs.fellbackहैंडसेट RCS-सक्षम नहीं था; इसके बजाय SMS वेरिएंट भेजा गया।rcs.failedsend से पहले स्थायी विफलता (अमान्य प्राप्तकर्ता, कैरियर रिजेक्ट)।
अगर आपने SMS इंटीग्रेट किया है, तो आपने RCS इंटीग्रेट कर लिया है।
Same auth, same idempotency contract, same error envelope, same webhook shape. The difference is the payload, not how you call it.
RCS.
await bird.rcs.send({
to: "+15005550006",
card: { title: "Your code", subtitle: `Code: ${code}` },
fallback: "sms",
});
RCS-सक्षम डिवाइसों पर एक असली कार्ड। दायरे के बाहर, fallback फ्लैग उसी payload को SMS के जरिए रूट कर देता है।
SMS.
await bird.sms.send({
from: "Bird",
to: "+15005550006",
text: `Your code is ${code}.`,
category: "authentication",
});
जब आप इसे स्पष्ट चाहते हैं तो सीधे SMS पाथ को एड्रेस करें। वही auth, वही webhooks, वही idempotency।