@webex/plugin-meetings 3.8.1-web-workers-keepalive.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.
Files changed (121) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/constants.js +26 -2
  4. package/dist/constants.js.map +1 -1
  5. package/dist/interpretation/index.js +1 -1
  6. package/dist/interpretation/siLanguage.js +1 -1
  7. package/dist/locus-info/index.js +77 -95
  8. package/dist/locus-info/index.js.map +1 -1
  9. package/dist/locus-info/parser.js +4 -1
  10. package/dist/locus-info/parser.js.map +1 -1
  11. package/dist/media/properties.js +53 -5
  12. package/dist/media/properties.js.map +1 -1
  13. package/dist/meeting/brbState.js +14 -12
  14. package/dist/meeting/brbState.js.map +1 -1
  15. package/dist/meeting/in-meeting-actions.js +8 -0
  16. package/dist/meeting/in-meeting-actions.js.map +1 -1
  17. package/dist/meeting/index.js +443 -225
  18. package/dist/meeting/index.js.map +1 -1
  19. package/dist/meeting/muteState.js +2 -5
  20. package/dist/meeting/muteState.js.map +1 -1
  21. package/dist/meeting/request.js +44 -0
  22. package/dist/meeting/request.js.map +1 -1
  23. package/dist/meeting/request.type.js.map +1 -1
  24. package/dist/meeting/type.js +7 -0
  25. package/dist/meeting/type.js.map +1 -0
  26. package/dist/meeting/util.js +98 -13
  27. package/dist/meeting/util.js.map +1 -1
  28. package/dist/meeting-info/meeting-info-v2.js +29 -21
  29. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  30. package/dist/meetings/index.js +18 -10
  31. package/dist/meetings/index.js.map +1 -1
  32. package/dist/member/index.js.map +1 -1
  33. package/dist/member/types.js.map +1 -1
  34. package/dist/members/collection.js +13 -0
  35. package/dist/members/collection.js.map +1 -1
  36. package/dist/members/index.js +53 -29
  37. package/dist/members/index.js.map +1 -1
  38. package/dist/members/request.js +3 -3
  39. package/dist/members/request.js.map +1 -1
  40. package/dist/members/util.js +25 -8
  41. package/dist/members/util.js.map +1 -1
  42. package/dist/metrics/constants.js +2 -1
  43. package/dist/metrics/constants.js.map +1 -1
  44. package/dist/multistream/mediaRequestManager.js +1 -1
  45. package/dist/multistream/mediaRequestManager.js.map +1 -1
  46. package/dist/multistream/remoteMedia.js +34 -5
  47. package/dist/multistream/remoteMedia.js.map +1 -1
  48. package/dist/multistream/remoteMediaGroup.js +42 -2
  49. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  50. package/dist/multistream/sendSlotManager.js +32 -2
  51. package/dist/multistream/sendSlotManager.js.map +1 -1
  52. package/dist/reachability/index.js +3 -3
  53. package/dist/reachability/index.js.map +1 -1
  54. package/dist/types/constants.d.ts +24 -0
  55. package/dist/types/locus-info/index.d.ts +54 -10
  56. package/dist/types/media/properties.d.ts +21 -0
  57. package/dist/types/meeting/brbState.d.ts +0 -1
  58. package/dist/types/meeting/in-meeting-actions.d.ts +8 -0
  59. package/dist/types/meeting/index.d.ts +51 -20
  60. package/dist/types/meeting/request.d.ts +18 -1
  61. package/dist/types/meeting/request.type.d.ts +74 -0
  62. package/dist/types/meeting/type.d.ts +9 -0
  63. package/dist/types/meeting/util.d.ts +13 -3
  64. package/dist/types/meeting-info/meeting-info-v2.d.ts +6 -3
  65. package/dist/types/meetings/index.d.ts +3 -1
  66. package/dist/types/member/types.d.ts +1 -0
  67. package/dist/types/members/collection.d.ts +6 -0
  68. package/dist/types/members/index.d.ts +22 -9
  69. package/dist/types/members/request.d.ts +1 -1
  70. package/dist/types/members/util.d.ts +13 -6
  71. package/dist/types/metrics/constants.d.ts +1 -0
  72. package/dist/types/multistream/remoteMedia.d.ts +20 -1
  73. package/dist/types/multistream/remoteMediaGroup.d.ts +11 -0
  74. package/dist/types/multistream/sendSlotManager.d.ts +16 -0
  75. package/dist/webinar/index.js +1 -1
  76. package/package.json +23 -24
  77. package/src/constants.ts +25 -2
  78. package/src/locus-info/index.ts +133 -96
  79. package/src/locus-info/parser.ts +5 -1
  80. package/src/media/properties.ts +43 -0
  81. package/src/meeting/brbState.ts +9 -7
  82. package/src/meeting/in-meeting-actions.ts +17 -0
  83. package/src/meeting/index.ts +273 -42
  84. package/src/meeting/muteState.ts +2 -6
  85. package/src/meeting/request.ts +39 -0
  86. package/src/meeting/request.type.ts +64 -0
  87. package/src/meeting/type.ts +9 -0
  88. package/src/meeting/util.ts +114 -22
  89. package/src/meeting-info/meeting-info-v2.ts +24 -5
  90. package/src/meetings/index.ts +12 -5
  91. package/src/member/index.ts +1 -0
  92. package/src/member/types.ts +1 -0
  93. package/src/members/collection.ts +11 -0
  94. package/src/members/index.ts +51 -15
  95. package/src/members/request.ts +2 -2
  96. package/src/members/util.ts +34 -6
  97. package/src/metrics/constants.ts +1 -0
  98. package/src/multistream/mediaRequestManager.ts +7 -7
  99. package/src/multistream/remoteMedia.ts +34 -4
  100. package/src/multistream/remoteMediaGroup.ts +37 -2
  101. package/src/multistream/sendSlotManager.ts +34 -2
  102. package/src/reachability/index.ts +3 -3
  103. package/test/unit/spec/locus-info/index.js +229 -98
  104. package/test/unit/spec/locus-info/parser.js +3 -2
  105. package/test/unit/spec/media/properties.ts +137 -0
  106. package/test/unit/spec/meeting/brbState.ts +9 -9
  107. package/test/unit/spec/meeting/in-meeting-actions.ts +8 -0
  108. package/test/unit/spec/meeting/index.js +1022 -93
  109. package/test/unit/spec/meeting/muteState.js +32 -6
  110. package/test/unit/spec/meeting/request.js +92 -0
  111. package/test/unit/spec/meeting/utils.js +167 -17
  112. package/test/unit/spec/meeting-info/meetinginfov2.js +8 -3
  113. package/test/unit/spec/meetings/index.js +12 -1
  114. package/test/unit/spec/members/collection.js +120 -0
  115. package/test/unit/spec/members/index.js +140 -12
  116. package/test/unit/spec/members/request.js +57 -2
  117. package/test/unit/spec/members/utils.js +139 -17
  118. package/test/unit/spec/multistream/mediaRequestManager.ts +19 -6
  119. package/test/unit/spec/multistream/remoteMedia.ts +66 -2
  120. package/test/unit/spec/multistream/sendSlotManager.ts +59 -0
  121. package/test/unit/spec/reachability/index.ts +158 -1
