> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # Call > Public interface for an active WebRTC call. Public interface for an active WebRTC call. Provides access to media streams, participants, layout, signaling events, and control actions (hangup, mute, transfer, etc.). ## **Extends** * [`CallState`](/docs/browser-sdk/v4/reference/interfaces/call-state) ## **Properties** **`address`** `CallAddress` Address associated with the remote party of the call. See [`CallAddress`](/docs/browser-sdk/v4/reference/interfaces/call-address). --- **`address$`** `Observable` Observable of the address associated with this call. See [`CallAddress`](/docs/browser-sdk/v4/reference/interfaces/call-address). --- **`bandwidthConstrained$`** `Observable` Observable that emits `true` while the call is bandwidth-constrained. --- **`capabilities`** `Capability[]` Set of capabilities currently granted to the local participant on this call. See [`Capability`](/docs/browser-sdk/v4/reference/type-aliases/capability). --- **`capabilities$`** `Observable` Observable of the local participant's current capability set on this call. See [`Capability`](/docs/browser-sdk/v4/reference/type-aliases/capability). --- **`direction`** `CallDirection` Whether this call is `inbound` or `outbound`. See [`CallDirection`](/docs/browser-sdk/v4/reference/type-aliases/call-direction). --- **`errors$`** `Observable` Observable stream of errors raised on this call. See [`CallError`](/docs/browser-sdk/v4/reference/interfaces/call-error). --- **`from`** `string` URI of the calling party. --- **`fromName`** `string` Display name of the calling party. --- **`isNetworkHealthy`** `boolean` Whether the connection currently meets quality thresholds. --- **`isNetworkHealthy$`** `Observable` Observable of the call's current network-health state. --- **`layout`** `string` Name of the currently active video layout. --- **`layout$`** `Observable` Observable of the currently active layout name. --- **`layoutLayers`** `LayoutLayer[]` Position and state of each layer in the active layout. See [`LayoutLayer`](/docs/browser-sdk/v4/reference/interfaces/layout-layer). --- **`layoutLayers$`** `Observable` Observable of the active layout's layer positions. See [`LayoutLayer`](/docs/browser-sdk/v4/reference/interfaces/layout-layer). --- **`layouts`** `string[]` List of layout names available on this call. --- **`layouts$`** `Observable` Observable of the list of available layout names. --- **`localStream`** `MediaStream | null` Sync getter — returns null before the stream is created. See [`MediaStream`](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream). --- **`localStream$`** `Observable` Observable that emits only non-null MediaStreams (waits until the stream exists). See [`MediaStream`](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream). --- **`mediaDirections`** `MediaDirections` Send/receive direction for each media track. See [`MediaDirections`](/docs/browser-sdk/v4/reference/interfaces/media-directions). --- **`mediaDirections$`** `Observable` Observable of the per-track media direction state. See [`MediaDirections`](/docs/browser-sdk/v4/reference/interfaces/media-directions). --- **`localAudioLevel$`** `Observable` Observable of the RMS audio level of the local microphone, 0..1. Engages the local audio pipeline on first subscription. --- **`localMicrophoneGain$`** `Observable` Observable of the current local microphone gain (0..200, where 100 is unity). --- **`localSpeaking$`** `Observable` Observable that is `true` while the local participant is speaking (RMS level above the VAD threshold, with hold time to avoid flicker). --- **`mediaParamsUpdated$`** `Observable` Observable that emits when media parameters are renegotiated. See [`MediaParamsEvent`](/docs/browser-sdk/v4/reference/interfaces/media-params-event). --- **`networkIssues`** `CallNetworkIssue[]` Recent network issues detected during the call. See [`CallNetworkIssue`](/docs/browser-sdk/v4/reference/interfaces/call-network-issue). --- **`networkIssues$`** `Observable` Observable stream of detected network issues. See [`CallNetworkIssue`](/docs/browser-sdk/v4/reference/interfaces/call-network-issue). --- **`networkMetrics`** `CallNetworkMetrics[]` Recent network-metric samples for the call. See [`CallNetworkMetrics`](/docs/browser-sdk/v4/reference/interfaces/call-network-metrics). --- **`networkMetrics$`** `Observable` Observable of periodic network-metric samples. See [`CallNetworkMetrics`](/docs/browser-sdk/v4/reference/interfaces/call-network-metrics). --- **`qualityLevel$`** `Observable` Observable of the categorical call-quality level. See [`QualityLevel`](/docs/browser-sdk/v4/reference/type-aliases/quality-level). --- **`qualityScore$`** `Observable` Observable of the numeric call-quality score (0–5). --- **`recoveryEvent$`** `Observable` Observable stream of call-recovery events. See [`RecoveryEvent`](/docs/browser-sdk/v4/reference/interfaces/recovery-event). --- **`recoveryState$`** `Observable` Observable of the current recovery state. See [`RecoveryState`](/docs/browser-sdk/v4/reference/type-aliases/recovery-state). --- **`remoteAudioLevel$`** `Observable` Observable of the aggregate remote audio level, 0..1 RMS. The server delivers a single mixed stream for all remote participants — this meter reports that mix. --- **`remoteStream`** `MediaStream | null` Remote `MediaStream` for the call, or `null` if not yet available. See [`MediaStream`](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream). --- **`remoteStream$`** `Observable` Observable that emits only non-null MediaStreams (waits until the stream exists). See [`MediaStream`](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream). --- **`rtcPeerConnection`** `RTCPeerConnection | undefined` Underlying `RTCPeerConnection`, or `undefined` if not yet established. --- **`self`** `CallSelfParticipant | null` Local participant on the call, or `null` before join. See [`CallSelfParticipant`](/docs/browser-sdk/v4/reference/interfaces/call-self-participant). --- **`self$`** `Observable` Observable of the local participant. It withholds emission until self exists, so it never emits `null` — unlike `self`. See [`CallSelfParticipant`](/docs/browser-sdk/v4/reference/interfaces/call-self-participant). --- **`signalingEvent$`** `Observable>` Observable stream of raw signaling events. --- **`to`** `string` URI of the called party. --- **`toName`** `string` Display name of the called party. --- **`userVariables`** `Record` Map of arbitrary user-defined variables associated with the call. --- **`userVariables$`** `Observable>` Observable of the call's user-variables bag. --- #### Inherited from CallState **`id`** `string` — required Unique identifier for this call. --- **`locked`** `boolean` — required Whether the call is locked to new participants. --- **`locked$`** `Observable` — required Observable of the call's `locked` state. --- **`meta`** `Record` — required Arbitrary metadata bag associated with the call or member. --- **`meta$`** `Observable>` — required Observable of the call-level metadata bag. --- **`participants`** `CallParticipant[]` — required Current set of participants in the call. See [`CallParticipant`](/docs/browser-sdk/v4/reference/interfaces/call-participant). --- **`participants$`** `Observable` — required Observable of the current participant list. See [`CallParticipant`](/docs/browser-sdk/v4/reference/interfaces/call-participant). --- **`raiseHandPriority`** `boolean` — required Whether raise-hand priority mode is active. --- **`raiseHandPriority$`** `Observable` — required Observable of the raise-hand priority mode state. --- **`recording`** `boolean` — required Whether a server-side recording is currently in progress. --- **`recording$`** `Observable` — required Observable of the current recording state. --- **`status`** `CallStatus` — required Lifecycle status of the call. See [`CallStatus`](/docs/browser-sdk/v4/reference/type-aliases/call-status). --- **`status$`** `Observable` — required Observable of the call's lifecycle status. See [`CallStatus`](/docs/browser-sdk/v4/reference/type-aliases/call-status). --- **`streaming`** `boolean` — required Whether a server-side stream is currently active. --- **`streaming$`** `Observable` — required Observable of the current streaming state. --- ## **Methods** ### answer() ```ts answer(options?): void ``` #### Parameters **`options`** `MediaOptions` Per-call options for this operation (media constraints, RPC timeouts, or transfer target depending on context). See [`MediaOptions`](/docs/browser-sdk/v4/reference/interfaces/media-options). --- #### Returns `void` --- ### disablePushToTalk() ```ts disablePushToTalk(): void ``` Tears down the push-to-talk pipeline; microphone gain returns to its configured value. A no-op if push-to-talk was never enabled. #### Returns `void` --- ### enablePushToTalk() ```ts enablePushToTalk(): void ``` Enables push-to-talk: while [`setPushToTalkActive`](#setpushtotalkactive) is `false` the microphone gain is forced to 0, and `true` restores the configured gain. No keyboard listener is installed — bind the key yourself. #### Returns `void` --- ### execute() ```ts execute(request, options?): Promise ``` #### Type Parameters | Type Parameter | Default type | | ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | | `T` *extends* [`JSONRPCResponse`](/docs/browser-sdk/v4/reference/type-aliases/jsonrpc-response) | [`JSONRPCResponse`](/docs/browser-sdk/v4/reference/type-aliases/jsonrpc-response) | #### Parameters **`request`** `JSONRPCRequest` — required Outgoing JSON-RPC request to send. See [`JSONRPCRequest`](/docs/browser-sdk/v4/reference/interfaces/jsonrpc-request). --- **`options`** `PendingRPCOptions` Per-call options for this operation (media constraints, RPC timeouts, or transfer target depending on context). See [`PendingRPCOptions`](/docs/browser-sdk/v4/reference/interfaces/pending-rpc-options). --- #### Returns `Promise` --- ### executeMethod() ```ts executeMethod(target, method, args): Promise ``` #### Type Parameters | Type Parameter | Default type | | ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | | `T` *extends* [`JSONRPCResponse`](/docs/browser-sdk/v4/reference/type-aliases/jsonrpc-response) | [`JSONRPCResponse`](/docs/browser-sdk/v4/reference/type-aliases/jsonrpc-response) | #### Parameters **`target`** `string` — required The **local** member's valid ID. --- **`method`** `string` — required RPC method name to execute on the server. --- **`args`** `Record` — required Method-specific arguments to pass with the RPC. --- #### Returns `Promise` --- ### hangup() ```ts hangup(): Promise ``` #### Returns `Promise` --- ### reject() ```ts reject(): void ``` #### Returns `void` --- ### requestIceRestart() ```ts requestIceRestart(): Promise ``` #### Returns `Promise` --- ### requestKeyframe() ```ts requestKeyframe(): void ``` #### Returns `void` --- ### sendDigits() ```ts sendDigits(digits): Promise ``` #### Parameters **`digits`** `string` — required DTMF digit string to send. --- #### Returns `Promise` --- ### setAutoGainControl() ```ts setAutoGainControl(enabled): Promise ``` #### Parameters **`enabled`** `boolean` — required Whether automatic gain control should be enabled. --- #### Returns `Promise` — whether the constraint reached the microphone. --- ### setEchoCancellation() ```ts setEchoCancellation(enabled): Promise ``` #### Parameters **`enabled`** `boolean` — required Whether echo cancellation should be enabled. --- #### Returns `Promise` — whether the constraint reached the microphone. --- ### setLayout() ```ts setLayout(layout, positions): Promise ``` #### Parameters **`layout`** `string` — required Name of the currently active video layout. --- **`positions`** `Record` — required Map of member IDs to layout positions. Pass `{}` to change only the layout and let the server place members. See [`VideoPosition`](/docs/browser-sdk/v4/reference/type-aliases/video-position). --- #### Returns `Promise` --- ### setLocalMicrophoneGain() ```ts setLocalMicrophoneGain(value): void ``` #### Parameters **`value`** `number` — required Gain as a percentage applied before transmission: `0` is silent, `100` is unity (the default), `200` is a 2× digital boost. Clamped to 0–200. --- #### Returns `void` --- ### setMeta() ```ts setMeta(meta): Promise ``` #### Parameters **`meta`** `Record` — required Arbitrary metadata bag associated with the call or member. --- #### Returns `Promise` #### Inherited from [`CallState`](/docs/browser-sdk/v4/reference/interfaces/call-state).[`setMeta`](/docs/browser-sdk/v4/reference/interfaces/call-state#setmeta) --- ### setNoiseSuppression() ```ts setNoiseSuppression(enabled): Promise ``` #### Parameters **`enabled`** `boolean` — required Whether noise suppression should be enabled. --- #### Returns `Promise` — whether the constraint reached the microphone. --- ### setPushToTalkActive() ```ts setPushToTalkActive(active): void ``` While push-to-talk is enabled, sets the talk state. A no-op if push-to-talk has not been enabled. #### Parameters **`active`** `boolean` — required `true` while transmitting, `false` while silent. --- #### Returns `void` --- ### startRecording() ```ts startRecording(): Promise ``` #### Returns `Promise` --- ### startStreaming() ```ts startStreaming(): Promise ``` #### Returns `Promise` --- ### subscribe() ```ts subscribe(eventType): Observable> ``` #### Parameters **`eventType`** `string` — required Name of the event to subscribe to. --- #### Returns `Observable>` --- ### toggleHold() ```ts toggleHold(): Promise ``` #### Returns `Promise` --- ### toggleIncomingAudio() ```ts toggleIncomingAudio(): Promise ``` #### Returns `Promise` --- ### toggleIncomingVideo() ```ts toggleIncomingVideo(): Promise ``` #### Returns `Promise` --- ### toggleLock() ```ts toggleLock(): Promise ``` #### Returns `Promise` --- ### transfer() ```ts transfer(options): Promise ``` #### Parameters **`options`** `TransferOptions` — required Per-call options for this operation (media constraints, RPC timeouts, or transfer target depending on context). See [`TransferOptions`](/docs/browser-sdk/v4/reference/interfaces/transfer-options). --- #### Returns `Promise` --- ### updateMeta() ```ts updateMeta(meta): Promise ``` #### Parameters **`meta`** `Record` — required Arbitrary metadata bag associated with the call or member. --- #### Returns `Promise` #### Inherited from [`CallState`](/docs/browser-sdk/v4/reference/interfaces/call-state).[`updateMeta`](/docs/browser-sdk/v4/reference/interfaces/call-state#updatemeta) > Public interface for an active WebRTC call.