webex-js-sdk

webex-js-sdk

webex

The Cisco Webex JS SDK

Install

Usage

All of the examples in these API docs assume you've gotten an authenticated Webex instance (unless otherwise specified) using one of the methods below.

webex has three basic modes of operation:

Shell Script (Quick Start)

This is the quickest way to get up and running with our JavaScript SDK. Simply set the environment variable WEBEX_ACCESS_TOKEN to your access token and add the following line at the top of your JavaScript file to get a ready-to-use instance.

You can get your WEBEX_ACCESS_TOKEN from the Cisco Webex for Developers portal.

webex/env is also a great way to get started with bots.

Browser

Our JavaScript SDK provides out-of-the-box support for the OAuth 2.0 Implicit Grant Flow.

You'll need to register an OAuth Client to get your "authorization string"

Use the steps under Bundling (or something similar) to get the SDK into your browser, then use the following JavaScript to get started:

Bundling

You'll need to bundle the SDK to use it in a web browser. Right now, we do all our SDK testing with Browserify, but our Cisco Webex Widgets use webpack.

The following snippet is the bare minimum to get our code into a form suitable for a web browser. You'll probably want to additionally pipe it through a minifier like UglifyJS before going to production.

Then, just load your bundle using:

NodeJS

Though the implicit flow is great for single page apps, it's not ideal for integrations that might need to do things on your users' behalf months in the future. We additionally support the OAuth 2.0 Authorization Code Grant flow, but due to its complexity, there's a bit you'll need to wire up in your app to take advantage of it. The following is an example of how an Express app might do authentication.

See Browser Guide and Server Guide

new Webex()
Related
Browser Guide Server Guide
Static Members
init(attrs)

Authorization

Browser support for OAuth2. Automatically parses the URL hash for an access token

new AuthorizationBrowser()
Instance Members
isAuthorizing
initiateLogin(options)
initiateImplicitGrant(options)
initiateAuthorizationCodeGrant(options)
requestAccessTokenFromJwt(options)
logout(options)

NodeJS support for OAuth2

new AuthorizationNode()
Instance Members
isAuthorizing
requestAuthorizationCodeGrant(options)
requestAccessTokenFromJwt(options)

Meetings

Maintain a cache of meetings and sync with services.

new Meetings(args: ...any)

Extends WebexPlugin

Parameters
args (...any)
Static Members
register(deviceRegistrationOptions?)
unregister()
createNoiseReductionEffect
createVirtualBackgroundEffect
getReachability()
startReachability(trigger)
getPersonalMeetingRoom()
create(destination, type = null, useRandomDelayForInfo, infoExtraParams, correlationId, failOnMissingMeetingInfo, callStateForMetrics, meetingInfo = undefined, meetingLookupUrl = undefined, sessionCorrelationId)
getMeetingByType(type, value)
getAllMeetings()
syncMeetings(keepOnlyLocusMeetings)
sortLocusArrayToUpdate(loci)
checkHandleBreakoutLocus(newCreatedLocus)
Instance Members
personalMeetingRoom
registered
executeRegistrationStep(step, stepName)
uploadLogs(options)
getBasicMeetingInformation(meetingId)
getLogger()
propertyName
propertyName
Events
meetings:ready
network:disconnected
meetings:registered
meeting:removed
meeting:added

Meeting is the crux of the plugin

new Meeting()
Static Members
fetchMeetingInfo(options)
verifyPassword(password, captchaCode, sendCAevents)
verifyRegistrationId(registrationId, captchaCode, sendCAevents)
refreshCaptcha()
postMetrics(eventName)
invite(invitee, alertIfActive = true)
cancelPhoneInvite(invitee)
cancelSIPInvite(invitee)
admit(memberIds, sessionLocusUrls)
remove(memberId)
mute(memberId, mute)
transfer(memberId, moderator)
getMembers()
uploadLogs(options)
closeRemoteStream()
closeRemoteStreams()
setMercuryListener()
closePeerConnections(resetMuteStates)
unsetPeerConnections()
setCorrelationId(id)
updateCallStateForMetrics(callStateForMetrics)
muteAudio()
unmuteAudio()
muteVideo()
unmuteVideo()
joinWithMedia(options)
reconnect(options)
usePhoneAudio(phoneNumber)
disconnectPhoneAudio()
moveTo(resourceId)
moveFrom(resourceId)
addMedia(options)
addMediaInternal(icePhaseCallback, turnServerInfo, forceTurnDiscovery, options)
processNextQueuedMediaUpdate
updateMedia(options)
acknowledge(type)
decline(reason)
leave(options)
startWhiteboardShare(channelUrl, resourceToken)
stopWhiteboardShare(channelUrl)
startRecording()
setMuteOnEntry(enabled)
setDisallowUnmute(enabled)
setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled, roles)
stopRecording()
pauseRecording()
resumeRecording()
lockMeeting()
unlockMeeting()
sendDTMF(tones)
changeVideoLayout(layoutType?, renderInfo)
endMeetingForAll()
clearMeetingData
sendReaction(reactionType, skinToneType)
toggleReactions(enable)
setPostMeetingDataConsent(accept)
Instance Members
callStateForMetrics
simultaneousInterpretation
annotation
receiveSlotManager
mediaRequestManagers
meetingFiniteStateMachine
mediaConnections
isMultistream
mediaProperties
networkStatus
passwordStatus
registrationIdStatus
requiredCaptcha
recordingController
controlsOptionsManager
remoteMediaManager
turnDiscoverySkippedReason
turnServerUsed
isoLocalClientMeetingJoinTime
isoLocalClientMeetingJoinTime
getWebexObject()
isLocusCall()
correlationId
correlationId
userNameInput
userNameInput
emailInput
emailInput
sessionCorrelationId
sessionCorrelationId
injectMeetingInfo(meetingInfo, fetchParams, meetingLookupUrl)
refreshPermissionToken(reason?)
handleDataChannelUrlChange(datachannelUrl)
beRightBack(enabled)
setSelfUserPolicies()
setPermissionTokenPayload(permissionToken)
startPeriodicLogUpload()
stopPeriodicLogUpload()
unsetRemoteStreams()
cleanupLocalStreams()
isTranscriptionSupported()
isReactionsSupported()
setCaptionLanguage(language)
setSpokenLanguage(language)
startTranscription(options)
stopTranscription()
updateLLMConnection(datachannelUrl)
handleRoapFailure
roapMessageReceived
setupSdpListeners
canUpdateMedia()
buildLeaveFetchRequestOptions(options)
setRemoteQualityLevel(level)
getCurUserType()
enableMusicMode(shouldEnableMusicMode)
setSendNamedMediaGroup(mediaType, languageCode)
publishStreams(streams)
unpublishStreams(streams)
getPermissionTokenExpiryInfo()
checkAndRefreshPermissionToken(threshold, reason)
Events
meeting:stateChange
media:ready
media:stopped
meeting:ringing
meeting:ringingStop
meeting:startedSharingLocal
meeting:stoppedSharingLocal
meeting:startedSharingRemote
meeting:stoppedSharingRemote
meeting:locked
meeting:unlocked
meeting:actionsUpdate
meeting:self:unmutedByOthers
meeting:self:mutedByOthers
meeting:self:requestedToUnmute
meeting:self:guestAdmitted
meeting:self:lobbyWaiting
meeting:self:left
meeting:reconnectionStarting
meeting:reconnectionSuccess
meeting:reconnectionFailure
network:quality

Messaging

Messages are how people communicate in rooms. Each message timestamped and represented in Webex as a distinct block of content. Messages can contain plain text and a single file attachment. See the Message Attachments Guide for a list of supported media types.

new Messages()
Instance Members
listen()
listen()
create(message)
update(message, altMessage)
get(message)
list(options)
remove(message)

Resources

These are the resources provided by Webex instances for interacting with our developer API

Memberships represent a person's relationship to a room. Use this API to list members of any room that you're in or create memberships to invite someone to a room. Memberships can also be updated to make someone a moderator or deleted to remove them from the room.

new Memberships()
Instance Members
listen()
create(membership)
get(membership)
list(options)
listWithReadStatus(options)
remove(membership)
update(membership)
updateLastSeen(message)
new People()
Instance Members
get(person)
list(options, showAllTypes)

Rooms are virtual meeting places for getting stuff done. This resource represents the room itself. Check out the Memberships API to learn how to add and remove people from rooms and the Messages API for posting and managing content.

new Rooms()
Instance Members
listen()
create(room)
get(room, options)
list(options)
listWithReadStatus(maxRecent)
getWithReadStatus(roomId)
remove(room)
update(room)
new Teams()
Instance Members
create(team)
get(team, options)
list(options)
update(team)

Team Memberships represent a person's relationship to a team. Use this API to list members of any team that you're in or create memberships to invite someone to a team. Team memberships can also be updated to make someone a moderator or deleted to remove them from the team.

Just like in the Webex app, you must be a member of the team in order to list its memberships or invite people.

new TeamMemberships()
Instance Members
create(membership)
get(membership)
list(options)
remove(membership)
update(membership)

Webhooks allow your app to be notified via HTTP when a specific event occurs on Webex. For example, your app can register a webhook to be notified when a new message is posted into a specific room.

new Webhooks()
Instance Members
create(webhook)
get(webhook)
list(options)
remove(webhook)
update(webhook)

Logging

new Logger()
Static Members
log
error
warn
info
trace
debug
Instance Members
formatLogs(options)

Logging related types

Logger

Type: {log: function (payload: string): void, error: function (payload: string): void, warn: function (payload: string): void, info: function (payload: string): void, trace: function (payload: string): void, debug: function (payload: string): void}

Properties
log (function (payload: string): void)
error (function (payload: string): void)
warn (function (payload: string): void)
info (function (payload: string): void)
trace (function (payload: string): void)
debug (function (payload: string): void)
Static Members
log
error
warn
info
trace
debug
Instance Members
formatLogs(options)
LoggerConfig

Type: Object

Properties
level (string?) : Maximum log level that should be printed to the console. One of silent|error|warn|log|info|debug|trace
historyLength (number?) : Maximum number of entries to store in the log buffer.
Example
{
  level: process.env.WEBEX_LOG_LEVEL,
  historyLength: 1000
}

Types

The following typedefs describes the responses of the various API calls.

MembershipObject

Type: Object

Properties
id (string) : Unique identifier for the membership
roomId (string) : The room ID
personId (string) : The person ID
personEmail (email) : The email address of the person / room member
isModerator (boolean) : Indicates whether the specified person should be a room moderator
isMonitor (boolean) : Indicates whether the specified member is a room monitor
created (isoDate) : The date and time that this membership was created
MessageObject

Type: Object

Properties
id (string) : (server generated) Unique identifier for the message
personId (string) : The ID for the author of the message
personEmail (email) : The email for the author of the message
roomId (string) : The ID for the room of the message
text (string) : The message posted to the room in plain text
markdown (string) : The message posted to the room in markdown
files (Array<string>) : The source URL(s) for the message attachment(s). See the Message Attachments Guide for a list of supported media types.
created (isoDate) : (server generated) The date and time that the message was created
PersonObject

Type: Object

Properties
id (string) : (server generated) Unique identifier for the person
emails (Array<email>) : Email addresses of the person
displayName (string) : Display name of the person
created (isoDate) : (server generated) The date and time that the person was created
RoomObject

Type: Object

Properties
id (string) : (server generated) Unique identifier for the room
title (string) : The display name for the room. All room members will see the title so make it something good
teamId (string) : (optional) The ID of the team to which the room belongs
created (isoDate) : (server generated) The date and time that the room was created
TeamObject

Type: Object

Properties
id (string) : (server generated) Unique identifier for the team
name (string) : The name of the team
created (isoDate) : (server generated) The date and time that the team was created
TeamMembershipObject

Type: Object

Properties
id (string) : (server generated) Unique identifier for the team membership
teamId (string) : The team ID
personId (string) : The person ID
personEmail (string) : The email address of the person
isModerator (boolean) : Set to true to make the person a team moderator
created (string) : (server generated) The date and time that the team membership was created
WebhookObject

Type: Object

Properties
id (string) : (server generated) Unique identifier for the webhook
resource (string) : The resource type for the webhook
event (string) : The event type for the webhook
filter (string) : The filter that defines the webhook scope
targetUrl (string) : The URL that receives POST requests for each event
name (string) : A user-friendly name for this webhook
created (string) : (server generated) The date and time that the webhook was created

An email address, as a string.

email

Type: string

The date and time, specified in ISO 8601 extended offset date/time format (e.g. 2015-10-18T14:26:16+00:00).

isoDate

Type: string

AttachmentActionObject

Type: Object

Properties
id (string) : (server generated) Unique identifier for the attachment action
messageId (string) : The ID of the message in which attachment action is to be performed
type (string) : The type of attachment action eg., submit
inputs (Object) : The inputs for form fields in attachment message
personId (string) : (server generated) The ID for the author of the attachment action
roomId (string) : (server generated) The ID for the room of the message
created (isoDate) : (server generated) The date and time that the message was created

AttachmentActions are events that communicate information when a user clicks on an Action.Submit button in a card displayed in Webex Information conveyed in an AttachmentAction includes details about the user that clicked the button along with any card specific inputs. See the Attachments Actions API Documentation for more details

new AttachmentActions()
Instance Members
create(attachmentAction)
get(attachmentAction)

Authorization plugin events

Events
Static Members
ContactCenterModule

ContactCenter is the main plugin class for Webex Contact Center integration

default

Task class represents a contact center task that can be managed by an agent

default

Agent routing service for Contact Center operations

default

Task Events for Contact Center operations

TASK_EVENTS

Type: string

Static Members
TASK_INCOMING
TASK_ASSIGNED
TASK_MEDIA
TASK_UNASSIGNED
TASK_HOLD
TASK_UNHOLD
TASK_CONSULT_END
TASK_CONSULT_QUEUE_CANCELLED
TASK_CONSULT_QUEUE_FAILED
TASK_CONSULT_ACCEPTED
TASK_CONSULTING
TASK_CONSULT_CREATED
TASK_OFFER_CONSULT
TASK_END
TASK_WRAPUP
TASK_WRAPPEDUP
TASK_RECORDING_PAUSED
TASK_RECORDING_PAUSE_FAILED
TASK_RECORDING_RESUMED
TASK_RECORDING_RESUME_FAILED
TASK_REJECT
TASK_HYDRATE
TASK_OFFER_CONTACT

Enumeration of all task-related events that can occur in the contact center system These events represent different states and actions in the task lifecycle

TASK_EVENTS
Static Members
TASK_INCOMING
TASK_ASSIGNED
TASK_MEDIA
TASK_UNASSIGNED
TASK_HOLD
TASK_UNHOLD
TASK_CONSULT_END
TASK_CONSULT_QUEUE_CANCELLED
TASK_CONSULT_QUEUE_FAILED
TASK_CONSULT_ACCEPTED
TASK_CONSULTING
TASK_CONSULT_CREATED
TASK_OFFER_CONSULT
TASK_END
TASK_WRAPUP
TASK_WRAPPEDUP
TASK_RECORDING_PAUSED
TASK_RECORDING_PAUSE_FAILED
TASK_RECORDING_RESUMED
TASK_RECORDING_RESUME_FAILED
TASK_REJECT
TASK_HYDRATE
TASK_OFFER_CONTACT

Agent Events for Contact Center operations

AGENT_EVENTS

Type: string

Static Members
AGENT_STATE_CHANGE
AGENT_MULTI_LOGIN
AGENT_STATION_LOGIN_SUCCESS
AGENT_STATION_LOGIN_FAILED
AGENT_LOGOUT_SUCCESS
AGENT_LOGOUT_FAILED
AGENT_DN_REGISTERED
AGENT_RELOGIN_SUCCESS
AGENT_STATE_CHANGE_SUCCESS
AGENT_STATE_CHANGE_FAILED

Events emitted by the agent service for various state changes and actions

AGENT_EVENTS
Static Members
AGENT_STATE_CHANGE
AGENT_MULTI_LOGIN
AGENT_STATION_LOGIN_SUCCESS
AGENT_STATION_LOGIN_FAILED
AGENT_LOGOUT_SUCCESS
AGENT_LOGOUT_FAILED
AGENT_DN_REGISTERED
AGENT_RELOGIN_SUCCESS
AGENT_STATE_CHANGE_SUCCESS
AGENT_STATE_CHANGE_FAILED

Contact Center Task Events

CC_TASK_EVENTS

Type: string

Static Members
AGENT_CONTACT_ASSIGN_FAILED
AGENT_CONTACT_OFFER_RONA
AGENT_CONTACT_HELD
AGENT_CONTACT_HOLD_FAILED
AGENT_CONTACT_UNHELD
AGENT_CONTACT_UNHOLD_FAILED
AGENT_CONSULT_CREATED
AGENT_OFFER_CONSULT
AGENT_CONSULTING
AGENT_CONSULT_FAILED
AGENT_CTQ_FAILED
AGENT_CTQ_CANCELLED
AGENT_CTQ_CANCEL_FAILED
AGENT_CONSULT_ENDED
AGENT_CONSULT_END_FAILED
AGENT_CONSULT_CONFERENCE_ENDED
AGENT_BLIND_TRANSFERRED
AGENT_BLIND_TRANSFER_FAILED
AGENT_VTEAM_TRANSFERRED
AGENT_VTEAM_TRANSFER_FAILED
AGENT_CONSULT_TRANSFERRING
AGENT_CONSULT_TRANSFERRED
AGENT_CONSULT_TRANSFER_FAILED
CONTACT_RECORDING_PAUSED
CONTACT_RECORDING_PAUSE_FAILED
CONTACT_RECORDING_RESUMED
CONTACT_RECORDING_RESUME_FAILED
CONTACT_ENDED
AGENT_CONTACT_END_FAILED
AGENT_WRAPUP
AGENT_WRAPPEDUP
AGENT_WRAPUP_FAILED
AGENT_OUTBOUND_FAILED
AGENT_CONTACT
AGENT_OFFER_CONTACT
AGENT_CONTACT_ASSIGNED
AGENT_CONTACT_UNASSIGNED
AGENT_INVITE_FAILED

Contact Center Agent Events

CC_AGENT_EVENTS

Type: string

Static Members
WELCOME
AGENT_RELOGIN_SUCCESS
AGENT_RELOGIN_FAILED
AGENT_DN_REGISTERED
AGENT_LOGOUT
AGENT_LOGOUT_SUCCESS
AGENT_LOGOUT_FAILED
AGENT_STATION_LOGIN
AGENT_STATION_LOGIN_SUCCESS
AGENT_STATION_LOGIN_FAILED
AGENT_STATE_CHANGE
AGENT_MULTI_LOGIN
AGENT_STATE_CHANGE_SUCCESS
AGENT_STATE_CHANGE_FAILED
AGENT_BUDDY_AGENTS
AGENT_BUDDY_AGENTS_SUCCESS
AGENT_BUDDY_AGENTS_RETRIEVE_FAILED
AGENT_CONTACT_RESERVED

Combined Contact Center Events

CC_EVENTS

Type: string

