Skip to main content

@dialstack/sdk-dev / webrtc/src / Call

Class: Call

Defined in: sdk/webrtc/src/call.ts:138

Constructors​

Constructor​

TypeScript
new Call(init): Call;

Defined in: sdk/webrtc/src/call.ts:231

Parameters​

init​

CallInit

Returns​

Call

Properties​

direction​

TypeScript
readonly direction: CallDirection;

Defined in: sdk/webrtc/src/call.ts:142


duration​

TypeScript
duration: number = 0;

Defined in: sdk/webrtc/src/call.ts:148


from​

TypeScript
readonly from: string;

Defined in: sdk/webrtc/src/call.ts:143


fromName​

TypeScript
readonly fromName: string | null;

Defined in: sdk/webrtc/src/call.ts:144


id​

TypeScript
id: string;

Defined in: sdk/webrtc/src/call.ts:141


isMuted​

TypeScript
isMuted: boolean = false;

Defined in: sdk/webrtc/src/call.ts:147


peerConnection​

TypeScript
readonly peerConnection: RTCPeerConnection;

Defined in: sdk/webrtc/src/call.ts:149


state​

TypeScript
state: CallState;

Defined in: sdk/webrtc/src/call.ts:146


to​

TypeScript
readonly to: string;

Defined in: sdk/webrtc/src/call.ts:145

Accessors​

audioInputDeviceId​

Get Signature​

TypeScript
get audioInputDeviceId(): string | null;

Defined in: sdk/webrtc/src/call.ts:318

The selected mic, or null for the OS default.

Returns​

string | null


canSendDtmf​

Get Signature​

TypeScript
get canSendDtmf(): boolean;

Defined in: sdk/webrtc/src/call.ts:177

Whether DTMF can be sent on this call — the gate the softphone UI uses for its in-call keypad. False when the audio sender exposes no .dtmf (e.g. a connected call that never got a usable sender). Only meaningful once the call is active — the sender is attached during answer/offer negotiation (attachDtmfSender). sendDtmf() still throws if called anyway. Both web and native go through the same sender: web via the browser RTCDTMFSender, native via react-native-webrtc's RTCRtpSender.dtmf (provided by the DialStack fork).

Returns​

boolean


effectiveAudioInputDeviceId​

Get Signature​

TypeScript
get effectiveAudioInputDeviceId(): string | null;

Defined in: sdk/webrtc/src/call.ts:326

The device actually captured. May differ from audioInputDeviceId at acquisition, where the constraint is ideal — how a caller detects a substitution.

Returns​

string | null


isConnected​

Get Signature​

TypeScript
get isConnected(): boolean;

Defined in: sdk/webrtc/src/call.ts:164

Whether the call is a live, connected conversation — answered and not ended. Hold is a media modifier, not a separate lifecycle, so BOTH active and held count as connected; trying/ringing (not yet up) and ended do not. This is the single source of truth for "is this call transferable / bridgeable / controllable" — every such gate (transfer, completeTransfer, the in-call control row, isCallActive) reads it so the rule can't drift between call sites.

Returns​

boolean


isHeld​

Get Signature​

TypeScript
get isHeld(): boolean;

Defined in: sdk/webrtc/src/call.ts:151

Returns​

boolean


localMediaStream​

Get Signature​

TypeScript
get localMediaStream(): MediaStream;

Defined in: sdk/webrtc/src/call.ts:709

The local capture (mic) stream. A local conference mixes against this rather than opening a second getUserMedia, so every merged leg shares the one capture the call already owns.

Returns​

MediaStream


remoteMediaStream​

Get Signature​

TypeScript
get remoteMediaStream(): MediaStream;

Defined in: sdk/webrtc/src/call.ts:700

Returns​

MediaStream

Methods​

acceptRemoteAnswer()​

TypeScript
acceptRemoteAnswer(sdp): Promise<void>;

Defined in: sdk/webrtc/src/call.ts:881

Parameters​

sdp​

string

Returns​

Promise<void>


acceptRemoteProvisionalAnswer()​

TypeScript
acceptRemoteProvisionalAnswer(sdp): Promise<boolean>;

Defined in: sdk/webrtc/src/call.ts:844

Parameters​

sdp​

string

Returns​

Promise<boolean>


addRemoteCandidate()​

TypeScript
addRemoteCandidate(
candidate,
sdpMid,
sdpMLineIndex
): Promise<void>;

Defined in: sdk/webrtc/src/call.ts:887

Parameters​

candidate​

string

sdpMid​

string | null

sdpMLineIndex​

number | null

Returns​

Promise<void>


answer()​

TypeScript
answer(): void;

Defined in: sdk/webrtc/src/call.ts:496

Returns​

void


attachConference()​

TypeScript
attachConference(conference): void;

Defined in: sdk/webrtc/src/call.ts:720

Attach (or detach, with null) the local conference this call is merged into.

