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()
unregister()
setReachability()
getReachability()
startReachability()
getPersonalMeetingRoom()
create(destination, type = null, useRandomDelayForInfo)
getMeetingByType(type, value)
getAllMeetings(options)
syncMeetings()
getScheduledMeetings(options)
getSupportedDevices
getDevices
Instance Members
personalMeetingRoom
registered
uploadLogs(options)
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)
refreshCaptcha()
getAnalyzerMetricsPrePayload(options)
invite(invitee, alertIfActive = true)
cancelPhoneInvite(invitee)
admit(memberIds)
remove(memberId)
mute(memberId, mute)
transfer(memberId, moderator)
getMembers()
isAudioConnected()
isAudioMuted()
isAudioSelf()
isVideoConnected()
isVideoMuted()
isVideoSelf()
setRemoteStream(pc)
uploadLogs(options)
unsetRemoteStream()
closeRemoteStream()
closeRemoteTracks()
setLocalTracks(localStream)
setLocalShareTrack(localShare)
unsetLocalVideoTrack()
unsetLocalShareTrack()
setMercuryListener()
closePeerConnections()
unsetPeerConnections(peerConnection)
muteAudio()
unmuteAudio()
muteVideo()
unmuteVideo()
joinWithMedia(options)
reconnect(options)
usePhoneAudio(phoneNumber)
disconnectPhoneAudio()
moveTo(resourceId)
moveFrom(resourceId)
getMediaStreams
addMedia(options)
processNextQueuedMediaUpdate
updateMedia(options)
updateAudio(options)
updateVideo(options)
updateShare(options)
acknowledge(type)
decline(reason)
leave(options)
startWhiteboardShare(channelUrl, resourceToken)
stopWhiteboardShare(channelUrl)
stopShare(options)
startRecording()
setMuteOnEntry(enabled)
setDisallowUnmute(enabled)
stopRecording()
pauseRecording()
resumeRecording()
lockMeeting()
unlockMeeting()
sendDTMF(tones)
changeVideoLayout(layoutType?, renderInfo)
endMeetingForAll()
clearMeetingData
isBnrEnabled()
isBnrEnabled()
enableBNR()
disableBNR()
sendReaction(reactionType, skinToneType)
Instance Members
correlationId
meetingFiniteStateMachine
mediaConnections
mediaProperties
isSharing
passwordStatus
requiredCaptcha
recordingController
controlsOptionsManager
unsetRemoteTracks()
isTranscriptionSupported()
stopReceivingTranscription()
canUpdateMedia()
setLocalVideoQuality(level)
setRemoteQualityLevel(level)
setMeetingQuality(level)
shareScreen(options)
setStartSetupDelay(typeMedia)
setEndSetupDelay(typeMedia)
getSetupDelayDuration(typeMedia)
setStartSendingMediaDelay(typeMedia)
setEndSendingMediaDelay(typeMedia)
getSendingMediaDelayDuration(typeMedia)
setStartLocalSDPGenRemoteSDPRecvDelay()
setEndLocalSDPGenRemoteSDPRecvDelay()
getLocalSDPGenRemoteSDPRecvDelay()
setStartCallInitiateJoinReq()
setEndCallInitiateJoinReq()
getCallInitiateJoinReq()
setStartJoinReqResp()
setEndJoinReqResp()
getJoinReqResp()
getTotalJmt()
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
media:stopped
media:stopped

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()
Instance Members
formatLogs()
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)

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:

Metrics handles all the call metrics events

new Metrics()
Static Members
initMediaPayload(eventType, identifiers, options)
Instance Members
initialSetup(meetingCollection, webex)
postEvent(options)
initPayload(eventType, identifiers, options)
parseLocusError(err, showToUser)
userAgentToString()
sendBehavioralMetric(metricName, metricFields, metricTags)
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)

SendOptions

SendOptions

Type: Object

Properties
sendAudio (Boolean)
sendVideo (Boolean)
sendShare (Boolean)
Media

Type: any

