Skip to main content

Class: BabelconnectClient

The TypeScript "dumb renderer" client: opens the Subscribe/Send gRPC-web split, mirrors the server's AgentView in a StateCache, exposes typed intent senders, and drives a pluggable WebRTC Media leg. UI binds to subscribe and dispatches intents — no call/agent logic lives here.

Accessors

view

Get Signature

get view(): AgentView

The current view (deep copy).

Returns

AgentView

Methods

activeCall()

activeCall(): undefined | CallState

The first active call, or undefined.

Returns

undefined | CallState


addConferenceMember()

addConferenceMember(opts): void

Invite a participant — pass exactly one of agentId or number. Starts a conference first if none is active. holdOthers parks every other live member of the CURRENT conference before the invite goes out (CA4's "hold others" checkbox, default off) so they don't overhear the invitee ringing; the server unholds them again once the invitee joins or the invite fails.

Parameters

opts
agentId

string

holdOthers

boolean

number

string

Returns

void


answerCall()

answerCall(callId): Promise<void>

Manually answer a RINGING call by id (no-op under autoAnswer once already answered).

Parameters

callId

string

Returns

Promise<void>


close()

close(): Promise<void>

Tear down media legs and the connection.

Returns

Promise<void>


disposeCall()

disposeCall(code, callbackDate): void

Record the outcome of a campaign call (OBDC1). callbackDate is ISO YYYY-MM-DDTHH:mmZZ and should be left empty except for the "callback" disposition (OBDC2).

Parameters

code

string

callbackDate

string = ""

Returns

void


endCampaignCall()

endCampaignCall(): void

End the agent's live campaign call (OBDB2) — distinct from hangup: the backend both releases the Vicidial-side channel and drives the campaign member state to DISPOSITION.

Returns

void


endConference()

endConference(): void

End the whole conference for everyone (moderator only).

Returns

void


flagRecording()

flagRecording(callId): void

Toggle the "flagged" mark on the call's active recording.

Parameters

callId

string

Returns

void


getHistory()

getHistory(max, page): Promise<CallRecord[]>

Fetch a page of the agent's call history (the History tab).

Parameters

max

number = 50

page

number = 1

Returns

Promise<CallRecord[]>


getPhonebook()

getPhonebook(
max,
page,
query): Promise<PhonebookEntry[]>

Re-pull the agent's merged contacts + recent numbers (the Contacts tab) — an on-demand refresh of the register-time AgentInfo.phonebook snapshot. query filters by label/number.

Parameters

max

number = 200

page

number = 1

query

string = ""

Returns

Promise<PhonebookEntry[]>


getSmsThread()

getSmsThread(
conversationId,
max,
page): Promise<SmsMessage[]>

Fetch the messages of one SMS conversation (the chat thread), oldest first.

Parameters

conversationId

string

max

number = 50

page

number = 1

Returns

Promise<SmsMessage[]>


getTransferTargets()

getTransferTargets(query): Promise<TransferTarget[]>

Autocomplete blind-transfer / add-member targets — agents, raw numbers, and IVR applications — as the caller types. query filters server-side; empty returns the default result set.

Parameters

query

string = ""

Returns

Promise<TransferTarget[]>


hangup()

hangup(callId): void

End (or reject) a call by id.

Parameters

callId

string

Returns

void


hold()

hold(callId, on): void

Put a call on hold or retrieve it.

Parameters

callId

string

on

boolean

Returns

void


holdConferenceMember()

holdConferenceMember(memberId, on): void

Hold or unhold an individual conference member (moderator only).

Parameters

memberId

string

on

boolean

Returns

void


joinCampaign()

joinCampaign(campaignId, paused): void

Enter a campaign (the picker's "Enter"). paused false (default) starts the agent waiting for a lead right away; true enters already idle.

Parameters

campaignId

string

paused

boolean = false

Returns

void


kickConferenceMember()

kickConferenceMember(memberId): void

Remove a member from the conference (moderator only).

Parameters

memberId

string

Returns

void


leaveCampaign()

leaveCampaign(): void

Exit the current campaign (selector row or in-call).

Returns

void


leaveConference()

leaveConference(): void

Drop only the agent's own leg; the other members stay connected.

Returns

void


listCampaigns()

listCampaigns(): Promise<Campaign[]>

List the active outbound-dialer campaigns the agent may join (the Outbound tab's campaign picker, OBDA1).

Returns

Promise<Campaign[]>


listDispositions()

listDispositions(): Promise<string[]>

List the available call-outcome codes for the disposition picker (OBDC1) — a static global list, not campaign-scoped.

Returns

Promise<string[]>


markConversationRead()

markConversationRead(conversationId): void

Clear the unread count on an SMS conversation (the agent opened its thread).

Parameters

conversationId

string

Returns

void


mute()

mute(callId, on): void

Mute or unmute the agent's own leg of a call.

Parameters

callId

string

on

boolean

Returns

void


muteConferenceMember()

muteConferenceMember(memberId, on): void

Mute or unmute an individual conference member (moderator only).

Parameters

memberId

string

on

boolean

Returns

void


pauseCampaign()

pauseCampaign(on): void

Pause (on true) or resume (on false) the campaign.

Parameters

on

boolean

Returns

void


placeCall()

placeCall(to, opts): void

Parameters

to

string

opts
displayAsFrom

string

displayAsTo

string

record

boolean

session

Record<string, string>

Returns

void


register()

register(capabilities): void

Announce the agent and load its deployment data (presence options, caller-ID numbers, phonebook, feature config) — call this once after BabelconnectClient.subscribe. It also marks the agent WebRTC-reachable on the backend, so a control-only client that takes calls should follow it with BabelconnectClient.setWebrtc(false) + BabelconnectClient.setAgentNumber.

Parameters

capabilities

string[] = ...

Returns

void


resetLineStatus()

resetLineStatus(): void

Clear a blocked line (busy / unreachable / declined) so new calls reach the agent again.

Returns

void


sendDigits()

sendDigits(callId, digits): void

Send DTMF tones into the call (e.g. an IVR menu choice). Valid characters: 09, *, #, AD.

Parameters

callId

string

digits

string

Returns

void


sendSms()

sendSms(
to,
text,
opts): void

Send an SMS. from may be empty (server picks the default); session carries CTI/embedding correlation.

Parameters

to

string

text

string

opts
from

string

session

Record<string, string>

Returns

void


setAgentNumber()

setAgentNumber(number): void

Set the agent's external phone number; the backend bridges calls there when WebRTC is off.

Parameters

number

string

Returns

void


setConversationOpen()

setConversationOpen(conversationId, open): void

Open (reopen) or close (resolve) an SMS conversation.

Parameters

conversationId

string

open

boolean

Returns

void


setDisplayAs()

setDisplayAs(number): void

Set the outbound caller ID the consumer sees (choose from agent.availableNumbers).

Parameters

number

string

Returns

void


setPresence()

setPresence(name): void

Switch presence (the selector): "available" or a configured pause reason (see AgentInfo.presenceOptions).

Parameters

name

string

Returns

void


setRecordingTags()

setRecordingTags(callId, tags): void

Replace the tags on the call's active recording (choose from agent.availableTags).

Parameters

callId

string

tags

string[]

Returns

void


setWebrtc()

setWebrtc(on): void

Turn the in-browser WebRTC phone on or off. With it off, set an agent number so calls bridge there.

Parameters

on

boolean

Returns

void


startConference()

startConference(hold): void

Open a conference around the current call. hold parks that call while you add members and consult.

Parameters

hold

boolean = false

Returns

void


startRecording()

startRecording(callId): void

Begin recording the current call. Gated on agent.canRecord.

Parameters

callId

string

Returns

void


stopRecording()

stopRecording(callId): void

Stop the call's active recording.

Parameters

callId

string

Returns

void


subscribe()

subscribe(fn): () => void

Register a render callback (fired immediately and on every state update). Returns an unsubscribe fn.

Parameters

fn

(v) => void

Returns

Function

Returns

void


transfer()

transfer(
callId,
to,
opts): void

Transfer to exactly one of to (number), agentId, or applicationId; warm = attended.

Parameters

callId

string

to

string

opts
agentId

string

applicationId

string

warm

boolean

Returns

void


wrapUpCancel()

wrapUpCancel(): void

End after-call work early. Show only when wrapUp.canCancel.

Returns

void


wrapUpExtend()

wrapUpExtend(seconds): void

Add seconds to the after-call-work countdown (default 30). Show only when wrapUp.canExtend.

Parameters

seconds

number = 30

Returns

void


connect()

static connect(opts): BabelconnectClient

Open the session and start mirroring server state. Returns synchronously and queues intents until the stream is live, so you can subscribe and register immediately.

Parameters

opts

ConnectOptions

Returns

BabelconnectClient

Example

const bc = BabelconnectClient.connect({ serverUrl, token });
bc.subscribe(render); // render(AgentView) on every update
bc.register(); // announce reachability + load deployment data
bc.placeCall("+15551234567"); // the result arrives as a callUpsert patch