RCS Business Messaging — lepiej wyglądające rodzeństwo SMS.
Karty rozszerzone, sugerowane odpowiedzi, brandowany nadawca, potwierdzenia odczytu. Powrót do SMS jednym atrybutem. Ta sama autoryzacja, ta sama idempotentność, te same webhooki jak w każdym innym kanale Bird — bo ten sam zespół inżynierów zbudował je wszystkie.
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 minut od npm install do pierwszej wysyłki
Wyślij wiadomość rich z języka, którego już używasz.
SDK w każdym popularnym środowisku uruchomieniowym. Pierwsza wysyłka trafia na autoryzowany numer testowy (+15005550006) i automatycznie przełącza się na SMS — więc test CI nie wymaga telefonu obsługującego 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();Dziesięć prymitywów między "text" a prawdziwym interfejsem aplikacji.
RCS to bogatszy protokół niż SMS. Udostępniamy tę funkcjonalność jako prymitywy, a nie jako kanwę dla projektanta.
- 01
Karty rozszerzone
Tytuł, podtytuł, obraz główny i do 4 akcji na kartę. Karuzela do 10 kart w jednej wiadomości.
- 02
Sugerowane odpowiedzi
Chipy "dotknij, aby odpowiedzieć", które wysyłają znany ciąg znaków do Twojego webhooka. Żadnego zgadywania NLU po Twojej stronie.
- 03
Brandowany nadawca
Zweryfikowana tożsamość firmy z logo, kolorem i krótkim opisem w nagłówku czatu na urządzeniu.
- 04
Potwierdzenia odczytu i pisanie
Stany dostarczenia, odczytu i "pisze" jako webhooki — ten sam format koperty co w każdym innym kanale.
- 05
Powrót do SMS jednym atrybutem
Przekaż fallback: "sms". Jeśli urządzenie nie obsługuje RCS, transparentnie wyślemy wariant tekstowy.
- 06
Interaktywne postbacki
Dotknięcia przycisków wracają jako zdarzenia rcs.replied z ustawionym przez Ciebie ciągiem postback. Podłącz do maszyny stanów.
- 07
Załączniki multimedialne
Obrazy, wideo do 100 MB, audio, PDF, vCard. Hostujemy zasób i serwujemy podpisany URL z TTL.
- 08
Dwukierunkowa konwersacja
Odpowiedzi użytkowników przychodzą jako webhooki podpisane HMAC. Ten sam format co przychodzące SMS i WhatsApp.
- 09
Bramkowanie operatora i urządzenia
Sprawdzamy obsługę RCS przed wysyłką. Jeśli urządzenie jest offline lub nie obsługuje RCS, automatycznie przełączamy na SMS.
- 10
Ta sama autoryzacja, ten sam format błędów
Jeden klucz API dla RCS, SMS, Email, WhatsApp, Voice. Jeden rejestr typów błędów dla wszystkich kanałów.
Dlaczego rozwijamy RCS
Bo w 2026 roku najtańszy kanał i najbogatszy powinny być tą samą wysyłką.
Urządzenia z RCS otrzymują kartę rozszerzoną; wszyscy pozostali dostają wariant SMS wygenerowany z tego samego payloadu. Obsługujemy SMS od dziesięciu lat przez 240 bezpośrednich połączeń z operatorami; RCS to ta sama warstwa routingu z bogatszym typem payloadu i flagą fallbacku. Szczerze o zasięgu: dziś RCS działa u operatorów w USA (T-Mobile, Verizon, AT&T) i w Brazylii; UE i APAC rozszerzą się w 2026 roku. Poza tym zasięgiem pracę wykonuje flaga fallbacku.
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..."Każda zmiana stanu to webhook.
Payloady podpisane HMAC, zabezpieczone przed powtórzeniami, idempotentne. Ten sam format w każdym kanale Bird — naucz się jednego, znasz wszystkie.
{
"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
}
}Harmonogram ponownych prób: 5s, 30s, 5m, 30m, 2h, 6h, 12h. Po ostatniej próbie wiadomość trafia do kolejki dead-letter; każde zdarzenie z kolejki dead-letter można ponownie odtworzyć z panelu lub API.
rcs.queuedZaakceptowane przez API i w kolejce do wysyłki.rcs.sentPrzekazane do bramki RBM operatora.rcs.deliveredUrządzenie potwierdziło odbiór wiadomości rich.rcs.readOdbiorca przeczytał wiadomość (jeśli potwierdzenia odczytu są włączone).rcs.repliedUżytkownik dotknął sugerowanej odpowiedzi lub wysłał odpowiedź w formie dowolnego tekstu.rcs.fellbackUrządzenie nie obsługiwało RCS; zamiast tego wysłano wariant SMS.rcs.failedTrwały błąd przed wysłaniem (nieprawidłowy odbiorca, odrzucenie przez operatora).
Jeśli zintegrowałeś SMS, to zintegrowałeś też RCS.
Ta sama autoryzacja, ten sam kontrakt idempotentności, ta sama struktura błędów, ten sam format webhooków. Różnica tkwi w ładunku — nie w sposobie wywołania.
RCS.
await bird.rcs.send({
to: "+15005550006",
card: { title: "Your code", subtitle: `Code: ${code}` },
fallback: "sms",
});Prawdziwa karta na urządzeniach obsługujących RCS. Poza zasięgiem flaga fallbacku kieruje ten sam ładunek przez SMS.
SMS.
await bird.sms.send({
from: "Bird",
to: "+15005550006",
text: `Your code is ${code}.`,
});Skieruj się bezpośrednio na ścieżkę SMS, gdy chcesz to zrobić jawnie. Ta sama autoryzacja, te same webhooki, ta sama idempotentność.
Od 0,005 $ za wiadomość + opłaty operatorskie.
Naliczane za dostarczoną wiadomość RCS. Opłaty operatorskie za wiadomości rich są przekazywane i widoczne jako osobne pozycje na fakturze. Wiadomości SMS wysłane jako fallback są rozliczane według stawki SMS dla kraju docelowego. Bez opłaty platformowej, bez opłaty za stanowisko.