@webex/plugin-meetings 3.8.1 → 3.9.0-multipleLLM.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 +26 -13
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/constants.js +34 -3
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +1 -0
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/types.js.map +1 -1
- package/dist/controls-options-manager/util.js +26 -0
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +11 -3
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +107 -95
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/parser.js +4 -1
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/media/index.js +2 -2
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +53 -5
- package/dist/media/properties.js.map +1 -1
- package/dist/meeting/brbState.js +17 -14
- package/dist/meeting/brbState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +13 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +555 -296
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +2 -5
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +44 -0
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/{rtcMetrics/constants.js → meeting/type.js} +1 -5
- package/dist/meeting/type.js.map +1 -0
- package/dist/meeting/util.js +98 -13
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +29 -21
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meetings/index.js +18 -10
- package/dist/meetings/index.js.map +1 -1
- package/dist/member/types.js.map +1 -1
- package/dist/members/collection.js +13 -0
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +53 -29
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +3 -3
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +25 -8
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +3 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +1 -1
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +34 -5
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +42 -2
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +32 -2
- package/dist/multistream/sendSlotManager.js.map +1 -1
- package/dist/reachability/index.js +8 -13
- package/dist/reachability/index.js.map +1 -1
- package/dist/types/constants.d.ts +30 -0
- package/dist/types/controls-options-manager/enums.d.ts +2 -1
- package/dist/types/controls-options-manager/types.d.ts +4 -1
- package/dist/types/locus-info/index.d.ts +54 -10
- package/dist/types/media/properties.d.ts +21 -0
- package/dist/types/meeting/brbState.d.ts +0 -1
- package/dist/types/meeting/in-meeting-actions.d.ts +12 -0
- package/dist/types/meeting/index.d.ts +58 -20
- package/dist/types/meeting/request.d.ts +18 -1
- package/dist/types/meeting/request.type.d.ts +74 -0
- package/dist/types/meeting/type.d.ts +9 -0
- package/dist/types/meeting/util.d.ts +13 -3
- package/dist/types/meeting-info/meeting-info-v2.d.ts +6 -3
- package/dist/types/meetings/index.d.ts +3 -1
- package/dist/types/member/types.d.ts +1 -0
- package/dist/types/members/collection.d.ts +6 -0
- package/dist/types/members/index.d.ts +22 -9
- package/dist/types/members/request.d.ts +1 -1
- package/dist/types/members/util.d.ts +13 -6
- package/dist/types/metrics/constants.d.ts +2 -0
- package/dist/types/multistream/remoteMedia.d.ts +20 -1
- package/dist/types/multistream/remoteMediaGroup.d.ts +11 -0
- package/dist/types/multistream/sendSlotManager.d.ts +16 -0
- package/dist/types/reachability/index.d.ts +2 -2
- package/dist/webinar/index.js +1 -1
- package/package.json +24 -25
- package/src/constants.ts +34 -2
- package/src/controls-options-manager/enums.ts +1 -0
- package/src/controls-options-manager/types.ts +6 -1
- package/src/controls-options-manager/util.ts +31 -0
- package/src/locus-info/controlsUtils.ts +15 -0
- package/src/locus-info/index.ts +174 -96
- package/src/locus-info/parser.ts +5 -1
- package/src/media/index.ts +2 -2
- package/src/media/properties.ts +43 -0
- package/src/meeting/brbState.ts +13 -9
- package/src/meeting/in-meeting-actions.ts +25 -0
- package/src/meeting/index.ts +362 -75
- package/src/meeting/muteState.ts +2 -6
- package/src/meeting/request.ts +39 -0
- package/src/meeting/request.type.ts +64 -0
- package/src/meeting/type.ts +9 -0
- package/src/meeting/util.ts +114 -22
- package/src/meeting-info/meeting-info-v2.ts +24 -5
- package/src/meetings/index.ts +12 -5
- package/src/member/types.ts +1 -0
- package/src/members/collection.ts +11 -0
- package/src/members/index.ts +51 -15
- package/src/members/request.ts +2 -2
- package/src/members/util.ts +34 -6
- package/src/metrics/constants.ts +2 -0
- package/src/multistream/mediaRequestManager.ts +7 -7
- package/src/multistream/remoteMedia.ts +34 -4
- package/src/multistream/remoteMediaGroup.ts +37 -2
- package/src/multistream/sendSlotManager.ts +34 -2
- package/src/reachability/index.ts +8 -16
- package/test/unit/spec/controls-options-manager/util.js +58 -0
- package/test/unit/spec/locus-info/controlsUtils.js +52 -0
- package/test/unit/spec/locus-info/index.js +270 -97
- package/test/unit/spec/locus-info/parser.js +3 -2
- package/test/unit/spec/media/index.ts +107 -0
- package/test/unit/spec/media/properties.ts +137 -0
- package/test/unit/spec/meeting/brbState.ts +23 -4
- package/test/unit/spec/meeting/in-meeting-actions.ts +12 -0
- package/test/unit/spec/meeting/index.js +1194 -97
- package/test/unit/spec/meeting/muteState.js +32 -6
- package/test/unit/spec/meeting/request.js +92 -0
- package/test/unit/spec/meeting/utils.js +167 -17
- package/test/unit/spec/meeting-info/meetinginfov2.js +8 -3
- package/test/unit/spec/meetings/index.js +12 -1
- package/test/unit/spec/members/collection.js +120 -0
- package/test/unit/spec/members/index.js +140 -12
- package/test/unit/spec/members/request.js +57 -2
- package/test/unit/spec/members/utils.js +139 -17
- package/test/unit/spec/multistream/mediaRequestManager.ts +19 -6
- package/test/unit/spec/multistream/remoteMedia.ts +66 -2
- package/test/unit/spec/multistream/sendSlotManager.ts +59 -0
- package/test/unit/spec/reachability/index.ts +160 -9
- package/dist/annotation/annotation.types.d.ts +0 -42
- package/dist/annotation/constants.d.ts +0 -31
- package/dist/annotation/index.d.ts +0 -117
- package/dist/breakouts/breakout.d.ts +0 -8
- package/dist/breakouts/collection.d.ts +0 -5
- package/dist/breakouts/edit-lock-error.d.ts +0 -15
- package/dist/breakouts/events.d.ts +0 -8
- package/dist/breakouts/index.d.ts +0 -5
- package/dist/breakouts/request.d.ts +0 -22
- package/dist/breakouts/utils.d.ts +0 -15
- package/dist/common/browser-detection.d.ts +0 -9
- package/dist/common/collection.d.ts +0 -48
- package/dist/common/config.d.ts +0 -2
- package/dist/common/errors/captcha-error.d.ts +0 -15
- package/dist/common/errors/intent-to-join.d.ts +0 -16
- package/dist/common/errors/join-meeting.d.ts +0 -17
- package/dist/common/errors/media.d.ts +0 -15
- package/dist/common/errors/no-meeting-info.d.ts +0 -14
- package/dist/common/errors/parameter.d.ts +0 -15
- package/dist/common/errors/password-error.d.ts +0 -15
- package/dist/common/errors/permission.d.ts +0 -14
- package/dist/common/errors/reclaim-host-role-error.d.ts +0 -60
- package/dist/common/errors/reclaim-host-role-error.js +0 -158
- package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
- package/dist/common/errors/reclaim-host-role-errors.d.ts +0 -60
- package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
- package/dist/common/errors/reconnection-in-progress.js +0 -35
- package/dist/common/errors/reconnection-in-progress.js.map +0 -1
- package/dist/common/errors/reconnection.d.ts +0 -15
- package/dist/common/errors/stats.d.ts +0 -15
- package/dist/common/errors/webex-errors.d.ts +0 -81
- package/dist/common/errors/webex-meetings-error.d.ts +0 -20
- package/dist/common/events/events-scope.d.ts +0 -17
- package/dist/common/events/events.d.ts +0 -12
- package/dist/common/events/trigger-proxy.d.ts +0 -2
- package/dist/common/events/util.d.ts +0 -2
- package/dist/common/logs/logger-config.d.ts +0 -2
- package/dist/common/logs/logger-proxy.d.ts +0 -2
- package/dist/common/logs/request.d.ts +0 -34
- package/dist/common/queue.d.ts +0 -32
- package/dist/config.d.ts +0 -73
- package/dist/constants.d.ts +0 -952
- package/dist/controls-options-manager/constants.d.ts +0 -4
- package/dist/controls-options-manager/enums.d.ts +0 -5
- package/dist/controls-options-manager/index.d.ts +0 -120
- package/dist/controls-options-manager/types.d.ts +0 -43
- package/dist/controls-options-manager/util.d.ts +0 -7
- package/dist/index.d.ts +0 -4
- package/dist/interceptors/index.d.ts +0 -2
- package/dist/interceptors/locusRetry.d.ts +0 -27
- package/dist/interpretation/collection.d.ts +0 -5
- package/dist/interpretation/index.d.ts +0 -5
- package/dist/interpretation/siLanguage.d.ts +0 -5
- package/dist/locus-info/controlsUtils.d.ts +0 -2
- package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
- package/dist/locus-info/fullState.d.ts +0 -2
- package/dist/locus-info/hostUtils.d.ts +0 -2
- package/dist/locus-info/index.d.ts +0 -269
- package/dist/locus-info/infoUtils.d.ts +0 -2
- package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
- package/dist/locus-info/parser.d.ts +0 -212
- package/dist/locus-info/selfUtils.d.ts +0 -2
- package/dist/media/index.d.ts +0 -32
- package/dist/media/properties.d.ts +0 -108
- package/dist/media/util.d.ts +0 -2
- package/dist/mediaQualityMetrics/config.d.ts +0 -233
- package/dist/mediaQualityMetrics/config.js +0 -513
- package/dist/mediaQualityMetrics/config.js.map +0 -1
- package/dist/meeting/effectsState.d.ts +0 -42
- package/dist/meeting/effectsState.js +0 -260
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/meeting/in-meeting-actions.d.ts +0 -79
- package/dist/meeting/index.d.ts +0 -1622
- package/dist/meeting/locusMediaRequest.d.ts +0 -74
- package/dist/meeting/muteState.d.ts +0 -116
- package/dist/meeting/request.d.ts +0 -257
- package/dist/meeting/request.type.d.ts +0 -11
- package/dist/meeting/state.d.ts +0 -9
- package/dist/meeting/util.d.ts +0 -2
- package/dist/meeting/voicea-meeting.d.ts +0 -16
- package/dist/meeting-info/collection.d.ts +0 -20
- package/dist/meeting-info/index.d.ts +0 -57
- package/dist/meeting-info/meeting-info-v2.d.ts +0 -93
- package/dist/meeting-info/request.d.ts +0 -22
- package/dist/meeting-info/util.d.ts +0 -2
- package/dist/meeting-info/utilv2.d.ts +0 -2
- package/dist/meetings/collection.d.ts +0 -23
- package/dist/meetings/index.d.ts +0 -296
- package/dist/meetings/meetings.types.d.ts +0 -4
- package/dist/meetings/request.d.ts +0 -27
- package/dist/meetings/util.d.ts +0 -18
- package/dist/member/index.d.ts +0 -148
- package/dist/member/member.types.d.ts +0 -11
- package/dist/member/member.types.js +0 -18
- package/dist/member/member.types.js.map +0 -1
- package/dist/member/types.d.ts +0 -32
- package/dist/member/util.d.ts +0 -2
- package/dist/members/collection.d.ts +0 -24
- package/dist/members/index.d.ts +0 -308
- package/dist/members/request.d.ts +0 -58
- package/dist/members/types.d.ts +0 -25
- package/dist/members/util.d.ts +0 -2
- package/dist/metrics/config.d.ts +0 -169
- package/dist/metrics/config.js +0 -289
- package/dist/metrics/config.js.map +0 -1
- package/dist/metrics/constants.d.ts +0 -59
- package/dist/metrics/index.d.ts +0 -152
- package/dist/multistream/mediaRequestManager.d.ts +0 -119
- package/dist/multistream/receiveSlot.d.ts +0 -68
- package/dist/multistream/receiveSlotManager.d.ts +0 -56
- package/dist/multistream/remoteMedia.d.ts +0 -72
- package/dist/multistream/remoteMediaGroup.d.ts +0 -49
- package/dist/multistream/remoteMediaManager.d.ts +0 -300
- package/dist/multistream/sendSlotManager.d.ts +0 -69
- package/dist/networkQualityMonitor/index.d.ts +0 -70
- package/dist/networkQualityMonitor/index.js +0 -226
- package/dist/networkQualityMonitor/index.js.map +0 -1
- package/dist/peer-connection-manager/index.d.ts +0 -6
- package/dist/peer-connection-manager/index.js +0 -671
- package/dist/peer-connection-manager/index.js.map +0 -1
- package/dist/peer-connection-manager/util.d.ts +0 -6
- package/dist/peer-connection-manager/util.js +0 -110
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/dist/personal-meeting-room/index.d.ts +0 -47
- package/dist/personal-meeting-room/request.d.ts +0 -14
- package/dist/personal-meeting-room/util.d.ts +0 -2
- package/dist/reachability/clusterReachability.d.ts +0 -109
- package/dist/reachability/index.d.ts +0 -139
- package/dist/reachability/request.d.ts +0 -35
- package/dist/reachability/util.d.ts +0 -8
- package/dist/reactions/constants.d.ts +0 -3
- package/dist/reactions/reactions.d.ts +0 -4
- package/dist/reactions/reactions.type.d.ts +0 -32
- package/dist/reconnection-manager/index.d.ts +0 -112
- package/dist/recording-controller/enums.d.ts +0 -7
- package/dist/recording-controller/index.d.ts +0 -193
- package/dist/recording-controller/util.d.ts +0 -13
- package/dist/roap/collection.d.ts +0 -10
- package/dist/roap/collection.js +0 -63
- package/dist/roap/collection.js.map +0 -1
- package/dist/roap/handler.d.ts +0 -47
- package/dist/roap/handler.js +0 -279
- package/dist/roap/handler.js.map +0 -1
- package/dist/roap/index.d.ts +0 -116
- package/dist/roap/request.d.ts +0 -35
- package/dist/roap/state.d.ts +0 -9
- package/dist/roap/state.js +0 -127
- package/dist/roap/state.js.map +0 -1
- package/dist/roap/turnDiscovery.d.ts +0 -81
- package/dist/roap/util.d.ts +0 -2
- package/dist/roap/util.js +0 -76
- package/dist/roap/util.js.map +0 -1
- package/dist/rtcMetrics/constants.d.ts +0 -4
- package/dist/rtcMetrics/constants.js.map +0 -1
- package/dist/rtcMetrics/index.d.ts +0 -61
- package/dist/rtcMetrics/index.js +0 -197
- package/dist/rtcMetrics/index.js.map +0 -1
- package/dist/statsAnalyzer/global.d.ts +0 -118
- package/dist/statsAnalyzer/global.js +0 -127
- package/dist/statsAnalyzer/global.js.map +0 -1
- package/dist/statsAnalyzer/index.d.ts +0 -193
- package/dist/statsAnalyzer/index.js +0 -1019
- package/dist/statsAnalyzer/index.js.map +0 -1
- package/dist/statsAnalyzer/mqaUtil.d.ts +0 -22
- package/dist/statsAnalyzer/mqaUtil.js +0 -181
- package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
- package/dist/transcription/index.d.ts +0 -64
- package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
- package/dist/types/mediaQualityMetrics/config.d.ts +0 -241
- package/dist/types/networkQualityMonitor/index.d.ts +0 -70
- package/dist/types/rtcMetrics/constants.d.ts +0 -4
- package/dist/types/rtcMetrics/index.d.ts +0 -71
- package/dist/types/statsAnalyzer/global.d.ts +0 -36
- package/dist/types/statsAnalyzer/index.d.ts +0 -217
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
- package/dist/webinar/collection.d.ts +0 -16
- package/dist/webinar/index.d.ts +0 -5
package/src/meeting/muteState.ts
CHANGED
@@ -291,18 +291,14 @@ export class MuteState {
|
|
291
291
|
);
|
292
292
|
|
293
293
|
return MeetingUtil.remoteUpdateAudioVideo(meeting, audioMuted, videoMuted)
|
294
|
-
.then((
|
294
|
+
.then((response) => {
|
295
295
|
LoggerProxy.logger.info(
|
296
296
|
`Meeting:muteState#sendLocalMuteRequestToServer --> ${this.type}: local mute (audio=${audioMuted}, video=${videoMuted}) applied to server`
|
297
297
|
);
|
298
298
|
|
299
299
|
this.state.server.localMute = this.type === AUDIO ? audioMuted : videoMuted;
|
300
300
|
|
301
|
-
|
302
|
-
meeting.locusInfo.handleLocusDelta(locus, meeting);
|
303
|
-
}
|
304
|
-
|
305
|
-
return locus;
|
301
|
+
return MeetingUtil.updateLocusFromApiResponse(meeting, response);
|
306
302
|
})
|
307
303
|
.catch((remoteUpdateError) => {
|
308
304
|
LoggerProxy.logger.warn(
|
package/src/meeting/request.ts
CHANGED
@@ -32,6 +32,7 @@ import {
|
|
32
32
|
BrbOptions,
|
33
33
|
ToggleReactionsOptions,
|
34
34
|
PostMeetingDataConsentOptions,
|
35
|
+
SynchronizeVideoLayout,
|
35
36
|
} from './request.type';
|
36
37
|
import MeetingUtil from './util';
|
37
38
|
import {AnnotationInfo} from '../annotation/annotation.types';
|
@@ -969,4 +970,42 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
969
970
|
},
|
970
971
|
});
|
971
972
|
}
|
973
|
+
|
974
|
+
/**
|
975
|
+
* Synchronize the stage for a meeting
|
976
|
+
*
|
977
|
+
* @param {LocusUrl} locusUrl The locus URL
|
978
|
+
* @param {SetStageVideoLayout} videoLayout The video layout to synchronize
|
979
|
+
* @returns {Promise} The locus request
|
980
|
+
*/
|
981
|
+
synchronizeStage(locusUrl: string, videoLayout: SynchronizeVideoLayout) {
|
982
|
+
return this.locusDeltaRequest({
|
983
|
+
method: HTTP_VERBS.PATCH,
|
984
|
+
uri: `${locusUrl}/${CONTROLS}`,
|
985
|
+
body: {videoLayout},
|
986
|
+
});
|
987
|
+
}
|
988
|
+
|
989
|
+
/**
|
990
|
+
* Sends a request to notify the host of a meeting.
|
991
|
+
* @param {string} siteFullUrl - The site URL.
|
992
|
+
* @param {string} locusId - The locus ID.
|
993
|
+
* @param {string} meetingUuid - The meeting UUID.
|
994
|
+
* @param {Array<string>} displayName - The display names to notify the host about.
|
995
|
+
* @returns {Promise}
|
996
|
+
*/
|
997
|
+
notifyHost(siteFullUrl: string, locusId: string, meetingUuid: string, displayName: string[]) {
|
998
|
+
// @ts-ignore
|
999
|
+
return this.request({
|
1000
|
+
method: HTTP_VERBS.POST,
|
1001
|
+
uri: `https://${siteFullUrl}/wbxappapi/v1/meetings/${meetingUuid}/notifyhost`,
|
1002
|
+
body: {
|
1003
|
+
displayName,
|
1004
|
+
size: displayName?.length,
|
1005
|
+
},
|
1006
|
+
headers: {
|
1007
|
+
locusId,
|
1008
|
+
},
|
1009
|
+
});
|
1010
|
+
}
|
972
1011
|
}
|
@@ -25,3 +25,67 @@ export type PostMeetingDataConsentOptions = {
|
|
25
25
|
deviceUrl: string;
|
26
26
|
selfId: string;
|
27
27
|
};
|
28
|
+
|
29
|
+
export type StageCustomLogoPositions =
|
30
|
+
| 'LowerLeft'
|
31
|
+
| 'LowerMiddle'
|
32
|
+
| 'LowerRight'
|
33
|
+
| 'UpperLeft'
|
34
|
+
| 'UpperMiddle'
|
35
|
+
| 'UpperRight';
|
36
|
+
|
37
|
+
export type StageNameLabelType = 'Primary' | 'PrimaryInverted' | 'Secondary' | 'SecondaryInverted';
|
38
|
+
|
39
|
+
export type StageCustomBackground = {
|
40
|
+
url: string;
|
41
|
+
[others: string]: unknown;
|
42
|
+
};
|
43
|
+
|
44
|
+
export type StageCustomLogo = {
|
45
|
+
url: string;
|
46
|
+
position: StageCustomLogoPositions;
|
47
|
+
[others: string]: unknown;
|
48
|
+
};
|
49
|
+
|
50
|
+
export type StageCustomNameLabel = {
|
51
|
+
accentColor: string;
|
52
|
+
background: {color: string};
|
53
|
+
border: {color: string};
|
54
|
+
content: {displayName: {color: string}; subtitle: {color: string}};
|
55
|
+
decoration: {color: string};
|
56
|
+
fadeOut?: {delay: number};
|
57
|
+
type: StageNameLabelType;
|
58
|
+
[others: string]: unknown;
|
59
|
+
};
|
60
|
+
|
61
|
+
export type SetStageOptions = {
|
62
|
+
activeSpeakerProportion?: number;
|
63
|
+
customBackground?: StageCustomBackground;
|
64
|
+
customLogo?: StageCustomLogo;
|
65
|
+
customNameLabel?: StageCustomNameLabel;
|
66
|
+
importantParticipants?: {mainCsi: number; participantId: string}[];
|
67
|
+
lockAttendeeViewOnStage?: boolean;
|
68
|
+
showActiveSpeaker?: boolean;
|
69
|
+
};
|
70
|
+
|
71
|
+
export type SetStageVideoLayout = {
|
72
|
+
overrideDefault: true;
|
73
|
+
lockAttendeeViewOnStageOnly: boolean;
|
74
|
+
stageParameters: {
|
75
|
+
importantParticipants?: {participantId: string; mainCsi: number; order: number}[];
|
76
|
+
showActiveSpeaker: {show: boolean; order: number};
|
77
|
+
activeSpeakerProportion: number;
|
78
|
+
stageManagerType: number;
|
79
|
+
};
|
80
|
+
customLayouts?: {
|
81
|
+
background?: StageCustomBackground;
|
82
|
+
logo?: StageCustomLogo;
|
83
|
+
};
|
84
|
+
nameLabelStyle?: StageCustomNameLabel;
|
85
|
+
};
|
86
|
+
|
87
|
+
export type UnsetStageVideoLayout = {
|
88
|
+
overrideDefault: false;
|
89
|
+
};
|
90
|
+
|
91
|
+
export type SynchronizeVideoLayout = SetStageVideoLayout | UnsetStageVideoLayout;
|
package/src/meeting/util.ts
CHANGED
@@ -59,18 +59,16 @@ const MeetingUtil = {
|
|
59
59
|
);
|
60
60
|
}
|
61
61
|
|
62
|
-
return meeting.locusMediaRequest
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
})
|
73
|
-
.then((response) => response?.body?.locus);
|
62
|
+
return meeting.locusMediaRequest.send({
|
63
|
+
type: 'LocalMute',
|
64
|
+
selfUrl: meeting.selfUrl,
|
65
|
+
mediaId: meeting.mediaId,
|
66
|
+
sequence: meeting.locusInfo.sequence,
|
67
|
+
muteOptions: {
|
68
|
+
audioMuted,
|
69
|
+
videoMuted,
|
70
|
+
},
|
71
|
+
});
|
74
72
|
},
|
75
73
|
|
76
74
|
hasOwner: (info) => info && info.owner,
|
@@ -115,6 +113,28 @@ const MeetingUtil = {
|
|
115
113
|
return IP_VERSION.unknown;
|
116
114
|
},
|
117
115
|
|
116
|
+
/**
|
117
|
+
* Returns CA event labels related to Orpheus ipver parameter that can be sent to CA with any CA event
|
118
|
+
* @param {any} webex instance
|
119
|
+
* @returns {Array<string>|undefined} array of CA event labels or undefined if no labels should be sent
|
120
|
+
*/
|
121
|
+
getCaEventLabelsForIpVersion(webex: any): Array<string> | undefined {
|
122
|
+
const ipver = MeetingUtil.getIpVersion(webex);
|
123
|
+
|
124
|
+
switch (ipver) {
|
125
|
+
case IP_VERSION.unknown:
|
126
|
+
return undefined;
|
127
|
+
case IP_VERSION.only_ipv4:
|
128
|
+
return ['hasIpv4_true'];
|
129
|
+
case IP_VERSION.only_ipv6:
|
130
|
+
return ['hasIpv6_true'];
|
131
|
+
case IP_VERSION.ipv4_and_ipv6:
|
132
|
+
return ['hasIpv4_true', 'hasIpv6_true'];
|
133
|
+
default:
|
134
|
+
return undefined;
|
135
|
+
}
|
136
|
+
},
|
137
|
+
|
118
138
|
joinMeeting: async (meeting, options) => {
|
119
139
|
if (!meeting) {
|
120
140
|
return Promise.reject(new ParameterError('You need a meeting object.'));
|
@@ -197,6 +217,17 @@ const MeetingUtil = {
|
|
197
217
|
});
|
198
218
|
|
199
219
|
return parsed;
|
220
|
+
})
|
221
|
+
.catch((err) => {
|
222
|
+
webex.internal.newMetrics.submitClientEvent({
|
223
|
+
name: 'client.locus.join.response',
|
224
|
+
payload: {
|
225
|
+
identifiers: {meetingLookupUrl: meeting.meetingInfo?.meetingLookupUrl},
|
226
|
+
},
|
227
|
+
options: {meetingId: meeting.id, rawError: err},
|
228
|
+
});
|
229
|
+
|
230
|
+
throw err;
|
200
231
|
});
|
201
232
|
},
|
202
233
|
|
@@ -208,6 +239,10 @@ const MeetingUtil = {
|
|
208
239
|
meeting.simultaneousInterpretation.cleanUp();
|
209
240
|
meeting.locusMediaRequest = undefined;
|
210
241
|
|
242
|
+
meeting.webex?.internal?.newMetrics?.callDiagnosticMetrics?.clearEventLimitsForCorrelationId(
|
243
|
+
meeting.correlationId
|
244
|
+
);
|
245
|
+
|
211
246
|
// make sure we send last metrics before we close the peerconnection
|
212
247
|
const stopStatsAnalyzer = meeting.statsAnalyzer
|
213
248
|
? meeting.statsAnalyzer.stopAnalyzer()
|
@@ -328,10 +363,57 @@ const MeetingUtil = {
|
|
328
363
|
meeting.resourceId = meeting.resourceId || options.resourceId;
|
329
364
|
|
330
365
|
if (meeting.requiredCaptcha) {
|
331
|
-
|
366
|
+
const errorToThrow = new CaptchaError();
|
367
|
+
|
368
|
+
// @ts-ignore
|
369
|
+
webex.internal.newMetrics.submitClientEvent({
|
370
|
+
name: 'client.meetinginfo.response',
|
371
|
+
options: {
|
372
|
+
meetingId: meeting.id,
|
373
|
+
},
|
374
|
+
payload: {
|
375
|
+
errors: [
|
376
|
+
{
|
377
|
+
fatal: false,
|
378
|
+
category: 'expected',
|
379
|
+
name: 'other',
|
380
|
+
shownToUser: false,
|
381
|
+
errorCode: errorToThrow.code,
|
382
|
+
errorDescription: errorToThrow.name,
|
383
|
+
rawErrorMessage: errorToThrow.sdkMessage,
|
384
|
+
},
|
385
|
+
],
|
386
|
+
},
|
387
|
+
});
|
388
|
+
|
389
|
+
return Promise.reject(errorToThrow);
|
332
390
|
}
|
391
|
+
|
333
392
|
if (meeting.passwordStatus === PASSWORD_STATUS.REQUIRED) {
|
334
|
-
|
393
|
+
const errorToThrow = new PasswordError();
|
394
|
+
|
395
|
+
// @ts-ignore
|
396
|
+
webex.internal.newMetrics.submitClientEvent({
|
397
|
+
name: 'client.meetinginfo.response',
|
398
|
+
options: {
|
399
|
+
meetingId: meeting.id,
|
400
|
+
},
|
401
|
+
payload: {
|
402
|
+
errors: [
|
403
|
+
{
|
404
|
+
fatal: false,
|
405
|
+
category: 'expected',
|
406
|
+
name: 'other',
|
407
|
+
shownToUser: false,
|
408
|
+
errorCode: errorToThrow.code,
|
409
|
+
errorDescription: errorToThrow.name,
|
410
|
+
rawErrorMessage: errorToThrow.sdkMessage,
|
411
|
+
},
|
412
|
+
],
|
413
|
+
},
|
414
|
+
});
|
415
|
+
|
416
|
+
return Promise.reject(errorToThrow);
|
335
417
|
}
|
336
418
|
|
337
419
|
if (options.pin) {
|
@@ -542,11 +624,23 @@ const MeetingUtil = {
|
|
542
624
|
canStartManualCaption: (displayHints) =>
|
543
625
|
displayHints.includes(DISPLAY_HINTS.MANUAL_CAPTION_START),
|
544
626
|
|
627
|
+
isLocalRecordingStarted: (displayHints) =>
|
628
|
+
displayHints.includes(DISPLAY_HINTS.LOCAL_RECORDING_STATUS_STARTED),
|
629
|
+
|
630
|
+
isLocalRecordingStopped: (displayHints) =>
|
631
|
+
displayHints.includes(DISPLAY_HINTS.LOCAL_RECORDING_STATUS_STOPPED),
|
632
|
+
|
633
|
+
isLocalRecordingPaused: (displayHints) =>
|
634
|
+
displayHints.includes(DISPLAY_HINTS.LOCAL_RECORDING_STATUS_PAUSED),
|
635
|
+
|
545
636
|
canStopManualCaption: (displayHints) => displayHints.includes(DISPLAY_HINTS.MANUAL_CAPTION_STOP),
|
546
637
|
|
547
638
|
isManualCaptionActive: (displayHints) =>
|
548
639
|
displayHints.includes(DISPLAY_HINTS.MANUAL_CAPTION_STATUS_ACTIVE),
|
549
640
|
|
641
|
+
isSpokenLanguageAutoDetectionEnabled: (displayHints) =>
|
642
|
+
displayHints.includes(DISPLAY_HINTS.SPOKEN_LANGUAGE_AUTO_DETECTION_ENABLED),
|
643
|
+
|
550
644
|
isWebexAssistantActive: (displayHints) =>
|
551
645
|
displayHints.includes(DISPLAY_HINTS.WEBEX_ASSISTANT_STATUS_ACTIVE),
|
552
646
|
|
@@ -602,22 +696,20 @@ const MeetingUtil = {
|
|
602
696
|
},
|
603
697
|
|
604
698
|
/**
|
605
|
-
* Updates the locus info for the meeting with the
|
606
|
-
* returned from requests
|
699
|
+
* Updates the locus info for the meeting with the locus
|
700
|
+
* information returned from API requests made to Locus
|
607
701
|
* Returns the original response object
|
608
702
|
* @param {Object} meeting The meeting object
|
609
703
|
* @param {Object} response The response of the http request
|
610
704
|
* @returns {Object}
|
611
705
|
*/
|
612
|
-
|
706
|
+
updateLocusFromApiResponse: (meeting, response) => {
|
613
707
|
if (!meeting) {
|
614
708
|
return response;
|
615
709
|
}
|
616
710
|
|
617
|
-
|
618
|
-
|
619
|
-
if (locus) {
|
620
|
-
meeting.locusInfo.handleLocusDelta(locus, meeting);
|
711
|
+
if (response?.body?.locus) {
|
712
|
+
meeting.locusInfo.handleLocusAPIResponse(meeting, response.body);
|
621
713
|
}
|
622
714
|
|
623
715
|
return response;
|
@@ -664,7 +756,7 @@ const MeetingUtil = {
|
|
664
756
|
|
665
757
|
return meeting
|
666
758
|
.request(options)
|
667
|
-
.then((response) => MeetingUtil.
|
759
|
+
.then((response) => MeetingUtil.updateLocusFromApiResponse(meeting, response));
|
668
760
|
};
|
669
761
|
|
670
762
|
return locusDeltaRequest;
|
@@ -371,6 +371,7 @@ export default class MeetingInfoV2 {
|
|
371
371
|
* @param {String} conversationUrl conversationUrl to start adhoc meeting on
|
372
372
|
* @param {String} installedOrgID org ID of user's machine
|
373
373
|
* @param {Boolean} enableStaticMeetingLink whether or not to enable static meeting link
|
374
|
+
* @param {String} classificationId need it to start adhoc meeting if space support classification
|
374
375
|
* @returns {Promise} returns a meeting info object
|
375
376
|
* @public
|
376
377
|
* @memberof MeetingInfo
|
@@ -379,7 +380,8 @@ export default class MeetingInfoV2 {
|
|
379
380
|
conversationUrl: string,
|
380
381
|
installedOrgID?: string,
|
381
382
|
// setting this to true enables static meeting link
|
382
|
-
enableStaticMeetingLink = false
|
383
|
+
enableStaticMeetingLink = false,
|
384
|
+
classificationId = undefined
|
383
385
|
) {
|
384
386
|
const getInvitees = (particpants = []) => {
|
385
387
|
const invitees = [];
|
@@ -407,6 +409,7 @@ export default class MeetingInfoV2 {
|
|
407
409
|
invitees: getInvitees(conversation.participants?.items),
|
408
410
|
installedOrgID,
|
409
411
|
schedule: enableStaticMeetingLink,
|
412
|
+
classificationId,
|
410
413
|
};
|
411
414
|
|
412
415
|
if (installedOrgID) {
|
@@ -429,16 +432,26 @@ export default class MeetingInfoV2 {
|
|
429
432
|
* Creates adhoc space meetings for a space by fetching the conversation infomation
|
430
433
|
* @param {String} conversationUrl conversationUrl to start adhoc meeting on
|
431
434
|
* @param {String} installedOrgID org ID of user's machine
|
435
|
+
* @param {String} classificationId if space is support classification, it needs provide it during start instant meeting
|
432
436
|
* @returns {Promise} returns a meeting info object
|
433
437
|
* @public
|
434
438
|
* @memberof MeetingInfo
|
435
439
|
*/
|
436
|
-
async createAdhocSpaceMeeting(
|
440
|
+
async createAdhocSpaceMeeting(
|
441
|
+
conversationUrl: string,
|
442
|
+
installedOrgID?: string,
|
443
|
+
classificationId?: string
|
444
|
+
) {
|
437
445
|
if (!this.webex.meetings.preferredWebexSite) {
|
438
446
|
throw Error('No preferred webex site found');
|
439
447
|
}
|
440
448
|
|
441
|
-
return this.createAdhocSpaceMeetingOrEnableStaticMeetingLink(
|
449
|
+
return this.createAdhocSpaceMeetingOrEnableStaticMeetingLink(
|
450
|
+
conversationUrl,
|
451
|
+
installedOrgID,
|
452
|
+
false,
|
453
|
+
classificationId
|
454
|
+
)
|
442
455
|
.then((requestResult) => {
|
443
456
|
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADHOC_MEETING_SUCCESS);
|
444
457
|
|
@@ -618,6 +631,7 @@ export default class MeetingInfoV2 {
|
|
618
631
|
* @param {Object} options
|
619
632
|
* @param {String} registrationId
|
620
633
|
* @param {String} fullSiteUrl
|
634
|
+
* @param {String} classificationId
|
621
635
|
* @returns {Promise} returns a meeting info object
|
622
636
|
* @public
|
623
637
|
* @memberof MeetingInfo
|
@@ -635,7 +649,8 @@ export default class MeetingInfoV2 {
|
|
635
649
|
extraParams: object = {},
|
636
650
|
options: {meetingId?: string; sendCAevents?: boolean} = {},
|
637
651
|
registrationId: string = null,
|
638
|
-
fullSiteUrl: string = null
|
652
|
+
fullSiteUrl: string = null,
|
653
|
+
classificationId: string = null
|
639
654
|
) {
|
640
655
|
const {meetingId, sendCAevents} = options;
|
641
656
|
|
@@ -650,7 +665,11 @@ export default class MeetingInfoV2 {
|
|
650
665
|
this.webex.config.meetings.experimental.enableAdhocMeetings &&
|
651
666
|
this.webex.meetings.preferredWebexSite
|
652
667
|
) {
|
653
|
-
return this.createAdhocSpaceMeeting(
|
668
|
+
return this.createAdhocSpaceMeeting(
|
669
|
+
destinationType.destination,
|
670
|
+
installedOrgID,
|
671
|
+
classificationId
|
672
|
+
);
|
654
673
|
}
|
655
674
|
|
656
675
|
const body = await MeetingInfoUtil.getRequestBody({
|
package/src/meetings/index.ts
CHANGED
@@ -1331,6 +1331,7 @@ export default class Meetings extends WebexPlugin {
|
|
1331
1331
|
* @param {Object} [meetingInfo] - Pre-fetched complete meeting info
|
1332
1332
|
* @param {String} [meetingLookupUrl] - meeting info prefetch url
|
1333
1333
|
* @param {string} sessionCorrelationId - the optional specified sessionCorrelationId (callStateForMetrics.sessionCorrelationId) can be provided instead
|
1334
|
+
* @param {String} classificationId - If space support classification, it will provide it while start instant meeting
|
1334
1335
|
* @returns {Promise<Meeting>} A new Meeting.
|
1335
1336
|
* @public
|
1336
1337
|
* @memberof Meetings
|
@@ -1345,7 +1346,8 @@ export default class Meetings extends WebexPlugin {
|
|
1345
1346
|
callStateForMetrics: CallStateForMetrics = undefined,
|
1346
1347
|
meetingInfo = undefined,
|
1347
1348
|
meetingLookupUrl = undefined,
|
1348
|
-
sessionCorrelationId: string = undefined
|
1349
|
+
sessionCorrelationId: string = undefined,
|
1350
|
+
classificationId: string = undefined
|
1349
1351
|
) {
|
1350
1352
|
// Validate meeting information based on the provided destination and
|
1351
1353
|
// type. This must be performed prior to determining if the meeting is
|
@@ -1415,7 +1417,8 @@ export default class Meetings extends WebexPlugin {
|
|
1415
1417
|
callStateForMetrics,
|
1416
1418
|
failOnMissingMeetingInfo,
|
1417
1419
|
meetingInfo,
|
1418
|
-
meetingLookupUrl
|
1420
|
+
meetingLookupUrl,
|
1421
|
+
classificationId
|
1419
1422
|
).then((createdMeeting: any) => {
|
1420
1423
|
// If the meeting was successfully created.
|
1421
1424
|
if (createdMeeting && createdMeeting.on) {
|
@@ -1529,6 +1532,7 @@ export default class Meetings extends WebexPlugin {
|
|
1529
1532
|
* @param {Boolean} failOnMissingMeetingInfo - whether to throw an error if meeting info fails to fetch (for calls that are not 1:1 or content share)
|
1530
1533
|
* @param {Object} [meetingInfo] - Pre-fetched complete meeting info
|
1531
1534
|
* @param {String} [meetingLookupUrl] - meeting info prefetch url
|
1535
|
+
* @param {String} classificationId see create()
|
1532
1536
|
* @returns {Promise} a new meeting instance complete with meeting info and destination
|
1533
1537
|
* @private
|
1534
1538
|
* @memberof Meetings
|
@@ -1541,7 +1545,8 @@ export default class Meetings extends WebexPlugin {
|
|
1541
1545
|
callStateForMetrics: CallStateForMetrics = undefined,
|
1542
1546
|
failOnMissingMeetingInfo = false,
|
1543
1547
|
meetingInfo = undefined,
|
1544
|
-
meetingLookupUrl = undefined
|
1548
|
+
meetingLookupUrl = undefined,
|
1549
|
+
classificationId = undefined
|
1545
1550
|
) {
|
1546
1551
|
const meeting = new Meeting(
|
1547
1552
|
{
|
@@ -1560,11 +1565,12 @@ export default class Meetings extends WebexPlugin {
|
|
1560
1565
|
{
|
1561
1566
|
// @ts-ignore
|
1562
1567
|
parent: this.webex,
|
1568
|
+
},
|
1569
|
+
(newMeeting) => {
|
1570
|
+
this.meetingCollection.set(newMeeting);
|
1563
1571
|
}
|
1564
1572
|
);
|
1565
1573
|
|
1566
|
-
this.meetingCollection.set(meeting);
|
1567
|
-
|
1568
1574
|
try {
|
1569
1575
|
// if no participant has joined the scheduled meeting (meaning meeting is not active) and we get a locusEvent,
|
1570
1576
|
// it means the meeting will start in 5-6 min. In that case, we want to fetchMeetingInfo
|
@@ -1588,6 +1594,7 @@ export default class Meetings extends WebexPlugin {
|
|
1588
1594
|
// @ts-ignore
|
1589
1595
|
const {enableUnifiedMeetings} = this.config.experimental;
|
1590
1596
|
const meetingInfoOptions = {
|
1597
|
+
classificationId,
|
1591
1598
|
extraParams: infoExtraParams,
|
1592
1599
|
sendCAevents: !!callStateForMetrics?.correlationId, // if client sends correlation id as argument of public create(), then it means that this meeting creation is part of a pre-join intent from user
|
1593
1600
|
};
|
package/src/member/types.ts
CHANGED
@@ -39,6 +39,17 @@ export default class MembersCollection {
|
|
39
39
|
return this.members;
|
40
40
|
}
|
41
41
|
|
42
|
+
/**
|
43
|
+
* Removes a member from the collection
|
44
|
+
* @param {String} id
|
45
|
+
* @returns {void}
|
46
|
+
*/
|
47
|
+
remove(id: string) {
|
48
|
+
if (this.members[id]) {
|
49
|
+
delete this.members[id];
|
50
|
+
}
|
51
|
+
}
|
52
|
+
|
42
53
|
/**
|
43
54
|
* @returns {void}
|
44
55
|
* reset members
|