Combined Contact Center events including both agent and task events

CC_EVENTS

Type: string

Type representing the union of all possible Contact Center events

CC_EVENTS

Type: Enum<any>

Main types and interfaces for Contact Center functionality

IContactCenter
Instance Members
register()

Interface for Contact Center plugin

IContactCenter
Instance Members
register()

Name of the client for metrics

clientName

Type: string

Type of client for metrics

clientType

Type: string

Whether to enable logging

enable

Type: boolean

Whether to log verbose events

verboseEvents

Type: boolean

Configuration options for Contact Center plugin

CCPluginConfig
Instance Members
allowMultiLogin
allowAutomatedRelogin
clientType
isKeepAliveEnabled
force
metrics
logging
callingClientConfig

Configuration options for the Contact Center Plugin.

CCPluginConfig
Example
const config: CCPluginConfig = {
  allowMultiLogin: true,
  allowAutomatedRelogin: false,
  clientType: 'browser',
  isKeepAliveEnabled: true,
  force: false,
  metrics: { clientName: 'myClient', clientType: 'browser' },
  logging: { enable: true, verboseEvents: false },
  callingClientConfig: { ... }
};
Instance Members
allowMultiLogin
allowAutomatedRelogin
clientType
isKeepAliveEnabled
force
metrics
logging
callingClientConfig

Get the user token for authentication

getUserToken

Type: function (): Promise<string>

Get the organization ID

getOrgId

Type: function (): string

WebexSDK interface

WebexSDK
Instance Members
version
canAuthorize
credentials
ready
request
once
internal
logger

Agent related types

LoginOption
Static Members
AGENT_DN
EXTENSION
BROWSER

Login options for agents

LoginOption
Static Members
AGENT_DN
EXTENSION
BROWSER

Available options for agent login methods

LoginOption

Type: ("AGENT_DN" | "EXTENSION" | "BROWSER")

Static Members
AGENT_DN
EXTENSION
BROWSER

Available login options for voice channel access 'AGENT_DN' - Login using agent's DN 'EXTENSION' - Login using extension number 'BROWSER' - Login using browser-based WebRTC

LoginOption

Type: ("AGENT_DN" | "EXTENSION" | "BROWSER")

Static Members
AGENT_DN
EXTENSION
BROWSER

Agent login information

AgentLogin
Static Members
dialNumber
teamId
loginOption

Represents the request to perform agent login.

AgentLogin

Type: {dialNumber: string?, teamId: string, loginOption: LoginOption}

Properties
dialNumber (string?)
teamId (string)
loginOption (LoginOption)
Example
const login: AgentLogin = { dialNumber: '1234', teamId: 'team1', loginOption: LoginOption.AGENT_DN };
Static Members
dialNumber
teamId
loginOption

Agent device update information

AgentProfileUpdate

Represents the request to update agent profile settings.

AgentProfileUpdate

Type: Pick<AgentLogin, ("loginOption" | "dialNumber" | "teamId")>

Example
const update: AgentProfileUpdate = { loginOption: LoginOption.BROWSER, dialNumber: '5678' };

Station login response

StationLoginResponse

Response type for station login operations. Either a success response with agent details or an error.

StationLoginResponse

Type: (Agent.StationLoginSuccessResponse | Error)

Example
function handleLogin(resp: StationLoginResponse) { ... }

Station logout response

StationLogoutResponse

Response type for station logout operations. Either a success response with logout details or an error.

StationLogoutResponse

Type: (Agent.LogoutSuccess | Error)

Example
function handleLogout(resp: StationLogoutResponse) { ... }

Buddy agents response

BuddyAgentsResponse

Response type for buddy agents query operations. Either a success response with list of buddy agents or an error.

BuddyAgentsResponse

Type: (Agent.BuddyAgentsSuccess | Error)

Example
function handleBuddyAgents(resp: BuddyAgentsResponse) { ... }

Buddy agents information

BuddyAgents
Static Members
state
state
mediaType

Parameters for retrieving buddy agent information

BuddyAgents

Type: {agentProfileId: string, mediaType: string, state: string?}

Properties
agentProfileId (string)
mediaType (string)
state (string?)
Static Members
state
state
mediaType

Subscribe request parameters

SubscribeRequest
Static Members
force
isKeepAliveEnabled
clientType
allowMultiLogin

Upload logs response

UploadLogsResponse
Static Members
trackingid
url
userId
feedbackId
correlationId

Response from uploading logs to the server.

UploadLogsResponse

Type: {trackingid: string?, url: string?, userId: string?, feedbackId: string?, correlationId: string?}

Properties
trackingid (string?)
url (string?)
userId (string?)
feedbackId (string?)
correlationId (string?)
Example
const response: UploadLogsResponse = { trackingid: 'track123', url: 'https://...', userId: 'user1' };
Static Members
trackingid
url
userId
feedbackId
correlationId

Update device type response

UpdateDeviceTypeResponse

Response type for device type update operations. Either a success response with update confirmation or an error.

UpdateDeviceTypeResponse

Type: (Agent.DeviceTypeUpdateSuccess | Error)

Example
function handleUpdateDeviceType(resp: UpdateDeviceTypeResponse) { ... }

Error type identifier

type

Type: string

Organization ID where the error occurred

orgId

Type: string

Unique tracking ID for the error

trackingId

Type: string

Additional error context data

data

Type: Record<string, any>

Generic error interface

GenericError
Instance Members
details

Set state response

SetStateResponse

Task related types

AgentContact
Static Members
mediaResourceId
eventType
eventTime
agentId
destAgentId
trackingId
consultMediaResourceId
interaction
participantId
fromOwner
toOwner
childInteractionId
interactionId
orgId
owner
queueMgr
queueName
type
ronaTimeout
isConsulted
isConferencing
updatedBy
destinationType
autoResumed
reasonCode
reason
consultingAgentId
taskId
task
supervisorId
monitorType
supervisorDN
id
isWebCallMute
reservationInteractionId
reservedAgentChannelId
monitoringState
supervisorName

Type representing an agent contact message within the contact center system Contains comprehensive interaction and task related details for agent operations

AgentContact

Type: Msg<{mediaResourceId: string, eventType: string, eventTime: number?, agentId: string, destAgentId: string, trackingId: string, consultMediaResourceId: string, interaction: Interaction, participantId: string?, fromOwner: boolean?, toOwner: boolean?, childInteractionId: string?, interactionId: string, orgId: string, owner: string, queueMgr: string, queueName: string?, type: string, ronaTimeout: number?, isConsulted: boolean?, isConferencing: boolean, updatedBy: string?, destinationType: string?, autoResumed: boolean?, reasonCode: (string | number)?, reason: string?, consultingAgentId: string?, taskId: string?, task: Interaction?, supervisorId: string?, monitorType: string?, supervisorDN: string?, id: string?, isWebCallMute: boolean?, reservationInteractionId: string?, reservedAgentChannelId: string?, monitoringState: {type: string}?, supervisorName: string?}>

Static Members
mediaResourceId
eventType
eventTime
agentId
destAgentId
trackingId
consultMediaResourceId
interaction
participantId
fromOwner
toOwner
childInteractionId
interactionId
orgId
owner
queueMgr
queueName
type
ronaTimeout
isConsulted
isConferencing
updatedBy
destinationType
autoResumed
reasonCode
reason
consultingAgentId
taskId
task
supervisorId
monitorType
supervisorDN
id
isWebCallMute
reservationInteractionId
reservedAgentChannelId
monitoringState
supervisorName

Task interface

ITask
Instance Members
data
webCallMap
accept()
decline()
hold()
resume()
end()
wrapup(wrapupPayload)
pauseRecording()
resumeRecording(resumeRecordingPayload)

Interface for managing task-related operations in the contact center Extends EventEmitter to support event-driven task updates

ITask

Extends EventEmitter

Instance Members
data
webCallMap
accept()
decline()
hold()
resume()
end()
wrapup(wrapupPayload)
pauseRecording()
resumeRecording(resumeRecordingPayload)

Task response

TaskResponse

Response type for task public methods Can be an AgentContact object containing updated task state, an Error in case of failure, or void for operations that don't return data

TaskResponse

Type: (AgentContact | Error | void)

Dialer payload

DialerPayload
Static Members
entryPointId
destination
direction
attributes
mediaType
outboundType

Configuration parameters for initiating outbound dialer tasks

DialerPayload

Type: {entryPointId: string, destination: string, direction: "OUTBOUND", attributes: {: string}, mediaType: ("telephony" | "chat" | "social" | "email"), outboundType: ("OUTDIAL" | "CALLBACK" | "EXECUTE_FLOW")}

Properties
entryPointId (string)
destination (string)
direction ("OUTBOUND")
attributes ({: string})
mediaType (("telephony" | "chat" | "social" | "email"))
outboundType (("OUTDIAL" | "CALLBACK" | "EXECUTE_FLOW"))
Static Members
entryPointId
destination
direction
attributes
mediaType
outboundType

Agent related types

StateChange
Static Members
state
auxCodeId
lastStateChangeReason
agentId

State change interface

StateChange
Static Members
state
auxCodeId
lastStateChangeReason
agentId

Parameters required for changing an agent's state

StateChange

Type: {state: AgentState, auxCodeId: string, lastStateChangeReason: string?, agentId: string?}

Properties
state (AgentState)
auxCodeId (string)
lastStateChangeReason (string?)
agentId (string?)
Static Members
state
auxCodeId
lastStateChangeReason
agentId

Logout interface

Logout
Static Members
logoutReason

Parameters required for initiating an agent logout

Logout

Type: {logoutReason: ("User requested logout" | "Inactivity Logout" | "User requested agent device change")?}

Properties
logoutReason (("User requested logout" | "Inactivity Logout" | "User requested agent device change")?)
Static Members
logoutReason

State change success response

StateChangeSuccess
Static Members
eventType
agentId
trackingId
auxCodeId
agentSessionId
orgId
status
subStatus
lastIdleCodeChangeTimestamp
lastStateChangeTimestamp
type
changedBy
changedById
changedByName
lastStateChangeReason

Response type received when an agent's state is successfully changed

StateChangeSuccess

Type: Msg<{eventType: "AgentDesktopMessage", agentId: string, trackingId: string, auxCodeId: string, agentSessionId: string, orgId: string, status: string, subStatus: ("Available" | "Idle"), lastIdleCodeChangeTimestamp: number, lastStateChangeTimestamp: number, type: "AgentStateChangeSuccess", changedBy: (string | null), changedById: (string | null), changedByName: (string | null), lastStateChangeReason: string}>

Static Members
eventType
agentId
trackingId
auxCodeId
agentSessionId
orgId
status
subStatus
lastIdleCodeChangeTimestamp
lastStateChangeTimestamp
type
changedBy
changedById
changedByName
lastStateChangeReason

Station login success response

StationLoginSuccess
Static Members
eventType
agentId
trackingId
auxCodeId
teamId
agentSessionId
orgId
interactionIds
status
subStatus
siteId
lastIdleCodeChangeTimestamp
lastStateChangeTimestamp
profileType
channelsMap
dialNumber
roles
supervisorSessionId
type

Response type received when an agent successfully logs into their station

StationLoginSuccess

Type: Msg<{eventType: "AgentDesktopMessage", agentId: string, trackingId: string, auxCodeId: string, teamId: string, agentSessionId: string, orgId: string, interactionIds: Array<string>, status: string, subStatus: ("Available" | "Idle"), siteId: string, lastIdleCodeChangeTimestamp: number, lastStateChangeTimestamp: number, profileType: string, channelsMap: Record<string, Array<string>>, dialNumber: string?, roles: Array<string>?, supervisorSessionId: string?, type: "AgentStationLoginSuccess"}>

Static Members
eventType
agentId
trackingId
auxCodeId
teamId
agentSessionId
orgId
interactionIds
status
subStatus
siteId
lastIdleCodeChangeTimestamp
lastStateChangeTimestamp
profileType
channelsMap
dialNumber
roles
supervisorSessionId
type

StationLoginSuccessResponse

packages/@webex/plugin-cc/src/index.ts

Extended station login success response with notification tracking

StationLoginSuccessResponse
Static Members
eventType
agentId
trackingId
auxCodeId
teamId
agentSessionId
orgId
interactionIds
status
subStatus
siteId
lastIdleCodeChangeTimestamp
lastStateChangeTimestamp
profileType
mmProfile
dialNumber
roles
supervisorSessionId
type
notifsTrackingId

Extended response type for station login success that includes notification tracking

StationLoginSuccessResponse

Type: {eventType: "AgentDesktopMessage", agentId: string, trackingId: string, auxCodeId: string, teamId: string, agentSessionId: string, orgId: string, interactionIds: Array<string>, status: string, subStatus: ("Available" | "Idle"), siteId: string, lastIdleCodeChangeTimestamp: number, lastStateChangeTimestamp: number, profileType: string, mmProfile: {chat: number, email: number, social: number, telephony: number}, dialNumber: string?, roles: Array<string>?, supervisorSessionId: string?, type: "AgentStationLoginSuccess", notifsTrackingId: string}

Properties
eventType ("AgentDesktopMessage")
agentId (string)
trackingId (string)
auxCodeId (string)
teamId (string)
agentSessionId (string)
orgId (string)
interactionIds (Array<string>)
status (string)
subStatus (("Available" | "Idle"))
siteId (string)
lastIdleCodeChangeTimestamp (number)
lastStateChangeTimestamp (number)
profileType (string)
mmProfile ({chat: number, email: number, social: number, telephony: number})
dialNumber (string?)
roles (Array<string>?)
supervisorSessionId (string?)
type ("AgentStationLoginSuccess")
notifsTrackingId (string)
Static Members
eventType
agentId
trackingId
auxCodeId
teamId
agentSessionId
orgId
interactionIds
status
subStatus
siteId
lastIdleCodeChangeTimestamp
lastStateChangeTimestamp
profileType
mmProfile
dialNumber
roles
supervisorSessionId
type
notifsTrackingId

Device type update success response

DeviceTypeUpdateSuccess

Extended response type for agent device type update success

DeviceTypeUpdateSuccess

Type: any

Agent login success response

LogoutSuccess
Static Members
eventType
agentId
trackingId
agentSessionId
orgId
status
subStatus
loggedOutBy
roles
type

Response type received when an agent successfully logs out from the system

LogoutSuccess

Type: Msg<{eventType: "AgentDesktopMessage", agentId: string, trackingId: string, agentSessionId: string, orgId: string, status: string, subStatus: string, loggedOutBy: string?, roles: Array<string>?, type: "AgentLogoutSuccess"}>

Static Members
eventType
agentId
trackingId
agentSessionId
orgId
status
subStatus
loggedOutBy
roles
type

Agent relogin success response

ReloginSuccess
Static Members
eventType
agentId
trackingId
auxCodeId
teamId
agentSessionId
dn
orgId
interactionIds
isExtension
status
subStatus
siteId
lastIdleCodeChangeTimestamp
lastStateChangeTimestamp
lastStateChangeReason
profileType
channelsMap
dialNumber
roles
deviceType
deviceId
isEmergencyModalAlreadyDisplayed
type

Response type received when an agent successfully relogins to the system

ReloginSuccess

Type: Msg<{eventType: "AgentDesktopMessage", agentId: string, trackingId: string, auxCodeId: string, teamId: string, agentSessionId: string, dn: string, orgId: string, interactionIds: Array<string>, isExtension: boolean, status: "LoggedIn", subStatus: "Idle", siteId: string, lastIdleCodeChangeTimestamp: number, lastStateChangeTimestamp: number, lastStateChangeReason: string?, profileType: string, channelsMap: Record<string, Array<string>>, dialNumber: string?, roles: Array<string>?, deviceType: DeviceType?, deviceId: (string | null)?, isEmergencyModalAlreadyDisplayed: boolean?, type: "AgentReloginSuccess"}>

Static Members
eventType
agentId
trackingId
auxCodeId
teamId
agentSessionId
dn
orgId
interactionIds
isExtension
status
subStatus
siteId
lastIdleCodeChangeTimestamp
lastStateChangeTimestamp
lastStateChangeReason
profileType
channelsMap
dialNumber
roles
deviceType
deviceId
isEmergencyModalAlreadyDisplayed
type

Agent state type

AgentState

Represents the possible states an agent can be in

AgentState

Type: ("Available" | "Idle" | "RONA" | string)

User station login parameters

UserStationLogin
Static Members
dialNumber
teamId
teamName
roles
siteId
usesOtherDN
skillProfileId
auxCodeId
isExtension
deviceType
deviceId
isEmergencyModalAlreadyDisplayed

Parameters required for agent station login

UserStationLogin

Type: {dialNumber: (string | null)?, dn: (string | null)?, teamId: (string | null), teamName: (string | null), roles: Array<string>?, siteId: string, usesOtherDN: boolean, skillProfileId: string?, auxCodeId: string, isExtension: boolean?, deviceType: DeviceType?, deviceId: (string | null)?, isEmergencyModalAlreadyDisplayed: boolean?}

Properties
dialNumber ((string | null)?)
dn ((string | null)?)
teamId ((string | null))
teamName ((string | null))
roles (Array<string>?)
siteId (string)
usesOtherDN (boolean)
skillProfileId (string?)
auxCodeId (string)
isExtension (boolean?)
deviceType (DeviceType?)
deviceId ((string | null)?)
isEmergencyModalAlreadyDisplayed (boolean?)
Static Members
dialNumber
teamId
teamName
roles
siteId
usesOtherDN
skillProfileId
auxCodeId
isExtension
deviceType
deviceId
isEmergencyModalAlreadyDisplayed

Device type for agent login

DeviceType

Type of device used for agent login

DeviceType

Type: (LoginOption | string)

Buddy agent details

BuddyDetails

Detailed information about a buddy agent

BuddyDetails

Type: {agentId: string, state: string, teamId: string, dn: string, agentName: string, siteId: string}

Properties
agentId (string)
state (string)
teamId (string)
dn (string)
agentName (string)
siteId (string)

Buddy agents success response

BuddyAgentsSuccess
Static Members
eventType
agentId
trackingId
agentSessionId
orgId
type
agentList

Response type received when successfully retrieving buddy agent information

BuddyAgentsSuccess

Type: Msg<{eventType: "AgentDesktopMessage", agentId: string, trackingId: string, agentSessionId: string, orgId: string, type: "BuddyAgents", agentList: Array<BuddyDetails>}>

Static Members
eventType
agentId
trackingId
agentSessionId
orgId
type
agentList

Config related types

