The Browser SDK gives you a Call object for every active conversation
— inbound or outbound, audio-only or video, 1-on-1 or room. Once you
have one, every aspect of the call (status, media streams,
participants, layout, recording state, network quality) is reachable
through observables and a small set of imperative methods.
This section is the practical guide to building with that object. Pages are roughly ordered from “first call” to “advanced call-center features,” but each is self-contained.
If you’re starting from zero:
client.dial(), attach streams, listen for
status, hang up.register() and
subscribe to session.incomingCalls$; answer or reject.When you need more:
self.startScreenShare() and the matching screenShareStatus$.setLayout(),
layoutLayers$, picking room layouts at runtime.address.sendText and textMessages$.Every page in this section assumes you’ve read the
RxJS Primer — the SDK is
observables all the way down. See the Call reference for the full
property and method list; the guides here teach how to use it, not
which fields exist.
These show up in every example below — calling them out once here so they don’t surprise you:
call.audioMuted doesn’t exist. Mute / deaf / hand raise / video
state all live on the SelfParticipant:
You wait for self$ to emit (it’s null until the local member
joins) and then bind to the participant’s own observables.
Most observables on Call and Participant are BehaviorSubjects:
late subscribers receive the current value immediately. You don’t
need to remember “did I subscribe before the call connected” — you’ll
get the cached state on first emission.
Everything in this section is faithful to the kitchen-sink demo in
signalwire-typescript-web/playground/kitchen-sink-demo — a vanilla
TypeScript app that exercises every public API. When in doubt about
how a feature fits together with the rest of the SDK, check
playground/kitchen-sink-demo/src/main.ts in the SDK repo for the
exact wiring.
SignalWire — top-level clientCall (interface) / WebRTCCall (concrete) — the active callParticipant / SelfParticipant — membersAddress — directory entriesSelfCapabilities — per-call permission flagsSessionState — client.session surface (incl. inbound calls)