babelconnect SDKs
Build a softphone that fits your application. The TypeScript SDK gives you live agent state, typed call controls, and browser WebRTC audio. You supply the interface.
Start with Your first softphone: create a project, render calls, dial, answer an incoming call with a button, and release the microphone when you leave.
| Your goal | Start here |
|---|---|
| Build a custom browser client | TypeScript tutorial · SDK setup |
| Put the ready-made agent UI in a CRM | Embedding |
| Observe state or send SMS without audio | TypeScript control only |
| Build a terminal tool or Go service | Go setup and availability |
| Find a field, method, or error | TypeScript API · Intents · Error codes |
The model: server-authoritative state, typed intents
The server owns each agent's AgentView. It sends a snapshot, then patches; the SDK maintains
a StateCache and calls your renderer. Send an intent such as placeCall or setPresence and
render the resulting state. Don't change the cached view to predict success.
Control and audio travel on separate planes
Control carries commands and state; WebRTC carries audio. A client can observe calls, send SMS, or change presence without a media leg. It still needs an audio destination to take calls. See State & events for the model and TypeScript vs Go for SDK defaults and limits.
How it fits together
your interface → SDK → Send(Command) → server
SDK ← Subscribe(StateUpdate) ← server
browser microphone/speaker ← WebRTC → server
Both SDKs use Subscribe plus Send: TypeScript over gRPC-web, Go over Connect.
The retired bidirectional Session RPC is not supported. The server also exposes unary
operations through REST/OpenAPI; AsyncAPI
describes the state stream. See API surfaces.
Pick your path
After the tutorial, use Recipes for UI tasks, Authentication for login, and Errors & reconnects for long-lived sessions. The concepts explain behavior; generated references enumerate the contract. Troubleshooting starts from symptoms, and the glossary defines the terms.