@webex/plugin-meetings 3.0.0-beta.22 → 3.0.0-beta.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/constants.js +0 -3
  4. package/dist/constants.js.map +1 -1
  5. package/dist/media/properties.js.map +1 -1
  6. package/dist/mediaQualityMetrics/config.js +505 -493
  7. package/dist/mediaQualityMetrics/config.js.map +1 -1
  8. package/dist/meeting/index.js +1 -4
  9. package/dist/meeting/index.js.map +1 -1
  10. package/dist/networkQualityMonitor/index.js +4 -2
  11. package/dist/networkQualityMonitor/index.js.map +1 -1
  12. package/dist/statsAnalyzer/global.js +1 -93
  13. package/dist/statsAnalyzer/global.js.map +1 -1
  14. package/dist/statsAnalyzer/index.js +297 -299
  15. package/dist/statsAnalyzer/index.js.map +1 -1
  16. package/dist/statsAnalyzer/mqaUtil.js +84 -47
  17. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  18. package/dist/types/breakouts/breakout.d.ts +8 -0
  19. package/dist/types/breakouts/collection.d.ts +5 -0
  20. package/dist/types/breakouts/index.d.ts +5 -0
  21. package/dist/types/common/browser-detection.d.ts +9 -0
  22. package/dist/types/common/collection.d.ts +48 -0
  23. package/dist/types/common/config.d.ts +2 -0
  24. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  25. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  26. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  27. package/dist/types/common/errors/media.d.ts +15 -0
  28. package/dist/types/common/errors/parameter.d.ts +15 -0
  29. package/dist/types/common/errors/password-error.d.ts +15 -0
  30. package/dist/types/common/errors/permission.d.ts +14 -0
  31. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  32. package/dist/types/common/errors/reconnection.d.ts +15 -0
  33. package/dist/types/common/errors/stats.d.ts +15 -0
  34. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  35. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  36. package/dist/types/common/events/events-scope.d.ts +17 -0
  37. package/dist/types/common/events/events.d.ts +12 -0
  38. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  39. package/dist/types/common/events/util.d.ts +2 -0
  40. package/dist/types/common/logs/logger-config.d.ts +2 -0
  41. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  42. package/dist/types/common/logs/request.d.ts +34 -0
  43. package/dist/types/common/queue.d.ts +32 -0
  44. package/dist/types/config.d.ts +77 -0
  45. package/dist/types/constants.d.ts +895 -0
  46. package/dist/types/index.d.ts +5 -0
  47. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  48. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  49. package/dist/types/locus-info/fullState.d.ts +2 -0
  50. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  51. package/dist/types/locus-info/index.d.ts +269 -0
  52. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  53. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  54. package/dist/types/locus-info/parser.d.ts +212 -0
  55. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  56. package/dist/types/media/index.d.ts +32 -0
  57. package/dist/types/media/properties.d.ts +107 -0
  58. package/dist/types/media/util.d.ts +2 -0
  59. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  60. package/dist/types/meeting/effectsState.d.ts +42 -0
  61. package/dist/types/meeting/in-meeting-actions.d.ts +75 -0
  62. package/dist/types/meeting/index.d.ts +1706 -0
  63. package/dist/types/meeting/muteState.d.ts +108 -0
  64. package/dist/types/meeting/request.d.ts +261 -0
  65. package/dist/types/meeting/request.type.d.ts +11 -0
  66. package/dist/types/meeting/state.d.ts +9 -0
  67. package/dist/types/meeting/util.d.ts +2 -0
  68. package/dist/types/meeting-info/collection.d.ts +20 -0
  69. package/dist/types/meeting-info/index.d.ts +57 -0
  70. package/dist/types/meeting-info/meeting-info-v2.d.ts +93 -0
  71. package/dist/types/meeting-info/request.d.ts +22 -0
  72. package/dist/types/meeting-info/util.d.ts +2 -0
  73. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  74. package/dist/types/meetings/collection.d.ts +23 -0
  75. package/dist/types/meetings/index.d.ts +297 -0
  76. package/dist/types/meetings/request.d.ts +27 -0
  77. package/dist/types/meetings/util.d.ts +18 -0
  78. package/dist/types/member/index.d.ts +146 -0
  79. package/dist/types/member/util.d.ts +2 -0
  80. package/dist/types/members/collection.d.ts +24 -0
  81. package/dist/types/members/index.d.ts +320 -0
  82. package/dist/types/members/request.d.ts +50 -0
  83. package/dist/types/members/util.d.ts +2 -0
  84. package/dist/types/metrics/config.d.ts +178 -0
  85. package/dist/types/metrics/constants.d.ts +57 -0
  86. package/dist/types/metrics/index.d.ts +160 -0
  87. package/dist/types/multistream/mediaRequestManager.d.ts +50 -0
  88. package/dist/types/multistream/receiveSlot.d.ts +64 -0
  89. package/dist/types/multistream/receiveSlotManager.d.ts +41 -0
  90. package/dist/types/multistream/remoteMedia.d.ts +93 -0
  91. package/dist/types/multistream/remoteMediaGroup.d.ts +56 -0
  92. package/dist/types/multistream/remoteMediaManager.d.ts +241 -0
  93. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  94. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  95. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  96. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  97. package/dist/types/reachability/index.d.ts +140 -0
  98. package/dist/types/reachability/request.d.ts +35 -0
  99. package/dist/types/reactions/constants.d.ts +3 -0
  100. package/dist/types/reactions/reactions.d.ts +4 -0
  101. package/dist/types/reactions/reactions.type.d.ts +52 -0
  102. package/dist/types/reconnection-manager/index.d.ts +117 -0
  103. package/dist/types/recording-controller/enums.d.ts +7 -0
  104. package/dist/types/recording-controller/index.d.ts +193 -0
  105. package/dist/types/recording-controller/util.d.ts +13 -0
  106. package/dist/types/roap/index.d.ts +77 -0
  107. package/dist/types/roap/request.d.ts +35 -0
  108. package/dist/types/roap/turnDiscovery.d.ts +74 -0
  109. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  110. package/dist/types/statsAnalyzer/index.d.ts +195 -0
  111. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  112. package/dist/types/transcription/index.d.ts +64 -0
  113. package/package.json +19 -19
  114. package/src/constants.ts +0 -3
  115. package/src/media/properties.ts +1 -3
  116. package/src/mediaQualityMetrics/config.ts +379 -377
  117. package/src/meeting/index.ts +1 -4
  118. package/src/networkQualityMonitor/index.ts +6 -6
  119. package/src/statsAnalyzer/global.ts +1 -94
  120. package/src/statsAnalyzer/index.ts +325 -373
  121. package/src/statsAnalyzer/mqaUtil.ts +92 -89
  122. package/test/integration/spec/space-meeting.js +1 -1
  123. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  124. package/test/unit/spec/stats-analyzer/index.js +63 -39