Static Members
setLocalTrack(enabled, track)
reconnectMedia(peerConnection, meetingProperties)
generateLocalMedias(mediaId, audioMuted, videoMuted)
getLocalMedia(options, config)
checkTracks(trackType, track, receiveTracks)
attachMedia(mediaProperties, meetingProperties)
updateMedia(mediaProperties, meetingProperties)
setTrackOnTransceiver(transceiver, options)
updateTransceiver(meetingProperties, peerConnection, transceiver, options)
getDisplayMedia(options, config)
getMedia(audio, video, config)
getSupportedDevice(options?)
getDevices()
toggleStream()
stopTracks(track)
stopStream(stream)
getUserMedia(mediaSetting, audioVideo, sharePreferences, config)
pc

Type: any

Static Members
setContentSlides(screenPc)
iceCandidate(peerConnection, options)
replaceTrack(peerConnection, track)
addStream(peerConnection, stream)
setRemoteSessionDetails(peerConnection, typeStr, remoteSdp, meetingId)
createOffer(peerConnection, meetingProperties)
rollBackLocalDescription(peerConnection)
updatePeerConnection(params, meetingProperties)
createAnswer(params, meetingProperties)
close(peerConnection)

munges the bandwidth limit into the sdp

insertBandwidthLimit
Parameters
sdpLines (String)
index (Number)
Returns
String:

needed for calliope max-fs

setRemoteVideoConstraints
Parameters
sdp (String)
level (String = QUALITY_LEVELS.HIGH) quality level for max-fs
Returns
String:

checks that sdp has h264 codec in it

checkH264Support
Parameters
sdp (String)
Returns
boolean:

validates the sdp, checks port, candidates, and ice info

isSdpInvalid
Parameters
sdp (String)
Returns
String:

munges the bandwidth into the sdp

limitBandwidth
Parameters
sdp (String)
Returns
String:

Convert C line to IPv4

convertCLineToIpv4(sdp: string): string
Parameters
sdp (string)
Returns
string:

estimate profile levels for max-fs & max-mbps values

adjustH264Profile(sdp: string, maxFsValue: number): string
Parameters
sdp (string)
maxFsValue (number)
Returns
string:

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)

Extended Error object for media errors

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

Extends Error

Parameters
message (String? = ERROR_DICTIONARY.MEDIA.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) : 'User has not established media yet'
new UserInLobbyError()

Extends WebexMeetingsError

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

Extends WebexMeetingsError

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

Extends WebexMeetingsError

Properties
code (number) : 30202
message (string) : 'user failed ice gathering check network/firewall'
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 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 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)

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)
new MeetingInfo()
Static Members
getMeetingInfo(id)
setMeetingInfo(id, info)
fetchInfoOptions(destination, type = null)
fetchMeetingInfo(destination, type = null)
fetchMeetingInfo(destination, type = null, password, captchaInfo)
createAdhocSpaceMeeting(conversationUrl)
new MeetingInfo()
Static Members
getMeetingInfo(id)
setMeetingInfo(id, info)
fetchInfoOptions(destination, type = null)
fetchMeetingInfo(destination, type = null)
fetchMeetingInfo(destination, type = null, password, captchaInfo)
createAdhocSpaceMeeting(conversationUrl)
new MeetingInfoCollection()
Static Members
get(id)
new MeetingInfoRequest()
Static Members
fetchMeetingInfo(options)
new MeetingInfoRequest()
Static Members
fetchMeetingInfo(options)

Helper function to check if a string matches a known meeting link pattern

isMeetingLink(value: String): Boolean
Parameters
value (String) string to parse and see if it matches a meeting link
Returns
Boolean:

Helper function to check if a string matches a known meeting link pattern

isMeetingLink(value: String): Boolean
Parameters
value (String) string to parse and see if it matches a meeting link
Returns
Boolean:

Helper function to build up a correct locus url depending on the value passed