@@ -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';
@@ -21,6 +21,8 @@ import RecordingController from '../recording-controller';
21
21
  import ControlsOptionsManager from '../controls-options-manager';
22
22
  import { LocusMediaRequest } from './locusMediaRequest';
23
23
  import { BrbState } from './brbState';
24
+ import { SetStageOptions } from './request.type';
25
+ import { Invitee } from './type';
24
26
  export type CaptionData = {
25
27
  id: string;
26
28
  isFinal: boolean;
@@ -81,6 +83,7 @@ export type CallStateForMetrics = {
81
83
  loginType?: string;
82
84
  userNameInput?: string;
83
85
  emailInput?: string;
86
+ pstnCorrelationId?: string;
84
87
  };
85
88
  export declare const MEDIA_UPDATE_TYPE: {
86
89
  TRANSCODED_MEDIA_CONNECTION: string;
@@ -95,6 +98,7 @@ export declare enum ScreenShareFloorStatus {
95
98
  type FetchMeetingInfoParams = {
96
99
  password?: string;
97
100
  registrationId?: string;
101
+ classificationId?: string;
98
102
  captchaCode?: string;
99
103
  extraParams?: Record<string, any>;
100
104
  sendCAevents?: boolean;
@@ -425,6 +429,7 @@ export default class Meeting extends StatelessWebexPlugin {
425
429
  shareStatus: string;
426
430
  screenShareFloorState: ScreenShareFloorStatus;
427
431
  statsAnalyzer: StatsAnalyzer;
432
+ statsMonitor: StatsMonitor;
428
433
  transcription: Transcription;
429
434
  updateMediaConnections: (mediaConnections: any[]) => void;
430
435
  userDisplayHints: any;
@@ -486,10 +491,11 @@ export default class Meeting extends StatelessWebexPlugin {
486
491
  /**
487
492
  * @param {Object} attrs
488
493
  * @param {Object} options
494
+ * @param {Function} callback - if provided, it will be called with the newly created meeting object as soon as the meeting.id is set
489
495
  * @constructor
490
496
  * @memberof Meeting
491
497
  */
492
- constructor(attrs: any, options: object);
498
+ constructor(attrs: any, options: object, callback: (meeting: Meeting) => void);
493
499
  /**
494
500
  * returns meeting is joined
495
501
  * @private
@@ -512,6 +518,16 @@ export default class Meeting extends StatelessWebexPlugin {
512
518
  * @param {string} correlationId
513
519
  */
514
520
  set correlationId(correlationId: string);
521
+ /**
522
+ * Getter - Returns callStateForMetrics.pstnCorrelationId
523
+ * @returns {string | undefined}
524
+ */
525
+ get pstnCorrelationId(): string | undefined;
526
+ /**
527
+ * Setter - sets callStateForMetrics.pstnCorrelationId
528
+ * @param {string | undefined} correlationId
529
+ */
530
+ set pstnCorrelationId(correlationId: string | undefined);
515
531
  /**
516
532
  * Getter - Returns callStateForMetrics.userNameInput
517
533
  * @returns {string}
@@ -861,43 +877,37 @@ export default class Meeting extends StatelessWebexPlugin {
861
877
  private updateMeetingObject;
862
878
  /**
863
879
  * Invite a guest to the call that isn't normally part of this call
864
- * @param {Object} invitee
880
+ * @param {Invitee} invitee
865
881
  * @param {String} invitee.emailAddress
866
882
  * @param {String} invitee.email
867
883
  * @param {String} invitee.phoneNumber
868
884
  * @param {Boolean} [alertIfActive]
885
+ * @param {Boolean} [invitee.skipEmailValidation]
886
+ * @param {Boolean} [invitee.isInternalNumber]
869
887
  * @returns {Promise} see #members.addMember
870
888
  * @public
871
889
  * @memberof Meeting
872
890
  */
873
- invite(invitee: {
874
- emailAddress: string;
875
- email: string;
876
- phoneNumber: string;
877
- roles: Array<string>;
878
- }, alertIfActive?: boolean): any;
891
+ invite(invitee: Invitee, alertIfActive?: boolean): any;
879
892
  /**
880
893
  * Cancel an outgoing phone call invitation made during a meeting
881
- * @param {Object} invitee
894
+ * @param {Invitee} invitee
882
895
  * @param {String} invitee.phoneNumber
883
896
  * @returns {Promise} see #members.cancelPhoneInvite
884
897
  * @public
885
898
  * @memberof Meeting
886
899
  */
887
- cancelPhoneInvite(invitee: {
888
- phoneNumber: string;
889
- }): any;
900
+ cancelPhoneInvite(invitee: Invitee): any;
890
901
  /**
891
- * Cancel an SIP call invitation made during a meeting
892
- * @param {Object} invitee
902
+ * Cancel an SIP/phone call invitation made during a meeting
903
+ * @param {Invitee} invitee
893
904
  * @param {String} invitee.memberId
894
- * @returns {Promise} see #members.cancelSIPInvite
905
+ * @param {Boolean} [invitee.isInternalNumber] - When cancel phone invitation, if the number is internal
906
+ * @returns {Promise} see #members.cancelInviteByMemberId
895
907
  * @public
896
908
  * @memberof Meeting
897
909
  */
898
- cancelSIPInvite(invitee: {
899
- memberId: string;
900
- }): any;
910
+ cancelInviteByMemberId(invitee: Invitee): any;
901
911
  /**
902
912
  * Admit the guest(s) to the call once they are waiting.
903
913
  * If the host/cohost is in a breakout session, the locus url
@@ -1344,7 +1354,7 @@ export default class Meeting extends StatelessWebexPlugin {
1344
1354
  * @memberof Meeting
1345
1355
  * @returns {Promise}
1346
1356
  */
1347
- disconnectPhoneAudio(): Promise<[any, any]>;
1357
+ disconnectPhoneAudio(): Promise<void>;
1348
1358
  /**
1349
1359
  * Moves the call to the specified resourceId
1350
1360
  * @param {String} resourceId
@@ -2000,5 +2010,26 @@ export default class Meeting extends StatelessWebexPlugin {
2000
2010
  * @returns {Promise<MediaReachabilityMetrics>}
2001
2011
  */
2002
2012
  private getMediaReachabilityMetricFields;
2013
+ /**
2014
+ * Set the stage for the meeting
2015
+ *
2016
+ * @param {SetStageOptions} options Options to use when setting the stage
2017
+ * @returns {Promise} The locus request
2018
+ */
2019
+ setStage({ activeSpeakerProportion, customBackground, customLogo, customNameLabel, importantParticipants, lockAttendeeViewOnStage, showActiveSpeaker, }?: SetStageOptions): Promise<any>;
2020
+ /**
2021
+ * Unset the stage for the meeting
2022
+ *
2023
+ * @returns {Promise} The locus request
2024
+ */
2025
+ unsetStage(): Promise<any>;
2026
+ /**
2027
+ * Notifies the host with the given meeting UUID and display names.
2028
+ *
2029
+ * @param {string} meetingUuid - The UUID of the meeting.
2030
+ * @param {string[]} displayName - An array of display names to notify the host with.
2031
+ * @returns {Promise<any>} The result of the notifyHost request.
2032
+ */
2033
+ notifyHost(meetingUuid: string, displayName: string[]): any;
2003
2034
  }
2004
2035
  export {};
@@ -1,5 +1,5 @@
1
1
  import { StatelessWebexPlugin } from '@webex/webex-core';
2
- import { SendReactionOptions, BrbOptions, ToggleReactionsOptions, PostMeetingDataConsentOptions } from './request.type';
2
+ import { SendReactionOptions, BrbOptions, ToggleReactionsOptions, PostMeetingDataConsentOptions, SynchronizeVideoLayout } from './request.type';
3
3
  import { AnnotationInfo } from '../annotation/annotation.types';
4
4
  import { ClientMediaPreferences } from '../reachability/reachability.types';
5
5
  /**
@@ -314,4 +314,21 @@ export default class MeetingRequest extends StatelessWebexPlugin {
314
314
  * @returns {Promise}
315
315
  */
316
316
  setPostMeetingDataConsent({ postMeetingDataConsent, locusUrl, deviceUrl, selfId, }: PostMeetingDataConsentOptions): Promise<any>;
317
+ /**
318
+ * Synchronize the stage for a meeting
319
+ *
320
+ * @param {LocusUrl} locusUrl The locus URL
321
+ * @param {SetStageVideoLayout} videoLayout The video layout to synchronize
322
+ * @returns {Promise} The locus request
323
+ */
324
+ synchronizeStage(locusUrl: string, videoLayout: SynchronizeVideoLayout): Promise<any>;
325
+ /**
326
+ * Sends a request to notify the host of a meeting.
327
+ * @param {string} siteFullUrl - The site URL.
328
+ * @param {string} locusId - The locus ID.
329
+ * @param {string} meetingUuid - The meeting UUID.
330
+ * @param {Array<string>} displayName - The display names to notify the host about.
331
+ * @returns {Promise}
332
+ */
333
+ notifyHost(siteFullUrl: string, locusId: string, meetingUuid: string, displayName: string[]): any;
317
334
  }
@@ -21,3 +21,77 @@ export type PostMeetingDataConsentOptions = {
21
21
  deviceUrl: string;
22
22
  selfId: string;
23
23
  };
24
+ export type StageCustomLogoPositions = 'LowerLeft' | 'LowerMiddle' | 'LowerRight' | 'UpperLeft' | 'UpperMiddle' | 'UpperRight';
25
+ export type StageNameLabelType = 'Primary' | 'PrimaryInverted' | 'Secondary' | 'SecondaryInverted';
26
+ export type StageCustomBackground = {
27
+ url: string;
28
+ [others: string]: unknown;
29
+ };
30
+ export type StageCustomLogo = {
31
+ url: string;
32
+ position: StageCustomLogoPositions;
33
+ [others: string]: unknown;
34
+ };
35
+ export type StageCustomNameLabel = {
36
+ accentColor: string;
37
+ background: {
38
+ color: string;
39
+ };
40
+ border: {
41
+ color: string;
42
+ };
43
+ content: {
44
+ displayName: {
45
+ color: string;
46
+ };
47
+ subtitle: {
48
+ color: string;
49
+ };
50
+ };
51
+ decoration: {
52
+ color: string;
53
+ };
54
+ fadeOut?: {
55
+ delay: number;
56
+ };
57
+ type: StageNameLabelType;
58
+ [others: string]: unknown;
59
+ };
60
+ export type SetStageOptions = {
61
+ activeSpeakerProportion?: number;
62
+ customBackground?: StageCustomBackground;
63
+ customLogo?: StageCustomLogo;
64
+ customNameLabel?: StageCustomNameLabel;
65
+ importantParticipants?: {
66
+ mainCsi: number;
67
+ participantId: string;
68
+ }[];
69
+ lockAttendeeViewOnStage?: boolean;
70
+ showActiveSpeaker?: boolean;
71
+ };
72
+ export type SetStageVideoLayout = {
73
+ overrideDefault: true;
74
+ lockAttendeeViewOnStageOnly: boolean;
75
+ stageParameters: {
76
+ importantParticipants?: {
77
+ participantId: string;
78
+ mainCsi: number;
79
+ order: number;
80
+ }[];
81
+ showActiveSpeaker: {
82
+ show: boolean;
83
+ order: number;
84
+ };
85
+ activeSpeakerProportion: number;
86
+ stageManagerType: number;
87
+ };
88
+ customLayouts?: {
89
+ background?: StageCustomBackground;
90
+ logo?: StageCustomLogo;
91
+ };
92
+ nameLabelStyle?: StageCustomNameLabel;
93
+ };
94
+ export type UnsetStageVideoLayout = {
95
+ overrideDefault: false;
96
+ };
97
+ export type SynchronizeVideoLayout = SetStageVideoLayout | UnsetStageVideoLayout;
@@ -0,0 +1,9 @@
1
+ export type Invitee = {
2
+ memberId: string;
3
+ emailAddress: string;
4
+ email: string;
5
+ phoneNumber: string;
6
+ roles: Array<string>;
7
+ skipEmailValidation?: boolean;
8
+ isInternalNumber?: boolean;
9
+ };
@@ -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;
@@ -71,8 +77,12 @@ declare const MeetingUtil: {
71
77
  canStopTranscribing: (displayHints: any) => any;
72
78
  isClosedCaptionActive: (displayHints: any) => any;
73
79
  canStartManualCaption: (displayHints: any) => any;
80
+ isLocalRecordingStarted: (displayHints: any) => any;
81
+ isLocalRecordingStopped: (displayHints: any) => any;
82
+ isLocalRecordingPaused: (displayHints: any) => any;
74
83
  canStopManualCaption: (displayHints: any) => any;
75
84
  isManualCaptionActive: (displayHints: any) => any;
85
+ isSpokenLanguageAutoDetectionEnabled: (displayHints: any) => any;
76
86
  isWebexAssistantActive: (displayHints: any) => any;
77
87
  canViewCaptionPanel: (displayHints: any) => any;
78
88
  isRealTimeTranslationEnabled: (displayHints: any) => any;
@@ -92,14 +102,14 @@ declare const MeetingUtil: {
92
102
  */
93
103
  addSequence: (meeting: any, requestBody: any) => void;
94
104
  /**
95
- * Updates the locus info for the meeting with the delta locus
96
- * returned from requests that include the sequence information
105
+ * Updates the locus info for the meeting with the locus
106
+ * information returned from API requests made to Locus
97
107
  * Returns the original response object
98
108
  * @param {Object} meeting The meeting object
99
109
  * @param {Object} response The response of the http request
100
110
  * @returns {Object}
101
111
  */
102
- updateLocusWithDelta: (meeting: any, response: any) => any;
112
+ updateLocusFromApiResponse: (meeting: any, response: any) => any;
103
113
  generateBuildLocusDeltaRequestOptions: (originalMeeting: any) => (originalOptions: any) => any;
104
114
  generateLocusDeltaRequest: (originalMeeting: any) => (originalOptions: any) => any;
105
115
  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
@@ -95,4 +95,5 @@ export interface Participant {
95
95
  status: ParticipantMediaStatus;
96
96
  type: string;
97
97
  url: ParticipantUrl;
98
+ isRemoved: boolean;
98
99
  }
@@ -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
@@ -4,6 +4,7 @@ import MembersCollection from './collection';
4
4
  import { ReceiveSlotManager } from '../multistream/receiveSlotManager';
5
5
  import { MediaRequestManager } from '../multistream/mediaRequestManager';
6
6
  import { ServerRoleShape } from './types';
7
+ import { Invitee } from '../meeting/type';
7
8
  /**
8
9
  * @class Members
9
10
  */
@@ -76,7 +77,9 @@ export default class Members extends StatelessWebexPlugin {
76
77
  * when new participant updates come in, both delta and full participants, update them in members collection
77
78
  * delta object in the event will have {updated, added} and full will be the full membersCollection
78
79
  * @param {Object} payload
79
- * @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
80
83
  * @returns {undefined}
81
84
  * @private
82
85
  * @memberof Members
@@ -84,6 +87,7 @@ export default class Members extends StatelessWebexPlugin {
84
87
  locusParticipantsUpdate(payload: {
85
88
  participants: object;
86
89
  isReplace?: boolean;
90
+ removedParticipantIds?: Array<string>;
87
91
  }): void;
88
92
  /**
89
93
  * Internal update the content id
@@ -126,6 +130,12 @@ export default class Members extends StatelessWebexPlugin {
126
130
  * @memberof Members
127
131
  */
128
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;
129
139
  /**
130
140
  * set members to the member collection from each updated/added lists as passed in
131
141
  * @param {Array} list
@@ -212,26 +222,28 @@ export default class Members extends StatelessWebexPlugin {
212
222
  private update;
213
223
  /**
214
224
  * Adds a guest Member to the associated meeting
215
- * @param {String} invitee
225
+ * @param {Invitee} invitee
216
226
  * @param {Boolean} [alertIfActive]
217
227
  * @returns {Promise}
218
228
  * @memberof Members
219
229
  */
220
- addMember(invitee: any, alertIfActive?: boolean): any;
230
+ addMember(invitee: Invitee, alertIfActive?: boolean): any;
221
231
  /**
222
232
  * Cancels an outgoing PSTN call to the associated meeting
223
- * @param {String} invitee
233
+ * @param {Invitee} invitee
224
234
  * @returns {Promise}
225
235
  * @memberof Members
226
236
  */
227
- cancelPhoneInvite(invitee: any): any;
237
+ cancelPhoneInvite(invitee: Invitee): any;
228
238
  /**
229
- * Cancels an SIP call to the associated meeting
230
- * @param {String} invitee
239
+ * Cancels an SIP/phone call to the associated meeting
240
+ * @param {Invitee} invitee
241
+ * @param {String} invitee.memberId - The memberId of the invitee
242
+ * @param {Boolean} [invitee.isInternalNumber] - When cancel phone invitation, if the number is internal
231
243
  * @returns {Promise}
232
244
  * @memberof Members
233
245
  */
234
- cancelSIPInvite(invitee: any): any;
246
+ cancelInviteByMemberId(invitee: Invitee): any;
235
247
  /**
236
248
  * Admits waiting members (invited guests to meeting)
237
249
  * @param {Array} memberIds
@@ -335,9 +347,10 @@ export default class Members extends StatelessWebexPlugin {
335
347
  * @param {string} memberId - id of the participant who is receiving request
336
348
  * @param {string} requestingParticipantId - id of the participant who is sending request (optional)
337
349
  * @param {string} [alias] - alias name
350
+ * @param {string} [suffix] - name suffix (optional)
338
351
  * @returns {Promise}
339
352
  * @public
340
353
  * @memberof Members
341
354
  */
342
- editDisplayName(memberId: string, requestingParticipantId: string, alias: string): any;
355
+ editDisplayName(memberId: string, requestingParticipantId: string, alias: string, suffix?: string): any;
343
356
  }
@@ -136,5 +136,5 @@ export default class MembersRequest extends StatelessWebexPlugin {
136
136
  * @throws {Error} if the options are not valid and complete, must have invitee with memberId AND locusUrl
137
137
  * @memberof MembersRequest
138
138
  */
139
- cancelSIPInvite(options: any): Promise<any>;
139
+ cancelInviteByMemberId(options: any): Promise<any>;
140
140
  }
@@ -1,4 +1,5 @@
1
1
  import { RoleAssignmentOptions, RoleAssignmentRequest, ServerRoleShape } from './types';
2
+ import { Invitee } from '../meeting/type';
2
3
  declare const MembersUtil: {
3
4
  /**
4
5
  * @param {Object} invitee with emailAddress, email or phoneNumber
@@ -26,6 +27,7 @@ declare const MembersUtil: {
26
27
  */
27
28
  getAddMemberBody: (options: any) => {
28
29
  invitees: {
30
+ isInternalNumber?: any;
29
31
  roles?: any;
30
32
  address: any;
31
33
  }[];
@@ -55,13 +57,14 @@ declare const MembersUtil: {
55
57
  uri: any;
56
58
  body: {
57
59
  invitees: {
60
+ isInternalNumber?: any;
58
61
  roles?: any;
59
62
  address: any;
60
63
  }[];
61
64
  alertIfActive: any;
62
65
  };
63
66
  };
64
- isInvalidInvitee: (invitee: any) => boolean;
67
+ isInvalidInvitee: (invitee: Invitee) => boolean;
65
68
  getRemoveMemberRequestParams: (options: any) => {
66
69
  method: string;
67
70
  uri: string;
@@ -107,13 +110,15 @@ declare const MembersUtil: {
107
110
  * @param {String} requestingParticipantId id of the participant who is sending request (optional)
108
111
  * @param {String} alias alias name
109
112
  * @param {String} locusUrl url
113
+ * @param {String} suffix optional suffix
110
114
  * @returns {Object} consists of {memberID: string, requestingParticipantId: string, alias: string, locusUrl: string}
111
115
  */
112
- generateEditDisplayNameMemberOptions: (memberId: any, requestingParticipantId: any, alias: any, locusUrl: any) => {
116
+ generateEditDisplayNameMemberOptions: (memberId: any, requestingParticipantId: any, alias: any, locusUrl: any, suffix: any) => {
113
117
  memberId: any;
114
118
  requestingParticipantId: any;
115
119
  alias: any;
116
120
  locusUrl: any;
121
+ suffix: any;
117
122
  };
118
123
  getMuteMemberRequestParams: (options: any) => {
119
124
  method: string;
@@ -175,8 +180,9 @@ declare const MembersUtil: {
175
180
  method: string;
176
181
  uri: string;
177
182
  body: {
178
- aliasValue: any;
179
- requestingParticipantId: any;
183
+ aliasValue: string;
184
+ requestingParticipantId: string;
185
+ suffixValue?: string;
180
186
  };
181
187
  };
182
188
  getTransferHostToMemberRequestParams: (options: any) => {
@@ -228,16 +234,17 @@ declare const MembersUtil: {
228
234
  }[];
229
235
  };
230
236
  };
231
- cancelSIPInviteOptions: (invitee: any, locusUrl: any) => {
237
+ cancelInviteByMemberIdOptions: (invitee: any, locusUrl: any) => {
232
238
  invitee: any;
233
239
  locusUrl: any;
234
240
  };
235
- generateCancelSIPInviteRequestParams: (options: any) => {
241
+ generateCancelInviteByMemberIdRequestParams: (options: any) => {
236
242
  method: string;
237
243
  uri: any;
238
244
  body: {
239
245
  actionType: string;
240
246
  invitees: {
247
+ isInternalNumber?: any;
241
248
  address: any;
242
249
  }[];
243
250
  };
@@ -83,5 +83,6 @@ declare const BEHAVIORAL_METRICS: {
83
83
  VERIFY_REGISTRATION_ID_SUCCESS: string;
84
84
  VERIFY_REGISTRATION_ID_ERROR: string;
85
85
  JOIN_FORBIDDEN_ERROR: string;
86
+ MEDIA_ISSUE_DETECTED: string;
86
87
  };
87
88
  export { BEHAVIORAL_METRICS as default };
@@ -7,9 +7,17 @@ export declare const RemoteMediaEvents: {
7
7
  Stopped: string;
8
8
  };
9
9
  export type RemoteVideoResolution = 'thumbnail' | 'very small' | 'small' | 'medium' | 'large' | 'best';
10
+ export declare const MAX_FS_VALUES: {
11
+ '90p': number;
12
+ '180p': number;
13
+ '360p': number;
14
+ '540p': number;
15
+ '720p': number;
16
+ '1080p': number;
17
+ };
10
18
  /**
11
19
  * Converts pane size into h264 maxFs
12
- * @param {PaneSize} paneSize
20
+ * @param {RemoteVideoResolution} paneSize
13
21
  * @returns {number}
14
22
  */
15
23
  export declare function getMaxFs(paneSize: RemoteVideoResolution): number;
@@ -29,6 +37,12 @@ export declare class RemoteMedia extends EventsScope {
29
37
  private readonly options;
30
38
  private mediaRequestId?;
31
39
  readonly id: RemoteMediaId;
40
+ /**
41
+ * The max frame size of the media request, used for logging and media requests.
42
+ * Set by setSizeHint() based on video element dimensions.
43
+ * When > 0, this value takes precedence over options.resolution in sendMediaRequest().
44
+ */
45
+ private maxFrameSize;
32
46
  /**
33
47
  * Constructs RemoteMedia instance
34
48
  *
@@ -45,6 +59,11 @@ export declare class RemoteMedia extends EventsScope {
45
59
  * @note width/height of 0 will be ignored
46
60
  */
47
61
  setSizeHint(width: any, height: any): void;
62
+ /**
63
+ * Get the current effective maxFs value that would be used in media requests
64
+ * @returns {number | undefined} The maxFs value, or undefined if no constraints
65
+ */
66
+ getEffectiveMaxFs(): number | undefined;
48
67
  /**
49
68
  * registers event listeners on the receive slot and forwards all the events
50
69
  */
@@ -45,5 +45,16 @@ export declare class RemoteMediaGroup {
45
45
  * @returns true if remote media is found
46
46
  */
47
47
  includes(remoteMedia: RemoteMedia, filter?: 'all' | 'pinned' | 'unpinned'): boolean;
48
+ /**
49
+ * Calculate the effective maxFs for the active speaker media request based on unpinned RemoteMedia instances
50
+ * @returns {number | undefined} The calculated maxFs value, or undefined if no constraints
51
+ * @private
52
+ */
53
+ private getEffectiveMaxFsForActiveSpeaker;
54
+ /**
55
+ * Get the current effective maxFs that would be used for the active speaker media request
56
+ * @returns {number | undefined} The effective maxFs value
57
+ */
58
+ getEffectiveMaxFs(): number | undefined;
48
59
  }
49
60
  export {};