Profile
Static Members
microsoftConfig
webexConfig
teams
defaultDn
forceDefaultDn
forceDefaultDnForAgent
regexUS
regexOther
agentId
agentName
agentMailId
agentProfileID
dialPlan
multimediaProfileId
skillProfileId
siteId
enterpriseId
privacyShieldVisible
idleCodes
idleCodesList
idleCodesAccess
wrapupCodes
agentWrapUpCodes
agentDefaultWrapUpCode
defaultWrapupCode
wrapUpData
orgId
isOutboundEnabledForTenant
isOutboundEnabledForAgent
isAdhocDialingEnabled
isAgentAvailableAfterOutdial
isCampaignManagementEnabled
outDialEp
isEndCallEnabled
isEndConsultEnabled
lcmUrl
agentDbId
agentAnalyzerId
allowConsultToQueue
campaignManagerAdditionalInfo
agentPersonalStatsEnabled
addressBookId
outdialANIId
analyserUserId
isCallMonitoringEnabled
isMidCallMonitoringEnabled
isBargeInEnabled
isManagedTeamsEnabled
isManagedQueuesEnabled
isSendMessageEnabled
isAgentStateChangeEnabled
isSignOutAgentsEnabled
urlMappings
isTimeoutDesktopInactivityEnabled
timeoutDesktopInactivityMins
isAnalyzerEnabled
tenantTimezone
loginVoiceOptions
deviceType
currentTeamId
webRtcEnabled
organizationIdleCodes
isRecordingManagementEnabled
lostConnectionRecoveryTimeout
maskSensitiveData
isAgentLoggedIn
lastStateAuxCodeId
lastStateChangeTimestamp
lastIdleCodeChangeTimestamp

Profile interface

Profile
Static Members
microsoftConfig
webexConfig
teams
defaultDn
forceDefaultDn
forceDefaultDnForAgent
regexUS
regexOther
agentId
agentName
agentMailId
agentProfileID
dialPlan
multimediaProfileId
skillProfileId
siteId
enterpriseId
privacyShieldVisible
idleCodes
idleCodesList
idleCodesAccess
wrapupCodes
agentWrapUpCodes
agentDefaultWrapUpCode
defaultWrapupCode
wrapUpData
orgId
isOutboundEnabledForTenant
isOutboundEnabledForAgent
isAdhocDialingEnabled
isAgentAvailableAfterOutdial
isCampaignManagementEnabled
outDialEp
isEndCallEnabled
isEndConsultEnabled
lcmUrl
agentDbId
agentAnalyzerId
allowConsultToQueue
campaignManagerAdditionalInfo
agentPersonalStatsEnabled
addressBookId
outdialANIId
analyserUserId
isCallMonitoringEnabled
isMidCallMonitoringEnabled
isBargeInEnabled
isManagedTeamsEnabled
isManagedQueuesEnabled
isSendMessageEnabled
isAgentStateChangeEnabled
isSignOutAgentsEnabled
urlMappings
isTimeoutDesktopInactivityEnabled
timeoutDesktopInactivityMins
isAnalyzerEnabled
tenantTimezone
loginVoiceOptions
deviceType
currentTeamId
webRtcEnabled
organizationIdleCodes
isRecordingManagementEnabled
lostConnectionRecoveryTimeout
maskSensitiveData
isAgentLoggedIn
lastStateAuxCodeId
lastStateChangeTimestamp
lastIdleCodeChangeTimestamp

Comprehensive agent profile configuration in the contact center system Contains all settings and capabilities for an agent

Profile

Type: {microsoftConfig: {showUserDetailsMS: boolean?, stateSynchronizationMS: boolean?}?, webexConfig: {showUserDetailsWebex: boolean?, stateSynchronizationWebex: boolean?}?, teams: Array<Team>, defaultDn: string, dn: string?, forceDefaultDn: boolean, forceDefaultDnForAgent: boolean, regexUS: (RegExp | string), regexOther: (RegExp | string), agentId: string, agentName: string, agentMailId: string, agentProfileID: string, dialPlan: DialPlan, multimediaProfileId: string, skillProfileId: string, siteId: string, enterpriseId: string, privacyShieldVisible: boolean, idleCodes: Array<Entity>, idleCodesList: Array<string>?, idleCodesAccess: ("ALL" | "SPECIFIC")?, wrapupCodes: Array<Entity>, agentWrapUpCodes: agentWrapUpCodes?, agentDefaultWrapUpCode: agentDefaultWrapupCode?, defaultWrapupCode: string, wrapUpData: WrapupData, orgId: string?, isOutboundEnabledForTenant: boolean, isOutboundEnabledForAgent: boolean, isAdhocDialingEnabled: boolean, isAgentAvailableAfterOutdial: boolean, isCampaignManagementEnabled: boolean, outDialEp: string, isEndCallEnabled: boolean, isEndConsultEnabled: boolean, lcmUrl: string?, agentDbId: string, agentAnalyzerId: string?, allowConsultToQueue: boolean, campaignManagerAdditionalInfo: string?, agentPersonalStatsEnabled: boolean, addressBookId: string?, outdialANIId: string?, analyserUserId: string?, isCallMonitoringEnabled: boolean?, isMidCallMonitoringEnabled: boolean?, isBargeInEnabled: boolean?, isManagedTeamsEnabled: boolean?, isManagedQueuesEnabled: boolean?, isSendMessageEnabled: boolean?, isAgentStateChangeEnabled: boolean?, isSignOutAgentsEnabled: boolean?, urlMappings: URLMappings?, isTimeoutDesktopInactivityEnabled: boolean, timeoutDesktopInactivityMins: number?, isAnalyzerEnabled: boolean?, tenantTimezone: string?, loginVoiceOptions: Array<LoginOption>?, deviceType: LoginOption?, currentTeamId: string?, webRtcEnabled: boolean, organizationIdleCodes: Array<Entity>?, isRecordingManagementEnabled: boolean?, lostConnectionRecoveryTimeout: number, maskSensitiveData: boolean?, isAgentLoggedIn: boolean?, lastStateAuxCodeId: string?, lastStateChangeTimestamp: number?, lastIdleCodeChangeTimestamp: number?}

Properties
microsoftConfig ({showUserDetailsMS: boolean?, stateSynchronizationMS: boolean?}?)
webexConfig ({showUserDetailsWebex: boolean?, stateSynchronizationWebex: boolean?}?)
teams (Array<Team>)
defaultDn (string)
dn (string?)
forceDefaultDn (boolean)
forceDefaultDnForAgent (boolean)
regexUS ((RegExp | string))
regexOther ((RegExp | string))
agentId (string)
agentName (string)
agentMailId (string)
agentProfileID (string)
dialPlan (DialPlan)
multimediaProfileId (string)
skillProfileId (string)
siteId (string)
enterpriseId (string)
privacyShieldVisible (boolean)
idleCodes (Array<Entity>)
idleCodesList (Array<string>?)
idleCodesAccess (("ALL" | "SPECIFIC")?)
wrapupCodes (Array<Entity>)
agentWrapUpCodes (agentWrapUpCodes?)
agentDefaultWrapUpCode (agentDefaultWrapupCode?)
defaultWrapupCode (string)
wrapUpData (WrapupData)
orgId (string?)
isOutboundEnabledForTenant (boolean)
isOutboundEnabledForAgent (boolean)
isAdhocDialingEnabled (boolean)
isAgentAvailableAfterOutdial (boolean)
isCampaignManagementEnabled (boolean)
outDialEp (string)
isEndCallEnabled (boolean)
isEndConsultEnabled (boolean)
lcmUrl (string?)
agentDbId (string)
agentAnalyzerId (string?)
allowConsultToQueue (boolean)
campaignManagerAdditionalInfo (string?)
agentPersonalStatsEnabled (boolean)
addressBookId (string?)
outdialANIId (string?)
analyserUserId (string?)
isCallMonitoringEnabled (boolean?)
isMidCallMonitoringEnabled (boolean?)
isBargeInEnabled (boolean?)
isManagedTeamsEnabled (boolean?)
isManagedQueuesEnabled (boolean?)
isSendMessageEnabled (boolean?)
isAgentStateChangeEnabled (boolean?)
isSignOutAgentsEnabled (boolean?)
urlMappings (URLMappings?)
isTimeoutDesktopInactivityEnabled (boolean)
timeoutDesktopInactivityMins (number?)
isAnalyzerEnabled (boolean?)
tenantTimezone (string?)
loginVoiceOptions (Array<LoginOption>?)
deviceType (LoginOption?)
currentTeamId (string?)
webRtcEnabled (boolean)
organizationIdleCodes (Array<Entity>?)
isRecordingManagementEnabled (boolean?)
lostConnectionRecoveryTimeout (number)
maskSensitiveData (boolean?)
isAgentLoggedIn (boolean?)
lastStateAuxCodeId (string?)
lastStateChangeTimestamp (number?)
lastIdleCodeChangeTimestamp (number?)
Static Members
microsoftConfig
webexConfig
teams
defaultDn
forceDefaultDn
forceDefaultDnForAgent
regexUS
regexOther
agentId
agentName
agentMailId
agentProfileID
dialPlan
multimediaProfileId
skillProfileId
siteId
enterpriseId
privacyShieldVisible
idleCodes
idleCodesList
idleCodesAccess
wrapupCodes
agentWrapUpCodes
agentDefaultWrapUpCode
defaultWrapupCode
wrapUpData
orgId
isOutboundEnabledForTenant
isOutboundEnabledForAgent
isAdhocDialingEnabled
isAgentAvailableAfterOutdial
isCampaignManagementEnabled
outDialEp
isEndCallEnabled
isEndConsultEnabled
lcmUrl
agentDbId
agentAnalyzerId
allowConsultToQueue
campaignManagerAdditionalInfo
agentPersonalStatsEnabled
addressBookId
outdialANIId
analyserUserId
isCallMonitoringEnabled
isMidCallMonitoringEnabled
isBargeInEnabled
isManagedTeamsEnabled
isManagedQueuesEnabled
isSendMessageEnabled
isAgentStateChangeEnabled
isSignOutAgentsEnabled
urlMappings
isTimeoutDesktopInactivityEnabled
timeoutDesktopInactivityMins
isAnalyzerEnabled
tenantTimezone
loginVoiceOptions
deviceType
currentTeamId
webRtcEnabled
organizationIdleCodes
isRecordingManagementEnabled
lostConnectionRecoveryTimeout
maskSensitiveData
isAgentLoggedIn
lastStateAuxCodeId
lastStateChangeTimestamp
lastIdleCodeChangeTimestamp

Contact service queue interface

ContactServiceQueue
Static Members
id
description
checkAgentAvailability
channelType
serviceLevelThreshold
maxActiveContacts
maxTimeInQueue
defaultMusicInQueueMediaFileId
active
outdialCampaignEnabled
monitoringPermitted
parkingPermitted
recordingPermitted
recordingAllCallsPermitted
pauseRecordingPermitted
recordingPauseDuration
controlFlowScriptUrl
ivrRequeueUrl
routingType
queueRoutingType
queueSkillRequirements
callDistributionGroups
createdTime
lastUpdatedTime

Comprehensive configuration for a contact service queue

ContactServiceQueue

Type: {id: string, name: string, description: string, queueType: string, checkAgentAvailability: boolean, channelType: string, serviceLevelThreshold: number, maxActiveContacts: number, maxTimeInQueue: number, defaultMusicInQueueMediaFileId: string, timezone: string, active: boolean, outdialCampaignEnabled: boolean, monitoringPermitted: boolean, parkingPermitted: boolean, recordingPermitted: boolean, recordingAllCallsPermitted: boolean, pauseRecordingPermitted: boolean, recordingPauseDuration: number, controlFlowScriptUrl: string, ivrRequeueUrl: string, routingType: string, queueRoutingType: string, queueSkillRequirements: Array<object>, agents: Array<object>, callDistributionGroups: Array<CallDistributionGroup>, links: Array<string>, createdTime: string, lastUpdatedTime: string}

Properties
id (string)
name (string)
description (string)
queueType (string)
checkAgentAvailability (boolean)
channelType (string)
serviceLevelThreshold (number)
maxActiveContacts (number)
maxTimeInQueue (number)
defaultMusicInQueueMediaFileId (string)
timezone (string)
active (boolean)
outdialCampaignEnabled (boolean)
monitoringPermitted (boolean)
parkingPermitted (boolean)
recordingPermitted (boolean)
recordingAllCallsPermitted (boolean)
pauseRecordingPermitted (boolean)
recordingPauseDuration (number)
controlFlowScriptUrl (string)
ivrRequeueUrl (string)
routingType (string)
queueRoutingType (string)
queueSkillRequirements (Array<object>)
agents (Array<object>)
callDistributionGroups (Array<CallDistributionGroup>)
links (Array<string>)
createdTime (string)
lastUpdatedTime (string)
Static Members
id
description
checkAgentAvailability
channelType
serviceLevelThreshold
maxActiveContacts
maxTimeInQueue
defaultMusicInQueueMediaFileId
active
outdialCampaignEnabled
monitoringPermitted
parkingPermitted
recordingPermitted
recordingAllCallsPermitted
pauseRecordingPermitted
recordingPauseDuration
controlFlowScriptUrl
ivrRequeueUrl
routingType
queueRoutingType
queueSkillRequirements
callDistributionGroups
createdTime
lastUpdatedTime

Response type from getUserUsingCI method

AgentResponse
Static Members
ciUserId
firstName
lastName
agentProfileId
email
teamIds
multimediaProfileId
skillProfileId
siteId
dbId
defaultDialledNumber

Represents the response from getUserUsingCI method.

AgentResponse

Type: {id: string, ciUserId: string, firstName: string, lastName: string, agentProfileId: string, email: string, teamIds: Array<string>, multimediaProfileId: string, skillProfileId: string, siteId: string, dbId: string?, defaultDialledNumber: string?}

Properties
id (string)
ciUserId (string)
firstName (string)
lastName (string)
agentProfileId (string)
email (string)
teamIds (Array<string>)
multimediaProfileId (string)
skillProfileId (string)
siteId (string)
dbId (string?)
defaultDialledNumber (string?)
Static Members
ciUserId
firstName
lastName
agentProfileId
email
teamIds
multimediaProfileId
skillProfileId
siteId
dbId
defaultDialledNumber

Response from getDesktopProfileById

DesktopProfileResponse
Static Members
loginVoiceOptions
accessWrapUpCode
accessIdleCode
wrapUpCodes
idleCodes
dialPlanEnabled
lastAgentRouting
autoWrapUp
autoAnswer
autoWrapAfterSeconds
agentAvailableAfterOutdial
allowAutoWrapUpExtension
outdialEnabled
outdialEntryPointId
outdialANIId
consultToQueue
addressBookId
viewableStatistics
agentDNValidation
dialPlans
timeoutDesktopInactivityCustomEnabled
timeoutDesktopInactivityMins
showUserDetailsMS
stateSynchronizationMS
showUserDetailsWebex
stateSynchronizationWebex

Represents the response from getDesktopProfileById method.

DesktopProfileResponse

Type: {loginVoiceOptions: Array<LoginOption>, accessWrapUpCode: string, accessIdleCode: string, wrapUpCodes: Array<string>, idleCodes: Array<string>, dialPlanEnabled: boolean, lastAgentRouting: boolean, autoWrapUp: boolean, autoAnswer: boolean, autoWrapAfterSeconds: number, agentAvailableAfterOutdial: boolean, allowAutoWrapUpExtension: boolean, outdialEnabled: boolean, outdialEntryPointId: string, outdialANIId: string, consultToQueue: boolean, addressBookId: string, viewableStatistics: {id: string, agentStats: boolean, accessQueueStats: string, contactServiceQueues: Array<string>, loggedInTeamStats: boolean, accessTeamStats: string, teams: Array<string>}, agentDNValidation: string, dialPlans: Array<string>, timeoutDesktopInactivityCustomEnabled: boolean, timeoutDesktopInactivityMins: number, showUserDetailsMS: boolean, stateSynchronizationMS: boolean, showUserDetailsWebex: boolean, stateSynchronizationWebex: boolean}

Properties
loginVoiceOptions (Array<LoginOption>)
accessWrapUpCode (string)
accessIdleCode (string)
wrapUpCodes (Array<string>)
idleCodes (Array<string>)
dialPlanEnabled (boolean)
lastAgentRouting (boolean)
autoWrapUp (boolean)
autoAnswer (boolean)
autoWrapAfterSeconds (number)
agentAvailableAfterOutdial (boolean)
allowAutoWrapUpExtension (boolean)
outdialEnabled (boolean)
outdialEntryPointId (string)
outdialANIId (string)
consultToQueue (boolean)
addressBookId (string)
viewableStatistics ({id: string, agentStats: boolean, accessQueueStats: string, contactServiceQueues: Array<string>, loggedInTeamStats: boolean, accessTeamStats: string, teams: Array<string>})
agentDNValidation (string)
dialPlans (Array<string>)
timeoutDesktopInactivityCustomEnabled (boolean)
timeoutDesktopInactivityMins (number)
showUserDetailsMS (boolean)
stateSynchronizationMS (boolean)
showUserDetailsWebex (boolean)
stateSynchronizationWebex (boolean)
Static Members
loginVoiceOptions
accessWrapUpCode
accessIdleCode
wrapUpCodes
idleCodes
dialPlanEnabled
lastAgentRouting
autoWrapUp
autoAnswer
autoWrapAfterSeconds
agentAvailableAfterOutdial
allowAutoWrapUpExtension
outdialEnabled
outdialEntryPointId
outdialANIId
consultToQueue
addressBookId
viewableStatistics
agentDNValidation
dialPlans
timeoutDesktopInactivityCustomEnabled
timeoutDesktopInactivityMins
showUserDetailsMS
stateSynchronizationMS
showUserDetailsWebex
stateSynchronizationWebex

Response from getMultimediaProfileById

MultimediaProfileResponse
Static Members
organizationId
version
description
chat
email
telephony
social
active
blendingModeEnabled
blendingMode
systemDefault
createdTime
lastUpdatedTime

Response from getListOfTeams

ListTeamsResponse
Static Members
data
meta

Response from getListOfAuxCodes

ListAuxCodesResponse

Response from getSiteInfo

SiteInfo
Static Members
active
multimediaProfileId
systemDefault

Response from getOrgInfo

OrgInfo
Static Members
tenantId
timezone

Response from getOrganizationSetting

OrgSettings
Static Members
webRtcEnabled
maskSensitiveData
campaignManagerEnabled

Response from getTenantData

TenantData
Static Members
timeoutDesktopInactivityMins
forceDefaultDn
dnDefaultRegex
dnOtherRegex
privacyShieldVisible
outdialEnabled
endCallEnabled
endConsultEnabled
callVariablesSuppressed
timeoutDesktopInactivityEnabled
lostConnectionRecoveryTimeout

Response from getURLMapping

URLMapping

URL mapping configuration for external integrations

URLMapping

Type: {id: string, name: string, url: string, links: Array<string>, createdTime: number, lastUpdatedTime: number}

Properties
id (string)
name (string)
url (string)
links (Array<string>)
createdTime (number)
lastUpdatedTime (number)

Response from getDialPlanData

DialPlanEntity
Static Members
id
regularExpression
prefix
strippedChars

Dial plan entity definition containing number manipulation rules

DialPlanEntity

Type: {id: string, regularExpression: string, prefix: string, strippedChars: string, name: string}

Properties
id (string)
regularExpression (string)
prefix (string)
strippedChars (string)
name (string)
Static Members
id
regularExpression
prefix
strippedChars

Auxiliary code information

AuxCode
Static Members
active
defaultCode
isSystemCode
description
name
workTypeCode