getResourceUrl(type: String, value: Object): Object
Parameters
type (String) One of [SIP_URI, PERSONAL_ROOM, MEETING_ID, CONVERSATION_URL, LOCUS_ID, MEETING_LINK]
value (Object) ?? value.value
Returns
Object: returns an object with {resource, method}

Helper function to build up a correct locus url depending on the value passed

getRequestBody(options: Object): Object
Parameters
options (Object) type and value to fetch meeting info
Name Description
options.type String One of [SIP_URI, PERSONAL_ROOM, MEETING_ID, CONVERSATION_URL, LOCUS_ID, MEETING_LINK]
options.destination Object ?? value.value
Returns
Object: returns an object with {resource, method}

Helper function to parse the webex site/host from a URI string.

getWebexSite(uri: String): String
Parameters
uri (String) string (e.g. ' 10019857020@convergedats.webex.com ')
Returns
String: the site/host part of the URI string (e.g. 'convergedats.webex.com')

Helper function to return the direct URI for fetching meeting info (to avoid a redirect).

getDirectMeetingInfoURI(options: Object): String
Parameters
options (Object) type and value to fetch meeting info
Name Description
options.type String One of [SIP_URI, PERSONAL_ROOM, MEETING_ID, CONVERSATION_URL, LOCUS_ID, MEETING_LINK]
options.destination Object ?? value.value
Returns
String: returns a URI string or null of there is no direct URI

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 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)

AudioVideo

AudioVideo

Type: Object

Properties
audio (Object)
video (Object)
  • video.deviceId String
  • video.localVideoQuality String

    // [240p, 360p, 480p, 720p, 1080p]

SharePreferences

SharePreferences

Type: Object

Properties
shareConstraints (Object?)
highFrameRate (Boolean?)

JoinOptions

JoinOptions

Type: Object

Properties
resourceId (String?)
pin (String?)
moderator (Boolean?)
meetingQuality ((String | Object)?)
  • meetingQuality.local String?
  • meetingQuality.remote String?
rejoin (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

Stats Analyzer class that will emit events based on detected quality

new StatsAnalyzer()

Extends EventsScope

Static Members
updateMediaStatus(status)
sendMqaData()
startAnalyzer(peerConnection)
stopAnalyzer()
Instance Members
parseAudioSource(result, type)

Values for some browsers specifically Safari will be undefined we explicitly set to null https://bugs.webkit.org/show_bug.cgi?id=206645 https://bugs.webkit.org/show_bug.cgi?id=212668

PACKETLOSS

NetworkQualityMonitor class that will emit events based on detected quality

new NetworkQualityMonitor()

Extends EventsScope

Static Members
emitNetworkQuality()
updateNetworkQualityStatus()
determineUplinkNetworkQuality(configObj)
Instance Members
networkQualityStats
Events
network:quality

determines if packetLoss ratio is over threshold set in config sets networkQualityScore to 0 if over threshold

determinePacketLoss
Returns
boolean:

determines if round trip time value is over threshold set in config sets networkQualityScore to 0 if over threshold

determineLatency
Returns
boolean:

determines if jitter value is over threshold in config sets networkQualityScore to 0 if over threshold

deterMineJitter
Returns
boolean:

returns null if val is specifically undefined

determineIfUndefined
Parameters
value ((number | undefined))
Returns
(number | null):

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)

Roap options

RoapOptions

Type: Object

Properties
sdp (String)
meeting (Meeting)
roapSeq (Number)
reconnect (Boolean)
SeqOptions

Type: Object

Properties
correlationId (String)
mediaId (String)
seq (Number)
new RoapHandler()
Instance Members
perform(session, meeting, action)
execute(signal, session, action, meeting, prefix)
handleAction(session, action, meeting, correlationId)
submit(action)
new RoapRequest()
Instance Members
attachRechabilityData(localSdp, options)
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
sendRoapOK(meeting)
doTurnDiscovery(meeting, isReconnecting)
new MediaProperties()
Instance Members
getVideoDeviceId()
setRemoteAudioTrack(remoteAudioTrack)
setRemoteVideoTrack(remoteVideoTrack)