While attached, the wire carries the conference's MIXED track rather than this call's mic track, which changes what mute has to do — see mute(). Set by the conference owner (the softphone's merge action), not by the core.

Parameters​

conference​

ConferenceSink | null

Returns​

void


attendedTransfer()​

TypeScript
attendedTransfer(destination): Promise<Call>;

Defined in: sdk/webrtc/src/call.ts:650

Attended (consultative) transfer, step 1: hold this call and dial destination as a consult leg. Resolves with the consult Call. Once the consult party answers, call completeTransfer() on THIS call to bridge them; or hang up the consult and resume() to abandon the transfer.

Parameters​

destination​

string

Returns​

Promise<Call>


completeTransfer()​

TypeScript
completeTransfer(): void;

Defined in: sdk/webrtc/src/call.ts:671

Attended transfer, step 2: bridge the remote party to the consult leg's party. Valid once the consult call (started via attendedTransfer) is answered; this call is held at that point. On success both calls end with reason 'transferred'.

Returns​

void


dispose()​

TypeScript
dispose(): void;

Defined in: sdk/webrtc/src/call.ts:961

Returns​

void


handleServerMessage()​

TypeScript
handleServerMessage(msg): void;

Defined in: sdk/webrtc/src/call.ts:915

Parameters​

msg​

ServerMessage

Returns​

void


hangup()​

TypeScript
hangup(): void;

Defined in: sdk/webrtc/src/call.ts:536

Returns​

void


hold()​

TypeScript
hold(): void;

Defined in: sdk/webrtc/src/call.ts:541

Returns​

void


holdAfterResume()​

TypeScript
holdAfterResume(): void;

Defined in: sdk/webrtc/src/call.ts:570

Re-hold a call resume() ran on in this same tick. hold()'s state !== 'active' guard would swallow it, since the state only flips on the server echo. Only for that unwind; use hold() everywhere else.

Returns​

void


mute()​

TypeScript
mute(): void;

Defined in: sdk/webrtc/src/call.ts:582

Returns​

void


off()​

TypeScript
off<K>(event, handler?): void;

Defined in: sdk/webrtc/src/call.ts:488

Type Parameters​

K​

K extends keyof CallEventMap

Parameters​

event​

K

handler?​

Listener<K>

Returns​

void


on()​

TypeScript
on<K>(event, handler): void;

Defined in: sdk/webrtc/src/call.ts:479

Type Parameters​

K​

K extends keyof CallEventMap

Parameters​

event​

K

handler​

Listener<K>

Returns​

void


onCaptureFailure()​

TypeScript
onCaptureFailure(report): void;

Defined in: sdk/webrtc/src/call.ts:286

Parameters​

report​

(e) => void

Returns​

void


prepareAnswerForOffer()​

TypeScript
prepareAnswerForOffer(sdp): Promise<void>;

Defined in: sdk/webrtc/src/call.ts:748

Parameters​

sdp​

string

Returns​

Promise<void>


reject()​

TypeScript
reject(reason?): void;

Defined in: sdk/webrtc/src/call.ts:532

Parameters​

reason?​

RejectReason = 'decline'

Returns​

void


resume()​

TypeScript
resume(): void;

Defined in: sdk/webrtc/src/call.ts:576

Returns​

void


sendDtmf()​

TypeScript
sendDtmf(
digits,
duration?,
interToneGap?
): void;

Defined in: sdk/webrtc/src/call.ts:622

Parameters​

digits​

string

duration?​

number = 100

interToneGap?​

number = 70

Returns​

void


setAudioInputDevice()​

TypeScript
setAudioInputDevice(deviceId): Promise<void>;

Defined in: sdk/webrtc/src/call.ts:332

Internal — the phone-level setter broadcasts this to every live call.

Parameters​

deviceId​

string | null

Returns​

Promise<void>


setAudioOutputDevice()​

TypeScript
setAudioOutputDevice(deviceId): void;

Defined in: sdk/webrtc/src/call.ts:457

Route this call's ringback tone to deviceId (null = OS default).

Parameters​

deviceId​

string | null

Returns​

void


setConferenceHold()​

TypeScript
setConferenceHold(held): void;

Defined in: sdk/webrtc/src/call.ts:560

Hold or resume this leg as part of holding the whole conference.

hold() refuses while merged because holding ONE party silences it to the other. Holding every leg together is the coherent version, so the caller that does that reaches the frames through here.

Parameters​

held​

boolean

Returns​

void


startOutbound()​

TypeScript
startOutbound(): Promise<RTCSessionDescriptionInit>;

Defined in: sdk/webrtc/src/call.ts:732

Returns​

Promise<RTCSessionDescriptionInit>


transfer()​

TypeScript
transfer(destination): void;

Defined in: sdk/webrtc/src/call.ts:639

Blind transfer: immediately redirect the remote party to destination. Fire-and-forget — on success the call ends with reason 'transferred'; on failure a non-fatal error is emitted and the call stays active. The call must be active.

Parameters​

destination​

string

Returns​

void


unmute()​

TypeScript
unmute(): void;

Defined in: sdk/webrtc/src/call.ts:586

Returns​

void


whenLocalMediaReady()​

TypeScript
whenLocalMediaReady(): Promise<void>;

Defined in: sdk/webrtc/src/call.ts:293

Returns​

Promise<void>