RCS Business Messaging — il fratello più elegante degli 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..."
5 minuti da npm install al primo invio
Invia un messaggio rich dal linguaggio che già utilizzi.
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();Dieci primitive tra "text" e una vera interfaccia applicativa.
RCS è un protocollo più ricco degli SMS. Esponiamo questa ricchezza come primitive, non come un canvas per designer.
- 01
Rich card
Titolo, sottotitolo, immagine hero e fino a 4 azioni per card. Carosello fino a 10 card in un unico messaggio.
- 02
Risposte suggerite
Chip tap-to-reply che inviano una stringa nota al vostro webhook. Nessuna interpretazione NLU da parte vostra.
- 03
Mittente brandizzato
Identità aziendale verificata con logo, colore e breve descrizione nell'intestazione della chat sul dispositivo.
- 04
Conferme di lettura e digitazione
Delivery, read, and "is typing" states as webhooks, the same envelope shape as every other channel.
- 05
Fallback su SMS con un solo attributo
Passate fallback: "sms". Se il dispositivo non è compatibile con RCS, inviamo in modo trasparente la variante testuale.
- 06
Postback interattivi
I tap sui pulsanti tornano come eventi rcs.replied con la stringa di postback impostata. Collegateli a una macchina a stati.
- 07
Allegati multimediali
Immagini, video fino a 100 MB, audio, PDF, vCard. Noi ospitiamo l'asset e forniamo un URL firmato con TTL.
- 08
Conversazione bidirezionale
Le risposte in entrata degli utenti arrivano come webhook firmati con HMAC. Stesso formato degli SMS e WhatsApp in entrata.
- 09
Gating per operatore e dispositivo
Verifichiamo la compatibilità RCS prima dell'invio. Se il dispositivo è offline o non supporta RCS, il fallback è automatico.
- 10
Stessa autenticazione, stesso formato di errore
Una sola chiave API per RCS, SMS, Email, WhatsApp, Voice. Un unico registro dei tipi di errore per tutti.
Perché sviluppiamo RCS
Perché nel 2026 il canale più economico e il più ricco dovrebbero essere lo stesso invio.
I dispositivi RCS ricevono una rich card; tutti gli altri ricevono la variante SMS generata dallo stesso payload. Gestiamo SMS da dieci anni su 240 connessioni dirette con gli operatori; RCS è lo stesso livello di routing con un tipo di payload più ricco e un flag di fallback. Onesti sulla copertura: oggi RCS funziona sugli operatori statunitensi (T-Mobile, Verizon, AT&T) e in Brasile; UE e APAC si espandono nel corso del 2026. Al di fuori di questa copertura, il flag di fallback fa il lavoro.
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..."
Ogni cambio di stato è un 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
}
}
Programmazione dei tentativi: 5s, 30s, 5m, 30m, 2h, 6h, 12h. Dead-letter dopo l'ultimo tentativo; ogni evento in dead-letter è riproducibile dalla dashboard o via API.
rcs.queuedAccettato dall'API e messo in coda per l'invio.rcs.sentConsegnato al gateway RBM dell'operatore.rcs.deliveredIl dispositivo ha confermato la ricezione del messaggio rich.rcs.readIl destinatario ha letto il messaggio (se le conferme di lettura sono abilitate).rcs.repliedL'utente ha toccato un chip di risposta suggerita o ha inviato una risposta libera.rcs.fellbackIl dispositivo non era compatibile con RCS; è stata inviata la variante SMS.rcs.failedErrore permanente prima dell'invio (destinatario non valido, rifiuto dell'operatore).
Se avete integrato gli SMS, avete integrato 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",
});
Una vera card sui dispositivi compatibili con RCS. Al di fuori della copertura, il flag di fallback instrada lo stesso payload via SMS.
SMS.
await bird.sms.send({
from: "Bird",
to: "+15005550006",
text: `Your code is ${code}.`,
category: "authentication",
});
Indirizzate il percorso SMS direttamente quando volete essere espliciti. Stessa autenticazione, stessi webhook, stessa idempotenza.
Da $0,005 per messaggio + tariffe operatore.
Prezzo per messaggio RCS consegnato. Le tariffe rich-message dell'operatore sono passanti e indicate come voce separata in fattura. Gli SMS di fallback sono fatturati alla tariffa SMS del paese di destinazione. Nessun costo di piattaforma, nessun costo per utenza.