@@ -0,0 +1,1706 @@
1
+ /// <reference types="node" />
2
+ import { StatelessWebexPlugin } from '@webex/webex-core';
3
+ import { StatsAnalyzer } from '../statsAnalyzer';
4
+ import NetworkQualityMonitor from '../networkQualityMonitor';
5
+ import Roap from '../roap/index';
6
+ import MediaProperties from '../media/properties';
7
+ import ReconnectionManager from '../reconnection-manager';
8
+ import MeetingRequest from './request';
9
+ import Members from '../members/index';
10
+ import Transcription from '../transcription';
11
+ import { ReceiveSlotManager } from '../multistream/receiveSlotManager';
12
+ import { MediaRequestManager } from '../multistream/mediaRequestManager';
13
+ import { RemoteMediaManager } from '../multistream/remoteMediaManager';
14
+ import { ReactionServerType, SkinToneType } from '../reactions/reactions.type';
15
+ import InMeetingActions from './in-meeting-actions';
16
+ import RecordingController from '../recording-controller';
17
+ export declare const MEDIA_UPDATE_TYPE: {
18
+ ALL: string;
19
+ AUDIO: string;
20
+ VIDEO: string;
21
+ SHARE: string;
22
+ LAMBDA: string;
23
+ };
24
+ /**
25
+ * MediaDirection
26
+ * @typedef {Object} MediaDirection
27
+ * @property {boolean} sendAudio
28
+ * @property {boolean} receiveAudio
29
+ * @property {boolean} sendVideo
30
+ * @property {boolean} receiveVideo
31
+ * @property {boolean} sendShare
32
+ * @property {boolean} receiveShare
33
+ * @property {boolean} isSharing
34
+ */
35
+ /**
36
+ * AudioVideo
37
+ * @typedef {Object} AudioVideo
38
+ * @property {Object} audio
39
+ * @property {String} audio.deviceId
40
+ * @property {Object} video
41
+ * @property {String} video.deviceId
42
+ * @property {String} video.localVideoQuality // [240p, 360p, 480p, 720p, 1080p]
43
+ */
44
+ /**
45
+ * SharePreferences
46
+ * @typedef {Object} SharePreferences
47
+ * @property {Object} [shareConstraints]
48
+ * @property {Boolean} [highFrameRate]
49
+ */
50
+ /**
51
+ * JoinOptions
52
+ * @typedef {Object} JoinOptions
53
+ * @property {String} [resourceId]
54
+ * @property {String} [pin]
55
+ * @property {Boolean} [moderator]
56
+ * @property {String|Object} [meetingQuality]
57
+ * @property {String} [meetingQuality.local]
58
+ * @property {String} [meetingQuality.remote]
59
+ * @property {Boolean} [rejoin]
60
+ * @property {Boolean} [enableMultistream]
61
+ */
62
+ /**
63
+ * SendOptions
64
+ * @typedef {Object} SendOptions
65
+ * @property {Boolean} sendAudio
66
+ * @property {Boolean} sendVideo
67
+ * @property {Boolean} sendShare
68
+ */
69
+ /**
70
+ * Recording
71
+ * @typedef {Object} Recording
72
+ * @property {Object} state
73
+ * @property {String} modifiedBy
74
+ */
75
+ /**
76
+ * Meeting State Change Event
77
+ * Emitted when ever there is a meeting state change
78
+ * @event meeting:stateChange
79
+ * @instance
80
+ * @type {Object}
81
+ * @property {String} currentState current state of the meeting
82
+ * @property {String} previousState previous state of the meeting
83
+ * @memberof Meeting
84
+ */
85
+ /**
86
+ * Media Ready Event
87
+ * Emitted when a stream is ready to be rendered
88
+ * @event media:ready
89
+ * @instance
90
+ * @type {Object}
91
+ * @property {MediaStream} stream the media stream
92
+ * @property {String} type what type of stream, remote, local
93
+ * @memberof Meeting
94
+ */
95
+ /**
96
+ * Media Stopped Event
97
+ * Emitted when a stream has stopped sending
98
+ * @event media:stopped
99
+ * @instance
100
+ * @type {Object}
101
+ * @property {String} type what type of stream, remote, local
102
+ * @memberof Meeting
103
+ */
104
+ /**
105
+ * Meeting Ringing Event
106
+ * Emitted when this client should play a ringing sound, because this member is getting an incoming meeting
107
+ * or sending out an incoming meeting
108
+ * @event meeting:ringing
109
+ * @instance
110
+ * @type {Object}
111
+ * @property {String} type // INCOMING or JOIN
112
+ * @property {String} id
113
+ * @memberof Meeting
114
+ */
115
+ /**
116
+ * Meeting Ringing Stop Event
117
+ * Emitted when this client should stop playing a ringing sound
118
+ * @event meeting:ringingStop
119
+ * @instance
120
+ * @type {Object}
121
+ * @property {Object} type
122
+ * @property {Boolean} type.remoteAnswered
123
+ * @property {Boolean} type.remoteDeclined
124
+ * @property {String} id
125
+ * @memberof Meeting
126
+ */
127
+ /**
128
+ * Meeting Started Sharing Local Event
129
+ * Emitted when this member starts sharing
130
+ * @event meeting:startedSharingLocal
131
+ * @instance
132
+ * @type {Object}
133
+ * @memberof Meeting
134
+ */
135
+ /**
136
+ * Meeting Stopped Sharing Local Event
137
+ * Emitted when this member stops sharing
138
+ * @event meeting:stoppedSharingLocal
139
+ * @instance
140
+ * @type {Object}
141
+ * @memberof Meeting
142
+ */
143
+ /**
144
+ * Meeting Started Sharing Remote Event
145
+ * Emitted when remote sharing starts
146
+ * @event meeting:startedSharingRemote
147
+ * @instance
148
+ * @type {Object}
149
+ * @property {Boolean} memberId id of the meeting member that started screen share
150
+ * @memberof Meeting
151
+ */
152
+ /**
153
+ * Meeting Stopped Sharing Remote Event
154
+ * Emitted when remote screen sharing ends
155
+ * @event meeting:stoppedSharingRemote
156
+ * @instance
157
+ * @type {Object}
158
+ * @memberof Meeting
159
+ */
160
+ /**
161
+ * Meeting Locked Event
162
+ * Emitted when a meeting is locked
163
+ * @event meeting:locked
164
+ * @instance
165
+ * @type {Object}
166
+ * @property {Object} info
167
+ * @memberof Meeting
168
+ */
169
+ /**
170
+ * Meeting Unlocked Event
171
+ * Emitted when a meeting is unlocked
172
+ * @event meeting:unlocked
173
+ * @instance
174
+ * @type {Object}
175
+ * @property {Object} info
176
+ * @memberof Meeting
177
+ */
178
+ /**
179
+ * Meeting Actions Update Event
180
+ * Emitted when a user can take actions on a meeting such as lock, unlock, assign host
181
+ * @event meeting:actionsUpdate
182
+ * @instance
183
+ * @type {Object}
184
+ * @property {Boolean} canLock
185
+ * @property {Boolean} canUnlock
186
+ * @property {Boolean} canAssignHost
187
+ * @memberof Meeting
188
+ */
189
+ /**
190
+ * Meeting Unmuted By Others Event
191
+ * Emitted when a member is unmuted by another member
192
+ * @event meeting:self:unmutedByOthers
193
+ * @instance
194
+ * @type {Object}
195
+ * @property {Object} payload
196
+ * @memberof Meeting
197
+ */
198
+ /**
199
+ * Meeting Muted By Others Event
200
+ * Emitted when a member is muted by another member
201
+ * @event meeting:self:mutedByOthers
202
+ * @instance
203
+ * @type {Object}
204
+ * @property {Object} payload
205
+ * @property {Boolean} payload.unmuteAllowed - whether the user is allowed to unmute self
206
+ * @memberof Meeting
207
+ */
208
+ /**
209
+ * Meeting Muted By Others Event
210
+ * Emitted when the host(moderator)/co-host requests a user to unmute
211
+ * @event meeting:self:requestedToUnmute
212
+ * @instance
213
+ * @type {Object}
214
+ * @property {Object} payload
215
+ * @memberof Meeting
216
+ */
217
+ /**
218
+ * Meeting Self Guest Admitted Event
219
+ * Emitted when a joined user get admitted to the meeting by another member or host
220
+ * @event meeting:self:guestAdmitted
221
+ * @instance
222
+ * @type {Object}
223
+ * @property {Object} payload
224
+ * @memberof Meeting
225
+ */
226
+ /**
227
+ * Meeting Self Lobby Waiting Event
228
+ * Emitted when joined user enters the lobby and is waiting for the webex meeting to begin
229
+ * @event meeting:self:lobbyWaiting
230
+ * @instance
231
+ * @type {Object}
232
+ * @property {Object} reason Reason why user left the meeting
233
+ * @memberof Meeting
234
+ */
235
+ /**
236
+ * Meeting Self Left State
237
+ * Emitted when user is inactive for more then 40 seconds, User can rejoin the meeting again
238
+ * @event meeting:self:left
239
+ * @instance
240
+ * @type {Object}
241
+ * @property {Object} payload
242
+ * @memberof Meeting
243
+ */
244
+ /**
245
+ * Reconnection Starting Event
246
+ * Emitted when reconnection of media to the active meeting was successful
247
+ * @event meeting:reconnectionStarting
248
+ * @instance
249
+ * @memberof Meeting
250
+ */
251
+ /**
252
+ * Reconnection Success Event
253
+ * Emitted when reconnection of media to the active meeting was successful
254
+ * @event meeting:reconnectionSuccess
255
+ * @instance
256
+ * @type {Object}
257
+ * @property {Object} reconnect
258
+ * @memberof Meeting
259
+ */
260
+ /**
261
+ * Reconnection Failure Event
262
+ * Emitted when reconnection of media to the active meeting was successful
263
+ * @event meeting:reconnectionFailure
264
+ * @instance
265
+ * @type {Object}
266
+ * @property {Error} error
267
+ * @memberof Meeting
268
+ */
269
+ /**
270
+ * Meeting network quality event
271
+ * Emitted on each interval of retrieving stats Analyzer data
272
+ * @event network:quality
273
+ * @type {Object}
274
+ * @property {string} mediaType {video|audio}
275
+ * @property {number} networkQualityScore - {1|0} 1 indicates acceptable uplink 0 indicates unacceptable uplink based on threshold
276
+ * @memberof Meeting
277
+ */
278
+ /**
279
+ * @description Meeting is the crux of the plugin
280
+ * @export
281
+ * @class Meeting
282
+ */
283
+ export default class Meeting extends StatelessWebexPlugin {
284
+ attrs: any;
285
+ audio: any;
286
+ breakouts: any;
287
+ conversationUrl: string;
288
+ correlationId: string;
289
+ destination: string;
290
+ destinationType: string;
291
+ deviceUrl: string;
292
+ effects: any;
293
+ hostId: string;
294
+ id: string;
295
+ isMultistream: boolean;
296
+ locusUrl: string;
297
+ mediaConnections: any[];
298
+ mediaId?: string;
299
+ meetingFiniteStateMachine: any;
300
+ meetingInfo: object;
301
+ meetingRequest: MeetingRequest;
302
+ members: Members;
303
+ options: object;
304
+ orgId: string;
305
+ owner: string;
306
+ partner: any;
307
+ policy: string;
308
+ reconnectionManager: ReconnectionManager;
309
+ resource: string;
310
+ roap: Roap;
311
+ roapSeq: number;
312
+ sipUri: string;
313
+ type: string;
314
+ userId: string;
315
+ video: any;
316
+ callEvents: any[];
317
+ deferJoin: Promise<any>;
318
+ dialInDeviceStatus: string;
319
+ dialInUrl: string;
320
+ dialOutDeviceStatus: string;
321
+ dialOutUrl: string;
322
+ fetchMeetingInfoTimeoutId: NodeJS.Timeout;
323
+ floorGrantPending: boolean;
324
+ hasJoinedOnce: boolean;
325
+ hasWebsocketConnected: boolean;
326
+ inMeetingActions: InMeetingActions;
327
+ isLocalShareLive: boolean;
328
+ isRoapInProgress: boolean;
329
+ isSharing: boolean;
330
+ keepAliveTimerId: NodeJS.Timeout;
331
+ lastVideoLayoutInfo: any;
332
+ locusInfo: any;
333
+ mediaProperties: MediaProperties;
334
+ mediaRequestManagers: {
335
+ audio: MediaRequestManager;
336
+ video: MediaRequestManager;
337
+ screenShareAudio: MediaRequestManager;
338
+ screenShareVideo: MediaRequestManager;
339
+ };
340
+ meetingInfoFailureReason: string;
341
+ networkQualityMonitor: NetworkQualityMonitor;
342
+ networkStatus: string;
343
+ passwordStatus: string;
344
+ queuedMediaUpdates: any[];
345
+ recording: any;
346
+ remoteMediaManager: RemoteMediaManager | null;
347
+ recordingController: RecordingController;
348
+ requiredCaptcha: any;
349
+ receiveSlotManager: ReceiveSlotManager;
350
+ shareStatus: string;
351
+ statsAnalyzer: StatsAnalyzer;
352
+ transcription: Transcription;
353
+ updateMediaConnections: (mediaConnections: any[]) => void;
354
+ endCallInitiateJoinReq: any;
355
+ endJoinReqResp: any;
356
+ endLocalSDPGenRemoteSDPRecvDelay: any;
357
+ joinedWith: any;
358
+ locusId: any;
359
+ startCallInitiateJoinReq: any;
360
+ startJoinReqResp: any;
361
+ startLocalSDPGenRemoteSDPRecvDelay: any;
362
+ wirelessShare: any;
363
+ guest: any;
364
+ meetingJoinUrl: any;
365
+ meetingNumber: any;
366
+ meetingState: any;
367
+ permissionToken: any;
368
+ resourceId: any;
369
+ resourceUrl: string;
370
+ selfId: string;
371
+ state: any;
372
+ namespace: string;
373
+ /**
374
+ * @param {Object} attrs
375
+ * @param {Object} options
376
+ * @constructor
377
+ * @memberof Meeting
378
+ */
379
+ constructor(attrs: any, options: object);
380
+ /**
381
+ * Fetches meeting information.
382
+ * @param {Object} options
383
+ * @param {String} [options.password] optional
384
+ * @param {String} [options.captchaCode] optional
385
+ * @public
386
+ * @memberof Meeting
387
+ * @returns {Promise}
388
+ */
389
+ fetchMeetingInfo({ password, captchaCode, }: {
390
+ password?: string;
391
+ captchaCode?: string;
392
+ }): Promise<void>;
393
+ /**
394
+ * Checks if the supplied password/host key is correct. It returns a promise with information whether the
395
+ * password and captcha code were correct or not.
396
+ * @param {String} password - this can be either a password or a host key, can be undefined if only captcha was required
397
+ * @param {String} captchaCode - can be undefined if captcha was not required by the server
398
+ * @public
399
+ * @memberof Meeting
400
+ * @returns {Promise<{isPasswordValid: boolean, requiredCaptcha: boolean, failureReason: MEETING_INFO_FAILURE_REASON}>}
401
+ */
402
+ verifyPassword(password: string, captchaCode: string): Promise<{
403
+ isPasswordValid: boolean;
404
+ requiredCaptcha: any;
405
+ failureReason: string;
406
+ } | {
407
+ isPasswordValid: boolean;
408
+ requiredCaptcha: any;
409
+ failureReason: string;
410
+ }>;
411
+ /**
412
+ * Refreshes the captcha. As a result the meeting will have new captcha id, image and audio.
413
+ * If the refresh operation fails, meeting remains with the old captcha properties.
414
+ * @public
415
+ * @memberof Meeting
416
+ * @returns {Promise}
417
+ */
418
+ refreshCaptcha(): any;
419
+ /**
420
+ * Proxy function for all the listener set ups
421
+ * @returns {undefined}
422
+ * @private
423
+ * @memberof Meeting
424
+ */
425
+ private setUpLocusInfoListeners;
426
+ /**
427
+ * Set up the listeners for breakouts
428
+ * @returns {undefined}
429
+ * @private
430
+ * @memberof Meeting
431
+ */
432
+ setUpBreakoutsListener(): void;
433
+ /**
434
+ * Set up the locus info listener for meetings disconnected due to inactivity
435
+ * @returns {undefined}
436
+ * @private
437
+ * @memberof Meeting
438
+ */
439
+ private setUpLocusInfoMediaInactiveListener;
440
+ /**
441
+ * Set up the locus info listener for assign host permissions on a meeting
442
+ * @returns {undefined}
443
+ * @private
444
+ * @memberof Meeting
445
+ */
446
+ private setUpLocusInfoAssignHostListener;
447
+ /**
448
+ * Set up the internal locus info full state object listener
449
+ * @returns {undefined}
450
+ * @private
451
+ * @memberof Meeting
452
+ */
453
+ private setUpLocusFullStateListener;
454
+ /**
455
+ * get the metrics payload pre
456
+ * @param {Object} options
457
+ * @param {String} options.event
458
+ * @param {String} options.trackingId
459
+ * @param {Object} options.locus
460
+ * @param {Array} options.mediaConnections
461
+ * @param {Object} options.errors
462
+ * @returns {Object}
463
+ * @memberof Meeting
464
+ */
465
+ getAnalyzerMetricsPrePayload(options: {
466
+ event: string;
467
+ trackingId: string;
468
+ locus: object;
469
+ mediaConnections: Array<any>;
470
+ errors: object;
471
+ } | any): {};
472
+ /**
473
+ * Send the metrics to call-analyzer dashboard
474
+ * @param {Object} options
475
+ * @param {String} options.event
476
+ * @param {String} options.trackingId
477
+ * @param {Object} options.locus
478
+ * @param {Object} options.errors
479
+ * @returns {Promise}
480
+ * @private
481
+ * @memberof Meeting
482
+ */
483
+ private sendCallAnalyzerMetrics;
484
+ /**
485
+ * Send the metrics to Media Quality Analyzer dashboard
486
+ * @param {Object} options
487
+ * @param {String} options.event
488
+ * @param {String} options.trackingId
489
+ * @param {Object} options.locus
490
+ * @returns {Promise}
491
+ * @private
492
+ * @memberof Meeting
493
+ */
494
+ private sendMediaQualityAnalyzerMetrics;
495
+ /**
496
+ * sets the network status on meeting object
497
+ * @param {String} networkStatus
498
+ * @private
499
+ * @returns {undefined}
500
+ * @memberof Meeting
501
+ */
502
+ private setNetworkStatus;
503
+ /**
504
+ * Set up the locus info self listener
505
+ * update self value for members and updates the member
506
+ * notifies consumer with members:self:update {activeSelfId endedSelfId}
507
+ * @returns {undefined}
508
+ * @private
509
+ * @memberof Meeting
510
+ */
511
+ private setUpLocusSelfListener;
512
+ /**
513
+ * Notify any changes on the pstn devices
514
+ * @param {Object} payload
515
+ * @returns {undefined}
516
+ * @private
517
+ * @memberof Meeting
518
+ */
519
+ private pstnUpdate;
520
+ /**
521
+ * Set up the locus info host listener
522
+ * update host value for members and updates the member
523
+ * notifies consumer with members:host:update: {activeHostId, endedHostId}
524
+ * @returns {undefined}
525
+ * @private
526
+ * @memberof Meeting
527
+ */
528
+ private setUpLocusHostListener;
529
+ /**
530
+ * Set up the locus info participants update listener
531
+ * update members collection value for members
532
+ * notifies consumer with members:update
533
+ * @returns {undefined}
534
+ * @private
535
+ * @memberof Meeting
536
+ */
537
+ private setUpLocusParticipantsListener;
538
+ /**
539
+ * Set up the locus info recording update listener
540
+ * update recording value for the meeting
541
+ * notifies consumer with:
542
+ * meeting:recording:started
543
+ * meeting:recording:stopped
544
+ * meeting:recording:paused
545
+ * meeting:recording:resumed
546
+ *
547
+ * Set up the locus info meeeting container listener
548
+ * update meetingContainerUrl value for the meeting
549
+ * notifies consumer with:
550
+ * meeting:meetingContainer:update
551
+ *
552
+ * @returns {undefined}
553
+ * @private
554
+ * @memberof Meeting
555
+ */
556
+ private setupLocusControlsListener;
557
+ /**
558
+ * Set up the locus info media shares listener
559
+ * update content and whiteboard sharing id value for members, and updates the member
560
+ * notifies consumer with members:content:update {activeContentSharingId, endedContentSharingId}
561
+ * @returns {undefined}
562
+ * @private
563
+ * @memberof Meeting
564
+ */
565
+ private setUpLocusMediaSharesListener;
566
+ /**
567
+ * Set up the locus info url listener
568
+ * update locus_url value for members
569
+ * @returns {undefined}
570
+ * @private
571
+ * @memberof Meeting
572
+ */
573
+ private setUpLocusUrlListener;
574
+ /**
575
+ * Set up the locus info service link listener
576
+ * update the locusInfo for recording controller
577
+ * does not currently re-emit the event as it's internal only
578
+ * payload is unused
579
+ * @returns {undefined}
580
+ * @private
581
+ * @memberof Meeting
582
+ */
583
+ private setUpLocusServicesListener;
584
+ /**
585
+ * Set up the locus info meeting info listener
586
+ * @returns {undefined}
587
+ * @private
588
+ * @memberof meeting
589
+ */
590
+ private setUpLocusInfoMeetingInfoListener;
591
+ /**
592
+ * Handles a data channel URL change
593
+ * @param {String} datachannelUrl
594
+ * @returns {void}
595
+ */
596
+ handleDataChannelUrlChange(datachannelUrl: any): void;
597
+ /**
598
+ * Set up the locus info embedded apps listener
599
+ * @returns {undefined}
600
+ * @private
601
+ * @memberof meeting
602
+ */
603
+ private setUpLocusEmbeddedAppsListener;
604
+ /**
605
+ * Internal function to listen to the self object changes
606
+ * @returns {undefined}
607
+ * @private
608
+ * @memberof Meeting
609
+ */
610
+ private setUpLocusInfoSelfListener;
611
+ /**
612
+ * Add LocusInfo nested object listeners (from child to parent)
613
+ * @returns {undefined}
614
+ * @private
615
+ * @memberof Meeting
616
+ */
617
+ private setUpLocusInfoMeetingListener;
618
+ /**
619
+ * Set meeting values rather than events
620
+ * @param {Object} object
621
+ * @returns {undefined}
622
+ * @private
623
+ * @memberof Meeting
624
+ * // TODO: is this function necessary?
625
+ */
626
+ private updateMeetingObject;
627
+ /**
628
+ * Invite a guest to the call that isn't normally part of this call
629
+ * @param {Object} invitee
630
+ * @param {String} invitee.emailAddress
631
+ * @param {String} invitee.email
632
+ * @param {String} invitee.phoneNumber
633
+ * @param {Boolean} [alertIfActive]
634
+ * @returns {Promise} see #members.addMember
635
+ * @public
636
+ * @memberof Meeting
637
+ */
638
+ invite(invitee: {
639
+ emailAddress: string;
640
+ email: string;
641
+ phoneNumber: string;
642
+ }, alertIfActive?: boolean): any;
643
+ /**
644
+ * Cancel an outgoing phone call invitation made during a meeting
645
+ * @param {Object} invitee
646
+ * @param {String} invitee.phoneNumber
647
+ * @returns {Promise} see #members.cancelPhoneInvite
648
+ * @public
649
+ * @memberof Meeting
650
+ */
651
+ cancelPhoneInvite(invitee: {
652
+ phoneNumber: string;
653
+ }): any;
654
+ /**
655
+ * Admit the guest(s) to the call once they are waiting
656
+ * @param {Array} memberIds
657
+ * @returns {Promise} see #members.admitMembers
658
+ * @public
659
+ * @memberof Meeting
660
+ */
661
+ admit(memberIds: Array<any>): any;
662
+ /**
663
+ * Remove the member from the meeting, boot them
664
+ * @param {String} memberId
665
+ * @returns {Promise} see #members.removeMember
666
+ * @public
667
+ * @memberof Meeting
668
+ */
669
+ remove(memberId: string): any;
670
+ /**
671
+ * Mute another member from the meeting
672
+ * @param {String} memberId
673
+ * @param {Boolean} mute
674
+ * @returns {Promise} see #members.muteMember
675
+ * @public
676
+ * @memberof Meeting
677
+ */
678
+ mute(memberId: string, mute?: boolean): any;
679
+ /**
680
+ * Transfer the moderator role to another eligible member
681
+ * @param {String} memberId
682
+ * @param {Boolean} moderator
683
+ * @returns {Promise} see #members.transferHostToMember
684
+ * @public
685
+ * @memberof Meeting
686
+ */
687
+ transfer(memberId: string, moderator?: boolean): any;
688
+ /**
689
+ * Reference to the Members object
690
+ * @returns {Members}
691
+ * @public
692
+ * @memberof Meeting
693
+ */
694
+ getMembers(): Members;
695
+ /**
696
+ * Truthy when a meeting has an audio connection established
697
+ * @returns {Boolean} true if meeting audio is connected otherwise false
698
+ * @public
699
+ * @memberof Meeting
700
+ */
701
+ isAudioConnected(): boolean;
702
+ /**
703
+ * Convenience function to tell whether a meeting is muted
704
+ * @returns {Boolean} if meeting audio muted or not
705
+ * @public
706
+ * @memberof Meeting
707
+ */
708
+ isAudioMuted(): any;
709
+ /**
710
+ * Convenience function to tell if the end user last changed the audio state
711
+ * @returns {Boolean} if audio was manipulated by the end user
712
+ * @public
713
+ * @memberof Meeting
714
+ */
715
+ isAudioSelf(): any;
716
+ /**
717
+ * Truthy when a meeting has a video connection established
718
+ * @returns {Boolean} true if meeting video connected otherwise false
719
+ * @public
720
+ * @memberof Meeting
721
+ */
722
+ isVideoConnected(): boolean;
723
+ /**
724
+ * Convenience function to tell whether video is muted
725
+ * @returns {Boolean} if meeting video is muted or not
726
+ * @public
727
+ * @memberof Meeting
728
+ */
729
+ isVideoMuted(): any;
730
+ /**
731
+ * Convenience function to tell whether the end user changed the video state
732
+ * @returns {Boolean} if meeting video is muted or not
733
+ * @public
734
+ * @memberof Meeting
735
+ */
736
+ isVideoSelf(): any;
737
+ /**
738
+ * Sets the meeting info on the class instance
739
+ * @param {Object} meetingInfo
740
+ * @param {Object} meetingInfo.body
741
+ * @param {String} meetingInfo.body.conversationUrl
742
+ * @param {String} meetingInfo.body.locusUrl
743
+ * @param {String} meetingInfo.body.sipUri
744
+ * @param {Object} meetingInfo.body.owner
745
+ * @param {Object | String} destination locus object with meeting data or destination string (sip url, meeting link, etc)
746
+ * @returns {undefined}
747
+ * @private
748
+ * @memberof Meeting
749
+ */
750
+ parseMeetingInfo(meetingInfo: {
751
+ body: {
752
+ conversationUrl: string;
753
+ locusUrl: string;
754
+ sipUri: string;
755
+ owner: object;
756
+ };
757
+ } | any, destination?: object | string | null): void;
758
+ /**
759
+ * Sets the first locus info on the class instance
760
+ * @param {Object} locus
761
+ * @param {String} locus.url
762
+ * @param {Array} locus.participants
763
+ * @param {Object} locus.self
764
+ * @returns {undefined}
765
+ * @private
766
+ * @memberof Meeting
767
+ */
768
+ private parseLocus;
769
+ /**
770
+ * Sets the sip uri on the class instance
771
+ * uses meeting info as precedence
772
+ * @param {String} sipUri
773
+ * @returns {undefined}
774
+ * @private
775
+ * @memberof Meeting
776
+ */
777
+ setSipUri(sipUri: string): void;
778
+ /**
779
+ * Set the locus info the class instance
780
+ * @param {Object} locus
781
+ * @param {Array} locus.mediaConnections
782
+ * @param {String} locus.locusUrl
783
+ * @param {String} locus.locusId
784
+ * @param {String} locus.mediaId
785
+ * @param {Object} locus.host
786
+ * @todo change name to genertic parser
787
+ * @returns {undefined}
788
+ * @private
789
+ * @memberof Meeting
790
+ */
791
+ private setLocus;
792
+ /**
793
+ * Upload logs for the current meeting
794
+ * @param {object} options file name and function name
795
+ * @returns {undefined}
796
+ * @public
797
+ * @memberof Meeting
798
+ */
799
+ uploadLogs(options?: object): void;
800
+ /**
801
+ * Removes remote audio and video stream on the class instance and triggers an event
802
+ * to developers
803
+ * @returns {undefined}
804
+ * @public
805
+ * @memberof Meeting
806
+ * @deprecated after v1.89.3
807
+ */
808
+ unsetRemoteStream(): void;
809
+ /**
810
+ * Removes remote audio, video and share tracks from class instance's mediaProperties
811
+ * @returns {undefined}
812
+ */
813
+ unsetRemoteTracks(): void;
814
+ /**
815
+ * Removes the remote stream on the class instance and triggers an event
816
+ * to developers
817
+ * @returns {undefined}
818
+ * @public
819
+ * @memberof Meeting
820
+ * @deprecated after v1.89.3
821
+ */
822
+ closeRemoteStream(): void;
823
+ /**
824
+ * Removes the remote tracks on the class instance and triggers an event
825
+ * to developers
826
+ * @returns {undefined}
827
+ * @memberof Meeting
828
+ */
829
+ closeRemoteTracks(): Promise<[any, any, any]>;
830
+ /**
831
+ * Emits the 'media:ready' event with a local stream that consists of 1 local audio and 1 local video track
832
+ * @returns {undefined}
833
+ * @private
834
+ * @memberof Meeting
835
+ */
836
+ private sendLocalMediaReadyEvent;
837
+ /**
838
+ * Sets the local audio track on the class and emits an event to the developer
839
+ * @param {MediaStreamTrack} audioTrack
840
+ * @param {Boolean} emitEvent if true, a media ready event is emitted to the developer
841
+ * @returns {undefined}
842
+ * @private
843
+ * @memberof Meeting
844
+ */
845
+ private setLocalAudioTrack;
846
+ /**
847
+ * Sets the local video track on the class and emits an event to the developer
848
+ * @param {MediaStreamTrack} videoTrack
849
+ * @param {Boolean} emitEvent if true, a media ready event is emitted to the developer
850
+ * @returns {undefined}
851
+ * @private
852
+ * @memberof Meeting
853
+ */
854
+ private setLocalVideoTrack;
855
+ /**
856
+ * Sets the local media stream on the class and emits an event to the developer
857
+ * @param {Stream} localStream the local media stream
858
+ * @returns {undefined}
859
+ * @public
860
+ * @memberof Meeting
861
+ */
862
+ setLocalTracks(localStream: any): void;
863
+ /**
864
+ * Sets the local media stream on the class and emits an event to the developer
865
+ * @param {MediaStreamTrack} localShareTrack the local media stream
866
+ * @returns {undefined}
867
+ * @public
868
+ * @memberof Meeting
869
+ */
870
+ setLocalShareTrack(localShareTrack: MediaStreamTrack): void;
871
+ /**
872
+ * Closes the local stream from the class and emits an event to the developer
873
+ * @returns {undefined}
874
+ * @event media:stopped
875
+ * @public
876
+ * @memberof Meeting
877
+ */
878
+ closeLocalStream(): any;
879
+ /**
880
+ * Closes the local stream from the class and emits an event to the developer
881
+ * @returns {undefined}
882
+ * @event media:stopped
883
+ * @public
884
+ * @memberof Meeting
885
+ */
886
+ closeLocalShare(): any;
887
+ /**
888
+ * Removes the local stream from the class and emits an event to the developer
889
+ * @returns {undefined}
890
+ * @public
891
+ * @memberof Meeting
892
+ */
893
+ unsetLocalVideoTrack(): void;
894
+ /**
895
+ * Removes the local share from the class and emits an event to the developer
896
+ * @returns {undefined}
897
+ * @public
898
+ * @memberof Meeting
899
+ */
900
+ unsetLocalShareTrack(): void;
901
+ /**
902
+ * sets up listner for mercury event
903
+ * @returns {undefined}
904
+ * @public
905
+ * @memberof Meeting
906
+ */
907
+ setMercuryListener(): void;
908
+ /**
909
+ * Close the peer connections and remove them from the class.
910
+ * Cleanup any media connection related things.
911
+ *
912
+ * @returns {Promise}
913
+ * @public
914
+ * @memberof Meeting
915
+ */
916
+ closePeerConnections(): Promise<void>;
917
+ /**
918
+ * Unsets the peer connections on the class
919
+ * warning DO NOT CALL WITHOUT CLOSING PEER CONNECTIONS FIRST
920
+ * @returns {undefined}
921
+ * @public
922
+ * @memberof Meeting
923
+ */
924
+ unsetPeerConnections(): void;
925
+ /**
926
+ * Convenience method to set the correlation id for the Meeting
927
+ * @param {String} id correlation id to set on the class
928
+ * @returns {undefined}
929
+ * @private
930
+ * @memberof Meeting
931
+ */
932
+ private setCorrelationId;
933
+ /**
934
+ * Mute the audio for a meeting
935
+ * @returns {Promise} resolves the data from muting audio {mute, self} or rejects if there is no audio set
936
+ * @public
937
+ * @memberof Meeting
938
+ */
939
+ muteAudio(): any;
940
+ /**
941
+ * Unmute meeting audio
942
+ * @returns {Promise} resolves data from muting audio {mute, self} or rejects if there is no audio set
943
+ * @public
944
+ * @memberof Meeting
945
+ */
946
+ unmuteAudio(): any;
947
+ /**
948
+ * Mute the video for a meeting
949
+ * @returns {Promise} resolves data from muting video {mute, self} or rejects if there is no video set
950
+ * @public
951
+ * @memberof Meeting
952
+ */
953
+ muteVideo(): any;
954
+ /**
955
+ * Unmute meeting video
956
+ * @returns {Promise} resolves data from muting video {mute, self} or rejects if there is no video set
957
+ * @public
958
+ * @memberof Meeting
959
+ */
960
+ unmuteVideo(): any;
961
+ /**
962
+ * Shorthand function to join AND set up media
963
+ * @param {Object} options - options to join with media
964
+ * @param {JoinOptions} [options.joinOptions] - see #join()
965
+ * @param {MediaDirection} options.mediaSettings - see #addMedia()
966
+ * @param {AudioVideo} [options.audioVideoOptions] - see #getMediaStreams()
967
+ * @returns {Promise} -- {join: see join(), media: see addMedia(), local: see getMediaStreams()}
968
+ * @public
969
+ * @memberof Meeting
970
+ * @example
971
+ * joinWithMedia({
972
+ * joinOptions: {resourceId: 'resourceId' },
973
+ * mediaSettings: {
974
+ * sendAudio: true,
975
+ * sendVideo: true,
976
+ * sendShare: false,
977
+ * receiveVideo:true,
978
+ * receiveAudio: true,
979
+ * receiveShare: true
980
+ * }
981
+ * audioVideoOptions: {
982
+ * audio: 'audioDeviceId',
983
+ * video: 'videoDeviceId'
984
+ * }})
985
+ */
986
+ joinWithMedia(options?: {
987
+ joinOptions?: any;
988
+ mediaSettings: any;
989
+ audioVideoOptions?: any;
990
+ }): any;
991
+ /**
992
+ * Initiates the reconnection of the media in the meeting
993
+ *
994
+ * @param {object} options
995
+ * @returns {Promise} resolves with {reconnect} or errors with {error}
996
+ * @public
997
+ * @memberof Meeting
998
+ */
999
+ reconnect(options?: object): any;
1000
+ /**
1001
+ * Check if the meeting supports the Webex Assistant feature
1002
+ * @returns {boolean}
1003
+ * @throws TranscriptionNotSupportedError
1004
+ */
1005
+ isTranscriptionSupported(): boolean;
1006
+ /**
1007
+ * Check if the meeting supports the Reactions
1008
+ * @returns {boolean}
1009
+ */
1010
+ isReactionsSupported(): boolean;
1011
+ /**
1012
+ * Monitor the Low-Latency Mercury (LLM) web socket connection on `onError` and `onClose` states
1013
+ * @private
1014
+ * @returns {void}
1015
+ */
1016
+ private monitorTranscriptionSocketConnection;
1017
+ /**
1018
+ * Request for a WebSocket Url, open and monitor the WebSocket connection
1019
+ * @private
1020
+ * @returns {Promise<void>} a promise to open the WebSocket connection
1021
+ */
1022
+ private receiveTranscription;
1023
+ /**
1024
+ * Callback called when a relay event is received from meeting LLM Connection
1025
+ * @param {RelayEvent} e Event object coming from LLM Connection
1026
+ * @private
1027
+ * @returns {void}
1028
+ */
1029
+ private processRelayEvent;
1030
+ /**
1031
+ * stop recieving Transcription by closing
1032
+ * the web socket connection properly
1033
+ * @returns {void}
1034
+ */
1035
+ stopReceivingTranscription(): void;
1036
+ /**
1037
+ * triggers an event to notify that the user
1038
+ * will not receive any more transcription
1039
+ * @private
1040
+ * @returns{void}
1041
+ */
1042
+ private triggerStopReceivingTranscriptionEvent;
1043
+ /**
1044
+ * Specify joining via audio (option: pstn), video, screenshare
1045
+ * @param {JoinOptions} options A configurable options object for joining a meeting
1046
+ * @returns {Promise} the join response
1047
+ * @public
1048
+ * @memberof Meeting
1049
+ * Scenario A: Joining own claimed personal meeting room
1050
+ * Scenario B: Joining other's claimed personal meeting room, do pass pin (if desired to join as host, or nullify), do pass moderator
1051
+ * Scenario C: Joining an unclaimed personal meeting room, -do not- pass pin or moderator on first try, -do- pass pin and moderator
1052
+ * if joining as host on second loop, pass pin and pass moderator if joining as guest on second loop
1053
+ * Scenario D: Joining any other way (sip, pstn, conversationUrl, link just need to specify resourceId)
1054
+ */
1055
+ join(options?: any): any;
1056
+ /**
1057
+ * Connects to low latency mercury and reconnects if the address has changed
1058
+ * It will also disconnect if called when the meeting has ended
1059
+ * @param {String} datachannelUrl
1060
+ * @returns {Promise}
1061
+ */
1062
+ updateLLMConnection(): Promise<any>;
1063
+ /**
1064
+ * Use phone for meeting audio
1065
+ * @param {String} phoneNumber If provided, it will dial-out using this number. If not provided, dial-in will be used
1066
+ * @returns {Promise} Resolves once the dial-in or dial-out request has completed, or rejects if it failed
1067
+ * @public
1068
+ * @memberof Meeting
1069
+ */
1070
+ usePhoneAudio(phoneNumber: string): any;
1071
+ /**
1072
+ * Determines if the given pstnStatus is in a state which implies the phone is provisioned
1073
+ * @param {String} pstnStatus
1074
+ * @returns {Boolean}
1075
+ * @private
1076
+ * @memberof Meeting
1077
+ */
1078
+ private isPhoneProvisioned;
1079
+ /**
1080
+ * Enable dial-in for audio
1081
+ * @returns {Promise} Resolves once the dial-in request has completed, or rejects if it failed
1082
+ * @private
1083
+ * @memberof Meeting
1084
+ */
1085
+ private dialInPstn;
1086
+ /**
1087
+ * Enable dial-out for audio
1088
+ * @param {String} phoneNumber Phone number to dial out to
1089
+ * @returns {Promise} Resolves once the dial-out request has completed (it doesn't wait for the user to answer the phone), or rejects if it failed
1090
+ * @private
1091
+ * @memberof Meeting
1092
+ */
1093
+ private dialOutPstn;
1094
+ /**
1095
+ * Disconnect meeting audio via phone.
1096
+ * @returns {Promise} Resolves once the phone audio disconnection has completed
1097
+ * @public
1098
+ * @memberof Meeting
1099
+ * @returns {Promise}
1100
+ */
1101
+ disconnectPhoneAudio(): Promise<[any, any]>;
1102
+ /**
1103
+ * Moves the call to the specified resourceId
1104
+ * @param {String} resourceId
1105
+ * @returns {Promise} once the move has been completed
1106
+ * @public
1107
+ * @memberof Meeting
1108
+ */
1109
+ moveTo(resourceId: string): any;
1110
+ /**
1111
+ * Moves the call from the specified resourceId, back to computer
1112
+ * @param {String} resourceId
1113
+ * @returns {Promise} once the move has been completed
1114
+ * @public
1115
+ * @memberof Meeting
1116
+ */
1117
+ moveFrom(resourceId: string): any;
1118
+ /**
1119
+ * Get local media streams based on options passed
1120
+ *
1121
+ * NOTE: this method can only be used with transcoded meetings, not with multistream meetings
1122
+ *
1123
+ * @param {MediaDirection} mediaDirection A configurable options object for joining a meeting
1124
+ * @param {AudioVideo} [audioVideo] audio/video object to set audioinput and videoinput devices, see #Media.getUserMedia
1125
+ * @param {SharePreferences} [sharePreferences] audio/video object to set audioinput and videoinput devices, see #Media.getUserMedia
1126
+ * @returns {Promise} see #Media.getUserMedia
1127
+ * @public
1128
+ * @todo should be static, or moved so can be called outside of a meeting
1129
+ * @memberof Meeting
1130
+ */
1131
+ getMediaStreams: (mediaDirection: any, audioVideo?: any, sharePreferences?: any) => any;
1132
+ /**
1133
+ * Checks if the machine has at least one audio or video device
1134
+ * @param {Object} options
1135
+ * @param {Boolean} options.sendAudio
1136
+ * @param {Boolean} options.sendVideo
1137
+ * @returns {Object}
1138
+ * @memberof Meetings
1139
+ */
1140
+ getSupportedDevices: ({ sendAudio, sendVideo, }: {
1141
+ sendAudio: boolean;
1142
+ sendVideo: boolean;
1143
+ }) => any;
1144
+ /**
1145
+ * Get the devices from the Media module
1146
+ * @returns {Promise} resolves to an array of DeviceInfo
1147
+ * @memberof Meetings
1148
+ */
1149
+ getDevices: () => any;
1150
+ /**
1151
+ * Handles ROAP_FAILURE event from the webrtc media connection
1152
+ *
1153
+ * @param {Error} error
1154
+ * @returns {void}
1155
+ */
1156
+ handleRoapFailure: (error: any) => void;
1157
+ setupMediaConnectionListeners: () => void;
1158
+ /**
1159
+ * Registers for all required StatsAnalyzer events
1160
+ * @private
1161
+ * @returns {void}
1162
+ * @memberof Meetings
1163
+ */
1164
+ setupStatsAnalyzerEventHandlers: () => void;
1165
+ getMediaConnectionDebugId(): string;
1166
+ createMediaConnection(turnServerInfo: any): any;
1167
+ /**
1168
+ * Listens for an event emitted by eventEmitter and emits it from the meeting object
1169
+ *
1170
+ * @private
1171
+ * @param {*} eventEmitter object from which to forward the event
1172
+ * @param {*} eventTypeToForward which event type to listen on and to forward
1173
+ * @param {string} meetingEventType event type to be used in the event emitted from the meeting object
1174
+ * @returns {void}
1175
+ */
1176
+ forwardEvent(eventEmitter: any, eventTypeToForward: any, meetingEventType: any): void;
1177
+ /**
1178
+ * Specify joining via audio (option: pstn), video, screenshare
1179
+ * @param {Object} options A configurable options object for joining a meeting
1180
+ * @param {Object} options.resourceId pass the deviceId
1181
+ * @param {MediaDirection} options.mediaSettings pass media options
1182
+ * @param {MediaStream} options.localStream
1183
+ * @param {MediaStream} options.localShare
1184
+ * @param {RemoteMediaManagerConfig} options.remoteMediaManagerConfig only applies if multistream is enabled
1185
+ * @returns {Promise}
1186
+ * @public
1187
+ * @memberof Meeting
1188
+ */
1189
+ addMedia(options?: any): any;
1190
+ /**
1191
+ * Informs if the peer connection is in a state that can be updated with updateMedia (audio/video/share)
1192
+ * @returns {Boolean}
1193
+ */
1194
+ canUpdateMedia(): boolean;
1195
+ /**
1196
+ * Enqueues a media update operation.
1197
+ * @param {String} mediaUpdateType one of MEDIA_UPDATE_TYPE values
1198
+ * @param {Object} options
1199
+ * @returns {Promise}
1200
+ * @private
1201
+ * @memberof Meeting
1202
+ */
1203
+ private enqueueMediaUpdate;
1204
+ /**
1205
+ * emits event when the negotation is completed
1206
+ * @returns {void}
1207
+ * @private
1208
+ * @memberof Meeting
1209
+ */
1210
+ mediaNegotiatedEvent: () => void;
1211
+ /**
1212
+ * Checks if there are any queued media updates and runs the first one from
1213
+ * the queue if we are in a state that allows doing that.
1214
+ * @returns {undefined}
1215
+ * @public
1216
+ * @memberof Meeting
1217
+ */
1218
+ processNextQueuedMediaUpdate: () => void;
1219
+ /**
1220
+ * A confluence of updateAudio, updateVideo, and updateShare
1221
+ * this function re-establishes all of the media streams with new options
1222
+ * @param {Object} options
1223
+ * @param {MediaStream} options.localStream
1224
+ * @param {MediaStream} options.localShare
1225
+ * @param {MediaDirection} options.mediaSettings
1226
+ * @returns {Promise}
1227
+ * @public
1228
+ * @memberof Meeting
1229
+ */
1230
+ updateMedia(options?: {
1231
+ localStream?: MediaStream;
1232
+ localShare?: MediaStream;
1233
+ mediaSettings?: any;
1234
+ }): any;
1235
+ /**
1236
+ * Update the main audio track with new parameters
1237
+ *
1238
+ * NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
1239
+ *
1240
+ * @param {Object} options
1241
+ * @param {boolean} options.sendAudio
1242
+ * @param {boolean} options.receiveAudio
1243
+ * @param {MediaStream} options.stream Stream that contains the audio track to update
1244
+ * @returns {Promise}
1245
+ * @public
1246
+ * @memberof Meeting
1247
+ */
1248
+ updateAudio(options: {
1249
+ sendAudio: boolean;
1250
+ receiveAudio: boolean;
1251
+ stream: MediaStream;
1252
+ }): Promise<any>;
1253
+ /**
1254
+ * Update the main video track with new parameters
1255
+ *
1256
+ * NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
1257
+ *
1258
+ * @param {Object} options
1259
+ * @param {boolean} options.sendVideo
1260
+ * @param {boolean} options.receiveVideo
1261
+ * @param {MediaStream} options.stream Stream that contains the video track to update
1262
+ * @returns {Promise}
1263
+ * @public
1264
+ * @memberof Meeting
1265
+ */
1266
+ updateVideo(options: {
1267
+ sendVideo: boolean;
1268
+ receiveVideo: boolean;
1269
+ stream: MediaStream;
1270
+ }): any;
1271
+ /**
1272
+ * Internal function when stopping a share stream, cleanup
1273
+ * @param {boolean} sendShare
1274
+ * @param {boolean} previousShareStatus
1275
+ * @returns {Promise}
1276
+ * @private
1277
+ * @memberof Meeting
1278
+ */
1279
+ private checkForStopShare;
1280
+ /**
1281
+ * Update the share streams, can be used to start sharing
1282
+ *
1283
+ * NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
1284
+ *
1285
+ * @param {Object} options
1286
+ * @param {boolean} options.sendShare
1287
+ * @param {boolean} options.receiveShare
1288
+ * @returns {Promise}
1289
+ * @public
1290
+ * @memberof Meeting
1291
+ */
1292
+ updateShare(options: {
1293
+ sendShare?: boolean;
1294
+ receiveShare?: boolean;
1295
+ stream?: any;
1296
+ skipSignalingCheck?: boolean;
1297
+ }): any;
1298
+ /**
1299
+ * Do all the attach media pre set up before executing the actual attach
1300
+ * @param {MediaStream} localStream
1301
+ * @param {MediaStream} localShare
1302
+ * @param {MediaDirection} mediaSettings
1303
+ * @returns {undefined}
1304
+ * @private
1305
+ * @memberof Meeting
1306
+ */
1307
+ private preMedia;
1308
+ /**
1309
+ * Acknowledge the meeting, outgoing or incoming
1310
+ * @param {String} type
1311
+ * @returns {Promise} resolve {message, ringing, response}
1312
+ * @public
1313
+ * @memberof Meeting
1314
+ */
1315
+ acknowledge(type: string): any;
1316
+ /**
1317
+ * Decline this meeting
1318
+ * @param {String} reason
1319
+ * @returns {undefined}
1320
+ * @public
1321
+ * @memberof Meeting
1322
+ */
1323
+ decline(reason: string): any;
1324
+ /**
1325
+ * Leave the current meeting
1326
+ * @param {Object} options leave options
1327
+ * @param {String} options.resourceId the device with which to leave from, empty if just the computer
1328
+ * @returns {Promise}
1329
+ * @public
1330
+ * @memberof Meeting
1331
+ */
1332
+ leave(options?: {
1333
+ resourceId?: string;
1334
+ reason?: any;
1335
+ }): any;
1336
+ /**
1337
+ * Start sharing whiteboard given channelUrl
1338
+ * @param {string} channelUrl whiteboard url
1339
+ * @param {String} resourceToken token created by authorize media injector
1340
+ * @returns {Promise}
1341
+ * @public
1342
+ * @memberof Meeting
1343
+ */
1344
+ startWhiteboardShare(channelUrl: string, resourceToken: string): any;
1345
+ /**
1346
+ * Stop sharing whiteboard given channelUrl
1347
+ * @param {string} channelUrl whiteboard url
1348
+ * @returns {Promise}
1349
+ * @public
1350
+ * @memberof Meeting
1351
+ */
1352
+ stopWhiteboardShare(channelUrl: string): any;
1353
+ /**
1354
+ * Sends a request to Locus to obtain the screen share floor
1355
+ * @returns {Promise} see #meetingRequest.changeMeetingFloor
1356
+ * @private
1357
+ * @memberof Meeting
1358
+ */
1359
+ private requestScreenShareFloor;
1360
+ /**
1361
+ * Stops the screen share
1362
+ * @returns {Promise} see #updateShare
1363
+ * @public
1364
+ * @memberof Meeting
1365
+ */
1366
+ stopShare(options?: {}): any;
1367
+ /**
1368
+ * Sends a request to Locus to release the screen share floor.
1369
+ * @returns {Promise} see #meetingRequest.changeMeetingFloor
1370
+ * @private
1371
+ * @memberof Meeting
1372
+ */
1373
+ private releaseScreenShareFloor;
1374
+ /**
1375
+ * Intiate a recording of this meeting
1376
+ * @returns {Promise}
1377
+ * @public
1378
+ * @memberof Meeting
1379
+ */
1380
+ startRecording(): Promise<any>;
1381
+ /**
1382
+ * End the recording of this meeting
1383
+ * @returns {Promise}
1384
+ * @public
1385
+ * @memberof Meeting
1386
+ */
1387
+ stopRecording(): Promise<any>;
1388
+ /**
1389
+ * Pauses the recording of this meeting
1390
+ * @returns {Promise}
1391
+ * @public
1392
+ * @memberof Meeting
1393
+ */
1394
+ pauseRecording(): Promise<any>;
1395
+ /**
1396
+ * Resumes the recording of this meeting
1397
+ * @returns {Promise}
1398
+ * @public
1399
+ * @memberof Meeting
1400
+ */
1401
+ resumeRecording(): Promise<any>;
1402
+ /**
1403
+ * Locks the current meeting if possible
1404
+ * @returns {Promise}
1405
+ * @public
1406
+ * @memberof Meeting
1407
+ */
1408
+ lockMeeting(): any;
1409
+ /**
1410
+ * Unlocks the current meeting if possible
1411
+ * @returns {Promise}
1412
+ * @public
1413
+ * @memberof Meeting
1414
+ */
1415
+ unlockMeeting(): any;
1416
+ /**
1417
+ * Logs an error message and returns a rejected promise with same message
1418
+ * @param {String} message
1419
+ * @returns {Promise}
1420
+ * @private
1421
+ * @memberof Meeting
1422
+ */
1423
+ private rejectWithErrorLog;
1424
+ /**
1425
+ * Sends DTMF tones to the current meeting
1426
+ * @param {String} tones a string of one or more DTMF tones to send
1427
+ * @returns {Promise}
1428
+ * @public
1429
+ * @memberof Meeting
1430
+ */
1431
+ sendDTMF(tones: string): any;
1432
+ /**
1433
+ * Sends request to change layout type for the current meeting for the specific participant/device only
1434
+ * @param {String} [layoutType] a layout type that should be available in meeting constants {@link #layout_types}
1435
+ * @param {Object} renderInfo preferred dimensions for the remote main and content streams (server can ignore it)
1436
+ * @param {Object} renderInfo.main preferred dimensions for the remote main video stream
1437
+ * @param {Number} renderInfo.main.width preferred width of main video stream
1438
+ * @param {Number} renderInfo.main.height preferred height of main video stream
1439
+ * @param {Object} renderInfo.content preferred dimensions for the remote content share stream
1440
+ * @param {Number} renderInfo.content.width preferred width of content share stream
1441
+ * @param {Number} renderInfo.content.height preferred height of content share stream
1442
+ * @returns {Promise}
1443
+ * @public
1444
+ * @memberof Meeting
1445
+ */
1446
+ changeVideoLayout(layoutType?: string, renderInfo?: {
1447
+ main: {
1448
+ width: number;
1449
+ height: number;
1450
+ };
1451
+ content: {
1452
+ width: number;
1453
+ height: number;
1454
+ };
1455
+ }): any;
1456
+ /**
1457
+ * Sets the quality of the local video stream
1458
+ * @param {String} level {LOW|MEDIUM|HIGH}
1459
+ * @returns {Promise<MediaStream>} localStream
1460
+ */
1461
+ setLocalVideoQuality(level: string): any;
1462
+ /**
1463
+ * Sets the quality level of the remote incoming media
1464
+ * @param {String} level {LOW|MEDIUM|HIGH}
1465
+ * @returns {Promise}
1466
+ */
1467
+ setRemoteQualityLevel(level: string): any;
1468
+ /**
1469
+ * This is deprecated, please use setLocalVideoQuality for setting local and setRemoteQualityLevel for remote
1470
+ * @param {String} level {LOW|MEDIUM|HIGH}
1471
+ * @returns {Promise}
1472
+ * @deprecated After FHD support
1473
+ */
1474
+ setMeetingQuality(level: string): any;
1475
+ /**
1476
+ *
1477
+ * NOTE: this method can only be used with transcoded meetings, for multistream use publishTrack()
1478
+ *
1479
+ * @param {Object} options parameter
1480
+ * @param {Boolean} options.sendAudio send audio from the display share
1481
+ * @param {Boolean} options.sendShare send video from the display share
1482
+ * @param {Object} options.sharePreferences
1483
+ * @param {MediaTrackConstraints} options.sharePreferences.shareConstraints constraints to apply to video
1484
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints}
1485
+ * @param {Boolean} options.sharePreferences.highFrameRate if shareConstraints isn't provided, set default values based off of this boolean
1486
+ * @returns {Promise}
1487
+ */
1488
+ shareScreen(options?: {
1489
+ sendAudio: boolean;
1490
+ sendShare: boolean;
1491
+ sharePreferences: {
1492
+ shareConstraints: MediaTrackConstraints;
1493
+ };
1494
+ }): any;
1495
+ /**
1496
+ * Functionality for when a share is ended.
1497
+ * @private
1498
+ * @memberof Meeting
1499
+ * @param {MediaStream} localShare
1500
+ * @returns {undefined}
1501
+ */
1502
+ private handleShareTrackEnded;
1503
+ /**
1504
+ * Emits the 'network:quality' event
1505
+ * 1 indicates an acceptable uplink network.
1506
+ * 0 indicates an unacceptable uplink network based on a predefined threshold
1507
+ * @returns {undefined}
1508
+ * @param {Object} res - payload of emitNetworkQuality
1509
+ * @property {string} mediaType {video|audio}
1510
+ * @property {number} networkQualityScore - {1|0}
1511
+ * @private
1512
+ * @memberof Meeting
1513
+ */
1514
+ private sendNetworkQualityEvent;
1515
+ /**
1516
+ * Handle logging the media
1517
+ * @param {Object} audioTrack The audio track
1518
+ * @param {Object} videoTrack The video track
1519
+ * @private
1520
+ * @returns {undefined}
1521
+ */
1522
+ private handleMediaLogging;
1523
+ /**
1524
+ * @param {string} typeMedia 'audio' or 'video'
1525
+ * @returns {undefined}
1526
+ */
1527
+ setStartSetupDelay(typeMedia: string): void;
1528
+ /**
1529
+ * @param {string} typeMedia 'audio' or 'video'
1530
+ * @returns {undefined}
1531
+ */
1532
+ setEndSetupDelay(typeMedia: string): void;
1533
+ /**
1534
+ * @param {string} typeMedia 'audio' or 'video'
1535
+ * @returns {string} duration between start and end of setup
1536
+ */
1537
+ getSetupDelayDuration(typeMedia: string): number;
1538
+ /**
1539
+ * @param {string} typeMedia 'audio' or 'video'
1540
+ * @returns {undefined}
1541
+ */
1542
+ setStartSendingMediaDelay(typeMedia: string): void;
1543
+ /**
1544
+ * @param {string} typeMedia 'audio' or 'video'
1545
+ * @returns {undefined}
1546
+ */
1547
+ setEndSendingMediaDelay(typeMedia: string): void;
1548
+ /**
1549
+ * @param {string} typeMedia 'audio' or 'video'
1550
+ * @returns {string} duration between join response and first media tx
1551
+ */
1552
+ getSendingMediaDelayDuration(typeMedia: string): number;
1553
+ /**
1554
+ *
1555
+ * @returns {undefined}
1556
+ */
1557
+ setStartLocalSDPGenRemoteSDPRecvDelay(): void;
1558
+ /**
1559
+ *
1560
+ * @returns {undefined}
1561
+ */
1562
+ setEndLocalSDPGenRemoteSDPRecvDelay(): void;
1563
+ /**
1564
+ *
1565
+ * @returns {string} duration between local SDP generation and remote SDP reception
1566
+ */
1567
+ getLocalSDPGenRemoteSDPRecvDelay(): number;
1568
+ /**
1569
+ *
1570
+ * @returns {undefined}
1571
+ */
1572
+ setStartCallInitiateJoinReq(): void;
1573
+ /**
1574
+ *
1575
+ * @returns {undefined}
1576
+ */
1577
+ setEndCallInitiateJoinReq(): void;
1578
+ /**
1579
+ *
1580
+ * @returns {string} duration between call initiate and sending join request to locus
1581
+ */
1582
+ getCallInitiateJoinReq(): number;
1583
+ /**
1584
+ *
1585
+ * @returns {undefined}
1586
+ */
1587
+ setStartJoinReqResp(): void;
1588
+ /**
1589
+ *
1590
+ * @returns {undefined}
1591
+ */
1592
+ setEndJoinReqResp(): void;
1593
+ /**
1594
+ *
1595
+ * @returns {string} duration between sending locus join request and receiving join response
1596
+ */
1597
+ getJoinReqResp(): number;
1598
+ /**
1599
+ *
1600
+ * @returns {string} duration between call initiate and successful locus join (even if it is in lobby)
1601
+ */
1602
+ getTotalJmt(): number;
1603
+ /**
1604
+ * End the current meeting for all
1605
+ * @returns {Promise}
1606
+ * @public
1607
+ * @memberof Meeting
1608
+ */
1609
+ endMeetingForAll(): any;
1610
+ /**
1611
+ * clear the meeting data
1612
+ * @returns {undefined}
1613
+ * @public
1614
+ * @memberof Meeting
1615
+ */
1616
+ clearMeetingData: () => void;
1617
+ /**
1618
+ * Internal API to return status of BNR
1619
+ * @returns {Boolean}
1620
+ * @public
1621
+ * @memberof Meeting
1622
+ */
1623
+ isBnrEnabled(): any;
1624
+ /**
1625
+ * Internal API to obtain BNR enabled MediaStream
1626
+ * @returns {Promise<MediaStreamTrack>}
1627
+ * @private
1628
+ * @param {MedaiStreamTrack} audioTrack from updateAudio
1629
+ * @memberof Meeting
1630
+ */
1631
+ private internal_enableBNR;
1632
+ /**
1633
+ * Enable the audio track with BNR for a meeting
1634
+ * @returns {Promise} resolves the data from enable bnr or rejects if there is no audio or audio is muted
1635
+ * @public
1636
+ * @memberof Meeting
1637
+ */
1638
+ enableBNR(): any;
1639
+ /**
1640
+ * Disable the BNR for an audio track
1641
+ * @returns {Promise} resolves the data from disable bnr or rejects if there is no audio set
1642
+ * @public
1643
+ * @memberof Meeting
1644
+ */
1645
+ disableBNR(): any;
1646
+ /**
1647
+ * starts keepAlives being sent
1648
+ * @returns {void}
1649
+ * @private
1650
+ * @memberof Meeting
1651
+ */
1652
+ startKeepAlive: () => void;
1653
+ /**
1654
+ * stops keepAlives being sent
1655
+ * @returns {void}
1656
+ * @private
1657
+ * @memberof Meeting
1658
+ */
1659
+ stopKeepAlive: () => void;
1660
+ /**
1661
+ * Send a reaction inside the meeting.
1662
+ *
1663
+ * @param {ReactionServerType} reactionType - type of reaction to be sent. Example: "thumbs_up"
1664
+ * @param {SkinToneType} skinToneType - skin tone for the reaction. Example: "medium_dark"
1665
+ * @returns {Promise}
1666
+ * @public
1667
+ * @memberof Meeting
1668
+ */
1669
+ sendReaction(reactionType: ReactionServerType, skinToneType?: SkinToneType): any;
1670
+ /**
1671
+ * Method to enable or disable reactions inside the meeting.
1672
+ *
1673
+ * @param {boolean} enable - enable or disable reactions
1674
+ * @returns {Promise}
1675
+ * @public
1676
+ * @memberof Meeting
1677
+ */
1678
+ toggleReactions(enable: boolean): any;
1679
+ /**
1680
+ * Throws if we don't have a media connection created
1681
+ *
1682
+ * @returns {void}
1683
+ */
1684
+ private checkMediaConnection;
1685
+ /**
1686
+ * Publishes specified local tracks in the meeting
1687
+ *
1688
+ * @param {Object} tracks
1689
+ * @returns {Promise}
1690
+ */
1691
+ publishTracks(tracks: {
1692
+ microphone?: MediaStreamTrack;
1693
+ camera?: MediaStreamTrack;
1694
+ screenShare: {
1695
+ audio?: MediaStreamTrack;
1696
+ video?: MediaStreamTrack;
1697
+ };
1698
+ }): Promise<void>;
1699
+ /**
1700
+ * Un-publishes specified local tracks in the meeting
1701
+ *
1702
+ * @param {Array<MediaStreamTrack>} tracks
1703
+ * @returns {Promise}
1704
+ */
1705
+ unpublishTracks(tracks: MediaStreamTrack[]): Promise<void>;
1706
+ }