Team information

TeamList
Static Members
id
teamType
teamStatus
active
siteId
multiMediaProfileId
userIds
rankQueuesForTeam
queueRankings
dbId
desktopLayoutId

Wrap-up reason information

WrapUpReason
Static Members
isSystem
name
isDefault

Wrap-up reason configuration used to classify completed interactions

WrapUpReason

Type: {isSystem: boolean, name: string, id: string, isDefault: boolean}

Properties
isSystem (boolean)
name (string)
id (string)
isDefault (boolean)
Static Members
isSystem
name
isDefault

WebSocket event data

WebSocketEvent
Static Members
data

WebSocket event structure for Contact Center events

WebSocketEvent

Type: {type: CC_EVENTS, data: (WelcomeEvent | Agent.StationLoginSuccess | Agent.LogoutSuccess | Agent.ReloginSuccess | Agent.StateChangeSuccess | Agent.BuddyAgentsSuccess)}

Properties
type (CC_EVENTS)
data ((WelcomeEvent | Agent.StationLoginSuccess | Agent.LogoutSuccess | Agent.ReloginSuccess | Agent.StateChangeSuccess | Agent.BuddyAgentsSuccess))
Static Members
data

Wrap-up configuration data

WrapupData
Static Members
wrapUpProps

Wrap-up configuration data containing settings and available options

WrapupData

Type: {wrapUpProps: {autoWrapup: boolean?, autoWrapupInterval: number?, lastAgentRoute: boolean?, wrapUpReasonList: Array<WrapUpReason>, wrapUpCodesList: Array<string>?, idleCodesAccess: ("ALL" | "SPECIFIC")?, interactionId: string?, allowCancelAutoWrapup: boolean?}}

Properties
wrapUpProps ({autoWrapup: boolean?, autoWrapupInterval: number?, lastAgentRoute: boolean?, wrapUpReasonList: Array<WrapUpReason>, wrapUpCodesList: Array<string>?, idleCodesAccess: ("ALL" | "SPECIFIC")?, interactionId: string?, allowCancelAutoWrapup: boolean?})
Static Members
wrapUpProps

Base entity type

Entity
Static Members
isSystem
isDefault

Basic entity information used throughout the system

Entity

Type: {isSystem: boolean, name: string, id: string, isDefault: boolean}

Properties
isSystem (boolean)
name (string)
id (string)
isDefault (boolean)
Static Members
isSystem
isDefault

Dial plan configuration

DialPlan
Static Members
type
dialPlanEntity

Complete dial plan configuration for number handling

DialPlan

Type: {type: string, dialPlanEntity: Array<{regex: string, prefix: string, strippedChars: string, name: string}>}

Properties
type (string)
dialPlanEntity (Array<{regex: string, prefix: string, strippedChars: string, name: string}>)
Static Members
type
dialPlanEntity

Auxiliary code type (IDLE_CODE or WRAP_UP_CODE)

AuxCodeType

Type representing the possible auxiliary code types

AuxCodeType

Type: (any | any)

Idle code constant

IDLE_CODE

Type: string

Wrap up code constant

WRAP_UP_CODE

Type: string

The Contact Center plugin default export

index
CCPlugin

Features:

  1. Session Management:
  • register - Initialize and register SDK with contact center
  • deregister - Cleanup and disconnect SDK resources
  1. Agent Login/Logout:
  1. Agent State Control:
  1. Task Management:
  • Inbound task handling via events
  • startOutdial - Make outbound calls
  1. Routing & Distribution:
  1. Diagnostics:
  • Key Events:
  • Agent State Events:

    • agent:stateChange - Agent's state has changed (Available, Idle, etc.)
    • agent:stateChangeSuccess - Agent state change was successful
    • agent:stateChangeFailed - Agent state change failed
  • Session Events:

    • agent:stationLoginSuccess - Agent login was successful
    • agent:stationLoginFailed - Agent login failed
    • agent:logoutSuccess - Agent logout was successful
    • agent:logoutFailed - Agent logout failed
  • Task Events:

    • task:incoming - New task is being offered
    • task:hydrate - Task data has been updated
    • task:established - Task/call has been connected
    • task:ended - Task/call has ended
    • task:error - An error occurred during task handling
new ContactCenter()

Extends WebexPlugin

Example
```typescript
import Webex from 'webex';

// Initialize SDK with access token
const webex = new Webex({
  credentials: 'YOUR_ACCESS_TOKEN'
});

// Get Contact Center plugin instance
const cc = webex.cc;

// Setup event handlers
cc.on('agent:stateChange', (event) => {
  console.log('Agent state changed:', event.state);
});

cc.on('task:incoming', (task) => {
  console.log('New task received:', task.interactionId);
});

// Initialize agent session
async function initializeAgent() {
  try {
    // Register with contact center
    const profile = await cc.register();

    // Login with browser-based calling
    await cc.stationLogin({
      teamId: profile.teams[0].teamId,
      loginOption: 'BROWSER'
    });

    // Set agent to Available state
    await cc.setAgentState({
      state: 'Available',
      auxCodeId: '0'
    });

    console.log('Agent initialized and ready');
  } catch (error) {
    console.error('Initialization failed:', error);
    await cc.uploadLogs();  // Upload logs for troubleshooting
  }
}

initializeAgent();
```
Instance Members
namespace
LoggerProxy
register()
deregister()
getBuddyAgents(data)
stationLogin(data)
stationLogout(data)
setAgentState(data)
startOutdial(destination)
getQueues(search?, filter?, page, pageSize)
uploadLogs()
updateAgentProfile(data)

This is used for handling the async requests by sending webex.request and wait for corresponding websocket event.

webexRequest
AgentConfigService
Instance Members
getAgentConfig(orgId, agentId)

Get the URL mapping for the given name

getUrlMapping
Parameters
urlMappings (Array<URLMapping>)
name (string)
Returns
string:

Get the MSFT and Webex configuration

getMsftConfig
Parameters
agentProfileData (DesktopProfileResponse)
Returns
Object:

Get the Webex configuration

getWebexConfig
Parameters
agentProfileData (DesktopProfileResponse)
Returns
Object:

Get the default agent DN

getDefaultAgentDN
Parameters
agentDNValidation (string)
Returns
boolean:

Get the filtered dialplan entries

getFilteredDialplanEntries
Parameters
dialPlanData (Array<DialPlanEntity>)
profileDialPlans (Array<string>)
Returns
Array<Entity>:

Get the filtered aux codes

getFilterAuxCodes
Parameters
auxCodes (Array<AuxCode>)
type (AuxCodeType)
specificCodes (Array<string>)
Returns
Array<Entity>:

Get the default wrapup code

getDefaultWrapUpCode(wrapUpReasonList: Array<Entity>): Entity
Parameters
wrapUpReasonList (Array<Entity>)
Returns
Entity:

Parse the agent configurations

parseAgentConfigs(profileData: Object): Profile
Parameters
profileData (Object)
Returns
Profile:

This is used for uploading the logs to backend/mats.

uploadLogs(metaData: LogsMetaData): Promise<UploadLogsResponse>
Parameters
metaData (LogsMetaData = {}) meta data to be uploaded.
Returns
Promise<UploadLogsResponse>

Maps API endpoint names to functions that generate endpoint URLs for various organization resources.

endPointMap
Example
const url = endPointMap.userByCI('org123', 'agent456');
new TaskManager(contact: ReturnType<any>, webCallingService: WebCallingService, webSocketManager: WebSocketManager)

Extends EventEmitter

Parameters
contact (ReturnType<any>) Routing Contact layer. Talks to AQMReq layer to convert events to promises
webCallingService (WebCallingService) Webrtc Service Layer
webSocketManager (WebSocketManager) Websocket Manager to maintain websocket connection and keepalives
Static Members
getTaskManager
Instance Members
getTask
getAllTasks

WebCallingService provides WebRTC calling functionality for Contact Center agents. It handles registration, call management, and media operations for voice interactions.

new WebCallingService(webex: WebexSDK)

Extends EventEmitter

Parameters
webex (WebexSDK) The Webex SDK instance
Instance Members
loginOption
setLoginOption(loginOption)
cleanUpCall()
registerWebCallingLine()
deregisterWebCallingLine()
answerCall(localAudioStream, taskId)
muteUnmuteCall(localAudioStream)
isCallMuted()
declineCall(taskId)
mapCallToTask(callId, taskId)
getTaskIdForCall(callId)

Represents the possible metric event names used within the metrics system.

This type is derived from the keys of the METRIC_EVENT_NAMES constant, ensuring type safety and consistency when referring to metric event names throughout the codebase.

METRIC_EVENT_NAMES

Type: Enum<any>

Related
METRIC_EVENT_NAMES

Task class represents a contact center task/interaction that can be managed by an agent. This class provides all the necessary methods to manage tasks in a contact center environment, handling various call control operations and task lifecycle management.

  • Task Lifecycle Management:
    • accept - Accept incoming task
    • decline - Decline incoming task
    • end - End active task
  • Media Controls:
    • toggleMute - Mute/unmute microphone for voice tasks
    • hold - Place task on hold
    • resume - Resume held task
  • Recording Controls:
  • Task Transfer & Consultation:
  • Task Completion:
    • wrapup - Complete task wrap-up

Key events emitted by Task instances (see TASK_EVENTS for details):

  • Task Lifecycle:

    • task:incoming — New task is being offered
    • task:assigned — Task assigned to agent
    • task:unassigned — Task unassigned from agent
    • task:end — Task has ended
    • task:wrapup — Task entered wrap-up state
    • task:wrappedup — Task wrap-up completed
    • task:rejected — Task was rejected/unanswered
    • task:hydrate — Task data populated
  • Media & Controls:

    • task:media — Voice call media track received
    • task:hold — Task placed on hold
    • task:unhold — Task resumed from hold
  • Consultation & Transfer:

    • task:consultCreated — Consultation initiated
    • task:consulting — Consultation in progress
    • task:consultAccepted — Consultation accepted
    • task:consultEnd — Consultation ended
    • task:consultQueueCancelled — Queue consultation cancelled
    • task:consultQueueFailed — Queue consultation failed
    • task:offerConsult — Consultation offered
    • task:offerContact — New contact offered
  • Recording:

    • task:recordingPaused — Recording paused
    • task:recordingPauseFailed — Recording pause failed
    • task:recordingResumed — Recording resumed
    • task:recordingResumeFailed — Recording resume failed
new Task(contact: ReturnType<any>, webCallingService: WebCallingService, data: TaskData)

Extends EventEmitter

Parameters
contact (ReturnType<any>) The routing contact service instance
webCallingService (WebCallingService) The web calling service instance
data (TaskData) Initial task data
Example
```typescript
// 1. Initialize task
const task = new Task(contact, webCallingService, taskData);

// 2. Set up event listeners
task.on('task:media', (track) => {
  // Handle voice call media
  const audioElement = document.getElementById('remote-audio');
  audioElement.srcObject = new MediaStream([track]);
});

task.on('task:hold', () => {
  console.log('Task is on hold');
  // Update UI to show hold state
});

task.on('task:end', () => {
  console.log('Task ended');
  if (task.data.wrapUpRequired) {
    // Show wrap-up form
  }
});

// 3. Example task operations
await task.accept(); // Accept incoming task
await task.hold();   // Place on hold
await task.resume(); // Resume from hold
await task.end();    // End task

// 4. Handle wrap-up if required
await task.wrapup({
  auxCodeId: 'RESOLVED',
  wrapUpReason: 'Customer issue resolved'
});
```
Instance Members
updateTaskData
accept()
toggleMute()
decline()
hold()
resume()
end()
wrapup(wrapupPayload)
pauseRecording()
resumeRecording(resumeRecordingPayload)
consult(consultPayload)
endConsult(consultEndPayload)
transfer(transferPayload)
consultTransfer(consultTransferPayload)

Reloads the agent session

reload

Logs out the agent

logout

Logs in the agent to a station

stationLogin

Changes the agent's state

stateChange

Retrieves list of buddy agents

buddyAgents

Unique identifier for a task in the contact center system

TaskId

Type: string

Helper type for creating enum-like objects with type safety

Enum

Type: any

Generic type for converting a const enum object into a union type of its values

Enum

Type: any

Defines the valid destination types for routing tasks within the contact center Used to specify where a task should be directed

DESTINATION_TYPE
Static Members
QUEUE
DIALNUMBER
AGENT
ENTRYPOINT

Type representing valid destination types for task routing Derived from the DESTINATION_TYPE constant

DestinationType

Type: Enum<any>

Defines the valid destination types for consult transfer operations Used when transferring a task after consultation

CONSULT_TRANSFER_DESTINATION_TYPE
Static Members
AGENT
ENTRYPOINT
DIALNUMBER

Type representing valid destination types for consult transfers Derived from the CONSULT_TRANSFER_DESTINATION_TYPE constant

ConsultTransferDestinationType

Type: Enum<any>

Defines all supported media channel types for customer interactions These represent the different ways customers can communicate with agents

MEDIA_CHANNEL
Static Members
EMAIL
CHAT
TELEPHONY
SOCIAL
SMS
FACEBOOK
WHATSAPP

Type representing valid media channels Derived from the MEDIA_CHANNEL constant

MEDIA_CHANNEL

Type: Enum<any>

Static Members
EMAIL
CHAT
TELEPHONY
SOCIAL
SMS
FACEBOOK
WHATSAPP

Represents a customer interaction within the contact center system Contains comprehensive details about an ongoing customer interaction

Interaction

Type: {isFcManaged: boolean, isTerminated: boolean, mediaType: MEDIA_CHANNEL, previousVTeams: Array<string>, state: string, currentVTeam: string, participants: any, interactionId: string, orgId: string, createdTimestamp: number?, isWrapUpAssist: boolean?, callProcessingDetails: {QMgrName: string, taskToBeSelfServiced: string, ani: string, displayAni: string, dnis: string, tenantId: string, QueueId: string, vteamId: string, pauseResumeEnabled: string?, pauseDuration: string?, isPaused: string?, recordInProgress: string?, recordingStarted: string?, ctqInProgress: string?, outdialTransferToQueueEnabled: string?, convIvrTranscript: string?, customerName: string, virtualTeamName: string, ronaTimeout: string, category: string, reason: string, sourceNumber: string, sourcePage: string, appUser: string, customerNumber: string, reasonCode: string, IvrPath: string, pathId: string, fromAddress: string, parentInteractionId: string?, childInteractionId: string?, relationshipType: string?, parent_ANI: string?, parent_DNIS: string?, consultDestinationAgentJoined: (boolean | string)?, consultDestinationAgentName: string?, parent_Agent_DN: string?, parent_Agent_Name: string?, parent_Agent_TeamName: string?, isConferencing: string?, monitorType: string?, workflowName: string?, workflowId: string?, monitoringInvisibleMode: string?, monitoringRequestId: string?, participantInviteTimeout: string?, mohFileName: string?, CONTINUE_RECORDING_ON_TRANSFER: string?, EP_ID: string?, ROUTING_TYPE: string?, fceRegisteredEvents: string?, isParked: string?, priority: string?, routingStrategyId: string?, monitoringState: string?, BLIND_TRANSFER_IN_PROGRESS: boolean?, fcDesktopView: string?}, mainInteractionId: string?, media: Record<string, {mediaResourceId: string, mediaType: MEDIA_CHANNEL, mediaMgr: string, participants: Array<string>, mType: string, isHold: boolean, holdTimestamp: (number | null)}>, owner: string, mediaChannel: MEDIA_CHANNEL, contactDirection: {type: string}, outboundType: string?, callFlowParams: Record<string, {name: string, qualifier: string, description: string, valueDataType: string, value: string}>}

Properties
isFcManaged (boolean)
isTerminated (boolean)
mediaType (MEDIA_CHANNEL)
previousVTeams (Array<string>)
state (string)
currentVTeam (string)
participants (any)
interactionId (string)
orgId (string)
createdTimestamp (number?)
isWrapUpAssist (boolean?)
callProcessingDetails ({QMgrName: string, taskToBeSelfServiced: string, ani: string, displayAni: string, dnis: string, tenantId: string, QueueId: string, vteamId: string, pauseResumeEnabled: string?, pauseDuration: string?, isPaused: string?, recordInProgress: string?, recordingStarted: string?, ctqInProgress: string?, outdialTransferToQueueEnabled: string?, convIvrTranscript: string?, customerName: string, virtualTeamName: string, ronaTimeout: string, category: string, reason: string, sourceNumber: string, sourcePage: string, appUser: string, customerNumber: string, reasonCode: string, IvrPath: string, pathId: string, fromAddress: string, parentInteractionId: string?, childInteractionId: string?, relationshipType: string?, parent_ANI: string?, parent_DNIS: string?, consultDestinationAgentJoined: (boolean | string)?, consultDestinationAgentName: string?, parent_Agent_DN: string?, parent_Agent_Name: string?, parent_Agent_TeamName: string?, isConferencing: string?, monitorType: string?, workflowName: string?, workflowId: string?, monitoringInvisibleMode: string?, monitoringRequestId: string?, participantInviteTimeout: string?, mohFileName: string?, CONTINUE_RECORDING_ON_TRANSFER: string?, EP_ID: string?, ROUTING_TYPE: string?, fceRegisteredEvents: string?, isParked: string?, priority: string?, routingStrategyId: string?, monitoringState: string?, BLIND_TRANSFER_IN_PROGRESS: boolean?, fcDesktopView: string?})
mainInteractionId (string?)
media (Record<string, {mediaResourceId: string, mediaType: MEDIA_CHANNEL, mediaMgr: string, participants: Array<string>, mType: string, isHold: boolean, holdTimestamp: (number | null)}>)
owner (string)
mediaChannel (MEDIA_CHANNEL)
contactDirection ({type: string})
outboundType (string?)
callFlowParams (Record<string, {name: string, qualifier: string, description: string, valueDataType: string, value: string}>)
Static Members
isFcManaged
isTerminated
mediaType
previousVTeams
state
currentVTeam
participants
interactionId
orgId
createdTimestamp
isWrapUpAssist
callProcessingDetails
mainInteractionId
media
owner
mediaChannel
contactDirection
outboundType
callFlowParams

Task payload containing detailed information about a contact center task This structure encapsulates all relevant data for task management

TaskData

Type: {mediaResourceId: string, eventType: string, eventTime: number?, agentId: string, destAgentId: string, trackingId: string, consultMediaResourceId: string, interaction: Interaction, participantId: string?, fromOwner: boolean?, toOwner: boolean?, childInteractionId: string?, interactionId: string, orgId: string, owner: string, queueMgr: string, queueName: string?, type: string, ronaTimeout: number?, isConsulted: boolean?, isConferencing: boolean, updatedBy: string?, destinationType: string?, autoResumed: boolean?, reasonCode: (string | number)?, reason: string?, consultingAgentId: string?, taskId: string?, task: Interaction?, id: string?, isWebCallMute: boolean?, reservationInteractionId: string?, wrapUpRequired: boolean?}

