Programowalny głos w JSON. Połączenia, IVR, nagrywanie, TTS.
Voice dla deweloperów: ponad 140 krajów z zasięgiem głosowym, ponad 1500 prefiksów numerów telefonów, połączenia maskowane, numery wirtualne. Ta sama powierzchnia API co Email i SMS: połączenia to po prostu kolejny zasób.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.voice.calls.create({
to: "+15005550010",
from: "+14155550199",
flow: [
{ say: "Your verification code is..." },
{ say: "4. 2. 9. 1. 7." },
{ gather: { digits: 1, timeout: 5 } },
{ record: { transcribe: true } },
],
}).safe();
if (error) throw error;
console.log(data.id);
// → "call_7tQ04Lp2n..."
Bird Verify
+1 (500) 555-0010
Yourverificationcodeisfourtwonineoneseven.
5 minut od npm install do pierwszego połączenia
Wykonaj połączenie w języku, którego już używasz.
SDK w każdym głównym środowisku uruchomieniowym. Pierwsze połączenie trafia na autoryzowany numer testowy (+15005550010), więc możesz uruchomić test CI, zanim udostępnisz prawdziwy numer.
Przykłady kodu pojawią się, gdy to API zostanie udostępnione. SDK obsługują już aktywne kanały.
Dziesięć elementów głosu, których wolisz nie pisać samodzielnie.
Routing operatorski, sterowanie połączeniami i prymitywy obserwowalności — nazwane i audytowalne.
- 01
Połączenia wychodzące i przychodzące
Wykonuj i odbieraj połączenia przez REST lub SIP: ten sam model uwierzytelniania, ten sam kontrakt idempotentności.
- 02
Deklaratywne przepływy połączeń w JSON
Komponuj say, play, gather, record, transfer i dial jako płaską tablicę JSON.
- 03
Nagrywanie z transkrypcją
Opcjonalne nagrywanie na dowolnym odcinku; transkrypcje generowane automatycznie w ponad 40 językach.
- 04
Strumieniowe TTS, poniżej 250 ms
Pierwszy bajt audio przez HTTP chunked transfer lub WebSocket, rozliczanie za znak.
- 05
Głosowe OTP przez weryfikacje
Ten sam zasób bird.verifications co SMS OTP; wystarczy zmienić pole channel.
- 06
Numery wirtualne w ponad 100 krajach
Udostępniaj numery stacjonarne z panelu lub przez API numerów w kilka sekund.
- 07
Połączenia maskowane
Numery dzwoniącego i odbierającego nigdy nie są sobie nawzajem ujawniane: prywatność przez routing.
- 08
SmartRouting na połączenie
Najtańszy operator wybierany w czasie rzeczywistym dla każdego odcinka, z automatycznym przełączaniem trasy w przypadku awarii.
- 09
Zdarzenia webhook na połączenie
call.ringing, call.answered, call.completed i inne: podpisane HMAC, zabezpieczone przed powtórzeniem.
- 10
SDK klienta WebRTC
Mosty przeglądarka-PSTN z jednego pakietu npm; działa w każdym nowoczesnym środowisku uruchomieniowym.
Dlaczego tworzymy Voice
Głos to kanał, który wszyscy traktują po macoszemu. My tego nie zrobiliśmy.
Głos jest trudny — opóźnienie poniżej sekundy, prawdziwy routing operatorski, zgodność nagrywania — i dlatego większość dostawców daje mu osobne uwierzytelnianie, osobne SDK, osobny kontrakt webhooków. Poświęciliśmy czas, aby uczynić go takim samym jak każdy inny endpoint Bird: to samo uwierzytelnianie, ta sama idempotentność, ta sama koperta błędów. Sterowanie połączeniami to po prostu JSON.
Każda zmiana stanu to webhook.
Ładunki podpisane HMAC, zabezpieczone przed powtórzeniem, idempotentne. Ta sama koperta na każdym kanale Bird: naucz się jednego, a znasz je wszystkie.
Harmonogram ponowień: 5s, 30s, 5m, 30m, 2h, 6h, 12h. Dead-letter po ostatniej próbie; każde zdarzenie dead-letter można odtworzyć z panelu lub API.
call.queuedZaakceptowane przez API i umieszczone w kolejce do wydzwonienia.call.ringingLinia odbierająca dzwoni: stan przed odebraniem.call.answeredRozmówca odebrał; naliczanie zaczyna się od tego zdarzenia.call.completedPołączenie zakończyło się normalnie: czas trwania i cena w ładunku.call.failedTrwała awaria (zajęte, brak odpowiedzi, odrzucenie operatora) z typowanym powodem.call.recording.readyNagranie jest zakodowane i dostępne pod podpisanym URL w ładunku.call.transcript.readyTranskrypcja zakończona; ładunek zawiera język i segmenty.
Głosowe OTP to ten sam zasób co SMS OTP.
Wykonaj niestandardowe połączenie lub przekaż weryfikację do środowiska uruchomieniowego. To samo uwierzytelnianie, ta sama idempotentność, ta sama koperta błędów: jedyne, co się zmienia, to pole channel.
Niestandardowe połączenie.
Komponuj dowolny przepływ — say, gather, transfer — w przypadkach, gdy chcesz mieć skrypt w swoim kodzie.
Weryfikacje.
Jedna linia. Bird wybiera trasę, przeprowadza kontrolę oszustw, wysyła komunikat audio. Ten sam kod na każdym kanale.