@webex/plugin-meetings 3.9.0 → 3.10.0
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/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/constants.js +8 -0
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/index.js +22 -5
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/interceptors/index.js +7 -0
- package/dist/interceptors/index.js.map +1 -1
- package/dist/interceptors/locusRouteToken.js +116 -0
- package/dist/interceptors/locusRouteToken.js.map +1 -0
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +11 -2
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +56 -14
- 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/properties.js +53 -5
- package/dist/media/properties.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +8 -0
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +339 -185
- 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 +177 -14
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.js +39 -11
- 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 +31 -25
- package/dist/meetings/index.js.map +1 -1
- package/dist/member/index.js +9 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js.map +1 -1
- package/dist/member/util.js +10 -0
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +13 -0
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +42 -20
- package/dist/members/index.js.map +1 -1
- package/dist/members/util.js +7 -2
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +2 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/reachability/index.js +3 -3
- package/dist/reachability/index.js.map +1 -1
- package/dist/types/constants.d.ts +7 -0
- package/dist/types/controls-options-manager/index.d.ts +9 -1
- package/dist/types/interceptors/index.d.ts +2 -1
- package/dist/types/interceptors/locusRouteToken.d.ts +38 -0
- package/dist/types/locus-info/index.d.ts +56 -2
- package/dist/types/media/properties.d.ts +21 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +8 -0
- package/dist/types/meeting/index.d.ts +41 -1
- package/dist/types/meeting/request.d.ts +42 -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/index.d.ts +1 -0
- package/dist/types/member/types.d.ts +1 -0
- package/dist/types/member/util.d.ts +5 -0
- package/dist/types/members/collection.d.ts +6 -0
- package/dist/types/members/index.d.ts +12 -2
- package/dist/types/members/util.d.ts +6 -3
- package/dist/types/metrics/constants.d.ts +1 -0
- package/dist/webinar/index.js +1 -1
- package/package.json +23 -23
- package/src/constants.ts +10 -0
- package/src/controls-options-manager/index.ts +26 -5
- package/src/index.ts +2 -1
- package/src/interceptors/index.ts +2 -1
- package/src/interceptors/locusRouteToken.ts +80 -0
- package/src/locus-info/controlsUtils.ts +18 -0
- package/src/locus-info/index.ts +99 -17
- package/src/locus-info/parser.ts +5 -1
- package/src/media/properties.ts +43 -0
- package/src/meeting/in-meeting-actions.ts +16 -0
- package/src/meeting/index.ts +204 -24
- package/src/meeting/muteState.ts +2 -6
- package/src/meeting/request.ts +141 -0
- package/src/meeting/util.ts +50 -20
- package/src/meeting-info/meeting-info-v2.ts +24 -5
- package/src/meetings/index.ts +9 -3
- package/src/member/index.ts +10 -0
- package/src/member/types.ts +1 -0
- package/src/member/util.ts +14 -0
- package/src/members/collection.ts +11 -0
- package/src/members/index.ts +38 -5
- package/src/members/util.ts +18 -2
- package/src/metrics/constants.ts +1 -0
- package/src/reachability/index.ts +3 -3
- package/test/unit/spec/common/browser-detection.js +0 -24
- package/test/unit/spec/controls-options-manager/index.js +47 -0
- package/test/unit/spec/fixture/locus.js +1 -0
- package/test/unit/spec/interceptors/locusRouteToken.ts +87 -0
- package/test/unit/spec/locus-info/index.js +91 -15
- package/test/unit/spec/locus-info/parser.js +3 -2
- package/test/unit/spec/media/properties.ts +137 -0
- package/test/unit/spec/meeting/in-meeting-actions.ts +8 -0
- package/test/unit/spec/meeting/index.js +398 -30
- package/test/unit/spec/meeting/muteState.js +32 -6
- package/test/unit/spec/meeting/request.js +21 -0
- package/test/unit/spec/meeting/utils.js +49 -17
- package/test/unit/spec/meeting-info/meetinginfov2.js +8 -3
- package/test/unit/spec/meetings/index.js +10 -5
- package/test/unit/spec/member/util.js +24 -0
- package/test/unit/spec/members/collection.js +120 -0
- package/test/unit/spec/members/index.js +72 -3
- package/test/unit/spec/members/request.js +55 -0
- package/test/unit/spec/members/utils.js +116 -14
- package/test/unit/spec/reachability/index.ts +158 -3
- package/test/unit/spec/roap/turnDiscovery.ts +3 -3
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { LocalCameraStream, LocalMicrophoneStream, LocalDisplayStream, LocalSystemAudioStream, RemoteStream } from '@webex/media-helpers';
|
|
2
2
|
import { ClientEvent } from '@webex/internal-plugin-metrics';
|
|
3
|
+
import { throttle } from 'lodash';
|
|
3
4
|
export type MediaDirection = {
|
|
4
5
|
sendAudio: boolean;
|
|
5
6
|
sendVideo: boolean;
|
|
@@ -26,6 +27,10 @@ export default class MediaProperties {
|
|
|
26
27
|
videoDeviceId: any;
|
|
27
28
|
videoStream?: LocalCameraStream;
|
|
28
29
|
namespace: string;
|
|
30
|
+
mediaIssueCounters: {
|
|
31
|
+
[key: string]: number;
|
|
32
|
+
};
|
|
33
|
+
throttledSendMediaIssueMetric: ReturnType<typeof throttle>;
|
|
29
34
|
/**
|
|
30
35
|
* @param {Object} [options] -- to auto construct
|
|
31
36
|
* @returns {MediaProperties}
|
|
@@ -63,6 +68,11 @@ export default class MediaProperties {
|
|
|
63
68
|
* @returns {void}
|
|
64
69
|
*/
|
|
65
70
|
setVideoDeviceId(deviceId: string): void;
|
|
71
|
+
/**
|
|
72
|
+
* Clears the webrtcMediaConnection. This method should be called after
|
|
73
|
+
* peer connection is closed and no longer needed.
|
|
74
|
+
* @returns {void}
|
|
75
|
+
*/
|
|
66
76
|
unsetPeerConnection(): void;
|
|
67
77
|
/**
|
|
68
78
|
* Removes both remote audio and video from class instance
|
|
@@ -129,4 +139,15 @@ export default class MediaProperties {
|
|
|
129
139
|
selectedCandidatePairChanges: number;
|
|
130
140
|
numTransports: number;
|
|
131
141
|
}>;
|
|
142
|
+
/**
|
|
143
|
+
* Sends a metric about a media issue. Metrics are throttled so that we don't
|
|
144
|
+
* send too many of them, but include a count so that we know how many issues
|
|
145
|
+
* were detected.
|
|
146
|
+
*
|
|
147
|
+
* @param {string} issueType
|
|
148
|
+
* @param {string} issueSubType
|
|
149
|
+
* @param {string} correlationId
|
|
150
|
+
* @returns {void}
|
|
151
|
+
*/
|
|
152
|
+
sendMediaIssueMetric(issueType: string, issueSubType: string, correlationId: any): void;
|
|
132
153
|
}
|
|
@@ -37,8 +37,11 @@ interface IInMeetingActions {
|
|
|
37
37
|
isLocalRecordingStarted?: boolean;
|
|
38
38
|
isLocalRecordingStopped?: boolean;
|
|
39
39
|
isLocalRecordingPaused?: boolean;
|
|
40
|
+
isLocalStreamingStarted?: boolean;
|
|
41
|
+
isLocalStreamingStopped?: boolean;
|
|
40
42
|
isManualCaptionActive?: boolean;
|
|
41
43
|
isSaveTranscriptsEnabled?: boolean;
|
|
44
|
+
isSpokenLanguageAutoDetectionEnabled?: boolean;
|
|
42
45
|
isWebexAssistantActive?: boolean;
|
|
43
46
|
canViewCaptionPanel?: boolean;
|
|
44
47
|
isRealTimeTranslationEnabled?: boolean;
|
|
@@ -86,6 +89,7 @@ interface IInMeetingActions {
|
|
|
86
89
|
canDoVideo?: boolean;
|
|
87
90
|
canAnnotate?: boolean;
|
|
88
91
|
canUseVoip?: boolean;
|
|
92
|
+
showAutoEndMeetingWarning?: boolean;
|
|
89
93
|
supportHQV?: boolean;
|
|
90
94
|
supportHDV?: boolean;
|
|
91
95
|
canShareWhiteBoard?: boolean;
|
|
@@ -146,7 +150,10 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
146
150
|
isLocalRecordingStarted: any;
|
|
147
151
|
isLocalRecordingPaused: any;
|
|
148
152
|
isManualCaptionActive: any;
|
|
153
|
+
isLocalStreamingStarted: any;
|
|
154
|
+
isLocalStreamingStopped: any;
|
|
149
155
|
isSaveTranscriptsEnabled: any;
|
|
156
|
+
isSpokenLanguageAutoDetectionEnabled: any;
|
|
150
157
|
isWebexAssistantActive: any;
|
|
151
158
|
canViewCaptionPanel: any;
|
|
152
159
|
isRealTimeTranslationEnabled: any;
|
|
@@ -194,6 +201,7 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
194
201
|
canDoVideo: any;
|
|
195
202
|
canAnnotate: any;
|
|
196
203
|
canUseVoip: any;
|
|
204
|
+
showAutoEndMeetingWarning: any;
|
|
197
205
|
supportHQV: any;
|
|
198
206
|
enforceVirtualBackground: any;
|
|
199
207
|
supportHDV: any;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { StatelessWebexPlugin } from '@webex/webex-core';
|
|
3
3
|
import { ClientEvent, ClientEventLeaveReason } from '@webex/internal-plugin-metrics';
|
|
4
4
|
import { ClientEvent as RawClientEvent } from '@webex/event-dictionary-ts';
|
|
5
|
-
import { MediaType, StatsAnalyzer, NetworkQualityMonitor } from '@webex/internal-media-core';
|
|
5
|
+
import { MediaType, StatsAnalyzer, NetworkQualityMonitor, StatsMonitor } from '@webex/internal-media-core';
|
|
6
6
|
import { LocalStream, LocalCameraStream, LocalDisplayStream, LocalSystemAudioStream, LocalMicrophoneStream } from '@webex/media-helpers';
|
|
7
7
|
import Roap, { type TurnDiscoverySkipReason } from '../roap/index';
|
|
8
8
|
import { type TurnServerInfo } from '../roap/types';
|
|
@@ -98,6 +98,7 @@ export declare enum ScreenShareFloorStatus {
|
|
|
98
98
|
type FetchMeetingInfoParams = {
|
|
99
99
|
password?: string;
|
|
100
100
|
registrationId?: string;
|
|
101
|
+
classificationId?: string;
|
|
101
102
|
captchaCode?: string;
|
|
102
103
|
extraParams?: Record<string, any>;
|
|
103
104
|
sendCAevents?: boolean;
|
|
@@ -428,6 +429,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
428
429
|
shareStatus: string;
|
|
429
430
|
screenShareFloorState: ScreenShareFloorStatus;
|
|
430
431
|
statsAnalyzer: StatsAnalyzer;
|
|
432
|
+
statsMonitor: StatsMonitor;
|
|
431
433
|
transcription: Transcription;
|
|
432
434
|
updateMediaConnections: (mediaConnections: any[]) => void;
|
|
433
435
|
userDisplayHints: any;
|
|
@@ -1906,6 +1908,20 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1906
1908
|
* @memberof Meeting
|
|
1907
1909
|
*/
|
|
1908
1910
|
sendReaction(reactionType: ReactionServerType, skinToneType?: SkinToneType): any;
|
|
1911
|
+
/**
|
|
1912
|
+
* Extend the current meeting duration.
|
|
1913
|
+
*
|
|
1914
|
+
* @param {number} extensionMinutes - how many minutes to extend
|
|
1915
|
+
* @returns {Promise}
|
|
1916
|
+
* @public
|
|
1917
|
+
* @memberof Meeting
|
|
1918
|
+
*/
|
|
1919
|
+
extendMeeting({ meetingPolicyUrl, meetingInstanceId, participantId, extensionMinutes, }: {
|
|
1920
|
+
meetingPolicyUrl: any;
|
|
1921
|
+
meetingInstanceId: any;
|
|
1922
|
+
participantId: any;
|
|
1923
|
+
extensionMinutes?: number;
|
|
1924
|
+
}): any;
|
|
1909
1925
|
/**
|
|
1910
1926
|
* Method to enable or disable reactions inside the meeting.
|
|
1911
1927
|
*
|
|
@@ -2021,5 +2037,29 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2021
2037
|
* @returns {Promise} The locus request
|
|
2022
2038
|
*/
|
|
2023
2039
|
unsetStage(): Promise<any>;
|
|
2040
|
+
/**
|
|
2041
|
+
* Notifies the host with the given meeting UUID and display names.
|
|
2042
|
+
*
|
|
2043
|
+
* @param {string} meetingUuid - The UUID of the meeting.
|
|
2044
|
+
* @param {string[]} displayName - An array of display names to notify the host with.
|
|
2045
|
+
* @returns {Promise<any>} The result of the notifyHost request.
|
|
2046
|
+
*/
|
|
2047
|
+
notifyHost(meetingUuid: string, displayName: string[]): any;
|
|
2048
|
+
/**
|
|
2049
|
+
* Call out a SIP participant to a meeting
|
|
2050
|
+
* @param {string} address - The SIP address or phone number
|
|
2051
|
+
* @param {string} displayName - The display name for the participant
|
|
2052
|
+
* @param {string} [correlationId] - Optional correlation ID
|
|
2053
|
+
* @returns {Promise} Promise that resolves when the call-out is initiated
|
|
2054
|
+
*/
|
|
2055
|
+
sipCallOut(address: string, displayName: string): Promise<any>;
|
|
2056
|
+
/**
|
|
2057
|
+
* Cancel an ongoing SIP call-out
|
|
2058
|
+
* @param {string} participantId - The participant ID to cancel
|
|
2059
|
+
* @returns {Promise} Promise that resolves when the call-out is cancelled
|
|
2060
|
+
* @public
|
|
2061
|
+
* @memberof Meetings
|
|
2062
|
+
*/
|
|
2063
|
+
cancelSipCallOut(participantId: string): Promise<any>;
|
|
2024
2064
|
}
|
|
2025
2065
|
export {};
|
|
@@ -284,6 +284,22 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
284
284
|
* @returns {Promise}
|
|
285
285
|
*/
|
|
286
286
|
sendReaction({ reactionChannelUrl, reaction, participantId }: SendReactionOptions): any;
|
|
287
|
+
/**
|
|
288
|
+
* Extend the current meeting duration.
|
|
289
|
+
*
|
|
290
|
+
* @param {Object} params - Parameters for extending the meeting.
|
|
291
|
+
* @param {string} params.meetingInstanceId - The unique ID of the meeting instance.
|
|
292
|
+
* @param {string} params.participantId - The ID of the participant requesting the extension.
|
|
293
|
+
* @param {number} params.extensionMinutes - The number of minutes to extend the meeting by.
|
|
294
|
+
* @param {string} params.meetingPolicyUrl - The base URL for meeting policy service (dynamic, from locus links)
|
|
295
|
+
* @returns {Promise<any>} A promise that resolves with the server response.
|
|
296
|
+
*/
|
|
297
|
+
extendMeeting({ meetingInstanceId, participantId, extensionMinutes, meetingPolicyUrl, }: {
|
|
298
|
+
meetingInstanceId: string;
|
|
299
|
+
participantId: string;
|
|
300
|
+
extensionMinutes: number;
|
|
301
|
+
meetingPolicyUrl: string;
|
|
302
|
+
}): any;
|
|
287
303
|
/**
|
|
288
304
|
* Make a network request to enable or disable reactions.
|
|
289
305
|
* @param {boolean} options.enable - determines if we need to enable or disable.
|
|
@@ -322,4 +338,30 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
322
338
|
* @returns {Promise} The locus request
|
|
323
339
|
*/
|
|
324
340
|
synchronizeStage(locusUrl: string, videoLayout: SynchronizeVideoLayout): Promise<any>;
|
|
341
|
+
/**
|
|
342
|
+
* Sends a request to notify the host of a meeting.
|
|
343
|
+
* @param {string} siteFullUrl - The site URL.
|
|
344
|
+
* @param {string} locusId - The locus ID.
|
|
345
|
+
* @param {string} meetingUuid - The meeting UUID.
|
|
346
|
+
* @param {Array<string>} displayName - The display names to notify the host about.
|
|
347
|
+
* @returns {Promise}
|
|
348
|
+
*/
|
|
349
|
+
notifyHost(siteFullUrl: string, locusId: string, meetingUuid: string, displayName: string[]): any;
|
|
350
|
+
/**
|
|
351
|
+
* Call out to a SIP participant
|
|
352
|
+
*
|
|
353
|
+
* @param {any} meetingId - The meeting ID.
|
|
354
|
+
* @param {any} meetingNumber - The meeting number.
|
|
355
|
+
* @param {string} address - The SIP address to call out.
|
|
356
|
+
* @param {string} displayName - The display name for the participant.
|
|
357
|
+
* @returns {Promise} The API response
|
|
358
|
+
*/
|
|
359
|
+
sipCallOut(meetingId: any, meetingNumber: any, address: any, displayName: any): Promise<any>;
|
|
360
|
+
/**
|
|
361
|
+
* Cancel an ongoing SIP call-out
|
|
362
|
+
*
|
|
363
|
+
* @param {string} participantId - The ID of the participant whose SIP call-out should be cancelled.
|
|
364
|
+
* @returns {Promise} The API response
|
|
365
|
+
*/
|
|
366
|
+
cancelSipCallOut(participantId: any): Promise<any>;
|
|
325
367
|
}
|
|
@@ -14,6 +14,12 @@ declare const MeetingUtil: {
|
|
|
14
14
|
* @returns {IP_VERSION|undefined} ipver value to be passed to the backend APIs or undefined if we should not pass any value to the backend
|
|
15
15
|
*/
|
|
16
16
|
getIpVersion(webex: any): IP_VERSION | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* Returns CA event labels related to Orpheus ipver parameter that can be sent to CA with any CA event
|
|
19
|
+
* @param {any} webex instance
|
|
20
|
+
* @returns {Array<string>|undefined} array of CA event labels or undefined if no labels should be sent
|
|
21
|
+
*/
|
|
22
|
+
getCaEventLabelsForIpVersion(webex: any): Array<string> | undefined;
|
|
17
23
|
joinMeeting: (meeting: any, options: any) => Promise<any>;
|
|
18
24
|
cleanUp: (meeting: any) => any;
|
|
19
25
|
disconnectPhoneAudio: (meeting: any, phoneUrl: any) => any;
|
|
@@ -74,13 +80,17 @@ declare const MeetingUtil: {
|
|
|
74
80
|
isLocalRecordingStarted: (displayHints: any) => any;
|
|
75
81
|
isLocalRecordingStopped: (displayHints: any) => any;
|
|
76
82
|
isLocalRecordingPaused: (displayHints: any) => any;
|
|
83
|
+
isLocalStreamingStarted: (displayHints: any) => any;
|
|
84
|
+
isLocalStreamingStopped: (displayHints: any) => any;
|
|
77
85
|
canStopManualCaption: (displayHints: any) => any;
|
|
78
86
|
isManualCaptionActive: (displayHints: any) => any;
|
|
87
|
+
isSpokenLanguageAutoDetectionEnabled: (displayHints: any) => any;
|
|
79
88
|
isWebexAssistantActive: (displayHints: any) => any;
|
|
80
89
|
canViewCaptionPanel: (displayHints: any) => any;
|
|
81
90
|
isRealTimeTranslationEnabled: (displayHints: any) => any;
|
|
82
91
|
canSelectSpokenLanguages: (displayHints: any) => any;
|
|
83
92
|
waitingForOthersToJoin: (displayHints: any) => any;
|
|
93
|
+
showAutoEndMeetingWarning: (displayHints: any) => any;
|
|
84
94
|
canSendReactions: (originalValue: any, displayHints: any) => any;
|
|
85
95
|
canUserRenameSelfAndObserved: (displayHints: any) => any;
|
|
86
96
|
requiresPostMeetingDataConsentPrompt: (displayHints: any) => any;
|
|
@@ -95,14 +105,14 @@ declare const MeetingUtil: {
|
|
|
95
105
|
*/
|
|
96
106
|
addSequence: (meeting: any, requestBody: any) => void;
|
|
97
107
|
/**
|
|
98
|
-
* Updates the locus info for the meeting with the
|
|
99
|
-
* returned from requests
|
|
108
|
+
* Updates the locus info for the meeting with the locus
|
|
109
|
+
* information returned from API requests made to Locus
|
|
100
110
|
* Returns the original response object
|
|
101
111
|
* @param {Object} meeting The meeting object
|
|
102
112
|
* @param {Object} response The response of the http request
|
|
103
113
|
* @returns {Object}
|
|
104
114
|
*/
|
|
105
|
-
|
|
115
|
+
updateLocusFromApiResponse: (meeting: any, response: any) => any;
|
|
106
116
|
generateBuildLocusDeltaRequestOptions: (originalMeeting: any) => (originalOptions: any) => any;
|
|
107
117
|
generateLocusDeltaRequest: (originalMeeting: any) => (originalOptions: any) => any;
|
|
108
118
|
selfSupportsFeature: (feature: SELF_POLICY, userPolicies: Record<SELF_POLICY, boolean>) => boolean;
|
|
@@ -187,20 +187,22 @@ export default class MeetingInfoV2 {
|
|
|
187
187
|
* @param {String} conversationUrl conversationUrl to start adhoc meeting on
|
|
188
188
|
* @param {String} installedOrgID org ID of user's machine
|
|
189
189
|
* @param {Boolean} enableStaticMeetingLink whether or not to enable static meeting link
|
|
190
|
+
* @param {String} classificationId need it to start adhoc meeting if space support classification
|
|
190
191
|
* @returns {Promise} returns a meeting info object
|
|
191
192
|
* @public
|
|
192
193
|
* @memberof MeetingInfo
|
|
193
194
|
*/
|
|
194
|
-
createAdhocSpaceMeetingOrEnableStaticMeetingLink(conversationUrl: string, installedOrgID?: string, enableStaticMeetingLink?: boolean): Promise<any>;
|
|
195
|
+
createAdhocSpaceMeetingOrEnableStaticMeetingLink(conversationUrl: string, installedOrgID?: string, enableStaticMeetingLink?: boolean, classificationId?: any): Promise<any>;
|
|
195
196
|
/**
|
|
196
197
|
* Creates adhoc space meetings for a space by fetching the conversation infomation
|
|
197
198
|
* @param {String} conversationUrl conversationUrl to start adhoc meeting on
|
|
198
199
|
* @param {String} installedOrgID org ID of user's machine
|
|
200
|
+
* @param {String} classificationId if space is support classification, it needs provide it during start instant meeting
|
|
199
201
|
* @returns {Promise} returns a meeting info object
|
|
200
202
|
* @public
|
|
201
203
|
* @memberof MeetingInfo
|
|
202
204
|
*/
|
|
203
|
-
createAdhocSpaceMeeting(conversationUrl: string, installedOrgID?: string): Promise<any>;
|
|
205
|
+
createAdhocSpaceMeeting(conversationUrl: string, installedOrgID?: string, classificationId?: string): Promise<any>;
|
|
204
206
|
/**
|
|
205
207
|
* Fetches details for static meeting link
|
|
206
208
|
* @param {String} conversationUrl conversationUrl that's required to find static meeting link if it exists
|
|
@@ -239,6 +241,7 @@ export default class MeetingInfoV2 {
|
|
|
239
241
|
* @param {Object} options
|
|
240
242
|
* @param {String} registrationId
|
|
241
243
|
* @param {String} fullSiteUrl
|
|
244
|
+
* @param {String} classificationId
|
|
242
245
|
* @returns {Promise} returns a meeting info object
|
|
243
246
|
* @public
|
|
244
247
|
* @memberof MeetingInfo
|
|
@@ -249,5 +252,5 @@ export default class MeetingInfoV2 {
|
|
|
249
252
|
}, installedOrgID?: any, locusId?: any, extraParams?: object, options?: {
|
|
250
253
|
meetingId?: string;
|
|
251
254
|
sendCAevents?: boolean;
|
|
252
|
-
}, registrationId?: string, fullSiteUrl?: string): Promise<any>;
|
|
255
|
+
}, registrationId?: string, fullSiteUrl?: string, classificationId?: string): Promise<any>;
|
|
253
256
|
}
|
|
@@ -400,11 +400,12 @@ export default class Meetings extends WebexPlugin {
|
|
|
400
400
|
* @param {Object} [meetingInfo] - Pre-fetched complete meeting info
|
|
401
401
|
* @param {String} [meetingLookupUrl] - meeting info prefetch url
|
|
402
402
|
* @param {string} sessionCorrelationId - the optional specified sessionCorrelationId (callStateForMetrics.sessionCorrelationId) can be provided instead
|
|
403
|
+
* @param {String} classificationId - If space support classification, it will provide it while start instant meeting
|
|
403
404
|
* @returns {Promise<Meeting>} A new Meeting.
|
|
404
405
|
* @public
|
|
405
406
|
* @memberof Meetings
|
|
406
407
|
*/
|
|
407
|
-
create(destination: string, type?: DESTINATION_TYPE, useRandomDelayForInfo?: boolean, infoExtraParams?: {}, correlationId?: string, failOnMissingMeetingInfo?: boolean, callStateForMetrics?: CallStateForMetrics, meetingInfo?: any, meetingLookupUrl?: any, sessionCorrelationId?: string): any;
|
|
408
|
+
create(destination: string, type?: DESTINATION_TYPE, useRandomDelayForInfo?: boolean, infoExtraParams?: {}, correlationId?: string, failOnMissingMeetingInfo?: boolean, callStateForMetrics?: CallStateForMetrics, meetingInfo?: any, meetingLookupUrl?: any, sessionCorrelationId?: string, classificationId?: string): any;
|
|
408
409
|
/**
|
|
409
410
|
* Enable static meeting links for given conversation url.
|
|
410
411
|
*
|
|
@@ -438,6 +439,7 @@ export default class Meetings extends WebexPlugin {
|
|
|
438
439
|
* @param {Boolean} failOnMissingMeetingInfo - whether to throw an error if meeting info fails to fetch (for calls that are not 1:1 or content share)
|
|
439
440
|
* @param {Object} [meetingInfo] - Pre-fetched complete meeting info
|
|
440
441
|
* @param {String} [meetingLookupUrl] - meeting info prefetch url
|
|
442
|
+
* @param {String} classificationId see create()
|
|
441
443
|
* @returns {Promise} a new meeting instance complete with meeting info and destination
|
|
442
444
|
* @private
|
|
443
445
|
* @memberof Meetings
|
|
@@ -96,6 +96,11 @@ declare const MemberUtil: {
|
|
|
96
96
|
* @returns {Boolean}
|
|
97
97
|
*/
|
|
98
98
|
isBreakoutsSupported: (participant: any) => boolean;
|
|
99
|
+
/**
|
|
100
|
+
* @param {Object} participant - The locus participant object.
|
|
101
|
+
* @returns {Boolean}
|
|
102
|
+
*/
|
|
103
|
+
isSupportsSingleUserAutoEndMeeting: (participant: any) => boolean;
|
|
99
104
|
/**
|
|
100
105
|
* @param {Object} participant - The locus participant object.
|
|
101
106
|
* @returns {Boolean}
|
|
@@ -22,6 +22,12 @@ export default class MembersCollection {
|
|
|
22
22
|
* @memberof MembersCollection
|
|
23
23
|
*/
|
|
24
24
|
getAll(): Record<string, Member>;
|
|
25
|
+
/**
|
|
26
|
+
* Removes a member from the collection
|
|
27
|
+
* @param {String} id
|
|
28
|
+
* @returns {void}
|
|
29
|
+
*/
|
|
30
|
+
remove(id: string): void;
|
|
25
31
|
/**
|
|
26
32
|
* @returns {void}
|
|
27
33
|
* reset members
|
|
@@ -77,7 +77,9 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
77
77
|
* when new participant updates come in, both delta and full participants, update them in members collection
|
|
78
78
|
* delta object in the event will have {updated, added} and full will be the full membersCollection
|
|
79
79
|
* @param {Object} payload
|
|
80
|
-
* @param {Object} payload.participants
|
|
80
|
+
* @param {Object} payload.participants new/updated participants
|
|
81
|
+
* @param {Boolean} payload.isReplace whether to replace the whole members collection
|
|
82
|
+
* @param {Object} payload.removedParticipantIds ids of the removed participants
|
|
81
83
|
* @returns {undefined}
|
|
82
84
|
* @private
|
|
83
85
|
* @memberof Members
|
|
@@ -85,6 +87,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
85
87
|
locusParticipantsUpdate(payload: {
|
|
86
88
|
participants: object;
|
|
87
89
|
isReplace?: boolean;
|
|
90
|
+
removedParticipantIds?: Array<string>;
|
|
88
91
|
}): void;
|
|
89
92
|
/**
|
|
90
93
|
* Internal update the content id
|
|
@@ -127,6 +130,12 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
127
130
|
* @memberof Members
|
|
128
131
|
*/
|
|
129
132
|
private handleMembersUpdate;
|
|
133
|
+
/**
|
|
134
|
+
* removes members from the collection
|
|
135
|
+
* @param {Array<string>} removedMembers removed members ids
|
|
136
|
+
* @returns {void}
|
|
137
|
+
*/
|
|
138
|
+
private removeMembers;
|
|
130
139
|
/**
|
|
131
140
|
* set members to the member collection from each updated/added lists as passed in
|
|
132
141
|
* @param {Array} list
|
|
@@ -338,9 +347,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
338
347
|
* @param {string} memberId - id of the participant who is receiving request
|
|
339
348
|
* @param {string} requestingParticipantId - id of the participant who is sending request (optional)
|
|
340
349
|
* @param {string} [alias] - alias name
|
|
350
|
+
* @param {string} [suffix] - name suffix (optional)
|
|
341
351
|
* @returns {Promise}
|
|
342
352
|
* @public
|
|
343
353
|
* @memberof Members
|
|
344
354
|
*/
|
|
345
|
-
editDisplayName(memberId: string, requestingParticipantId: string, alias: string): any;
|
|
355
|
+
editDisplayName(memberId: string, requestingParticipantId: string, alias: string, suffix?: string): any;
|
|
346
356
|
}
|
|
@@ -110,13 +110,15 @@ declare const MembersUtil: {
|
|
|
110
110
|
* @param {String} requestingParticipantId id of the participant who is sending request (optional)
|
|
111
111
|
* @param {String} alias alias name
|
|
112
112
|
* @param {String} locusUrl url
|
|
113
|
+
* @param {String} suffix optional suffix
|
|
113
114
|
* @returns {Object} consists of {memberID: string, requestingParticipantId: string, alias: string, locusUrl: string}
|
|
114
115
|
*/
|
|
115
|
-
generateEditDisplayNameMemberOptions: (memberId: any, requestingParticipantId: any, alias: any, locusUrl: any) => {
|
|
116
|
+
generateEditDisplayNameMemberOptions: (memberId: any, requestingParticipantId: any, alias: any, locusUrl: any, suffix: any) => {
|
|
116
117
|
memberId: any;
|
|
117
118
|
requestingParticipantId: any;
|
|
118
119
|
alias: any;
|
|
119
120
|
locusUrl: any;
|
|
121
|
+
suffix: any;
|
|
120
122
|
};
|
|
121
123
|
getMuteMemberRequestParams: (options: any) => {
|
|
122
124
|
method: string;
|
|
@@ -178,8 +180,9 @@ declare const MembersUtil: {
|
|
|
178
180
|
method: string;
|
|
179
181
|
uri: string;
|
|
180
182
|
body: {
|
|
181
|
-
aliasValue:
|
|
182
|
-
requestingParticipantId:
|
|
183
|
+
aliasValue: string;
|
|
184
|
+
requestingParticipantId: string;
|
|
185
|
+
suffixValue?: string;
|
|
183
186
|
};
|
|
184
187
|
};
|
|
185
188
|
getTransferHostToMemberRequestParams: (options: any) => {
|
package/dist/webinar/index.js
CHANGED
package/package.json
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"directory": "packages/@webex/plugin-meetings"
|
|
20
20
|
},
|
|
21
21
|
"engines": {
|
|
22
|
-
"node": ">=
|
|
22
|
+
"node": ">=18"
|
|
23
23
|
},
|
|
24
24
|
"browserify": {
|
|
25
25
|
"transform": [
|
|
@@ -43,12 +43,12 @@
|
|
|
43
43
|
"@webex/eslint-config-legacy": "0.0.0",
|
|
44
44
|
"@webex/jest-config-legacy": "0.0.0",
|
|
45
45
|
"@webex/legacy-tools": "0.0.0",
|
|
46
|
-
"@webex/plugin-rooms": "3.
|
|
47
|
-
"@webex/test-helper-chai": "3.
|
|
48
|
-
"@webex/test-helper-mocha": "3.
|
|
49
|
-
"@webex/test-helper-mock-webex": "3.
|
|
50
|
-
"@webex/test-helper-retry": "3.
|
|
51
|
-
"@webex/test-helper-test-users": "3.
|
|
46
|
+
"@webex/plugin-rooms": "3.10.0",
|
|
47
|
+
"@webex/test-helper-chai": "3.10.0",
|
|
48
|
+
"@webex/test-helper-mocha": "3.10.0",
|
|
49
|
+
"@webex/test-helper-mock-webex": "3.10.0",
|
|
50
|
+
"@webex/test-helper-retry": "3.10.0",
|
|
51
|
+
"@webex/test-helper-test-users": "3.10.0",
|
|
52
52
|
"chai": "^4.3.4",
|
|
53
53
|
"chai-as-promised": "^7.1.1",
|
|
54
54
|
"eslint": "^8.24.0",
|
|
@@ -60,23 +60,23 @@
|
|
|
60
60
|
"typescript": "^4.7.4"
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@webex/common": "3.
|
|
64
|
-
"@webex/event-dictionary-ts": "^1.0.
|
|
65
|
-
"@webex/internal-media-core": "2.
|
|
66
|
-
"@webex/internal-plugin-conversation": "3.
|
|
67
|
-
"@webex/internal-plugin-device": "3.
|
|
68
|
-
"@webex/internal-plugin-llm": "3.
|
|
69
|
-
"@webex/internal-plugin-mercury": "3.
|
|
70
|
-
"@webex/internal-plugin-metrics": "3.
|
|
71
|
-
"@webex/internal-plugin-support": "3.
|
|
72
|
-
"@webex/internal-plugin-user": "3.
|
|
73
|
-
"@webex/internal-plugin-voicea": "3.
|
|
74
|
-
"@webex/media-helpers": "3.
|
|
75
|
-
"@webex/plugin-people": "3.
|
|
76
|
-
"@webex/plugin-rooms": "3.
|
|
63
|
+
"@webex/common": "3.10.0",
|
|
64
|
+
"@webex/event-dictionary-ts": "^1.0.1930",
|
|
65
|
+
"@webex/internal-media-core": "2.20.0",
|
|
66
|
+
"@webex/internal-plugin-conversation": "3.10.0",
|
|
67
|
+
"@webex/internal-plugin-device": "3.10.0",
|
|
68
|
+
"@webex/internal-plugin-llm": "3.10.0",
|
|
69
|
+
"@webex/internal-plugin-mercury": "3.10.0",
|
|
70
|
+
"@webex/internal-plugin-metrics": "3.10.0",
|
|
71
|
+
"@webex/internal-plugin-support": "3.10.0",
|
|
72
|
+
"@webex/internal-plugin-user": "3.10.0",
|
|
73
|
+
"@webex/internal-plugin-voicea": "3.10.0",
|
|
74
|
+
"@webex/media-helpers": "3.10.0",
|
|
75
|
+
"@webex/plugin-people": "3.10.0",
|
|
76
|
+
"@webex/plugin-rooms": "3.10.0",
|
|
77
77
|
"@webex/ts-sdp": "^1.8.1",
|
|
78
78
|
"@webex/web-capabilities": "^1.6.0",
|
|
79
|
-
"@webex/webex-core": "3.
|
|
79
|
+
"@webex/webex-core": "3.10.0",
|
|
80
80
|
"ampersand-collection": "^2.0.2",
|
|
81
81
|
"bowser": "^2.11.0",
|
|
82
82
|
"btoa": "^1.2.1",
|
|
@@ -92,5 +92,5 @@
|
|
|
92
92
|
"//": [
|
|
93
93
|
"TODO: upgrade jwt-decode when moving to node 18"
|
|
94
94
|
],
|
|
95
|
-
"version": "3.
|
|
95
|
+
"version": "3.10.0"
|
|
96
96
|
}
|
package/src/constants.ts
CHANGED
|
@@ -347,6 +347,7 @@ export const EVENT_TRIGGERS = {
|
|
|
347
347
|
MEETING_SELF_LEFT: 'meeting:self:left',
|
|
348
348
|
NETWORK_QUALITY: 'network:quality',
|
|
349
349
|
MEDIA_NEGOTIATED: 'media:negotiated',
|
|
350
|
+
MEDIA_INBOUND_AUDIO_ISSUE_DETECTED: 'media:inboundAudio:issueDetected',
|
|
350
351
|
// the following events apply only to multistream media connections
|
|
351
352
|
ACTIVE_SPEAKER_CHANGED: 'media:activeSpeakerChanged',
|
|
352
353
|
REMOTE_VIDEO_SOURCE_COUNT_CHANGED: 'media:remoteVideoSourceCountChanged',
|
|
@@ -373,6 +374,8 @@ export const EVENT_TRIGGERS = {
|
|
|
373
374
|
MEETING_CONTROLS_REMOTE_DESKTOP_CONTROL_UPDATED:
|
|
374
375
|
'meeting:controls:remote-desktop-control:updated',
|
|
375
376
|
MEETING_CONTROLS_POLLING_QA_UPDATED: 'meeting:controls:polling-qa:updated',
|
|
377
|
+
MEETING_CONTROLS_AUTO_END_MEETING_WARNING_UPDATED:
|
|
378
|
+
'meeting:controls:auto-end-meeting-warning:updated',
|
|
376
379
|
// Locus URL changed
|
|
377
380
|
MEETING_LOCUS_URL_UPDATE: 'meeting:locus:locusUrl:update',
|
|
378
381
|
MEETING_STREAM_PUBLISH_STATE_CHANGED: 'meeting:streamPublishStateChanged',
|
|
@@ -726,6 +729,7 @@ export const LOCUSINFO = {
|
|
|
726
729
|
SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',
|
|
727
730
|
SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: 'SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED',
|
|
728
731
|
SELF_REMOTE_MUTE_STATUS_UPDATED: 'SELF_REMOTE_MUTE_STATUS_UPDATED',
|
|
732
|
+
CONTROLS_AUTO_END_MEETING_WARNING_CHANGED: 'CONTROLS_AUTO_END_MEETING_WARNING_CHANGED',
|
|
729
733
|
LOCAL_UNMUTE_REQUESTED: 'LOCAL_UNMUTE_REQUESTED',
|
|
730
734
|
LOCAL_UNMUTE_REQUIRED: 'LOCAL_UNMUTE_REQUIRED',
|
|
731
735
|
SELF_MODERATOR_CHANGED: 'SELF_MODERATOR_CHANGED',
|
|
@@ -960,12 +964,15 @@ export const DISPLAY_HINTS = {
|
|
|
960
964
|
LOWER_SOMEONE_ELSES_HAND: 'LOWER_SOMEONE_ELSES_HAND',
|
|
961
965
|
LEAVE_TRANSFER_HOST_END_MEETING: 'LEAVE_TRANSFER_HOST_END_MEETING',
|
|
962
966
|
LEAVE_END_MEETING: 'LEAVE_END_MEETING',
|
|
967
|
+
STREAMING_STATUS_STARTED: 'STREAMING_STATUS_STARTED',
|
|
968
|
+
STREAMING_STATUS_STOPPED: 'STREAMING_STATUS_STOPPED',
|
|
963
969
|
CAPTION_START: 'CAPTION_START',
|
|
964
970
|
CAPTION_STATUS_ACTIVE: 'CAPTION_STATUS_ACTIVE',
|
|
965
971
|
MANUAL_CAPTION_START: 'MANUAL_CAPTION_START',
|
|
966
972
|
MANUAL_CAPTION_STOP: 'MANUAL_CAPTION_STOP',
|
|
967
973
|
MANUAL_CAPTION_STATUS_ACTIVE: 'MANUAL_CAPTION_STATUS_ACTIVE',
|
|
968
974
|
DISPLAY_REAL_TIME_TRANSLATION: 'DISPLAY_REAL_TIME_TRANSLATION',
|
|
975
|
+
SPOKEN_LANGUAGE_AUTO_DETECTION_ENABLED: 'SPOKEN_LANGUAGE_AUTO_DETECTION_ENABLED',
|
|
969
976
|
ENABLE_CAPTION_PANEL: 'ENABLE_CAPTION_PANEL',
|
|
970
977
|
DISPLAY_NON_ENGLISH_ASR: 'DISPLAY_NON_ENGLISH_ASR',
|
|
971
978
|
TRANSCRIPTION_CONTROL_START: 'TRANSCRIPTION_CONTROL_START',
|
|
@@ -1050,6 +1057,9 @@ export const DISPLAY_HINTS = {
|
|
|
1050
1057
|
ENABLE_ANNOTATION_MEETING_OPTION: 'ENABLE_ANNOTATION_MEETING_OPTION',
|
|
1051
1058
|
DISABLE_ANNOTATION_MEETING_OPTION: 'DISABLE_ANNOTATION_MEETING_OPTION',
|
|
1052
1059
|
|
|
1060
|
+
// Auto End Meeting Warning
|
|
1061
|
+
SHOW_AUTO_END_MEETING_WARNING: 'SHOW_AUTO_END_MEETING_WARNING',
|
|
1062
|
+
|
|
1053
1063
|
// Remote Desktop Control
|
|
1054
1064
|
ENABLE_RDC_MEETING_OPTION: 'ENABLE_RDC_MEETING_OPTION',
|
|
1055
1065
|
DISABLE_RDC_MEETING_OPTION: 'DISABLE_RDC_MEETING_OPTION',
|
|
@@ -48,6 +48,14 @@ export default class ControlsOptionsManager {
|
|
|
48
48
|
*/
|
|
49
49
|
private locusUrl: string;
|
|
50
50
|
|
|
51
|
+
/**
|
|
52
|
+
* @instance
|
|
53
|
+
* @type {string}
|
|
54
|
+
* @private
|
|
55
|
+
* @memberof ControlsOptionsManager
|
|
56
|
+
*/
|
|
57
|
+
private mainLocusUrl: string;
|
|
58
|
+
|
|
51
59
|
/**
|
|
52
60
|
* @param {MeetingRequest} request
|
|
53
61
|
* @param {Object} options
|
|
@@ -87,12 +95,16 @@ export default class ControlsOptionsManager {
|
|
|
87
95
|
|
|
88
96
|
/**
|
|
89
97
|
* @param {string} url
|
|
98
|
+
* @param {boolean} isMainLocus
|
|
90
99
|
* @returns {void}
|
|
91
100
|
* @public
|
|
92
101
|
* @memberof ControlsOptionsManager
|
|
93
102
|
*/
|
|
94
|
-
public setLocusUrl(url: string) {
|
|
103
|
+
public setLocusUrl(url: string, isMainLocus?: boolean) {
|
|
95
104
|
this.locusUrl = url;
|
|
105
|
+
if (isMainLocus) {
|
|
106
|
+
this.mainLocusUrl = url;
|
|
107
|
+
}
|
|
96
108
|
}
|
|
97
109
|
|
|
98
110
|
/**
|
|
@@ -160,11 +172,16 @@ export default class ControlsOptionsManager {
|
|
|
160
172
|
});
|
|
161
173
|
|
|
162
174
|
return payloads.reduce((previous, payload) => {
|
|
175
|
+
const extraBody =
|
|
176
|
+
this.mainLocusUrl && this.mainLocusUrl !== this.locusUrl
|
|
177
|
+
? {authorizingLocusUrl: this.locusUrl}
|
|
178
|
+
: {};
|
|
179
|
+
|
|
163
180
|
return previous.then(() =>
|
|
164
181
|
// @ts-ignore
|
|
165
182
|
this.request.request({
|
|
166
|
-
uri: `${this.locusUrl}/${CONTROLS}`,
|
|
167
|
-
body: payload,
|
|
183
|
+
uri: `${this.mainLocusUrl || this.locusUrl}/${CONTROLS}`,
|
|
184
|
+
body: {...payload, ...extraBody},
|
|
168
185
|
method: HTTP_VERBS.PATCH,
|
|
169
186
|
})
|
|
170
187
|
);
|
|
@@ -241,11 +258,15 @@ export default class ControlsOptionsManager {
|
|
|
241
258
|
if (error) {
|
|
242
259
|
return Promise.reject(error);
|
|
243
260
|
}
|
|
261
|
+
const extraBody =
|
|
262
|
+
this.mainLocusUrl && this.mainLocusUrl !== this.locusUrl
|
|
263
|
+
? {authorizingLocusUrl: this.locusUrl}
|
|
264
|
+
: {};
|
|
244
265
|
|
|
245
266
|
// @ts-ignore
|
|
246
267
|
return this.request.request({
|
|
247
|
-
uri: `${this.locusUrl}/${CONTROLS}`,
|
|
248
|
-
body,
|
|
268
|
+
uri: `${this.mainLocusUrl || this.locusUrl}/${CONTROLS}`,
|
|
269
|
+
body: {...body, ...extraBody},
|
|
249
270
|
method: HTTP_VERBS.PATCH,
|
|
250
271
|
});
|
|
251
272
|
}
|