@webex/plugin-meetings 3.0.0-bnr.5 → 3.0.0-stream-classes.1
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.
- package/README.md +46 -8
- package/dist/annotation/annotation.types.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.js +49 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.js +342 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +70 -32
- package/dist/breakouts/breakout.js.map +1 -1
- package/dist/breakouts/events.js +45 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +422 -217
- package/dist/breakouts/index.js.map +1 -1
- package/dist/breakouts/utils.js +12 -1
- package/dist/breakouts/utils.js.map +1 -1
- package/dist/common/errors/webex-errors.js +3 -2
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -1
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.d.ts +1 -1
- package/dist/common/queue.js +24 -9
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +1 -7
- package/dist/config.js.map +1 -1
- package/dist/constants.js +118 -24
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +2 -0
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.js +19 -14
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/types.js.map +1 -1
- package/dist/controls-options-manager/util.js +80 -11
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/index.js +62 -20
- package/dist/index.js.map +1 -1
- package/dist/interpretation/collection.js +23 -0
- package/dist/interpretation/collection.js.map +1 -0
- package/dist/interpretation/index.js +366 -0
- package/dist/interpretation/index.js.map +1 -0
- package/dist/interpretation/siLanguage.js +25 -0
- package/dist/interpretation/siLanguage.js.map +1 -0
- package/dist/locus-info/controlsUtils.js +71 -1
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +305 -57
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +7 -1
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +43 -1
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +219 -63
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +44 -22
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +57 -104
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +60 -121
- package/dist/media/properties.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +61 -3
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2530 -2534
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +292 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -0
- package/dist/meeting/muteState.js +125 -205
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +150 -150
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.js +568 -438
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/index.js +48 -7
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +94 -38
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/utilv2.js +4 -2
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/index.d.ts +0 -2
- package/dist/meetings/index.js +260 -85
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.js +7 -0
- package/dist/meetings/meetings.types.js.map +1 -0
- package/dist/meetings/util.js +42 -7
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.d.ts +2 -0
- package/dist/member/index.js +26 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/member.types.d.ts +11 -0
- package/dist/member/member.types.js +18 -0
- package/dist/member/member.types.js.map +1 -0
- package/dist/member/types.js +11 -1
- package/dist/member/types.js.map +1 -1
- package/dist/member/util.js +60 -23
- package/dist/member/util.js.map +1 -1
- package/dist/members/index.js +4 -1
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +75 -45
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +308 -317
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +1 -3
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +1 -0
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.d.ts +1 -1
- package/dist/metrics/index.js +1 -451
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +136 -40
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +4 -4
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +60 -3
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +36 -0
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +233 -0
- package/dist/multistream/sendSlotManager.js.map +1 -0
- package/dist/reachability/index.js +18 -3
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +5 -3
- package/dist/reachability/request.js.map +1 -1
- package/dist/reconnection-manager/index.js +181 -153
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/index.js +21 -2
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.js +9 -8
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/roap/index.js +25 -32
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +42 -51
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +97 -38
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/rtcMetrics/constants.js +12 -0
- package/dist/rtcMetrics/constants.js.map +1 -0
- package/dist/rtcMetrics/index.js +117 -0
- package/dist/rtcMetrics/index.js.map +1 -0
- package/dist/statsAnalyzer/index.js +0 -1
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +43 -0
- package/dist/types/annotation/constants.d.ts +31 -0
- package/dist/types/annotation/index.d.ts +124 -0
- package/dist/types/breakouts/events.d.ts +2 -0
- package/dist/types/breakouts/utils.d.ts +7 -0
- package/dist/types/common/errors/webex-errors.d.ts +1 -1
- package/dist/types/config.d.ts +0 -6
- package/dist/types/constants.d.ts +51 -21
- package/dist/types/controls-options-manager/enums.d.ts +2 -0
- package/dist/types/controls-options-manager/index.d.ts +1 -1
- package/dist/types/controls-options-manager/types.d.ts +7 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/interpretation/collection.d.ts +5 -0
- package/dist/types/interpretation/index.d.ts +5 -0
- package/dist/types/interpretation/siLanguage.d.ts +5 -0
- package/dist/types/locus-info/index.d.ts +39 -1
- package/dist/types/media/index.d.ts +2 -0
- package/dist/types/media/properties.d.ts +16 -38
- package/dist/types/meeting/in-meeting-actions.d.ts +46 -2
- package/dist/types/meeting/index.d.ts +179 -379
- package/dist/types/meeting/locusMediaRequest.d.ts +70 -0
- package/dist/types/meeting/muteState.d.ts +39 -40
- package/dist/types/meeting/request.d.ts +25 -26
- package/dist/types/meeting/util.d.ts +74 -1
- package/dist/types/meeting-info/meeting-info-v2.d.ts +14 -3
- package/dist/types/meetings/index.d.ts +49 -1
- package/dist/types/meetings/meetings.types.d.ts +4 -0
- package/dist/types/member/index.d.ts +2 -0
- package/dist/types/members/request.d.ts +56 -11
- package/dist/types/members/util.d.ts +209 -1
- package/dist/types/metrics/config.d.ts +26 -2
- package/dist/types/metrics/constants.d.ts +1 -0
- package/dist/types/metrics/index.d.ts +17 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +27 -10
- package/dist/types/multistream/receiveSlot.d.ts +3 -3
- package/dist/types/multistream/remoteMedia.d.ts +2 -2
- package/dist/types/multistream/remoteMediaManager.d.ts +14 -0
- package/dist/types/roap/request.d.ts +6 -8
- package/dist/types/roap/turnDiscovery.d.ts +18 -1
- package/package.json +21 -20
- package/src/annotation/annotation.types.ts +50 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +328 -0
- package/src/breakouts/README.md +3 -2
- package/src/breakouts/breakout.ts +62 -27
- package/src/breakouts/events.ts +56 -0
- package/src/breakouts/index.ts +244 -64
- package/src/breakouts/utils.ts +13 -0
- package/src/common/errors/webex-errors.ts +6 -2
- package/src/common/logs/logger-proxy.ts +1 -1
- package/src/common/queue.ts +22 -8
- package/src/config.ts +0 -6
- package/src/constants.ts +111 -19
- package/src/controls-options-manager/enums.ts +2 -0
- package/src/controls-options-manager/index.ts +13 -10
- package/src/controls-options-manager/types.ts +10 -0
- package/src/controls-options-manager/util.ts +82 -11
- package/src/index.ts +18 -11
- package/src/interpretation/README.md +60 -0
- package/src/interpretation/collection.ts +19 -0
- package/src/interpretation/index.ts +332 -0
- package/src/interpretation/siLanguage.ts +18 -0
- package/src/locus-info/controlsUtils.ts +81 -0
- package/src/locus-info/index.ts +318 -57
- package/src/locus-info/infoUtils.ts +10 -2
- package/src/locus-info/mediaSharesUtils.ts +48 -0
- package/src/locus-info/parser.ts +224 -39
- package/src/locus-info/selfUtils.ts +32 -20
- package/src/media/index.ts +94 -108
- package/src/media/properties.ts +69 -109
- package/src/meeting/in-meeting-actions.ts +120 -4
- package/src/meeting/index.ts +1967 -2120
- package/src/meeting/locusMediaRequest.ts +314 -0
- package/src/meeting/muteState.ts +119 -194
- package/src/meeting/request.ts +122 -115
- package/src/meeting/util.ts +549 -413
- package/src/meeting-info/index.ts +54 -8
- package/src/meeting-info/meeting-info-v2.ts +89 -24
- package/src/meeting-info/utilv2.ts +6 -2
- package/src/meetings/index.ts +247 -87
- package/src/meetings/meetings.types.ts +12 -0
- package/src/meetings/util.ts +47 -12
- package/src/member/index.ts +28 -1
- package/src/member/types.ts +14 -0
- package/src/member/util.ts +75 -26
- package/src/members/index.ts +7 -1
- package/src/members/request.ts +61 -21
- package/src/members/util.ts +316 -326
- package/src/metrics/constants.ts +1 -0
- package/src/metrics/index.ts +1 -474
- package/src/multistream/mediaRequestManager.ts +183 -67
- package/src/multistream/receiveSlot.ts +4 -4
- package/src/multistream/receiveSlotManager.ts +4 -4
- package/src/multistream/remoteMedia.ts +2 -2
- package/src/multistream/remoteMediaGroup.ts +59 -0
- package/src/multistream/remoteMediaManager.ts +33 -0
- package/src/multistream/sendSlotManager.ts +170 -0
- package/src/reachability/index.ts +15 -4
- package/src/reachability/request.ts +7 -3
- package/src/reconnection-manager/index.ts +36 -29
- package/src/recording-controller/index.ts +20 -3
- package/src/recording-controller/util.ts +26 -9
- package/src/roap/index.ts +25 -30
- package/src/roap/request.ts +44 -51
- package/src/roap/turnDiscovery.ts +51 -25
- package/src/rtcMetrics/constants.ts +3 -0
- package/src/rtcMetrics/index.ts +100 -0
- package/src/statsAnalyzer/index.ts +0 -1
- package/test/integration/spec/converged-space-meetings.js +60 -3
- package/test/integration/spec/journey.js +336 -259
- package/test/integration/spec/space-meeting.js +76 -3
- package/test/unit/spec/annotation/index.ts +418 -0
- package/test/unit/spec/breakouts/breakout.ts +85 -26
- package/test/unit/spec/breakouts/events.ts +89 -0
- package/test/unit/spec/breakouts/index.ts +636 -98
- package/test/unit/spec/breakouts/utils.js +19 -1
- package/test/unit/spec/common/queue.js +31 -2
- package/test/unit/spec/controls-options-manager/index.js +8 -1
- package/test/unit/spec/controls-options-manager/util.js +576 -397
- package/test/unit/spec/fixture/locus.js +1 -0
- package/test/unit/spec/interpretation/collection.ts +15 -0
- package/test/unit/spec/interpretation/index.ts +589 -0
- package/test/unit/spec/interpretation/siLanguage.ts +28 -0
- package/test/unit/spec/locus-info/controlsUtils.js +195 -1
- package/test/unit/spec/locus-info/index.js +950 -45
- package/test/unit/spec/locus-info/infoUtils.js +37 -15
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
- package/test/unit/spec/locus-info/parser.js +62 -22
- package/test/unit/spec/locus-info/selfConstant.js +19 -0
- package/test/unit/spec/locus-info/selfUtils.js +131 -26
- package/test/unit/spec/media/index.ts +82 -79
- package/test/unit/spec/meeting/in-meeting-actions.ts +60 -2
- package/test/unit/spec/meeting/index.js +3208 -1734
- package/test/unit/spec/meeting/locusMediaRequest.ts +443 -0
- package/test/unit/spec/meeting/muteState.js +328 -417
- package/test/unit/spec/meeting/request.js +393 -48
- package/test/unit/spec/meeting/utils.js +552 -76
- package/test/unit/spec/meeting-info/index.js +181 -0
- package/test/unit/spec/meeting-info/meetinginfov2.js +258 -20
- package/test/unit/spec/meeting-info/utilv2.js +21 -0
- package/test/unit/spec/meetings/index.js +631 -145
- package/test/unit/spec/meetings/utils.js +164 -9
- package/test/unit/spec/member/index.js +44 -14
- package/test/unit/spec/member/util.js +296 -155
- package/test/unit/spec/members/index.js +23 -3
- package/test/unit/spec/members/request.js +167 -35
- package/test/unit/spec/metrics/index.js +1 -50
- package/test/unit/spec/multistream/mediaRequestManager.ts +366 -8
- package/test/unit/spec/multistream/receiveSlot.ts +1 -1
- package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
- package/test/unit/spec/multistream/remoteMediaManager.ts +123 -0
- package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
- package/test/unit/spec/reachability/index.ts +66 -5
- package/test/unit/spec/reachability/request.js +3 -1
- package/test/unit/spec/reconnection-manager/index.js +55 -5
- package/test/unit/spec/recording-controller/index.js +294 -218
- package/test/unit/spec/recording-controller/util.js +223 -96
- package/test/unit/spec/roap/index.ts +21 -48
- package/test/unit/spec/roap/request.ts +74 -60
- package/test/unit/spec/roap/turnDiscovery.ts +30 -6
- package/test/unit/spec/rtcMetrics/index.ts +68 -0
- package/test/utils/integrationTestUtils.js +46 -0
- package/test/utils/testUtils.js +0 -60
- package/src/metrics/config.ts +0 -487
package/src/config.ts
CHANGED
|
@@ -10,13 +10,7 @@ export default {
|
|
|
10
10
|
meetings: {
|
|
11
11
|
deviceType: deviceType.WEB,
|
|
12
12
|
mediaSettings: {
|
|
13
|
-
sendAudio: true,
|
|
14
|
-
sendVideo: true,
|
|
15
|
-
receiveAudio: true,
|
|
16
|
-
receiveVideo: true,
|
|
17
13
|
pstn: false,
|
|
18
|
-
sendShare: false,
|
|
19
|
-
receiveShare: false,
|
|
20
14
|
},
|
|
21
15
|
reconnection: {
|
|
22
16
|
enabled: false,
|
package/src/constants.ts
CHANGED
|
@@ -4,7 +4,6 @@ import {hydraTypes} from '@webex/common';
|
|
|
4
4
|
// *********** LOWERCASE / CAMELCASE STRINGS ************
|
|
5
5
|
|
|
6
6
|
export const AUDIO = 'audio';
|
|
7
|
-
export const AUDIO_INPUT = 'audioinput';
|
|
8
7
|
export const AUDIO_STATUS = 'audioStatus';
|
|
9
8
|
export const ALERT = 'alert';
|
|
10
9
|
export const ALIAS = 'alias';
|
|
@@ -67,7 +66,6 @@ export const SHARE = 'share';
|
|
|
67
66
|
export const TYPE = 'type';
|
|
68
67
|
|
|
69
68
|
export const VIDEO = 'video';
|
|
70
|
-
export const VIDEO_INPUT = 'videoinput';
|
|
71
69
|
export const VIDEO_STATUS = 'videoStatus';
|
|
72
70
|
|
|
73
71
|
// *********** UPPERCASE ONLY STRINGS ************
|
|
@@ -192,7 +190,7 @@ export const ICE_FAIL_TIMEOUT = 3000;
|
|
|
192
190
|
|
|
193
191
|
export const RETRY_TIMEOUT = 3000;
|
|
194
192
|
|
|
195
|
-
export const PC_BAIL_TIMEOUT =
|
|
193
|
+
export const PC_BAIL_TIMEOUT = 15000;
|
|
196
194
|
|
|
197
195
|
// ******************** REGEX **********************
|
|
198
196
|
// Please alphabetize
|
|
@@ -283,6 +281,7 @@ export const EVENT_TRIGGERS = {
|
|
|
283
281
|
MEETING_STOPPED_SHARING_LOCAL: 'meeting:stoppedSharingLocal',
|
|
284
282
|
MEETING_STARTED_SHARING_REMOTE: 'meeting:startedSharingRemote',
|
|
285
283
|
MEETING_STOPPED_SHARING_REMOTE: 'meeting:stoppedSharingRemote',
|
|
284
|
+
MEETING_UPDATE_ANNOTATION_INFO: 'meeting:updateAnnotationInfo',
|
|
286
285
|
MEETING_STARTED_SHARING_WHITEBOARD: 'meeting:startedSharingWhiteboard',
|
|
287
286
|
MEETING_STOPPED_SHARING_WHITEBOARD: 'meeting:stoppedSharingWhiteboard',
|
|
288
287
|
MEETING_MEDIA_LOCAL_STARTED: 'meeting:media:local:start',
|
|
@@ -308,11 +307,19 @@ export const EVENT_TRIGGERS = {
|
|
|
308
307
|
MEETING_SELF_PHONE_AUDIO_UPDATE: 'meeting:self:phoneAudioUpdate',
|
|
309
308
|
MEETING_SELF_CANNOT_VIEW_PARTICIPANT_LIST: 'meeting:self:cannotViewParticipantList',
|
|
310
309
|
MEETING_SELF_IS_SHARING_BLOCKED: 'meeting:self:isSharingBlocked',
|
|
310
|
+
MEETING_SELF_ROLES_CHANGED: 'meeting:self:rolesChanged',
|
|
311
311
|
MEETING_CONTROLS_LAYOUT_UPDATE: 'meeting:layout:update',
|
|
312
312
|
MEETING_ENTRY_EXIT_TONE_UPDATE: 'meeting:entryExitTone:update',
|
|
313
313
|
MEETING_BREAKOUTS_UPDATE: 'meeting:breakouts:update',
|
|
314
314
|
MEETING_BREAKOUTS_CLOSING: 'meeting:breakouts:closing',
|
|
315
315
|
MEETING_BREAKOUTS_MESSAGE: 'meeting:breakouts:message',
|
|
316
|
+
MEETING_BREAKOUTS_ASK_RETURN_TO_MAIN: 'meeting:breakouts:askReturnToMain',
|
|
317
|
+
MEETING_BREAKOUTS_LEAVE: 'meeting:breakouts:leave',
|
|
318
|
+
MEETING_BREAKOUTS_ASK_FOR_HELP: 'meeting:breakouts:askForHelp',
|
|
319
|
+
MEETING_BREAKOUTS_PRE_ASSIGNMENTS_UPDATE: 'meeting:breakouts:preAssignmentsUpdate',
|
|
320
|
+
MEETING_INTERPRETATION_UPDATE: 'meeting:interpretation:update',
|
|
321
|
+
MEETING_INTERPRETATION_SUPPORT_LANGUAGES_UPDATE: 'meeting:interpretation:supportLanguagesUpdate',
|
|
322
|
+
MEETING_INTERPRETATION_HANDOFF_REQUESTS_ARRIVED: 'meeting:interpretation:handoffRequestsArrived',
|
|
316
323
|
MEMBERS_UPDATE: 'members:update',
|
|
317
324
|
MEMBERS_CLEAR: 'members:clear',
|
|
318
325
|
MEMBERS_CONTENT_UPDATE: 'members:content:update',
|
|
@@ -343,17 +350,28 @@ export const EVENT_TRIGGERS = {
|
|
|
343
350
|
REMOTE_MEDIA_AUDIO_CREATED: 'media:remoteAudio:created',
|
|
344
351
|
REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED: 'media:remoteScreenShareAudio:created',
|
|
345
352
|
REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED: 'media:remoteVideo:layoutChanged',
|
|
353
|
+
// Controls
|
|
354
|
+
MEETING_CONTROLS_MUTE_ON_ENTRY_UPDATED: 'meeting:controls:mute-on-entry:updated',
|
|
355
|
+
MEETING_CONTROLS_SHARE_CONTROL_UPDATED: 'meeting:controls:share-control:updated',
|
|
356
|
+
MEETING_CONTROLS_DISALLOW_UNMUTE_UPDATED: 'meeting:controls:disallow-unmute:updated',
|
|
357
|
+
MEETING_CONTROLS_REACTIONS_UPDATED: 'meeting:controls:reactions:updated',
|
|
358
|
+
MEETING_CONTROLS_VIEW_THE_PARTICIPANTS_LIST_UPDATED:
|
|
359
|
+
'meeting:controls:view-the-participants-list:updated',
|
|
360
|
+
MEETING_CONTROLS_RAISE_HAND_UPDATED: 'meeting:controls:raise-hand:updated',
|
|
361
|
+
MEETING_CONTROLS_VIDEO_UPDATED: 'meeting:controls:video:updated',
|
|
362
|
+
// Locus URL changed
|
|
363
|
+
MEETING_LOCUS_URL_UPDATE: 'meeting:locus:locusUrl:update',
|
|
364
|
+
MEETING_STREAM_PUBLISH_STATE_CHANGED: 'meeting:streamPublishStateChanged',
|
|
346
365
|
};
|
|
347
366
|
|
|
348
367
|
export const EVENT_TYPES = {
|
|
349
368
|
SELF: 'self',
|
|
350
369
|
OTHER: 'other',
|
|
351
|
-
LOCAL: 'local',
|
|
352
370
|
REMOTE: 'remote',
|
|
353
371
|
REMOTE_AUDIO: 'remoteAudio',
|
|
354
372
|
REMOTE_VIDEO: 'remoteVideo',
|
|
355
373
|
REMOTE_SHARE: 'remoteShare',
|
|
356
|
-
|
|
374
|
+
REMOTE_SHARE_AUDIO: 'remoteShareAudio',
|
|
357
375
|
ERROR: 'error',
|
|
358
376
|
};
|
|
359
377
|
|
|
@@ -366,6 +384,7 @@ export const MEETING_REMOVED_REASON = {
|
|
|
366
384
|
FULLSTATE_REMOVED: 'FULLSTATE_REMOVED', // meeting got dropped ? not sure
|
|
367
385
|
MEETING_INACTIVE_TERMINATING: 'MEETING_INACTIVE_TERMINATING', // Meeting got ended or everyone left the meeting
|
|
368
386
|
CLIENT_LEAVE_REQUEST: 'CLIENT_LEAVE_REQUEST', // You triggered leave meeting
|
|
387
|
+
CLIENT_LEAVE_REQUEST_TAB_CLOSED: 'CLIENT_LEAVE_REQUEST_TAB_CLOSED', // You triggered leave meeting, such as closing the browser tab directly
|
|
369
388
|
USER_ENDED_SHARE_STREAMS: 'USER_ENDED_SHARE_STREAMS', // user triggered stop share
|
|
370
389
|
NO_MEETINGS_TO_SYNC: 'NO_MEETINGS_TO_SYNC', // After the syncMeeting no meeting exists
|
|
371
390
|
MEETING_CONNECTION_FAILED: 'MEETING_CONNECTION_FAILED', // meeting failed to connect due to ice failures or firewall issue
|
|
@@ -384,6 +403,7 @@ export const SHARE_STOPPED_REASON = {
|
|
|
384
403
|
SELF_STOPPED: 'SELF_STOPPED',
|
|
385
404
|
MEETING_REJOIN: 'MEETING_REJOIN',
|
|
386
405
|
MEDIA_RECONNECTION: 'MEDIA_RECONNECTION',
|
|
406
|
+
TRACK_ENDED: 'TRACK_ENDED',
|
|
387
407
|
};
|
|
388
408
|
|
|
389
409
|
export const EVENTS = {
|
|
@@ -531,6 +551,9 @@ export const LOCUS = {
|
|
|
531
551
|
SYNCDEBUG: 'sync_debug',
|
|
532
552
|
};
|
|
533
553
|
|
|
554
|
+
export const ANNOTATION = {
|
|
555
|
+
ANNOTATION_ON_SHARE_SUPPORTED: 'ANNOTATION_ON_SHARE_SUPPORTED',
|
|
556
|
+
};
|
|
534
557
|
export const BREAKOUTS = {
|
|
535
558
|
STATUS: {
|
|
536
559
|
CLOSING: 'CLOSING',
|
|
@@ -542,6 +565,10 @@ export const BREAKOUTS = {
|
|
|
542
565
|
BREAKOUTS_CLOSING: 'BREAKOUTS_CLOSING',
|
|
543
566
|
MESSAGE: 'MESSAGE',
|
|
544
567
|
MEMBERS_UPDATE: 'MEMBERS_UPDATE',
|
|
568
|
+
ASK_RETURN_TO_MAIN: 'ASK_RETURN_TO_MAIN',
|
|
569
|
+
LEAVE_BREAKOUT: 'LEAVE_BREAKOUT',
|
|
570
|
+
ASK_FOR_HELP: 'ASK_FOR_HELP',
|
|
571
|
+
PRE_ASSIGNMENTS_UPDATE: 'PRE_ASSIGNMENTS_UPDATE',
|
|
545
572
|
},
|
|
546
573
|
SESSION_TYPES: {
|
|
547
574
|
MAIN: 'MAIN',
|
|
@@ -564,7 +591,6 @@ export const BREAKOUTS = {
|
|
|
564
591
|
EDIT_LOCK_TOKEN_MISMATCH: 201409024,
|
|
565
592
|
EDIT_NOT_AUTHORIZED: 201403007,
|
|
566
593
|
},
|
|
567
|
-
DEFAULT_DURATION: 60000,
|
|
568
594
|
EDIT_LOCK_STATUS: {
|
|
569
595
|
LOCKED: 'LOCKED',
|
|
570
596
|
NOT_LOCKED: 'NOT_LOCKED',
|
|
@@ -573,6 +599,20 @@ export const BREAKOUTS = {
|
|
|
573
599
|
DEFAULT_TTL: 30,
|
|
574
600
|
};
|
|
575
601
|
|
|
602
|
+
export const INTERPRETATION = {
|
|
603
|
+
EVENTS: {
|
|
604
|
+
SUPPORT_LANGUAGES_UPDATE: 'SUPPORT_LANGUAGES_UPDATE',
|
|
605
|
+
HANDOFF_REQUESTS_ARRIVED: 'HANDOFF_REQUESTS_ARRIVED',
|
|
606
|
+
},
|
|
607
|
+
ACTION_TYPE: {
|
|
608
|
+
OFFERED: 'OFFERED',
|
|
609
|
+
ACCEPTED: 'ACCEPTED',
|
|
610
|
+
REQUESTED: 'REQUESTED',
|
|
611
|
+
DECLINED: 'DECLINED',
|
|
612
|
+
},
|
|
613
|
+
RESOURCE_TYPE: 'SiHandover',
|
|
614
|
+
};
|
|
615
|
+
|
|
576
616
|
export const LOCUSINFO = {
|
|
577
617
|
EVENTS: {
|
|
578
618
|
CONTROLS_MEETING_LAYOUT_UPDATED: 'CONTROLS_MEETING_LAYOUT_UPDATED',
|
|
@@ -580,7 +620,16 @@ export const LOCUSINFO = {
|
|
|
580
620
|
CONTROLS_MEETING_TRANSCRIBE_UPDATED: 'CONTROLS_MEETING_TRANSCRIBE_UPDATED',
|
|
581
621
|
CONTROLS_MEETING_BREAKOUT_UPDATED: 'CONTROLS_MEETING_BREAKOUT_UPDATED',
|
|
582
622
|
CONTROLS_MEETING_CONTAINER_UPDATED: 'CONTROLS_MEETING_CONTAINER_UPDATED',
|
|
623
|
+
CONTROLS_MEETING_INTERPRETATION_UPDATED: 'CONTROLS_MEETING_INTERPRETATION_UPDATED',
|
|
583
624
|
CONTROLS_ENTRY_EXIT_TONE_UPDATED: 'CONTROLS_ENTRY_EXIT_TONE_UPDATED',
|
|
625
|
+
CONTROLS_JOIN_BREAKOUT_FROM_MAIN: 'CONTROLS_JOIN_BREAKOUT_FROM_MAIN',
|
|
626
|
+
CONTROLS_MUTE_ON_ENTRY_CHANGED: 'CONTROLS_MUTE_ON_ENTRY_CHANGED',
|
|
627
|
+
CONTROLS_SHARE_CONTROL_CHANGED: 'CONTROLS_SHARE_CONTROL_CHANGED',
|
|
628
|
+
CONTROLS_DISALLOW_UNMUTE_CHANGED: 'CONTROLS_DISALLOW_UNMUTE_CHANGED',
|
|
629
|
+
CONTROLS_REACTIONS_CHANGED: 'CONTROLS_REACTIONS_CHANGED',
|
|
630
|
+
CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED: 'CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED',
|
|
631
|
+
CONTROLS_RAISE_HAND_CHANGED: 'CONTROLS_RAISE_HAND_CHANGED',
|
|
632
|
+
CONTROLS_VIDEO_CHANGED: 'CONTROLS_VIDEO_CHANGED',
|
|
584
633
|
SELF_UNADMITTED_GUEST: 'SELF_UNADMITTED_GUEST',
|
|
585
634
|
SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',
|
|
586
635
|
SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: 'SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED',
|
|
@@ -588,6 +637,7 @@ export const LOCUSINFO = {
|
|
|
588
637
|
LOCAL_UNMUTE_REQUESTED: 'LOCAL_UNMUTE_REQUESTED',
|
|
589
638
|
LOCAL_UNMUTE_REQUIRED: 'LOCAL_UNMUTE_REQUIRED',
|
|
590
639
|
SELF_MODERATOR_CHANGED: 'SELF_MODERATOR_CHANGED',
|
|
640
|
+
SELF_ROLES_CHANGED: 'SELF_ROLES_CHANGED',
|
|
591
641
|
MEETING_UPDATE: 'MEETING_UPDATE',
|
|
592
642
|
MEDIA_STATUS_CHANGE: 'MEDIA_STATUS_CHANGE',
|
|
593
643
|
FULL_STATE_TYPE_UPDATE: 'FULL_STATE_TYPE_UPDATE',
|
|
@@ -602,9 +652,9 @@ export const LOCUSINFO = {
|
|
|
602
652
|
SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE: 'SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE',
|
|
603
653
|
SELF_IS_SHARING_BLOCKED_CHANGE: 'SELF_IS_SHARING_BLOCKED_CHANGE',
|
|
604
654
|
SELF_MEETING_BREAKOUTS_CHANGED: 'SELF_MEETING_BREAKOUTS_CHANGED',
|
|
655
|
+
SELF_MEETING_INTERPRETATION_CHANGED: 'SELF_MEETING_INTERPRETATION_CHANGED',
|
|
605
656
|
MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',
|
|
606
657
|
LINKS_SERVICES: 'LINKS_SERVICES',
|
|
607
|
-
SELF_MODERATOR_OR_COHOST_UPGRADE: 'SELF_MODERATOR_OR_COHOST_UPGRADE',
|
|
608
658
|
},
|
|
609
659
|
};
|
|
610
660
|
|
|
@@ -767,6 +817,28 @@ export const MEETING_END_REASON = {
|
|
|
767
817
|
MEDIA_RELEASED: 'MEDIA_RELEASED',
|
|
768
818
|
};
|
|
769
819
|
|
|
820
|
+
export enum SELF_POLICY {
|
|
821
|
+
ENFORCE_VIRTUAL_BACKGROUND = 'enforceVirtualBackground',
|
|
822
|
+
SUPPORT_LOCAL_RECORD = 'supportLocalRecord',
|
|
823
|
+
SUPPORT_NETWORK_BASED_RECORD = 'supportNetworkBasedRecord',
|
|
824
|
+
SUPPORT_REALTIME_CLOSE_CAPTION = 'supportRealtimeCloseCaption',
|
|
825
|
+
SUPPORT_CHAT = 'supportChat',
|
|
826
|
+
SUPPORT_DESKTOP_SHARE_REMOTE = 'supportDesktopShareRemote',
|
|
827
|
+
SUPPORT_DESKTOP_SHARE = 'supportDesktopShare',
|
|
828
|
+
SUPPORT_WHITEBOARD = 'supportWhiteboard',
|
|
829
|
+
SUPPORT_FILE_TRANSFER = 'supportFileTransfer',
|
|
830
|
+
SUPPORT_APP_SHARE = 'supportAppShare',
|
|
831
|
+
SUPPORT_CAMERA_SHARE = 'supportCameraShare',
|
|
832
|
+
SUPPORT_FILE_SHARE = 'supportFileShare',
|
|
833
|
+
SUPPORT_ANNOTATION = 'supportAnnotation',
|
|
834
|
+
SUPPORT_BROADCAST_MESSAGE = 'supportBroadcastMessage',
|
|
835
|
+
SUPPORT_VIDEO = 'supportVideo',
|
|
836
|
+
SUPPORT_HQV = 'supportHQV',
|
|
837
|
+
SUPPORT_HDV = 'supportHDV',
|
|
838
|
+
SUPPORT_PARTICIPANT_LIST = 'supportParticipantList',
|
|
839
|
+
SUPPORT_VOIP = 'supportVoIP',
|
|
840
|
+
}
|
|
841
|
+
|
|
770
842
|
export const DISPLAY_HINTS = {
|
|
771
843
|
ADD_GUEST: 'ADD_GUEST',
|
|
772
844
|
ROSTER_WAITING_TO_JOIN: 'ROSTER_WAITING_TO_JOIN',
|
|
@@ -812,6 +884,7 @@ export const DISPLAY_HINTS = {
|
|
|
812
884
|
|
|
813
885
|
// breakout session
|
|
814
886
|
BREAKOUT_MANAGEMENT: 'BREAKOUT_MANAGEMENT',
|
|
887
|
+
BROADCAST_MESSAGE_TO_BREAKOUT: 'BROADCAST_MESSAGE_TO_BREAKOUT',
|
|
815
888
|
UCF_SUPPRESS_BREAKOUTS_SUPPORT: 'UCF_SUPPRESS_BREAKOUTS_SUPPORT',
|
|
816
889
|
DISABLE_ASK_FOR_HELP: 'DISABLE_ASK_FOR_HELP',
|
|
817
890
|
DISABLE_BREAKOUT_PREASSIGNMENTS: 'DISABLE_BREAKOUT_PREASSIGNMENTS',
|
|
@@ -820,8 +893,29 @@ export const DISPLAY_HINTS = {
|
|
|
820
893
|
// participants list
|
|
821
894
|
DISABLE_VIEW_THE_PARTICIPANT_LIST: 'DISABLE_VIEW_THE_PARTICIPANT_LIST',
|
|
822
895
|
ENABLE_VIEW_THE_PARTICIPANT_LIST: 'ENABLE_VIEW_THE_PARTICIPANT_LIST',
|
|
896
|
+
|
|
897
|
+
// raise hand
|
|
898
|
+
DISABLE_RAISE_HAND: 'DISABLE_RAISE_HAND',
|
|
899
|
+
ENABLE_RAISE_HAND: 'ENABLE_RAISE_HAND',
|
|
900
|
+
|
|
901
|
+
// video
|
|
902
|
+
DISABLE_VIDEO: 'DISABLE_VIDEO',
|
|
903
|
+
ENABLE_VIDEO: 'ENABLE_VIDEO',
|
|
904
|
+
|
|
905
|
+
// Sharing
|
|
906
|
+
SHARE_FILE: 'SHARE_FILE',
|
|
907
|
+
SHARE_APPLICATION: 'SHARE_APPLICATION',
|
|
908
|
+
SHARE_CAMERA: 'SHARE_CAMERA',
|
|
909
|
+
SHARE_DESKTOP: 'SHARE_DESKTOP',
|
|
910
|
+
SHARE_CONTENT: 'SHARE_CONTENT',
|
|
911
|
+
SHARE_WHITEBOARD: 'SHARE_WHITEBOARD',
|
|
912
|
+
|
|
913
|
+
// Voip (audio/video)
|
|
914
|
+
VOIP_IS_ENABLED: 'VOIP_IS_ENABLED',
|
|
823
915
|
};
|
|
824
916
|
|
|
917
|
+
export const INTERSTITIAL_DISPLAY_HINTS = [DISPLAY_HINTS.VOIP_IS_ENABLED];
|
|
918
|
+
|
|
825
919
|
export const SELF_ROLES = {
|
|
826
920
|
COHOST: 'COHOST',
|
|
827
921
|
MODERATOR: 'MODERATOR',
|
|
@@ -1092,16 +1186,6 @@ export const AVAILABLE_RESOLUTIONS = {
|
|
|
1092
1186
|
},
|
|
1093
1187
|
};
|
|
1094
1188
|
|
|
1095
|
-
export const VIDEO_RESOLUTIONS = {
|
|
1096
|
-
[QUALITY_LEVELS.LOW]: AVAILABLE_RESOLUTIONS['480p'],
|
|
1097
|
-
[QUALITY_LEVELS.MEDIUM]: AVAILABLE_RESOLUTIONS['720p'],
|
|
1098
|
-
[QUALITY_LEVELS.HIGH]: AVAILABLE_RESOLUTIONS['1080p'],
|
|
1099
|
-
[QUALITY_LEVELS['360p']]: AVAILABLE_RESOLUTIONS['360p'],
|
|
1100
|
-
[QUALITY_LEVELS['480p']]: AVAILABLE_RESOLUTIONS['480p'],
|
|
1101
|
-
[QUALITY_LEVELS['720p']]: AVAILABLE_RESOLUTIONS['720p'],
|
|
1102
|
-
[QUALITY_LEVELS['1080p']]: AVAILABLE_RESOLUTIONS['1080p'],
|
|
1103
|
-
};
|
|
1104
|
-
|
|
1105
1189
|
/*
|
|
1106
1190
|
* mqa Interval for sending stats metrics
|
|
1107
1191
|
*/
|
|
@@ -1114,8 +1198,6 @@ export const MEDIA_DEVICES = {
|
|
|
1114
1198
|
CAMERA: 'camera',
|
|
1115
1199
|
};
|
|
1116
1200
|
|
|
1117
|
-
export const METRICS_JOIN_TIMES_MAX_DURATION = 1200000;
|
|
1118
|
-
|
|
1119
1201
|
export const PSTN_STATUS = {
|
|
1120
1202
|
JOINED: 'JOINED', // we have provisioned a pstn device, which can be used to connect
|
|
1121
1203
|
CONNECTED: 'CONNECTED', // user is connected to audio with pstn device
|
|
@@ -1156,3 +1238,13 @@ export const DEFAULT_MEETING_INFO_REQUEST_BODY = {
|
|
|
1156
1238
|
supportHostKey: true,
|
|
1157
1239
|
supportCountryList: true,
|
|
1158
1240
|
};
|
|
1241
|
+
|
|
1242
|
+
/** the values for IP_VERSION are fixed and defined in Orpheus API */
|
|
1243
|
+
export const IP_VERSION = {
|
|
1244
|
+
unknown: 0,
|
|
1245
|
+
only_ipv4: 4,
|
|
1246
|
+
only_ipv6: 6,
|
|
1247
|
+
ipv4_and_ipv6: 1,
|
|
1248
|
+
} as const;
|
|
1249
|
+
|
|
1250
|
+
export type IP_VERSION = (typeof IP_VERSION)[keyof typeof IP_VERSION];
|
|
@@ -140,8 +140,8 @@ export default class ControlsOptionsManager {
|
|
|
140
140
|
* @param {Array<ControlConfig>} controls - Spread Array of ControlConfigs
|
|
141
141
|
* @returns {Promise<Array<any>>}- Promise resolving if the request was successful.
|
|
142
142
|
*/
|
|
143
|
-
|
|
144
|
-
const
|
|
143
|
+
public update(...controls: Array<ControlConfig>) {
|
|
144
|
+
const payloads = controls.map((control) => {
|
|
145
145
|
if (!Object.keys(Control).includes(control.scope)) {
|
|
146
146
|
throw new Error(
|
|
147
147
|
`updating meeting control scope "${control.scope}" is not a supported scope`
|
|
@@ -155,17 +155,20 @@ export default class ControlsOptionsManager {
|
|
|
155
155
|
}
|
|
156
156
|
|
|
157
157
|
return {
|
|
158
|
-
...output,
|
|
159
158
|
[control.scope]: control.properties,
|
|
160
159
|
};
|
|
161
|
-
}, {});
|
|
162
|
-
|
|
163
|
-
// @ts-ignore
|
|
164
|
-
return this.request.request({
|
|
165
|
-
uri: `${this.locusUrl}/${CONTROLS}`,
|
|
166
|
-
body: payload,
|
|
167
|
-
method: HTTP_VERBS.PATCH,
|
|
168
160
|
});
|
|
161
|
+
|
|
162
|
+
return payloads.reduce((previous, payload) => {
|
|
163
|
+
return previous.then(() =>
|
|
164
|
+
// @ts-ignore
|
|
165
|
+
this.request.request({
|
|
166
|
+
uri: `${this.locusUrl}/${CONTROLS}`,
|
|
167
|
+
body: payload,
|
|
168
|
+
method: HTTP_VERBS.PATCH,
|
|
169
|
+
})
|
|
170
|
+
);
|
|
171
|
+
}, Promise.resolve());
|
|
169
172
|
}
|
|
170
173
|
|
|
171
174
|
/**
|
|
@@ -17,6 +17,10 @@ export interface AudioProperties {
|
|
|
17
17
|
muteOnEntry?: boolean;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
+
export interface RaiseHandProperties {
|
|
21
|
+
enabled?: boolean;
|
|
22
|
+
}
|
|
23
|
+
|
|
20
24
|
export interface ReactionsProperties {
|
|
21
25
|
enabled?: boolean;
|
|
22
26
|
showDisplayNameWithReactions?: boolean;
|
|
@@ -26,14 +30,20 @@ export interface ShareControlProperties {
|
|
|
26
30
|
control?: 'ANYONE' | 'MODERATOR_PRESENTER';
|
|
27
31
|
}
|
|
28
32
|
|
|
33
|
+
export interface VideoProperties {
|
|
34
|
+
enabled?: boolean;
|
|
35
|
+
}
|
|
36
|
+
|
|
29
37
|
export interface ViewTheParticipantListProperties {
|
|
30
38
|
enabled?: boolean;
|
|
31
39
|
}
|
|
32
40
|
|
|
33
41
|
export type Properties =
|
|
34
42
|
| AudioProperties
|
|
43
|
+
| RaiseHandProperties
|
|
35
44
|
| ReactionsProperties
|
|
36
45
|
| ShareControlProperties
|
|
46
|
+
| VideoProperties
|
|
37
47
|
| ViewTheParticipantListProperties;
|
|
38
48
|
|
|
39
49
|
export interface ControlConfig<Props = Properties> {
|
|
@@ -3,8 +3,10 @@ import {Control} from './enums';
|
|
|
3
3
|
import {
|
|
4
4
|
ControlConfig,
|
|
5
5
|
AudioProperties,
|
|
6
|
+
RaiseHandProperties,
|
|
6
7
|
ReactionsProperties,
|
|
7
8
|
ViewTheParticipantListProperties,
|
|
9
|
+
VideoProperties,
|
|
8
10
|
} from './types';
|
|
9
11
|
|
|
10
12
|
/**
|
|
@@ -87,6 +89,20 @@ class Utils {
|
|
|
87
89
|
return requiredHints.every((hint) => displayHints.includes(hint));
|
|
88
90
|
}
|
|
89
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Validate that the self policy object contains the required policies.
|
|
94
|
+
*
|
|
95
|
+
* @param {Object} config - Configuration Object.
|
|
96
|
+
* @param {Array<string>} config.requiredPolicies - Policies required for validation.
|
|
97
|
+
* @param {Array<string>} config.policies - All available policies.
|
|
98
|
+
* @returns {boolean} - True if all of the actions are allowed.
|
|
99
|
+
*/
|
|
100
|
+
public static hasPolicies(config: {requiredPolicies: Array<string>; policies: Array<string>}) {
|
|
101
|
+
const {requiredPolicies, policies = {}} = config;
|
|
102
|
+
|
|
103
|
+
return requiredPolicies.every((hint) => policies[hint]);
|
|
104
|
+
}
|
|
105
|
+
|
|
90
106
|
/**
|
|
91
107
|
* Validate if an audio-scoped control is allowed to be sent to the service.
|
|
92
108
|
*
|
|
@@ -122,6 +138,22 @@ class Utils {
|
|
|
122
138
|
return Utils.hasHints({requiredHints, displayHints});
|
|
123
139
|
}
|
|
124
140
|
|
|
141
|
+
public static canUpdateRaiseHand(
|
|
142
|
+
control: ControlConfig<RaiseHandProperties>,
|
|
143
|
+
displayHints: Array<string>
|
|
144
|
+
) {
|
|
145
|
+
const requiredHints = [];
|
|
146
|
+
|
|
147
|
+
if (control.properties.enabled === true) {
|
|
148
|
+
requiredHints.push(DISPLAY_HINTS.ENABLE_RAISE_HAND);
|
|
149
|
+
}
|
|
150
|
+
if (control.properties.enabled === false) {
|
|
151
|
+
requiredHints.push(DISPLAY_HINTS.DISABLE_RAISE_HAND);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
return Utils.hasHints({requiredHints, displayHints});
|
|
155
|
+
}
|
|
156
|
+
|
|
125
157
|
/**
|
|
126
158
|
* Validate if an reactions-scoped control is allowed to be sent to the service.
|
|
127
159
|
*
|
|
@@ -135,17 +167,22 @@ class Utils {
|
|
|
135
167
|
) {
|
|
136
168
|
const requiredHints = [];
|
|
137
169
|
|
|
138
|
-
if
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
170
|
+
// This additional if statement avoids the display hint discrepency due to
|
|
171
|
+
// the service blocking partial requests with this property only.
|
|
172
|
+
if (control.properties.showDisplayNameWithReactions !== undefined) {
|
|
173
|
+
if (control.properties.showDisplayNameWithReactions === true) {
|
|
174
|
+
requiredHints.push(DISPLAY_HINTS.ENABLE_SHOW_DISPLAY_NAME);
|
|
175
|
+
}
|
|
176
|
+
if (control.properties.showDisplayNameWithReactions === false) {
|
|
177
|
+
requiredHints.push(DISPLAY_HINTS.DISABLE_SHOW_DISPLAY_NAME);
|
|
178
|
+
}
|
|
179
|
+
} else {
|
|
180
|
+
if (control.properties.enabled === true) {
|
|
181
|
+
requiredHints.push(DISPLAY_HINTS.ENABLE_REACTIONS);
|
|
182
|
+
}
|
|
183
|
+
if (control.properties.enabled === false) {
|
|
184
|
+
requiredHints.push(DISPLAY_HINTS.DISABLE_REACTIONS);
|
|
185
|
+
}
|
|
149
186
|
}
|
|
150
187
|
|
|
151
188
|
return Utils.hasHints({requiredHints, displayHints});
|
|
@@ -184,6 +221,29 @@ class Utils {
|
|
|
184
221
|
return Utils.hasHints({requiredHints, displayHints});
|
|
185
222
|
}
|
|
186
223
|
|
|
224
|
+
/**
|
|
225
|
+
* Validate if a video-scoped control is allowed to be sent to the service.
|
|
226
|
+
*
|
|
227
|
+
* @param {ControlConfig<VideoProperties>} control - Video control config to validate.
|
|
228
|
+
* @param {Array<string>} displayHints - All available hints.
|
|
229
|
+
* @returns {boolean} - True if all of the actions are allowed.
|
|
230
|
+
*/
|
|
231
|
+
public static canUpdateVideo(
|
|
232
|
+
control: ControlConfig<VideoProperties>,
|
|
233
|
+
displayHints: Array<string>
|
|
234
|
+
) {
|
|
235
|
+
const requiredHints = [];
|
|
236
|
+
|
|
237
|
+
if (control.properties.enabled === true) {
|
|
238
|
+
requiredHints.push(DISPLAY_HINTS.ENABLE_VIDEO);
|
|
239
|
+
}
|
|
240
|
+
if (control.properties.enabled === false) {
|
|
241
|
+
requiredHints.push(DISPLAY_HINTS.DISABLE_VIDEO);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
return Utils.hasHints({requiredHints, displayHints});
|
|
245
|
+
}
|
|
246
|
+
|
|
187
247
|
/**
|
|
188
248
|
* Validate that a control can be sent to the service based on the provided
|
|
189
249
|
* display hints.
|
|
@@ -200,6 +260,13 @@ class Utils {
|
|
|
200
260
|
determinant = Utils.canUpdateAudio(control as ControlConfig<AudioProperties>, displayHints);
|
|
201
261
|
break;
|
|
202
262
|
|
|
263
|
+
case Control.raiseHand:
|
|
264
|
+
determinant = Utils.canUpdateRaiseHand(
|
|
265
|
+
control as ControlConfig<RaiseHandProperties>,
|
|
266
|
+
displayHints
|
|
267
|
+
);
|
|
268
|
+
break;
|
|
269
|
+
|
|
203
270
|
case Control.reactions:
|
|
204
271
|
determinant = Utils.canUpdateReactions(
|
|
205
272
|
control as ControlConfig<ReactionsProperties>,
|
|
@@ -211,6 +278,10 @@ class Utils {
|
|
|
211
278
|
determinant = Utils.canUpdateShareControl(displayHints);
|
|
212
279
|
break;
|
|
213
280
|
|
|
281
|
+
case Control.video:
|
|
282
|
+
determinant = Utils.canUpdateVideo(control as ControlConfig<VideoProperties>, displayHints);
|
|
283
|
+
break;
|
|
284
|
+
|
|
214
285
|
case Control.viewTheParticipantList:
|
|
215
286
|
determinant = Utils.canUpdateViewTheParticipantsList(
|
|
216
287
|
control as ControlConfig<ViewTheParticipantListProperties>,
|
package/src/index.ts
CHANGED
|
@@ -9,18 +9,25 @@ registerPlugin('meetings', Meetings, {
|
|
|
9
9
|
});
|
|
10
10
|
|
|
11
11
|
export {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
getDevices,
|
|
13
|
+
LocalStream,
|
|
14
|
+
LocalDisplayStream,
|
|
15
|
+
LocalSystemAudioStream,
|
|
16
|
+
LocalStreamEventNames,
|
|
17
|
+
StreamEventNames,
|
|
16
18
|
type ServerMuteReason,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
LocalMicrophoneStreamEventNames,
|
|
20
|
+
LocalCameraStreamEventNames,
|
|
21
|
+
LocalMicrophoneStream,
|
|
22
|
+
LocalCameraStream,
|
|
23
|
+
createMicrophoneStream,
|
|
24
|
+
createCameraStream,
|
|
25
|
+
createDisplayStream,
|
|
26
|
+
createDisplayStreamWithAudio,
|
|
27
|
+
FacingMode,
|
|
28
|
+
DisplaySurface,
|
|
29
|
+
PresetCameraConstraints,
|
|
30
|
+
type VideoContentHint,
|
|
24
31
|
} from '@webex/media-helpers';
|
|
25
32
|
|
|
26
33
|
export default Meetings;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Simultaneous Interpretation
|
|
2
|
+
|
|
3
|
+
Simultaneous Interpretation (SI) feature provides support for interpretation of in-meeting audio. The host will specify the target languages at schedule time and assign language pairs to the desired interpreters. Each interpreter will use their client to indicate the language spoken at any point in time. For example, Alice might be translating between English and French. When an English speaker is talking in the meeting, Alice will use her client to indicate she is speaking French. When a French speaker is talking, Alice will indicate that she is speaking English. The host’s client will display the status of each interpreter including the current interpretation direction.
|
|
4
|
+
|
|
5
|
+
### Structure
|
|
6
|
+
SI languages are available in the siLanguages collection. List the languages which current meeting support to do simultaneous interpretation. Can subscribe the language's voice channel which you want to listen from the list.
|
|
7
|
+
|
|
8
|
+
```javascript
|
|
9
|
+
interpretation.siLanguages;
|
|
10
|
+
```
|
|
11
|
+
### Attendee functionality
|
|
12
|
+
```javascript
|
|
13
|
+
//subscribe this si language's voice channel
|
|
14
|
+
siLanguage.subscribe();
|
|
15
|
+
|
|
16
|
+
//unsubscribe this si language's voice channel
|
|
17
|
+
siLanguage.unsubscribe();
|
|
18
|
+
```
|
|
19
|
+
### Host functionality
|
|
20
|
+
The following are methods available to the host of a meeting.
|
|
21
|
+
|
|
22
|
+
```javascript
|
|
23
|
+
//get the support list of interpretation languages. only host is allowed to call it
|
|
24
|
+
interpretation.getSupportLanguages();
|
|
25
|
+
|
|
26
|
+
//get the interpreters list of the meeting
|
|
27
|
+
interpretation.getInterpreters();
|
|
28
|
+
|
|
29
|
+
//update the interpreters list, input parameter is an array of interpreters
|
|
30
|
+
interpretation.updateInterpreters([{
|
|
31
|
+
sourceLanguage : 'fr-FR',
|
|
32
|
+
targetLanguage : 'zh-ZH',
|
|
33
|
+
usingResource : {
|
|
34
|
+
id : 'a96747e2-1fc6-41d3-9ac7-512dd9478b6e'
|
|
35
|
+
},
|
|
36
|
+
order : 0
|
|
37
|
+
},]);
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Interpreter functionality
|
|
41
|
+
|
|
42
|
+
The following are methods available to the interpreters of a meeting.
|
|
43
|
+
|
|
44
|
+
```javascript
|
|
45
|
+
//Change direction of interpretation for an interpreter participant
|
|
46
|
+
interpretation.changeDirection();
|
|
47
|
+
|
|
48
|
+
//Handoff between interpreters, input paramerter participantId is the target to handoff
|
|
49
|
+
interpretation.handoffInterpreter(participantId);
|
|
50
|
+
|
|
51
|
+
//in-active interpreter request to handoff to self
|
|
52
|
+
interpretation.requestHandoff();
|
|
53
|
+
|
|
54
|
+
//accept the request of handoff, input paramter url is from last approval event which generate by server side
|
|
55
|
+
interpretation.acceptRequest(url);
|
|
56
|
+
|
|
57
|
+
//decline the request of handoff, input paramter url is from last approval event which generate by server side
|
|
58
|
+
interpretation.declineRequest(url);
|
|
59
|
+
|
|
60
|
+
```
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import AmpCollection from 'ampersand-collection';
|
|
6
|
+
|
|
7
|
+
import {MEETINGS} from '../constants';
|
|
8
|
+
|
|
9
|
+
import SILanguage from './siLanguage';
|
|
10
|
+
|
|
11
|
+
const SILanguageCollection = AmpCollection.extend({
|
|
12
|
+
model: SILanguage,
|
|
13
|
+
|
|
14
|
+
namespace: MEETINGS,
|
|
15
|
+
|
|
16
|
+
mainIndex: 'languageName',
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
export default SILanguageCollection;
|