Jedno API do każdej
wysyłanej wiadomości.
Wysyłaj wiadomości transakcyjne i powiadomienia przez Bird. Podaj treść i nadawcę lub użyj szablonu; sprawdź kodowanie i liczbę segmentów w odpowiedzi. Dodaj klucz idempotentności, aby bezpiecznie ponawiać żądania, i śledź doręczenie przez podpisane webhooki.
Jedna wiadomość. Widoczny rezultat.
Przykładowe wysłanie
Sprawdź akceptację i późniejsze potwierdzenie od operatora. Ten przykład nie wysyła wiadomości tekstowej; doręczenie nie oznacza, że ktoś ją przeczytał.
Przetestuj swoją pierwszą integrację z SMS.
Z języka, którego już używasz.
Wysyłanie to rdzeń Bird SMS API. Poniższy przykład pokazuje strukturę żądania. Aby przeprowadzić kontrolowany test, zastąp odbiorcę udokumentowanym numerem sandbox +15005550006. Skonfiguruj odpowiedniego nadawcę US i włącz miejsce docelowe, a następnie zweryfikuj zdarzenia akceptacji i doręczenia przed wysyłką do klientów.
const msg = await bird.sms.send({
from: "+15557654321",
to: "+14155550100",
text: "Your verification code is 123456.",
category: "authentication",
});
console.log(msg.id, msg.status);Wysyłka SMS dostarcza podany przez Ciebie tekst. Do logowania i weryfikacji konta użyj Bird Verify, aby generować, wygaszać i sprawdzać kody w ramach procesu weryfikacji.
Buduj na przejrzystym kontrakcie wysyłki.
Przygotuj żądanie i śledź wynik.
- 01
Zliczanie segmentów przed wysyłką.
Bird zwraca obliczone kodowanie i liczbę segmentów w odpowiedzi. Użyj kalkulatora segmentów, aby sprawdzić wersję roboczą przed wysłaniem.
- 02
GSM-7 i Unicode — wybrane za ciebie.
Znaki determinują kodowanie. GSM-7 mieści 160 jednostek w jednym segmencie; Unicode mieści 70. Wiadomości wieloczęściowe rezerwują miejsce na składanie, a emoji mogą zajmować więcej niż jedną jednostkę.
- 03
Cała paczka w jednym wywołaniu.
Wyślij do 100 niezależnych wiadomości w jednym żądaniu wsadowym. Walidacja odbywa się przed umieszczeniem w kolejce; każda zaakceptowana wiadomość ma własny wynik.
- 04
Ponawiaj z kluczem idempotentności.
Używaj jednego klucza idempotentności na żądanie logiczne i wykorzystuj go ponownie przy identycznym powtórzeniu. Zachowana odpowiedź API może zostać odtworzona; nie gwarantuje to jednak doręczenia dokładnie raz przez operatora.
- 05
Zdarzenia doręczenia dla Twojej aplikacji.
Subskrybuj zdarzenia akceptacji, wysyłki i wyniku końcowego. Weryfikuj sygnatury, deduplikuj powtórzenia webhooków i korzystaj z odczytów wiadomości, aby badać brakujące lub opóźnione obserwacje.
Przenieś integrację za pomocą kontrolowanego testu.
Zmapuj obecne pola żądań, rejestracje nadawców i obsługę zdarzeń na Bird. Uzgodnij rezygnacje przed przeniesieniem ruchu, a następnie porównaj kontrolowany test przed zmianą routingu produkcyjnego.
import twilio from "twilio";
const client = twilio(accountSid, authToken);
await client.messages.create({
from: "+14155550172",
to: "+15005550006",
body: "Your code is 123456.",
});import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
await bird.sms.send({
from: "+14155550172",
to: "+15005550006",
text: "Your code is 123456.",
category: "authentication",
});Poznaj liczbę segmentów przed wysłaniem.
GSM-7 mieści 160 septetów w jednym segmencie; UCS-2 mieści 70 jednostek kodowych. Pojemność wieloczęściowa to odpowiednio 153 lub 67. Rozszerzone znaki GSM-7 zajmują dwa septety, a emoji mogą zajmować dwie jednostki kodowe. Bird zwraca kodowanie i segmenty przy akceptacji; obowiązująca stawka i ewentualna opłata operatora są rozliczane osobno.
const { data, error } = await bird.sms.send({
from: "Bird",
to: "+31612345678",
text: "Your code is 123456.",
category: "authentication",
}).safe();
if (error) throw error;
console.log(data.segments);
// → { characters: 20, count: 1, encoding: "GSM_7BIT" }
Jedna wiadomość albo sto — jedno wywołanie.
Wyślij wsadowo do 100 niezależnych wiadomości, każdą z własnym odbiorcą i treścią. Nieprawidłowe dane odrzucają żądanie przed umieszczeniem w kolejce. Po pomyślnej odpowiedzi 202 przetwarzanie i doręczenie mogą zakończyć się sukcesem lub porażką osobno dla każdego SMS. Użyj ponownie tego samego żądania i klucza idempotentności przy ponawianiu w udokumentowanym oknie retencji.
const { data: batch, error } = await bird.sms
.sendBatch(
users.map((u) => ({
from: "Bird",
to: u.phone,
text: `Hi ${u.name}, your appointment is tomorrow at ${u.time}.`,
})),
)
.safe();
if (error) throw error;
console.log(`queued ${batch.data.length} messages`);Śledź akceptację aż do zgłoszonego wyniku.
Pomyślne żądanie zwraca 202 Accepted. Naliczanie opłat i przekazanie do operatora następują później i nadal mogą się nie powieść. Konsumuj podpisane zdarzenia doręczenia i sprawdzaj rekord wiadomości podczas badania wyniku.
import { bird } from "@/lib/bird";
export async function POST(req: Request) {
const event = bird.webhooks.unwrap(
await req.text(),
Object.fromEntries(req.headers),
);
switch (event.type) {
case "sms.delivered":
await markDelivered(event.data.sms_id);
break;
case "sms.failed":
await flag(event.data.to, event.data.error?.description);
break;
}
return new Response(null, { status: 204 });
}Sprawdzaj awarie po zgłoszonym powodzie. Obsługiwane słowa kluczowe STOP i rezygnacje operatora tworzą supresje; inne awarie doręczenia nie stają się automatycznie rezygnacją.
sms.acceptedPrzyjęta przez API i umieszczona w kolejce do przekazania operatorowi.sms.sentPrzesłana do SMSC operatora docelowego.sms.deliveredPotwierdzenie dostarczenia odebrane od operatora (DLR).sms.failedKońcowa awaria dla tej próby SMS. Sprawdź zgłoszony błąd i oś czasu wiadomości.
Dowiedz się więcej w dokumentacji.
Skonfiguruj webhooki, zabezpiecz każdą wysyłkę przed powtórzeniem dzięki kluczom idempotentności i przeczytaj dokumentację błędów, żeby prawidłowo obsłużyć każdą awarię.
Pytania przed rozpoczęciem budowy
Czy sam wybieram nadawcę?
Jak ponowne próby unikają duplikatu wiadomości?
Czy zaakceptowane oznacza doręczone?
Czy batch to to samo co broadcast?
Reszta platformy SMS
Jedno API, jeden zestaw kluczy. Poznaj pozostałe możliwości.
Skaluj bez
utraty kontroli.
Organizuj zespoły w obszarach roboczych, kontroluj dostęp do API i śledź zmiany w logach audytu.
Dziennik audytu
Produkcja- Przestrzeń robocza
- Produkcja
- Zasób
- Agent wysyłki
- Dostęp do odczytuOdczyt i zapis