Properties
mediaResourceId (string)
eventType (string)
eventTime (number?)
agentId (string)
destAgentId (string)
trackingId (string)
consultMediaResourceId (string)
interaction (Interaction)
participantId (string?)
fromOwner (boolean?)
toOwner (boolean?)
childInteractionId (string?)
interactionId (string)
orgId (string)
owner (string)
queueMgr (string)
queueName (string?)
type (string)
ronaTimeout (number?)
isConsulted (boolean?)
isConferencing (boolean)
updatedBy (string?)
destinationType (string?)
autoResumed (boolean?)
reasonCode ((string | number)?)
reason (string?)
consultingAgentId (string?)
taskId (string?)
task (Interaction?)
id (string?)
isWebCallMute (boolean?)
reservationInteractionId (string?)
wrapUpRequired (boolean?)
Static Members
mediaResourceId
eventType
eventTime
agentId
destAgentId
trackingId
consultMediaResourceId
interaction
participantId
fromOwner
toOwner
childInteractionId
interactionId
orgId
owner
queueMgr
queueName
ronaTimeout
isConsulted
isConferencing
updatedBy
destinationType
autoResumed
reasonCode
reason
consultingAgentId
taskId
task
id
isWebCallMute
reservationInteractionId
wrapUpRequired

Parameters for putting a task on hold or resuming from hold

HoldResumePayload

Type: {mediaResourceId: string}

Properties
mediaResourceId (string)
Static Members
mediaResourceId

Parameters for resuming a task's recording

ResumeRecordingPayload

Type: {autoResumed: boolean}

Properties
autoResumed (boolean)
Static Members
autoResumed

Parameters for transferring a task to another destination

TransferPayLoad

Type: {to: string, destinationType: DestinationType}

Properties
to (string)
destinationType (DestinationType)
Static Members
to
destinationType

Parameters for initiating a consultative transfer

ConsultTransferPayLoad

Type: {to: string, destinationType: ConsultTransferDestinationType}

Properties
to (string)
destinationType (ConsultTransferDestinationType)
Static Members
to
destinationType

Parameters for initiating a consultation with another agent or queue

ConsultPayload

Type: {to: (string | undefined), destinationType: DestinationType, holdParticipants: boolean?}

Properties
to ((string | undefined))
destinationType (DestinationType)
holdParticipants (boolean?)
Static Members
to
destinationType
holdParticipants

Parameters for ending a consultation task

ConsultEndPayload

Type: {isConsult: boolean, isSecondaryEpDnAgent: boolean?, queueId: string?, taskId: string}

Properties
isConsult (boolean)
isSecondaryEpDnAgent (boolean?)
queueId (string?)
taskId (string)
Static Members
isConsult
isSecondaryEpDnAgent
queueId
taskId

Parameters for transferring a task to another destination

TransferPayload

Type: {to: (string | undefined), destinationType: DestinationType}

Properties
to ((string | undefined))
destinationType (DestinationType)
Static Members
to
destinationType

API payload for ending a consultation This is the actual payload that is sent to the developer API

ConsultEndAPIPayload

Type: {queueId: string?}

Properties
queueId (string?)
Static Members
queueId

Data required for consulting and conferencing operations

ConsultConferenceData

Type: {agentId: string?, to: (string | undefined), destinationType: string}

Properties
agentId (string?)
to ((string | undefined))
destinationType (string)
Static Members
agentId
to
destinationType

Parameters required for cancelling a consult to queue operation

cancelCtq

Type: {agentId: string, queueId: string}

Properties
agentId (string)
queueId (string)
Static Members
agentId
queueId

Parameters required for declining a task

declinePayload

Type: {mediaResourceId: string}

Properties
mediaResourceId (string)
Static Members
mediaResourceId

Parameters for wrapping up a task with relevant completion details

WrapupPayLoad

Type: {wrapUpReason: string, auxCodeId: string}

Properties
wrapUpReason (string)
auxCodeId (string)
Static Members
wrapUpReason
auxCodeId

Data structure for cleaning up contact resources

ContactCleanupData

Type: {type: string, orgId: string, agentId: string, data: {eventType: string, interactionId: string, orgId: string, mediaMgr: string, trackingId: string, mediaType: string, destination: string?, broadcast: boolean, type: string}}

Properties
type (string)
orgId (string)
agentId (string)
data ({eventType: string, interactionId: string, orgId: string, mediaMgr: string, trackingId: string, mediaType: string, destination: string?, broadcast: boolean, type: string})
Static Members
type
orgId
agentId
data

Event data received when agent connects to the system

WelcomeEvent

Type: {agentId: string}

Properties
agentId (string)
Static Members
agentId

Response type for welcome events which can be either success or error

WelcomeResponse

Type: (WelcomeEvent | Error)

Response from subscription requests containing WebSocket connection details

SubscribeResponse

Type: {statusCode: number, body: {webSocketUrl: string?, subscriptionId: string?}, message: (string | null)}

Properties
statusCode (number)
body ({webSocketUrl: string?, subscriptionId: string?})
message ((string | null))
Static Members
statusCode
body
message

Sort order configuration for queries

SortOrder

Type: {property: string, order: string}

Properties
property (string)
order (string)
Static Members

Search query configuration

SearchQuery

Type: {properties: string, value: string}

Properties
properties (string)
value (string)
Static Members

Parameters for querying Contact Center resources

QueryParams

Type: {pageNumber: number?, pageSize: number?, attributes: Array<string>?, ids: Array<string>?, queueType: string?, entryPointType: string?, channelType: string?, isActive: boolean?, workTypeCode: AuxCodeType?, names: Array<string>?, sortOrder: SortOrder?, searchQuery: SearchQuery?, defaultCode: boolean?, search: string?, desktopProfileFilter: boolean?}

Properties
pageNumber (number?)
pageSize (number?)
attributes (Array<string>?)
ids (Array<string>?)
queueType (string?)
entryPointType (string?)
channelType (string?)
isActive (boolean?)
workTypeCode (AuxCodeType?)
names (Array<string>?)
sortOrder (SortOrder?)
searchQuery (SearchQuery?)
defaultCode (boolean?)
search (string?)
desktopProfileFilter (boolean?)
Static Members
pageNumber

Agent wrap-up codes configuration with pagination metadata

agentWrapUpCodes

Type: {data: Array<Entity>, meta: {links: {first: string, last: string, next: string, self: string}, orgid: string, page: number, pageSize: number, totalPages: number, totalRecords: number}}

Properties
data (Array<Entity>)
meta ({links: {first: string, last: string, next: string, self: string}, orgid: string, page: number, pageSize: number, totalPages: number, totalRecords: number})
Static Members
data
meta

Default wrap-up code configuration for an agent

agentDefaultWrapupCode

Type: {id: string, name: string}

Properties
id (string)
name (string)
Static Members
id
name

Team configuration information

Team

Type: {teamId: string, teamName: string, desktopLayoutId: string?}

Properties
teamId (string)
teamName (string)
desktopLayoutId (string?)
Static Members
teamId
teamName
desktopLayoutId
desktopLayoutId
id
name

Basic queue configuration information

Queue

Type: {queueId: string, queueName: string}

Properties
queueId (string)
queueName (string)
Static Members
queueName

URL mappings for external system integrations

URLMappings

Type: {acqueonApiUrl: string, acqueonConsoleUrl: string}

Properties
acqueonApiUrl (string)
acqueonConsoleUrl (string)
Static Members
acqueonApiUrl
acqueonConsoleUrl

Contact distribution group configuration for routing logic

CallDistributionGroup

Type: {agentGroups: Array<{teamId: string}>, order: number, duration: number}

Properties
agentGroups (Array<{teamId: string}>)
order (number)
duration (number)
Static Members
agentGroups
order
duration

Register an event listener

on

Type: Listener

Remove an event listener

off

Type: ListenerOff

Establish a connection to the Mercury service

connect

Type: function (): Promise<void>

Disconnect from the Mercury service

disconnect

Type: function (): Promise<void>

Whether Mercury is currently connected

connected

Type: boolean

Whether Mercury is in the process of connecting

connecting

Type: boolean

Current WDM URL

url

Type: string

Current user's ID

userId

Type: string

Current organization ID

orgId

Type: string

Device version

version

Type: string

Calling behavior configuration

callingBehavior

Type: string

Get a service URL by name

get

Type: function (service: string): string

Wait for service catalog to be loaded

waitForCatalog

Type: function (service: string): Promise<void>

Host catalog for service discovery

_hostCatalog

Type: Record<string, Array<ServiceHost>>

Service URLs cache

_serviceUrls

Type: {mobius: string, identity: string, janus: string, wdm: string, broadworksIdpProxy: string, hydra: string, mercuryApi: string, ucmgmt-gateway: string, contactsService: string}

Mobius calling service

mobius

Type: string

Identity service

identity

Type: string

Janus media server

janus

Type: string

WDM (WebEx Device Management) service

wdm

Type: string

BroadWorks IDP proxy service

broadworksIdpProxy

Type: string

Hydra API service

hydra

Type: string

Mercury API service

mercuryApi

Type: string

UC Management gateway service

Type: string

Contacts service

contactsService

Type: string

Submit behavioral events (user actions)

submitBehavioralEvent

Type: SubmitBehavioralEvent

Submit operational events (system operations)

submitOperationalEvent

Type: SubmitOperationalEvent

Submit business events (business outcomes)

submitBusinessEvent

Type: SubmitBusinessEvent

Submit logs to server

submitLogs

Type: function (metaData: LogsMetaData, logs: string, options: {type: ("diff" | "full")}): Promise<UploadLogsResponse>

Whether to submit full logs or just differences

type

Type: ("diff" | "full")

Gets a list of all recent devices associated with the user the device list gets populated from Redis

getAll(): Promise<Device>
Returns
Promise<Device>:

Gets a list of all recent devices associated with the user the device list gets populated from Redis

refresh(): Promise<Device>
Returns
Promise<Device>:

Search for a device by name

search(options: Object): Promise<Device>
Parameters
options (Object)
Name Description
options.searchQuery string
Returns
Promise<Device>:

Caches the device info and also registers to Redis for subsequent fetches

upsert(device: Object): deviceInfo
Parameters
device (Object)
Name Description
device.id string
Returns
deviceInfo:

Retreives device info of a particular device

get(token: string): Promise<deviceInfo>
Parameters
token (string)
Returns
Promise<deviceInfo>:

Unregisters the device from Redis, will not fetch in subsequent loads, similar to space.deleteBinding()

remove(deviceId: string): Promise<deviceInfo>
Parameters
deviceId (string)
Returns
Promise<deviceInfo>:

Requests to display PIN on the device

requestPin(device: object, options: object): Promise<deviceInfo>
Parameters
device (object)
options (object = {})
Name Description
options.data object
Returns
Promise<deviceInfo>:

pairs the device with the user (manual pairing), also adds it to user's recents list for subsequent fetches. similar to space.join()

pair(options: object): Promise<deviceInfo>
Parameters
options (object = {})
Name Description
options.pin number
Returns
Promise<deviceInfo>:

unpairs the device with the user (manual/ultrasonic pairing), but still keeps in the recents list/does not remove from Redis options.removeAllDevices will remove all associated devices to user similar to space.leave()

unpair(options: object): Promise<deviceInfo>
Parameters
options (object = {})
Name Description
options.removeAllDevices boolean
Returns
Promise<deviceInfo>:

binds the space to the paired device (if supported) similar to space.bindConversation()

bindSpace(options: object): Promise<deviceInfo>
Parameters
options (object = {})
Name Description
options.url boolean , conversation url
options.kmsResourceObjectUrl boolean of the convo
Returns
Promise<deviceInfo>:

unbinds the space to the paired device (if supported) similar to space.unbindConversation()

unbindSpace(): Promise<deviceInfo>
Returns
Promise<deviceInfo>:

Gets the audio state of the paired device similar to device.getAudioState()

getAudioState(): Promise<audioState>
Returns
Promise<audioState>:

Updates audio state of the paired device, should be called every 10 minutes or when mic or volume state is changed similar to device.putAudioState()

putAudioState(space: object, audioState: object): Promise<audioState>
Parameters
space (object)
audioState (object = {})
Returns
Promise<audioState>:

Mutes paired device similar to device.mute()

mute(): Promise<audioState>
Returns
Promise<audioState>:

Unmutes paired device similar to device.unmute()

unmute(): Promise<audioState>
Returns
Promise<audioState>:

Increases paired device's volume similar to device.increaseVolume()

increaseVolume(): Promise<audioState>
Returns
Promise<audioState>:

Decreases paired device's volume similar to device.decreaseVolume()

decreaseVolume(): Promise<audioState>
Returns
Promise<audioState>:

Sets paired device's volume but should use increase and decrease api instead similar to device.setVolume()

setVolume(level: number): Promise<audioState>
Parameters
level (number = 0)
Returns
Promise<audioState>:

Utility function to update decrypted device name on device object

_updateDeviceMetadata(deviceArray: Array): device
Parameters
deviceArray (Array = [])
Returns
device:

Utility function to update decrypted device name on device object

_decryptDeviceName(inDevice: object): device
Parameters
inDevice (object = {})
Returns
device:

Utility function to update device info on mercury updates

_receiveDeviceUpdates(device: object): device
Parameters
device (object)
Returns
device:

Encryption APIs for KMS

new Cypher(args: ...Array<any>)

Extends WebexPlugin

Parameters
args (...Array<any>) The arguments to pass to the superclass constructor.
Instance Members
register()
deregister()
downloadAndDecryptFile(fileUri, options)

Options for downloading a file with encryption.

FileDownloadOptions
Instance Members
useFileService
jwe
keyUri

Object containing only the most basic information about a meeting. This is the information that is kept even after the meeting is deleted from the MeetingCollection

BasicMeetingInformation

Type: {allowMediaInLobby: boolean, correlationId: string, environment: string, id: string, locusUrl: string, locusInfo: {url: string, fullState: {lastActive: string, sessionId: string}}, meetingInfo: any, sessionCorrelationId: string, roles: Array<string>, getCurUserType: function (): (string | null), callStateForMetrics: CallStateForMetrics}

Properties
allowMediaInLobby (boolean)
correlationId (string)
environment (string)
id (string)
locusUrl (string)
locusInfo ({url: string, fullState: {lastActive: string, sessionId: string}})
meetingInfo (any)
sessionCorrelationId (string)
roles (Array<string>)
getCurUserType (function (): (string | null))
callStateForMetrics (CallStateForMetrics)
new LogsRequest()
Static Members
uploadLogs(options)

MediaDirection

MediaDirection

Type: Object

Properties
sendAudio (boolean)
receiveAudio (boolean)
sendVideo (boolean)
receiveVideo (boolean)
sendShare (boolean)
receiveShare (boolean)

MediaDirection

MediaDirection

Type: Object

Properties
sendAudio (boolean)
receiveAudio (boolean)
sendVideo (boolean)
receiveVideo (boolean)
sendShare (boolean)
receiveShare (boolean)
isSharing (boolean)

SendOptions

SendOptions

Type: Object

Properties
sharePreferences (Object)
Media

Type: any

Static Members
getLocalMedia(options, config)
createMediaConnection(isMultistream, debugId, meetingId, options)
getDisplayMedia(options, config)
getMedia(audio, video, config)
toggleStream()
stopStream(stream)
getUserMedia(mediaSetting, audioVideo, sharePreferences, config)

Returns the current state of knowledge about whether we are on an ipv4-only or ipv6-only or mixed (ipv4 and ipv6) network. The return value matches the possible values of "ipver" parameter used by the backend APIs.

getIpVersion(webex: Object): (IP_VERSION | undefined)
Parameters
webex (Object) webex instance
Returns
(IP_VERSION | undefined): ipver value to be passed to the backend APIs or undefined if we should not pass any value to the backend

Returns options for leaving a meeting.

prepareLeaveMeetingOptions(meeting: any, options: any): any
Parameters
meeting (any)
options (any = {})
Returns
any: leave options

Returns request options for leaving a meeting.

buildLeaveFetchRequestOptions(meeting: any, options: any): any
Parameters
meeting (any)
options (any = {})
Returns
any: request options

Adds the current locus sequence information to a request body

addSequence(meeting: Object, requestBody: Object): void
Parameters
meeting (Object) The meeting object
requestBody (Object) The body of a request to locus
Returns
void:

Updates the locus info for the meeting with the delta locus returned from requests that include the sequence information Returns the original response object

updateLocusWithDelta(meeting: Object, response: Object): Object
Parameters
meeting (Object) The meeting object
response (Object) The response of the http request
Returns
Object:

Returns a CA-recognized error payload for the specified raw error message/reason.

New errors can be added to this function for handling in the future

getChangeMeetingFloorErrorPayload(reason: String): Array<object>
Parameters
reason (String) the raw error message
Returns
Array<object>: an array of payload objects
new MeetingInfo()
Static Members
getMeetingInfo(id)
setMeetingInfo(id, info)
fetchInfoOptions(destination, type = null)
fetchMeetingInfo(destination, type = null, password = null, captchaInfo = null, installedOrgID = null, locusId = null, extraParams = {}, options = {})
fetchMeetingInfo(destination, type = null, password, captchaInfo, installedOrgID, locusId, extraParams, options, registrationId, fullSiteUrl)
createAdhocSpaceMeeting(conversationUrl, installedOrgID)
new MeetingInfo()
Static Members
getMeetingInfo(id)
setMeetingInfo(id, info)
fetchInfoOptions(destination, type = null)
fetchMeetingInfo(destination, type = null, password = null, captchaInfo = null, installedOrgID = null, locusId = null, extraParams = {}, options = {})
fetchMeetingInfo(destination, type = null, password, captchaInfo, installedOrgID, locusId, extraParams, options, registrationId, fullSiteUrl)
createAdhocSpaceMeeting(conversationUrl, installedOrgID)
new MeetingInfoCollection()
Static Members
get(id)
new MeetingInfoRequest()
Static Members
fetchMeetingInfo(options)
new MeetingInfoRequest()
Static Members
fetchMeetingInfo(options)
new MeetingInfoUtil()
Static Members
getResourceUrl(type, value)
getRequestBody(options)
getWebexSite(uri)
getDirectMeetingInfoURI(options)
new MeetingInfoUtil()
Static Members
getResourceUrl(type, value)
getRequestBody(options)
getWebexSite(uri)
getDirectMeetingInfoURI(options)
new PersonalMeetingRoom()
Static Members
claim(link, pin, preferred = true)
get(options)
Instance Members
claimPmr(options: Object): Promise
Parameters
options (Object) with format of {userId, passcode, meetingAddress, preferred}
Returns
Promise: returns a promise that resolves/rejects the result of the request
new Reachability()
Static Members
isSubnetReachable(mediaServerIp)
gatherReachability(trigger)
gatherReachabilityFallback()
stopReachability()
isAnyPublicClusterReachable()
Instance Members
getJoinCookie()
getReachabilityReport()
getReachabilityMetrics()
getReachabilityResults()
isWebexMediaBackendUnreachable()
getStatistics(results, protocol, isVideoMesh)
sendMetric(aborted)
getClientMediaPreferences(isMultistream, ipver)
getReachabilityReportToAttachToRoap()
new ReachabilityRequest()
Instance Members
getClusters
remoteSDPForClusters

