Skip to main content

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

Class: Call

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

Constructors​

Constructor​

TypeScript
new Call(init): Call;

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

Parameters​

init​

CallInit

Returns​

Call

Properties​

direction​

TypeScript
readonly direction: CallDirection;

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


duration​

TypeScript
duration: number = 0;

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


from​

TypeScript
readonly from: string;

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


fromName​

TypeScript
readonly fromName: string | null;

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


id​

TypeScript
id: string;

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


isMuted​

TypeScript
isMuted: boolean = false;

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


peerConnection​

TypeScript
readonly peerConnection: RTCPeerConnection;

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


state​

TypeScript
state: CallState;

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


to​

TypeScript
readonly to: string;

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

Accessors​

audioInputDeviceId​

Get Signature​

TypeScript
get audioInputDeviceId(): string | null;

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

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:181

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:338

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:168

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:155

Returns​

boolean


localMediaStream​

Get Signature​

TypeScript
get localMediaStream(): MediaStream;

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

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:757

Returns​

MediaStream

Methods​

acceptRemoteAnswer()​

TypeScript
acceptRemoteAnswer(sdp): Promise<void>;

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

Parameters​

sdp​

string

Returns​

Promise<void>


acceptRemoteProvisionalAnswer()​

TypeScript
acceptRemoteProvisionalAnswer(sdp): Promise<boolean>;

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

Parameters​

sdp​

string

Returns​

Promise<boolean>


addRemoteCandidate()​

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

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

Parameters​

candidate​

string

sdpMid​

string | null

sdpMLineIndex​

number | null

Returns​

Promise<void>


answer()​

TypeScript
answer(): void;

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

Returns​

void


attachConference()​

TypeScript
attachConference(conference): void;

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

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:702

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:723

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:1018

Returns​

void


endLocally()​

TypeScript
endLocally(reason): void;

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

Internal

End the call here without waiting for the server, because the socket it lived on is gone. Emits ended like a server end, so every owner tears down the same way.

Parameters​

reason​

CallEndReason

Returns​

void


handleActionError()​

TypeScript
handleActionError(reqId): void;

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

Internal

The server's error reply to one of this call's actions.

Parameters​

reqId​

string

Returns​

void


handleServerMessage()​

TypeScript
handleServerMessage(msg): void;

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

Parameters​

msg​

ServerMessage

Returns​

void


hangup()​

TypeScript
hangup(): void;

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

Returns​

void


hold()​

TypeScript
hold(): void;

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

Returns​

void


holdAfterResume()​

TypeScript
holdAfterResume(): void;

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

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:625

Returns​

void


off()​

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

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

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:511

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:298

Parameters​

report​

(e) => void

Returns​

void


ownsRequest()​

TypeScript
ownsRequest(reqId): boolean;

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

Internal

Whether reqId names an action frame this call sent.

Parameters​

reqId​

string

Returns​

boolean


prepareAnswerForOffer()​

TypeScript
prepareAnswerForOffer(sdp): Promise<void>;

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

Parameters​

sdp​

string

Returns​

Promise<void>


reject()​

TypeScript
reject(reason?): void;

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

Parameters​

reason?​

RejectReason = 'decline'

Returns​

void


resume()​

TypeScript
resume(): void;

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

Returns​

void


sendDtmf()​

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

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

Parameters​

digits​

string

duration?​

number = 100

interToneGap?​

number = 70

Returns​

void


setAudioInputDevice()​

TypeScript
setAudioInputDevice(deviceId): Promise<void>;

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

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:469

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:599

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:789

Returns​

Promise<RTCSessionDescriptionInit>


transfer()​

TypeScript
transfer(destination): void;

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

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:629

Returns​

void


whenLocalMediaReady()​

TypeScript
whenLocalMediaReady(): Promise<void>;

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

Returns​

Promise<void>