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: 0–9, *, #, A–D.
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
Returns
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