A class that handles reachability checks for a single cluster. It emits events from Events enum

new ClusterReachability(name: string, clusterInfo: ClusterNode)

Extends EventsScope

Parameters
name (string) cluster name
clusterInfo (ClusterNode) information about the media cluster
Instance Members
getResult()
abort()
start()

Converts a stun url to a turn url

convertStunUrlToTurn(stunUrl: string, protocol: ("tcp" | "udp")): string
Parameters
stunUrl (string) url of a stun server
protocol (("tcp" | "udp")) what protocol to use for the turn server
Returns
string: url of a turn server

Converts a stun url to a turns url

convertStunUrlToTurnTls(stunUrl: string): string
Parameters
stunUrl (string) url of a stun server
Returns
string: url of a turns server
new MeetingRequest()
Instance Members
getActiveMeetings()
fetchGeoHint()
getMeetingPreferences()
determineRedirections(responseBody)
joinMeeting(options)
getLocusDTO(options)
prepareLeaveMeetingRequestOptions(options)
leaveMeeting(options)
buildLeaveMeetingRequestOptions(options)
acknowledgeMeeting(options)
lockMeeting(options)
declineMeeting(options)
changeMeetingFloor(options)
sendDTMF(options)
changeVideoLayout(options)
endMeetingForAll(options)
keepAlive(options)
sendReaction(options)
toggleReactions($0)
setBrb(options)
setPostMeetingDataConsent(options)
new MeetingRequest()
Instance Members
getActiveMeetings()
fetchGeoHint()
getMeetingPreferences()
determineRedirections(responseBody)
joinMeeting(options)
getLocusDTO(options)
prepareLeaveMeetingRequestOptions(options)
leaveMeeting(options)
buildLeaveMeetingRequestOptions(options)
acknowledgeMeeting(options)
lockMeeting(options)
declineMeeting(options)
changeMeetingFloor(options)
sendDTMF(options)
changeVideoLayout(options)
endMeetingForAll(options)
keepAlive(options)
sendReaction(options)
toggleReactions($0)
setBrb(options)
setPostMeetingDataConsent(options)
new MeetingCollection()
Static Members
getByKey(key, value)
getActiveBreakoutLocus(breakoutUrl)
getActiveWebrtcMeeting()
new Collection()
Static Members
get(id)
set(id, value)
delete(id)
getAll()
setAll(set)

Meetings Media Codec Missing Event Emitted when H.264 codec is not found in the browser.

media:codec:missing

Meetings Media Codec Loaded Event Emitted when H.264 codec has been loaded in the browser.

media:codec:loaded

get device from locus data

getThisDevice(newLocus: Object, deviceUrl: String): Object
Parameters
newLocus (Object) new locus data
deviceUrl (String) current device url
Returns
Object:

get self device joined status from locus data

joinedOnThisDevice(meeting: Object, newLocus: Object, deviceUrl: String): Object
Parameters
meeting (Object) current meeting data
newLocus (Object) new locus data
deviceUrl (String) current device url
Returns
Object:

Extended Error object for general parameter errors

new NoMeetingInfoError(message: String?, error: Object?)

Extends Error

Parameters
message (String? = ERROR_DICTIONARY.NO_MEETING_INFO.MESSAGE)
error (Object? = null)

Error occurred while join the meeting

new JoinForbiddenError(message: String?, error: Object?)

Extends Error

Parameters
message (String? = ERROR_DICTIONARY.JoinForbiddenError.MESSAGE)
error (Object? = null)
new LocusRetryStatusInterceptor()

Extends Interceptor

Static Members
Instance Members
onResponseError(options, reason)
handleRetryRequestLocusServiceError(options, retryAfterTime)

Extended Error object to signify captcha related errors

new CaptchaError(message: String?, error: Object?)

Extends Error

Parameters
message (String? = ERROR_DICTIONARY.CAPTCHA.MESSAGE)
error (Object? = null)

Extended Error object to signify the intent to join for unclaimed PMR scenarios

new IntentToJoinError(message: String?, error: Object?)

Extends Error

Parameters
message (String? = ERROR_DICTIONARY.INTENT_TO_JOIN.MESSAGE)
error (Object? = null)

Extended Error object to signify password related errors

new PasswordError(message: String?, error: Object?)

Extends Error

Parameters
message (String? = ERROR_DICTIONARY.PASSWORD.MESSAGE)
error (Object? = null)

Extended Error object for general parameter errors

new PermissionError(message: String?, error: Object?)

Extends Error

Parameters
message (String? = ERROR_DICTIONARY.PERMISSION.MESSAGE)
error (Object? = null)

Error occurred while join the webinar

new JoinWebinarError(message: String?, error: Object?)

Extends Error

Parameters
message (String? = ERROR_DICTIONARY.JoinWebinarError.MESSAGE)
error (Object? = null)

Extended Error object for reclaim host role empty or wrong key

new ReclaimHostEmptyWrongKeyError(message: String?, error: Object?)

Extends Error

Parameters
message (String? = MEETINGCONSTANTS.ERROR_DICTIONARY.RECLAIM_HOST_ROLE_EMPTY_OR_WRONG_KEY.MESSAGE)
error (Object? = null)

Extended Error object for reclaim host role not supported

new ReclaimHostNotSupportedError(message: String?, error: Object?)

Extends Error

Parameters
message (String? = MEETINGCONSTANTS.ERROR_DICTIONARY.RECLAIM_HOST_ROLE_NOT_SUPPORTED.MESSAGE)
error (Object? = null)

Extended Error object for reclaim host role not allowed for other participants

new ReclaimHostNotAllowedError(message: String?, error: Object?)

Extends Error

Parameters
message (String? = MEETINGCONSTANTS.ERROR_DICTIONARY.RECLAIM_HOST_ROLE_NOT_ALLOWED.MESSAGE)
error (Object? = null)

Extended Error object for reclaim host role when user is host already

new ReclaimHostIsHostAlreadyError(message: String?, error: Object?)

Extends Error

Parameters
message (String? = MEETINGCONSTANTS.ERROR_DICTIONARY.RECLAIM_HOST_ROLE_IS_ALREADY_HOST.MESSAGE)
error (Object? = null)

SharePreferences

SharePreferences

Type: Object

Properties
shareConstraints (Object?)
highFrameRate (Boolean?)

JoinOptions

JoinOptions

Type: Object

Properties
resourceId (String?)
pin (String?)
moderator (Boolean?)
meetingQuality ((String | Object)?)
  • meetingQuality.remote String?
rejoin (Boolean?)
enableMultistream (Boolean?)

Recording

Recording

Type: Object

Properties
state (Object)
modifiedBy (String)

The meeting instance to execute all state changes on

meeting

Specify joining via audio (option: pstn), video, screenshare

join(options: JoinOptions): Promise
Parameters
options (JoinOptions = {}) A configurable options object for joining a meeting
Returns
Promise: the join response

Roap options

RoapOptions

Type: Object

Properties
sdp (String)
meeting (Meeting)
seq (Number)
tieBreaker (Number)
reconnect (Boolean)
SeqOptions

Type: Object

Properties
correlationId (String)
mediaId (String)
seq (Number)
new RoapRequest()
Instance Members
sendRoap(options)

Handles the process of finding out TURN server information from Linus. This is achieved by sending a TURN_DISCOVERY_REQUEST.

new TurnDiscovery(roapRequest: RoapRequest)
Parameters
roapRequest (RoapRequest)
Instance Members
generateTurnDiscoveryRequestMessage(meeting, isForced)
abort()
sendRoapOK(meeting)
isSkipped(meeting)
doTurnDiscovery(meeting, isReconnecting?, isForced?)
new MediaProperties()
Instance Members
getVideoDeviceId()
setRemoteAudioStream(remoteAudioStream)
setRemoteVideoStream(remoteVideoStream)
setVideoDeviceId(deviceId)
unsetRemoteMedia()
unsetRemoteStreams()
hasLocalShareStream()
waitForMediaConnectionConnected()
getCurrentConnectionInfo()
new MediaConnectionAwaiter()
Instance Members
connectionStateChange()
peerConnectionStateHandler()
iceConnectionStateHandler()
iceGatheringStateHandler()
onTimeout()
waitForMediaConnectionConnected()

Initializes the StateMachine for the meeting

create(meetingRef: Meeting): StateMachine
Parameters
meetingRef (Meeting) A reference to a meeting instance
Returns
StateMachine:
to(remote: Object): String
Parameters
remote (Object)
Name Description
remote.remoteAnswered Boolean
remote.remoteDeclined Boolean
Returns
String:

Ring stop transition, to end the ring event for the meeting, and transition the state to ANSWERED OR DECLINED, only for outgoing meetings

onRemote(transition: Object, stop: Object): Boolean
Parameters
transition (Object) -- FiniteStateMachine automatically passed, not used
stop (Object) -- {remoteAnswered: {Boolean}, remoteDeclined: {Boolean}}
Returns
Boolean:

Ring transition, to cause the ring event for the meeting, and transition the state to RINGING, for both incoming, and outgoing meetings

onRing(transition: Object, type: String): Boolean
Parameters
transition (Object) -- FiniteStateMachine automatically passed, not used
type (String) -- incoming call === INCOMING / or other meetings have a ring type of JOIN
Returns
Boolean:

handle the entry to error state

onEnterError(transition: Object, error: Error): Boolean
Parameters
transition (Object)
error (Error)
Returns
Boolean:

After ANY transition occurs, we want to know what state the meeting moved to for debugging

onAfterTransition(transition: Object): Boolean
Parameters
transition (Object)
Returns
Boolean:

The purpose of this class is to manage the local and remote mute state and make sure that the server state always matches the last requested state by the client.

More info about Locus muting API: https://sqbu-github.cisco.com/pages/WebExSquared/locus/guides/mute.html#

This class is exported only for unit tests. It should never be instantiated directly with new MuteState(), instead createMuteState() should be called

new MuteState(type: String, meeting: Object, enabled: boolean)
Parameters
type (String) audio or video
meeting (Object) the meeting object (used for reading current remote mute status)
enabled (boolean) whether the client audio/video is enabled at all
Static Members
handleLocalStreamMuteStateChange(meeting?)
applyClientStateLocally(meeting?, reason)
handleServerRemoteMuteUpdate(meeting, muted?, unmuteAllowed?)
handleServerLocalUnmuteRequired(meeting?, unmuteAllowed?)
isMuted()
isRemotelyMuted()
isUnmuteAllowed()
isLocallyMuted()
Instance Members
init(meeting)
handleLocalStreamChange(meeting)
enable(meeting, enable)

Stores the delta values for a changed participant.

DeltaParticipant

Type: Object

Properties
delta (Record<string, boolean>) : Contains changed streams.
person (Object) : Contains person data.

handles when the locus.host is updated

updateHostInfo(host: Object): undefined
Parameters
host (Object) the locus.host property
Returns
undefined:

handles when the locus.mediaShares is updated

updateMediaShares(mediaShares: Object, forceUpdate: boolean): undefined
Parameters
mediaShares (Object) the locus.mediaShares property
forceUpdate (boolean = false) force to update the mediaShares
Returns
undefined:

handles when the locus.self is updated

updateSelf(self: Object): undefined
Parameters
self (Object) the new locus.self
Returns
undefined:

parses the relevant values for self: muted, guest, moderator, mediaStatus, state, joinedWith, pstnDevices, creator, id

parse(self: Object, deviceId: String, participants: Array): undefined
Parameters
self (Object)
deviceId (String)
participants (Array)
Returns
undefined:

Checks if user has joined the meeting

isJoined(self: Object): boolean
Parameters
self (Object)
Returns
boolean: isJoined

Validate if the Meeting Layout Controls Layout has changed.

layoutChanged(previous: Self, current: Self): boolean
Parameters
previous (Self) Previous self state
current (Self) Current self state [per event]
Returns
boolean: If the Meeting Layout Controls Layout has changed.

get the id from the self object

getSelfIdentity(self: Object): String
Parameters
self (Object)
Returns
String:

get the "remote video mute" property from the self object

getRemoteVideoMuted(self: Object): Boolean
Parameters
self (Object)
Returns
Boolean:

get the "remote mute" property from the self object

getRemoteMuted(self: Object): Boolean
Parameters
self (Object)
Returns
Boolean:
wasMediaInactiveOrReleased(oldSelf: Object, changedSelf: Object): Boolean
Parameters
oldSelf (Object = {})
changedSelf (Object)
Returns
Boolean:
isLocusUserUnadmitted(state: (String | undefined), joinedWith: any, pairedWith: any): (Boolean | undefined)
Parameters
state ((String | undefined)) meeting state
joinedWith (any) device that user has joined with
pairedWith (any) device that user is paired with
Returns
(Boolean | undefined): true if user is in lobby, false if not, undefined if it cannot be determined
isLocusUserAdmitted(state: (String | undefined), joinedWith: any, pairedWith: any): Boolean
Parameters
state ((String | undefined)) meeting state
joinedWith (any) device that user has joined with
pairedWith (any) device that user is paired with
Returns
Boolean:
hasUserEnteredLobby(oldSelf: Object, changedSelf: Object): Boolean
Parameters
oldSelf (Object)
changedSelf (Object)
Returns
Boolean: true if user has just been placed in the lobby
Throws
  • Error: when self is undefined

determine whether the roles of self is changed or not

isRolesChanged(oldSelf: Object, changedSelf: Object): Boolean
Parameters
oldSelf (Object)
changedSelf (Object)
Returns
Boolean:
isDeviceObserving(oldSelf: Object, changedSelf: Object): Boolean
Parameters
oldSelf (Object)
changedSelf (Object)
Returns
Boolean:
Throws
  • Error: if changed self was undefined
hasUserBeenAdmitted(oldSelf: Object, changedSelf: Object): Boolean
Parameters
oldSelf (Object)
changedSelf (Object)
Returns
Boolean: true if the user has just been admitted from lobby into the meeting
Throws
  • Error: if changed self was undefined

extract the sipUrl from the partner

getSipUrl(partner: Object, type: any, sipUri: any, info: Object): Object
Parameters
partner (Object)
type (any)
sipUri (any)
info (Object)
Returns
Object:

parse the relevant host values that we care about: id

parse(host: Object): Object
Parameters
host (Object)
Returns
Object: parsed host or null if host was undefined

get the previous and current host values parsed, as well as the boolean updates

getHosts(oldHost: Object, newHost: Object): Object
Parameters
oldHost (Object)
newHost (Object)
Returns
Object: previous: {Object} old host, current: {Object} new host, updates: {isNewHost: {boolean}} boolean update values

determine by id if 2 hosts are different

isDifferentHosts(previousId: String, currentId: String): Boolean
Parameters
previousId (String)
currentId (String)
Returns
Boolean:

Extract the id from the host object

getId(host: Object): String
Parameters
host (Object)
Returns
String:

Controls

LocusControls

Type: Object

Properties
record (Object)

parse the relevant host values that we care about: id

parse(controls: LocusControls): Object
Parameters
controls (LocusControls)
Returns
Object: parsedObject - parsed host or null if host was undefined
Returns
String: parsedObject.recordingId

parses and returns previous state vs current state and triggers the changes.

getControls(oldControls: LocusControls, newControls: LocusControls): Object
Parameters
oldControls (LocusControls) previous state
newControls (LocusControls) current state
Returns
Object: combination of state plus the changes

Extract the id from the record controls object

getId(controls: LocusControls): (String | null)
Parameters
controls (LocusControls)
Returns
(String | null):

check whether to replace the meeting's members or not. For case joined breakout session, need replace meeting's members

isNeedReplaceMembers(oldControls: LocusControls, controls: LocusControls): Boolean
Parameters
oldControls (LocusControls)
controls (LocusControls)
Returns
Boolean:

determine the switch status between breakout session and main session.

getSessionSwitchStatus(oldLocus: LocusInfo, newLocus: LocusInfo): Object
Parameters
oldLocus (LocusInfo)
newLocus (LocusInfo)
Returns
Object:

Parse the relevant values that we care about

parseApp(embeddedApp: Object): Object
Parameters
embeddedApp (Object) raw embedded app object
Returns
Object: parsedObject - parsed embedded app object

Determines if two embedded apps arrays are similar. NOTE: This is a simple test for performance reasons.

areSimilar(apps1: Array<any>, apps2: Array<any>): boolean
Parameters
apps1 (Array<any>) an array of apps
apps2 (Array<any>) an array of apps
Returns
boolean: true if the arrays are different

Parse the array of embedded apps

parse(embeddedApps: array): array
Parameters
embeddedApps (array)
Returns
array: result - new array of parsed embedded app objects

parses the relevant values for mediaShares: contentId, disposition

parse(mediaShares: Object): undefined
Parameters
mediaShares (Object)
Returns
undefined:

get the previous and current mediaShares values parsed, as well as the boolean updates

getMediaShares(oldShare: Object, newShare: Object): Object
Parameters
oldShare (Object)
newShare (Object)
Returns
Object: previous: {Object} old share, current: {Object} new share,

get the content floor disposition (released, granted)

getContentDisposition(mediaShares: Object): Boolean
Parameters
mediaShares (Object)
Returns
Boolean: disposition

get the whiteboard floor disposition (released, granted)

getWhiteboardDisposition(mediaShares: Object): Boolean
Parameters
mediaShares (Object)
Returns
Boolean: disposition

extract the content property from media shares

extractContent(mediaShares: Object): Object
Parameters
mediaShares (Object)
Returns
Object:

extract the whiteboard property from media shares

extractWhiteboard(mediaShares: Object): Object
Parameters
mediaShares (Object)
Returns
Object:

extract the media stream floor property from content object

extractFloor(mediaStream: Object): Object
Parameters
mediaStream (Object)
Returns
Object:

extract the content's floor from media shares

extractContentFloor(mediaShares: Object): Object
Parameters
mediaShares (Object)
Returns
Object:

extract the whiteboard's floor from media shares

extractWhiteboardFloor(mediaShares: Object): Object
Parameters
mediaShares (Object)
Returns
Object:

get who is sharing from media shares (content)

getContentBeneficiaryId(mediaShares: Object): Object
Parameters
mediaShares (Object)
Returns
Object:

get live annotation is sharing from media shares (content)

getContentAnnotation(mediaShares: Object): Object
Parameters
mediaShares (Object)
Returns
Object:

get live resourceType is sharing from media shares (content)

getContentResourceType(mediaShares: Object): Object
Parameters
mediaShares (Object)
Returns
Object:

get url is sharing from media shares (content)

getContentUrl(mediaShares: Object): Object
Parameters
mediaShares (Object)
Returns
Object:

get shareInstanceId is sharing from media shares (content)

getShareInstanceId(mediaShares: Object): Object
Parameters
mediaShares (Object)
Returns
Object:

get deviceUrl that is requesting the floor for media shares (content)

getContentBeneficiaryDeviceUrl(mediaShares: Object): Object
Parameters
mediaShares (Object)
Returns
Object:

