RCS Business Messaging — il fratello più elegante degli SMS.
Rich card, risposte suggerite, mittente brandizzato, conferme di lettura. Fallback su SMS con un solo attributo. Stessa autenticazione, stessa idempotenza, stessi webhook di ogni altro canale Bird — perché lo stesso team di ingegneri li ha costruiti tutti.
import { BirdClient } from "@bird/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.
SDK per ogni runtime principale. Il primo invio va al numero di test autorizzato (+15005550006) e passa automaticamente a SMS — così il check CI non richiede un dispositivo compatibile con RCS.
import { BirdClient } from "@bird/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
Stati di consegna, lettura e "sta scrivendo" come webhook — stesso formato di ogni altro canale.
- 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.
Why we build 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 "@bird/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.
Payload firmati con HMAC, protetti da replay, idempotenti. Lo stesso formato su ogni canale Bird — imparatene uno e li avrete imparati tutti.
{
"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.
Stessa autenticazione, stesso contratto di idempotenza, stesso formato di errore, stesso formato dei webhook. La differenza è il payload — non il modo in cui lo chiamate.
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}.`,
});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.