get who is sharing from media shares (whiteboard)

getWhiteboardBeneficiaryId(mediaShares: Object): Object
Parameters
mediaShares (Object)
Returns
Object:

get the which whiteboard is being shared via resource url

getWhiteboardResourceUrl(mediaShares: Object): Object
Parameters
mediaShares (Object)
Returns
Object:

Compares two loci to determine which one contains the most recent state

compare(current: Types~Locus, incoming: Types~Locus): string
Parameters
current (Types~Locus)
incoming (Types~Locus)
Returns
string: loci comparison state
LociMetadata

Type: object

Properties
start (number) : Starting sequence number
end (number) : Ending sequence number
first (number) : First sequence number
last (number) : Last sequence number
min (number) : Minimum sequence number
max (number) : Maximum sequence number
entries (number) : Loci sequence entries

Simple queue in which the elements are always sorted

new SortedQueue(compareFunc: Function)
Parameters
compareFunc (Function) comparison function used for sorting the elements of the queue
Instance Members
clear()
enqueue(item)
dequeue()
size()

Used to indicate that the reconnect logic needs to be retried.

new NeedsRetryError()

Extends Error

Used to indicate that the meeting needs to be rejoined, not just media reconnected

new NeedsRejoinError()

Extends Error

new ReconnectionManager()
Static Members
resetReconnectionTimer()
iceReconnected()
waitForIceReconnect()
isReconnectInProgress()
reconnect(reconnectOptions, completionCallback = undefined)
Instance Members
rejoinMeeting(wasSharing)

Error object for cases when new reconnection cannot be started

new ReconnectionNotStartedError(message: String?, error: Object?)

Extends ReconnectionError

Parameters
message (String? = ERROR_DICTIONARY.RECONNECTION_NOT_STARTED.MESSAGE)
error (Object? = null)

Extended Error object to signify the intent to join for unclaimed PMR scenarios

new ReconnectionError(message: String?, error: Object?)

Extends Error

Parameters
message (String? = ERROR_DICTIONARY.RECONNECTION.MESSAGE)
error (Object? = null)
new Members()
Static Members
setLocusUrl(locus, locusUrl = null)
setHostId(locus, hostId = null)
setType(fullState, type = null)
setSelfId(locus, selfId = null)
setMediaShareContentId(locus, contentId?)
setMediaShareWhiteboardId(locus, whiteboardId?)
addMember(invitee, alertIfActive?)
cancelPhoneInvite(invitee)
cancelSIPInvite(invitee)
admitMembers(memberIds, sessionLocusUrls)
removeMember(memberId)
muteMember(memberId, mute = true, isAudio = true)
assignRoles(memberId, roles)
moveToLobby(memberId)
raiseOrLowerHand(memberId, raise = true)
lowerAllHands(requestingMemberId, roles)
transferHostToMember(memberId, moderator = true)
sendDialPadKey(tones, memberId)
editDisplayName(memberId, requestingParticipantId, alias?)
Instance Members
findMemberByCsi(csi)
getCsisForMember(memberId, mediaType, mediaContent)
Events
members:update
members:content:update
members:host:update
members:self:update
new MembersCollection()
Static Members
getAll()
Instance Members
new MembersRequest()
Static Members
addMembers(options)
admitMember(options)
editDisplayNameMember(options)
cancelPhoneInvite(options)
cancelSIPInvite(options)
Instance Members
removeMember(options)
muteMember(options)
assignRolesMember(options)
moveToLobbyMember(options, body)
raiseOrLowerHandMember(options)
lowerAllHandsMember(options)
transferHostToMember(options)
sendDialPadKey(options)
generateAddMemberOptions(invitee: Object, locusUrl: String, alertIfActive: Boolean): Object
Parameters
invitee (Object) with emailAddress, email or phoneNumber
locusUrl (String)
alertIfActive (Boolean)
Returns
Object: the format object
generateAdmitMemberOptions(memberIds: Array, locusUrl: String): Object
Parameters
memberIds (Array)
locusUrl (String)
Returns
Object: the format object
getAddMemberBody(options: Object): Object
Parameters
options (Object) with {invitee: {emailAddress, email, phoneNumber}, alertIfActive}
Returns
Object: with {invitees: [{address}], alertIfActive}
getAdmitMemberRequestBody(options: Object): Object
Parameters
options (Object) with {memberIds, authorizingLocusUrl}
Returns
Object: admit with {memberIds}
getAdmitMemberRequestParams(format: Object): Object
Parameters
format (Object) with {memberIds, locusUrl, sessionLocusUrls}
Returns
Object: the request parameters (method, uri, body) needed to make a admitMember request if a host/cohost is in a breakout session, the locus url should be the main session locus url
getAddMemberRequestParams(format: Object): Object
Parameters
format (Object) with {invitee {emailAddress, email, phoneNumber}, locusUrl, alertIfActive}
Returns
Object: the request parameters (method, uri, body) needed to make a addMember request

generateRoleAssignmentMemberOptions

packages/@webex/plugin-meetings/src/members/util.ts
generateRoleAssignmentMemberOptions(memberId: String, roles: [ServerRoleShape], locusUrl: String): RoleAssignmentOptions
Parameters
memberId (String)
roles ([ServerRoleShape])
locusUrl (String)
Returns
RoleAssignmentOptions:

generateEditDisplayNameMemberOptions

packages/@webex/plugin-meetings/src/members/util.ts
generateEditDisplayNameMemberOptions(memberId: String, requestingParticipantId: String, alias: String, locusUrl: String): Object
Parameters
memberId (String) id of the participant who is receiving request
requestingParticipantId (String) id of the participant who is sending request (optional)
alias (String) alias name
locusUrl (String) url
Returns
Object: consists of {memberID: string, requestingParticipantId: string, alias: string, locusUrl: string}
getAddedRoleShape(role: ServerRoleShape): ServerRoleShape
Parameters
role (ServerRoleShape)
Returns
ServerRoleShape: the role shape to be added to the body

getRoleAssignmentMemberRequestParams

packages/@webex/plugin-meetings/src/members/util.ts
getRoleAssignmentMemberRequestParams(options: RoleAssignmentOptions): RoleAssignmentRequest
Parameters
options (RoleAssignmentOptions)
Returns
RoleAssignmentRequest: the request parameters (method, uri, body) needed to make a addMember request
editDisplayNameMemberRequestParams(options: Object): Object
Parameters
options (Object) with format of {locusUrl: string, requestingParticipantId: string}
Returns
Object: request parameters (method, uri, body) needed to make a editDisplayName request

The Controls Options Manager utilities

new Utils()
Static Members
canSetMuteOnEntry(displayHints)
canSetDisallowUnmute(displayHints)
canUnsetMuteOnEntry(displayHints)
canUnsetDisallowUnmute(displayHints)
canSetMuted(displayHints)
canUnsetMuted(displayHints)
hasHints(config)
hasPolicies(config)
canUpdateAudio(control, displayHints)
canUpdateReactions(control, displayHints)
canUpdateShareControl(displayHints)
canUpdateViewTheParticipantsList(control, displayHints)
canUpdateVideo(control, displayHints)
canUpdateAnnotation(control, displayHints)
canUpdateRemoteDesktopControl(control, displayHints)
canUpdate(control, displayHints)

A list of additional properties that apply to various specific settings.

key

The scope of the control within this object.

scope

Type: Control

The properties to assign to this control.

properties

Type: Props

Manages all receive slots used by a meeting. WMCE receive slots cannot be ever deleted, so this manager has a pool in order to re-use the slots that were released earlier.

new ReceiveSlotManager(createSlotCallback: CreateSlotCallback, findMemberIdByCsiCallback: FindMemberIdCallback, meeting: Meeting)
Parameters
createSlotCallback (CreateSlotCallback)
findMemberIdByCsiCallback (FindMemberIdCallback)
meeting (Meeting)
Instance Members
allocateSlot(mediaType)
releaseSlot(slot)
reset()
getStats()
updateMemberIds()
findReceiveSlotBySsrc(ssrc)

This method is used to create a sendSlot for the given mediaType and returns the created sendSlot

createSlot(mediaConnection: MultistreamRoapMediaConnection, mediaType: MediaType, active: boolean): SendSlot
Parameters
mediaConnection (MultistreamRoapMediaConnection) MultistreamRoapMediaConnection for which a sendSlot needs to be created
mediaType (MediaType) MediaType for which a sendSlot needs to be created (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
active (boolean = true) This is optional boolean to set the active state of the sendSlot. Default is true
Returns
SendSlot: slot The created sendSlot

This method is used to retrieve the sendSlot for the given mediaType

getSlot(mediaType: MediaType): SendSlot
Parameters
mediaType (MediaType) of which the slot needs to be retrieved
Returns
SendSlot:

Allow users to specify 'namedMediaGroups' to indicate which named media group its audio should be sent to.

setNamedMediaGroups(mediaType: MediaType, namedMediaGroups: []): void
Parameters
mediaType (MediaType) MediaType of the sendSlot to which the audio stream needs to be send to the media group
namedMediaGroups ([]) Allow users to specify 'namedMediaGroups'.If the value of 'namedMediaGroups' is zero, named media group will be canceled and the audio stream will be sent to the floor.
Returns
void:

Sets the source state override for the given media type.

setSourceStateOverride(mediaType: MediaType, state: (StreamState | null)): void
Parameters
mediaType (MediaType) The type of media (must be MediaType.VideoMain to apply source state changes).
state ((StreamState | null)) The state to set or null to clear the override value.
Returns
void:

This method publishes the given stream to the sendSlot for the given mediaType

publishStream(mediaType: MediaType, stream: LocalStream): Promise<void>
Parameters
mediaType (MediaType) MediaType of the sendSlot to which a stream needs to be published (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
stream (LocalStream) LocalStream to be published
Returns
Promise<void>:

This method unpublishes the stream from the sendSlot of the given mediaType

unpublishStream(mediaType: MediaType): Promise<void>
Parameters
mediaType (MediaType) MediaType of the sendSlot from which a stream needs to be unpublished (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
Returns
Promise<void>:

This method is used to set the active state of the sendSlot for the given mediaType

setActive(mediaType: MediaType, active: boolean): void
Parameters
mediaType (MediaType) The MediaType of the sendSlot for which the active state needs to be set (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
active (boolean = true) The boolean to set the active state of the sendSlot. Default is true
Returns
void:

This method is used to set the codec parameters for the sendSlot of the given mediaType

setCodecParameters(mediaType: MediaType, codecParameters: Object): Promise<void>
Parameters
mediaType (MediaType) MediaType of the sendSlot for which the codec parameters needs to be set (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
codecParameters (Object)
Returns
Promise<void>:

This method is used to delete the codec parameters for the sendSlot of the given mediaType

deleteCodecParameters(mediaType: MediaType, parameters: Array<String>): Promise<void>
Parameters
mediaType (MediaType) MediaType of the sendSlot for which the codec parameters needs to be deleted (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
parameters (Array<String>) Array of keys of the codec parameters to be deleted
Returns
Promise<void>:

This method is used to reset the SendSlotsManager by deleting all the sendSlots

reset(): undefined
Returns
undefined:

Default configuration:

  • uses 3 audio streams
  • prefers active speakers with live video (e.g. are not audio only or video muted) over active speakers without live video
  • has a few layouts defined, including 1 that contains remote screen share (ScreenShareView)
DefaultConfiguration

Type: Configuration

A helper class that manages all remote audio/video streams in order to achieve a predefined set of layouts. It also creates a fixed number of audio streams and these don't change during the meeting.

Things that RemoteMediaManager does:

  • owns the receive slots (creates them when needed, and re-uses them when switching layouts)
  • constructs appropriate RemoteMedia and RemoteMediaGroup objects and sends appropriate mediaRequests
new RemoteMediaManager(receiveSlotManager: ReceiveSlotManager, mediaRequestManagers: {audio: MediaRequestManager, video: mediaRequestManagers}, config: Configuration)

Extends EventsScope

Parameters
receiveSlotManager (ReceiveSlotManager)
mediaRequestManagers ({audio: MediaRequestManager, video: mediaRequestManagers})
config (Configuration = DefaultConfiguration) Configuration describing what video layouts to use during the meeting
Instance Members
start()
stop()
setLayout(layoutId)
getLayoutId()
setPreferLiveVideo(preferLiveVideo)
setActiveSpeakerCsis(remoteMediaCsis)
setReceiveNamedMediaGroup(mediaType, languageId, languageCode)
logAllReceiveSlots()
setRemoteVideoCsis(remoteMediaCsis)
setRemoteVideoCsi(remoteMedia, csi)
addMemberVideoPane(newPane)
removeMemberVideoPane(paneId)
pinActiveSpeakerVideoPane(remoteMedia, csi)
unpinActiveSpeakerVideoPane(remoteMedia)
isPinned(remoteMedia)

Gets the array of remote media elements from the group

getRemoteMedia(filter: string): Array<RemoteMedia>
Parameters
filter (string = 'all') 'all' (default) returns both pinned and unpinned
Returns
Array<RemoteMedia>:

Sets CSIs for multiple RemoteMedia instances belonging to this RemoteMediaGroup. For each entry in the remoteMediaCsis array:

  • if csi is specified, the RemoteMedia instance is pinned to that CSI
  • if csi is undefined, the RemoteMedia instance is unpinned
setActiveSpeakerCsis(remoteMediaCsis: Array<{remoteMedia: RemoteMedia, csi: number?}>, commit: any): void
Parameters
remoteMediaCsis (Array<{remoteMedia: RemoteMedia, csi: number?}>)
commit (any = true)
Returns
void

Pins a specific remote media instance to a specfic CSI, so the media will no longer come from active speaker, but from that CSI. If no CSI is given, the current CSI value is used.

pin(remoteMedia: RemoteMedia, csi: CSI?): void
Parameters
remoteMedia (RemoteMedia)
csi (CSI?)
Returns
void

Unpins a remote media instance, so that it will again provide media from active speakers

unpin(remoteMedia: RemoteMedia)
Parameters
remoteMedia (RemoteMedia)

setPreferLiveVideo - sets preferLiveVideo to true/false

setPreferLiveVideo(preferLiveVideo: boolean, commit: boolean)
Parameters
preferLiveVideo (boolean)
commit (boolean)

setNamedMediaGroup - sets named media group type and value

setNamedMediaGroup(namedMediaGroup: NamedMediaGroup, commit: boolean)
Parameters
namedMediaGroup (NamedMediaGroup)
commit (boolean)

Invalidates the remote media group by clearing the references to the receive slots used by all remote media from that group and cancelling all media requests. After this call the remote media group is unusable.

stop(commit: boolean)
Parameters
commit (boolean = true) whether to commit the cancellation of media requests

Checks if a given RemoteMedia instance belongs to this group.

includes(remoteMedia: RemoteMedia, filter: ("all" | "pinned" | "unpinned")): boolean
Parameters
remoteMedia (RemoteMedia) RemoteMedia instance to check
filter (("all" | "pinned" | "unpinned") = 'all') controls which remote media from the group to check
Returns
boolean: true if remote media is found

Returns true if the user is in the main session

fn(): boolean
Returns
boolean:

Returns true if the breakout status is active

fn(): boolean
Returns
boolean:

Returns the active group id

fn(): boolean
Returns
boolean:

Returns the breakout status

fn(): boolean
Returns
boolean:

Returns should query preAssignments or not

fn(): boolean
Returns
boolean:
new Breakouts()
Static Members
initialize()
cleanUp()
locusUrlUpdate(locusUrl)
updateCanManageBreakouts(canManageBreakouts)
breakoutServiceUrlUpdate(breakoutServiceUrl)
queryRosters()
handleRosterUpdate(locus)
listenToCurrentSessionTypeChange()
listenToBroadcastMessages()
listenToBreakoutRosters()
listenToBreakoutHelp()
isBreakoutInProgress()
isBreakoutIClosing()
updateBreakout(params)
updateBreakoutSessions(payload)
clearBreakouts()
getMainSession()
askAllToReturn()
broadcast(message, options)
enableBreakouts()
toggleBreakout(enable)
doToggleBreakout(enable)
_setManageGroups(breakoutInfo)
_setMainGroupId(breakoutInfo)
_setMainSessionId(breakoutInfo)
create(params)
clearSessions()
start(params)
end(params)
update(params, unlockEdit)
getBreakout(editlock)
enableAndLockBreakout()
hasBreakoutLocked()
lockBreakout()
keepEditLockAlive()
unLockEditBreakout()
assign(sessions)
queryPreAssignments()
dynamicAssign(sessions)
moveToLobby(sessions)
triggerReturnToMainEvent(breakout)

If the breakout has no name, assume it is the main session

fn(): boolean
Returns
boolean:
new Breakout()
Static Members
initialize()
join()
leave()
askForHelp()
initMembers()
isNeedHandleRoster(locus)
parseRoster(locus)
broadcast(message, options)
new BreakoutRequest()
Instance Members
broadcast($0, url, message, options, groupId, sessionId)

Deals with all kinds of errors of breakout service

boServiceErrorHandler
Parameters
error (object) // one of the breakout service error
position (string) // position of the error occur
Returns
object:

isSessionTypeChangedFromSessionToMain

packages/@webex/plugin-meetings/src/breakouts/utils.ts
isSessionTypeChangedFromSessionToMain
Parameters
breakout (object)
newSessionType (string)
Returns
boolean:

Extended Error object to signify breakout related errors

new BreakoutEditLockedError(message: String?, error: Object?)

Extends Error

Parameters
message (String? = ERROR_DICTIONARY.BREAKOUT_EDIT.MESSAGE)
error (Object? = null)

Returns should query support languages or not

fn(): boolean
Returns
boolean:
new SimultaneousInterpretation()
Static Members
initialize()
cleanUp()
locusUrlUpdate(locusUrl)
approvalUrlUpdate(approvalUrl)
updateCanManageInterpreters(canManageInterpreters)
updateHostSIEnabled(hostSIEnabled)
updateMeetingSIEnabled(meetingSIEnabled, selfIsInterpreter)
updateInterpretation(interpretation)
updateSelfInterpretation($0, interpretation, selfParticipantId)
getTargetLanguageCode()
querySupportLanguages()
getInterpreters()
updateInterpreters(interpreters)
changeDirection()
listenToHandoffRequests()
handoffInterpreter(participantId)
requestHandoff()
acceptRequest(url)
declineRequest(url)

Annotation to handle LLM and Mercury message and locus API

new AnnotationChannel(args: ...any)

Extends WebexPlugin

Parameters
args (...any)
Instance Members
deregisterEvents()
locusUrlUpdate(locusUrl)
approvalUrlUpdate(approvalUrl)
acceptRequest(approval)
declineRequest(approval)
approveAnnotation(requestData)
cancelApproveAnnotation(requestData, approval)
closeAnnotation(requestData)
sendStrokeData
new Webinar()
Static Members
locusUrlUpdate(locusUrl)
updateWebcastUrl(payload)
updateCanManageWebcast(canManageWebcast)
updateRoleChanged(payload)
updateStatusByRole(null)
isJoinPracticeSessionDataChannel()
setPracticeSessionState(enabled)
updatePracticeSessionStatus(payload)
startWebcast(meeting, layout)
stopWebcast()
queryWebcastLayout()
updateWebcastLayout(layout)
viewAllWebcastAttendees(queryString)
searchWebcastAttendees(queryString)
expelWebcastAttendee(participantId)
get(id: String): Member
Parameters
id (String)
Returns
Member:

IInMeetingActions Type for In-Meeting Actions

IInMeetingActions
new InMeetingActions()
Instance Members
set(options: Object): void
Parameters
options (Object)
Returns
void:
setLocusUrl(url: string): void
Parameters
url (string)
Returns
void:
setDisplayHints(hints: Array): void
Parameters
hints (Array)
Returns
void:
setUserPolicy(selfUserPolicies: Object): void
Parameters
selfUserPolicies (Object)
Returns
void:
setSessionId(id: string): void
Parameters
id (string)
Returns
void:
setServiceUrl(url: string): void
Parameters
url (string)
Returns
void:
getLocusUrl(): string
Returns
string:
getLocusId(): string
Returns
string:
getSessionId(): string
Returns
string:
getServiceUrl(): string
Returns
string:
getDisplayHints(): Array
Returns
Array:
startRecording(): Promise
Returns
Promise:
stopRecording(): Promise
Returns
Promise:
pauseRecording(): Promise
Returns
Promise:
resumeRecording(): Promise
Returns
Promise:

docs https://sqbu-github.cisco.com/pages/WebExSquared/locus/guides/mute.html https://confluence-eng-gpk2.cisco.com/conf/display/LOCUS/Hard+Mute+and+Audio+Privacy#HardMuteandAudioPrivacy-SelfMuteonEntry https://confluence-eng-gpk2.cisco.com/conf/pages/viewpage.action?spaceKey=UC&title=WEBEX-124454%3A+UCF%3A+Hard+mute+support+for+Teams+joining+Webex+meeting https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-180867 https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-393351

new ControlsOptionsManager(request: MeetingRequest, options: {locusUrl: string, displayHints: Array<string>?}?)
Parameters
request (MeetingRequest)
options ({locusUrl: string, displayHints: Array<string>?}?)
Static Members
set(options)
setLocusUrl(url)
setDisplayHints(hints)
setMuteOnEntry(enabled)
setDisallowUnmute(enabled)
setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled, roles)
Instance Members
update(controls)

Class representing a single /media request being sent to Locus

new InternalRequestInfo(request: Request, pendingPromise: Defer, sendRequestFn: function (request: Request): Promise<RequestResult>)
Parameters
request (Request)
pendingPromise (Defer)
sendRequestFn (function (request: Request): Promise<RequestResult>)
Instance Members
getPendingPromises()
addPendingPromises(pendingPromises)
execute()

Returns true if the request is triggering confluence creation in the server

isRequestAffectingConfluenceState(request: Request): boolean
Parameters
request (Request)
Returns
boolean

This class manages all /media API requests to Locus. Every call to that Locus API has to go through this class.

new LocusMediaRequest(config: Config, options: any)

Extends WebexPlugin

Parameters
config (Config)
options (any)
Instance Members
send(request)
isConfluenceCreated()
downgradeFromMultistreamToTranscoded()

Current overall connection state

state

Type: ConnectionState

new ConnectionStateHandler()
new Member()
Static Members
setIsContentSharing(flag)
setIsHost(flag)
setIsSelf(flag)
processIsContentSharing(participant, sharingId)
processIsRecording(participant, recordingId)
Instance Members
supportsBreakouts
supportLiveAnnotation
isContentSharing
associatedUser
isModeratorAssignmentProhibited
isPresenterAssignmentProhibited
mediaStatus
canReclaimHost(participant: Object): Boolean
Parameters
participant (Object) The locus participant object.
Returns
Boolean:
getControlsRoles(participant: Object): [ServerRoleShape]
Parameters
participant (Object) The locus participant object.
Returns
[ServerRoleShape]:

Checks if the participant has the brb status enabled.

isBrb(participant: ParticipantWithBrb): boolean
Parameters
participant (ParticipantWithBrb) The locus participant object.
Returns
boolean: True if the participant has brb enabled, false otherwise.
hasRole(participant: Object, controlRole: ServerRoles): Boolean
Parameters
participant (Object) The locus participant object.
controlRole (ServerRoles) the search role
Returns
Boolean:
hasCohost(participant: Object): Boolean
Parameters
participant (Object) The locus participant object.
Returns
Boolean:
hasModerator(participant: Object): Boolean
Parameters
participant (Object) The locus participant object.
Returns
Boolean:
hasPresenter(participant: Object): Boolean
Parameters
participant (Object) The locus participant object.
Returns
Boolean:
extractControlRoles(participant: Object): IExternalRoles
Parameters
participant (Object) The locus participant object.
Returns
IExternalRoles:
isUser(participant: Object): Boolean
Parameters
participant (Object) The locus participant object.
Returns
Boolean:
isGuest(participant: Object): Boolean
Parameters
participant (Object) The locus participant object.
Returns
Boolean:
isDevice(participant: Object): Boolean
Parameters
participant (Object) The locus participant object.
Returns
Boolean:

checks to see if the participant id is the same as the passed id there are multiple ids that can be used

isSame(participant: Object, id: String): Boolean
Parameters
participant (Object) The locus participant object.
id (String)
Returns
Boolean:

checks to see if the participant id is the same as the passed id for associated devices there are multiple ids that can be used

isAssociatedSame(participant: Object, id: String): Boolean
Parameters
participant (Object) The locus participant object.
id (String)
Returns
Boolean:
isNotAdmitted(participant: Object, isGuest: Boolean, status: String): Boolean
Parameters
participant (Object) The locus participant object.
isGuest (Boolean)
status (String)
Returns
Boolean:
isAudioMuted(participant: Object): Boolean
Parameters
participant (Object) The locus participant object.
Returns
Boolean:
isVideoMuted(participant: Object): Boolean
Parameters
participant (Object) The locus participant object.
Returns
Boolean:
isHandRaised(participant: Object): Boolean
Parameters
participant (Object) The locus participant object.
Returns
Boolean:
isBreakoutsSupported(participant: Object): Boolean
Parameters
participant (Object) The locus participant object.
Returns
Boolean:
isInterpretationSupported(participant: Object): Boolean
Parameters
participant (Object) The locus participant object.
Returns
Boolean:
isLiveAnnotationSupported(participant: Object): Boolean
Parameters
participant (Object) The locus participant object.
Returns
Boolean:

utility method for audio/video muted status

isMuted(participant: any, statusAccessor: String, controlsAccessor: String): (Boolean | undefined)
Parameters
participant (any)
statusAccessor (String)
controlsAccessor (String)
Returns
(Boolean | undefined):

utility method for getting the recording member for later comparison

getRecordingMember(controls: Object): (String | null)
Parameters
controls (Object)
Returns
(String | null):
isRecording(participant: Object): Boolean
Parameters
participant (Object) The locus participant object.
Returns
Boolean:
extractStatus(participant: Object): String
Parameters
participant (Object) The locus participant object.
Returns
String:
extractId(participant: Object): String
Parameters
participant (Object) The locus participant object.
Returns
String:

extracts the media status from nested participant object

extractMediaStatus(participant: Object): Object
Parameters
participant (Object) The locus participant object.
Returns
Object:
extractName(participant: Object): String
Parameters
participant (Object) The locus participant object.
Returns
String:

The purpose of this class is to manage the local and remote brb state and make sure that the server state always matches the last requested state by the client.

new BrbState(meeting: Meeting, enabled: boolean)
Parameters
meeting (Meeting) the meeting object
enabled (boolean) whether the client audio/video is enabled at all
Instance Members
enable(enabled, sendSlotManager)
handleServerBrbUpdate(enabled?)

Error thrown when we try to do multistream, but fail. This error is not exported outside of plugin-meetings, because it's handled internally.

new MultistreamNotSupportedError(message: String?, error: Object?)

Extends Error

Parameters
message (String? = ERROR_DICTIONARY.MULTISTREAM_NOT_SUPPORTED.MESSAGE)
error (Object? = null)

This is the type that matches what backend expects us to send to them. It is a bit weird, because it uses strings instead of booleans and numbers, but that's what they require.

TransportResultForBackend

Type: {reachable: ("true" | "false")?, latencyInMilliseconds: string?, clientMediaIPs: Array<string>?, untested: "true"?}

Properties
reachable (("true" | "false")?)
latencyInMilliseconds (string?)
clientMediaIPs (Array<string>?)
untested ("true"?)

Extended Error object for general parameter errors

new ParameterError(message: String?, error: Object?)

Extends Error

Parameters
message (String? = MEETINGCONSTANTS.ERROR_DICTIONARY.PARAMETER.MESSAGE)
error (Object? = null)
new MeetingNotActiveError()

Extends WebexMeetingsError

Properties
code (number) : 30101
message (string) : 'Meeting has already Ended or not Active'
new UserNotJoinedError()

Extends WebexMeetingsError

Properties
code (number) : 30102
message (string) : 'User has already left the meeting'
new NoMediaEstablishedYetError()

Extends WebexMeetingsError

Properties
code (number) : 30103
message (string) : error message
new UserInLobbyError()

Extends WebexMeetingsError

Properties
code (number) : 30104
message (string) : 'user is still in the lobby or not joined'
new SpaceIDDeprecatedError()

Extends WebexMeetingsError

Properties
code (number) : 30105
message (string) : Using the space ID as a destination is no longer supported. Please refer to the migration guide to migrate to use the meeting ID or SIP address.'
new IceGatheringFailed()

Extends WebexMeetingsError

Properties
code (number) : 30202
message (string) : 'user failed ice gathering check network/firewall'
new AddMediaFailed()

Extends WebexMeetingsError

Properties
code (number) : 30203
message (string) : 'Failed to add media'
cause (Error?) : The underlying error that caused the failure
new WebexMeetingsError(code: number, args: ...Array<any>, message: string?, fileName: string?, lineNumber: number?)

Extends Error

Parameters
code (number) Error code
args (...Array<any>)
message (string?) Error message
fileName (string?) Name of the script file where error was generated
lineNumber (number?) Line number of the script file where error was generated
Properties
code (number) : Error code
Instance Members
toString()

Extended Error object to signify a join meeting error

new JoinMeetingError(options: Object?, message: String?, error: Object?)

Extends Error

Parameters
options (Object? = {})
message (String? = ERROR_DICTIONARY.JOIN_MEETING.MESSAGE)
error (Object? = null)

@description Layout type for remote video participants. Allowed values are: Single, Equal, ActivePresence, Prominent, OnePlusN

LAYOUT_TYPES

Type: array

the values for IP_VERSION are fixed and defined in Orpheus API

IP_VERSION

Type for an StrokeData Object

StrokeData

Type: {deviceId: string, toUserId: string, requesterId: string, content: string, shareInstanceId: string, encryptionKeyUrl: string, version: string}

Properties
deviceId (string)
toUserId (string)
requesterId (string)
content (string)
shareInstanceId (string)
encryptionKeyUrl (string)
version (string)

Type for an annotation Object include annotation version and privilege

AnnotationInfo

Type: {version: string, policy: ANNOTATION_POLICY}

Properties
version (string)
policy (ANNOTATION_POLICY)

403021 - Meeting registration is required 403022 - Meeting registration is still pending 403024 - Meeting registration have been rejected 403137 - Registration ID verified failure 423007 - Registration ID input too many time,please input captcha code 403026 - Need to join meeting via webcast 403037 - Meeting join required registration ID 403137 - Registration ID verified failure

JOIN_WEBINAR_ERROR_CODES

Error to indicate that wbxappapi requires a password

new MeetingInfoV2PasswordError(wbxAppApiErrorCode: Number?, meetingInfo: Object?, message: String?)

Extends Error

Parameters
wbxAppApiErrorCode (Number?)
meetingInfo (Object?)
message (String? = PASSWORD_ERROR_DEFAULT_MESSAGE)

Error generating a adhoc space meeting

new MeetingInfoV2AdhocMeetingError(wbxAppApiErrorCode: Number?, message: String?)

Extends Error

Parameters
wbxAppApiErrorCode (Number?)
message (String? = ADHOC_MEETING_DEFAULT_ERROR)

Error preventing join because of a meeting policy

new MeetingInfoV2PolicyError(wbxAppApiErrorCode: Number?, meetingInfo: Object?, message: String?)

Extends Error

Parameters
wbxAppApiErrorCode (Number?)
meetingInfo (Object?)
message (String?)

Error to indicate that preferred webex site not present to start adhoc meeting

new MeetingInfoV2CaptchaError(wbxAppApiErrorCode: Number?, captchaInfo: Object?, message: String?)

Extends Error

Parameters
wbxAppApiErrorCode (Number?)
captchaInfo (Object?)
message (String? = CAPTCHA_ERROR_DEFAULT_MESSAGE)

Error preventing join because of a webinar have some error

new MeetingInfoV2JoinWebinarError(wbxAppApiErrorCode: Number?, meetingInfo: Object?, message: String?)

Extends Error

Parameters
wbxAppApiErrorCode (Number?)
meetingInfo (Object?)
message (String?)

Error preventing join because of a forbidden error

new MeetingInfoV2JoinForbiddenError(wbxAppApiErrorCode: Number?, meetingInfo: Object?, message: String?)

Extends Error

Parameters
wbxAppApiErrorCode (Number?)
meetingInfo (Object?)
message (String?)

Error fetching static link for a conversation when it does not exist

new MeetingInfoV2StaticLinkDoesNotExistError(wbxAppApiErrorCode: Number?, message: String?)

Extends Error

Parameters
wbxAppApiErrorCode (Number?)
message (String? = FETCH_STATIC_MEETING_LINK)

Error enabling/disabling static meeting link

new MeetingInfoV2MeetingIsInProgressError(wbxAppApiErrorCode: Number?, message: String?, enable: Boolean?)

Extends Error

Parameters
wbxAppApiErrorCode (Number?)
message (String? = MEETING_IS_IN_PROGRESS_MESSAGE)
enable (Boolean? = false)

Error enabling/disabling static meeting link

new MeetingInfoV2StaticMeetingLinkAlreadyExists(wbxAppApiErrorCode: Number?, message: String?)

Extends Error

Parameters
wbxAppApiErrorCode (Number?)
message (String? = STATIC_MEETING_LINK_ALREADY_EXISTS_MESSAGE)

Raises a MeetingInfoV2PolicyError for policy error codes

handlePolicyError
Parameters
err (any) the error from the request
Returns
void:

Raises a handleJoinWebinarError for join webinar error codes

handleJoinWebinarError
Parameters
err (any) the error from the request
Returns
void:

Raises a handleForbiddenError for join meeting forbidden error

handleForbiddenError
Parameters
err (any) the error from the request
Returns
void:

Metrics handles all the call metrics events

new Metrics()
Instance Members
initialSetup(webex)
sendBehavioralMetric(metricName, metricFields, metricTags)
prepareMetricFields(payload, prefix)

Converts pane size into h264 maxFs

getMaxFs(paneSize: PaneSize): number
Parameters
paneSize (PaneSize)
Returns
number:

Class representing a remote audio/video stream.

Internally it is associated with a specific receive slot and a media request for it.

new RemoteMedia(receiveSlot: ReceiveSlot, mediaRequestManager: MediaRequestManager, options: Options?)

Extends EventsScope

Parameters
receiveSlot (ReceiveSlot)
mediaRequestManager (MediaRequestManager)
options (Options?)
Instance Members
setSizeHint(width, height)
stop(commit)
sendMediaRequest(csi, commit)
cancelMediaRequest(commit)
mediaType
sourceState
stream
getUnderlyingReceiveSlot()

Events plugin-meetings local Used to emit events internally between modules specific to an object

new EventsScope()

Extends ChildEmitter

Instance Members
emit(scope, eventName, args)

Returns true if two stream requests are the same, false otherwise.

isEqual(streamRequestA: StreamRequest, streamRequestB: StreamRequest): boolean
Parameters
streamRequestA (StreamRequest) Stream request A for comparison.
streamRequestB (StreamRequest) Stream request B for comparison.
Returns
boolean: Whether they are equal.

Clears the previous stream requests.

clearPreviousRequests(): void
Returns
void:

Class representing a receive slot. A single receive slot is able to receive a single track for example some participant's main video or audio

new ReceiveSlot(mediaType: MediaType, mcReceiveSlot: ReceiveSlot, findMemberIdCallback: FindMemberIdCallback)

Extends EventsScope

Parameters
mediaType (MediaType)
mcReceiveSlot (ReceiveSlot)
findMemberIdCallback (FindMemberIdCallback) callback for finding memberId for given CSI
Instance Members
setMaxFs(newFs)
sourceState
findMemberId()
logString
stream
wcmeReceiveSlot
new Presence()

Type: IPresence

Extends WebexPlugin

Static Members
initialize()
initializeWorker()
emitEvent(event, payload)
enable()
disable()
isEnabled()
get(personId)
list(personIds)
subscribe(personIds, subscriptionTtl)
unsubscribe(personIds)
setStatus(status, ttl)
enqueue(id)
dequeue(id)

The status object

PresenceStatusObject

Type: Object

Properties
url (string) : : Public resource identifier for presence
subject (string) : : User ID for the user the returned composed presence represents
status (string) : : Current composed presence state
statusTime (string) : : DateTime in RFC3339 format that the current status began
lastActive (string) : : DateTime in RFC3339 format that the service last saw activity from the user.
expires (string) : : DEPRECATED - DateTime in RFC3339 format that represents when the current status will expire. Will not exist if expiresTTL is -1.
expiresTTL (Number) : : TTL in seconds until the status will expire. If TTL is -1 the current status has no known expiration.
expiresTime (string) : : DateTime in RFC3339 format that the current status will expire. Missing field means no known expiration.
vectorCounters (Object) : : Used for packet ordering and tracking.
suppressNotifications (Boolean) : : Indicates if notification suppression is recommended for this status.
lastSeenDeviceUrl (string) : : Resource Identifier of the last device to post presence activity for this user.
PresenceStatusesObject

Type: Object

Properties
statusList (Array<PresenceStatusObject>)

Presence Worker Manages fetches and subscriptions for presence

new PresenceWorker()
Instance Members
initialize(webex)
subscriptionUpdate(event)
enqueue(id)
dequeue(id)
checkFetchers()
checkCampers()
checkSubscriptions()
cleanPresences()
groundskeeper()

Helper method to build a roomInfo object from a conversation object

buildRoomInfo(webex: Object, conversation: Conversation~ConversationObject): Promise<RoomInfoObject>
Parameters
webex (Object) sdk object
conversation (Conversation~ConversationObject)
Returns
Promise<RoomInfoObject>:

Helper method to build a list of roomInfo object from conversation list

buildRoomInfoList(webex: Object, conversations: Conversation~ConversationObjectList): Promise<RoomInfoList>
Parameters
webex (Object) sdk object
conversations (Conversation~ConversationObjectList)
Returns
Promise<RoomInfoList>: