@webex/plugin-meetings 3.9.0-webinar5k.1 → 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.
Files changed (138) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/constants.js +24 -0
  4. package/dist/constants.js.map +1 -1
  5. package/dist/controls-options-manager/index.js +22 -5
  6. package/dist/controls-options-manager/index.js.map +1 -1
  7. package/dist/index.js +2 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/interceptors/index.js +7 -0
  10. package/dist/interceptors/index.js.map +1 -1
  11. package/dist/interceptors/locusRouteToken.js +116 -0
  12. package/dist/interceptors/locusRouteToken.js.map +1 -0
  13. package/dist/interpretation/index.js +1 -1
  14. package/dist/interpretation/siLanguage.js +1 -1
  15. package/dist/locus-info/controlsUtils.js +11 -2
  16. package/dist/locus-info/controlsUtils.js.map +1 -1
  17. package/dist/locus-info/index.js +76 -322
  18. package/dist/locus-info/index.js.map +1 -1
  19. package/dist/locus-info/parser.js +4 -1
  20. package/dist/locus-info/parser.js.map +1 -1
  21. package/dist/media/properties.js +53 -5
  22. package/dist/media/properties.js.map +1 -1
  23. package/dist/meeting/in-meeting-actions.js +14 -0
  24. package/dist/meeting/in-meeting-actions.js.map +1 -1
  25. package/dist/meeting/index.js +467 -277
  26. package/dist/meeting/index.js.map +1 -1
  27. package/dist/meeting/request.js +177 -14
  28. package/dist/meeting/request.js.map +1 -1
  29. package/dist/meeting/type.js +7 -0
  30. package/dist/meeting/type.js.map +1 -0
  31. package/dist/meeting/util.js +100 -3
  32. package/dist/meeting/util.js.map +1 -1
  33. package/dist/meeting-info/meeting-info-v2.js +29 -21
  34. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  35. package/dist/meetings/index.js +20 -16
  36. package/dist/meetings/index.js.map +1 -1
  37. package/dist/member/index.js +9 -0
  38. package/dist/member/index.js.map +1 -1
  39. package/dist/member/util.js +10 -0
  40. package/dist/member/util.js.map +1 -1
  41. package/dist/members/index.js +10 -7
  42. package/dist/members/index.js.map +1 -1
  43. package/dist/members/util.js +7 -2
  44. package/dist/members/util.js.map +1 -1
  45. package/dist/metrics/constants.js +2 -1
  46. package/dist/metrics/constants.js.map +1 -1
  47. package/dist/multistream/mediaRequestManager.js +1 -1
  48. package/dist/multistream/mediaRequestManager.js.map +1 -1
  49. package/dist/multistream/remoteMedia.js +34 -5
  50. package/dist/multistream/remoteMedia.js.map +1 -1
  51. package/dist/multistream/remoteMediaGroup.js +42 -2
  52. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  53. package/dist/reachability/index.js +3 -3
  54. package/dist/reachability/index.js.map +1 -1
  55. package/dist/types/constants.d.ts +23 -0
  56. package/dist/types/controls-options-manager/index.d.ts +9 -1
  57. package/dist/types/interceptors/index.d.ts +2 -1
  58. package/dist/types/interceptors/locusRouteToken.d.ts +38 -0
  59. package/dist/types/locus-info/index.d.ts +9 -54
  60. package/dist/types/media/properties.d.ts +21 -0
  61. package/dist/types/meeting/in-meeting-actions.d.ts +14 -0
  62. package/dist/types/meeting/index.d.ts +64 -29
  63. package/dist/types/meeting/request.d.ts +42 -0
  64. package/dist/types/meeting/type.d.ts +9 -0
  65. package/dist/types/meeting/util.d.ts +13 -0
  66. package/dist/types/meeting-info/meeting-info-v2.d.ts +6 -3
  67. package/dist/types/meetings/index.d.ts +3 -1
  68. package/dist/types/member/index.d.ts +1 -0
  69. package/dist/types/member/util.d.ts +5 -0
  70. package/dist/types/members/index.d.ts +12 -11
  71. package/dist/types/members/util.d.ts +8 -4
  72. package/dist/types/metrics/constants.d.ts +1 -0
  73. package/dist/types/multistream/remoteMedia.d.ts +20 -1
  74. package/dist/types/multistream/remoteMediaGroup.d.ts +11 -0
  75. package/dist/webinar/index.js +1 -1
  76. package/package.json +25 -27
  77. package/src/constants.ts +26 -2
  78. package/src/controls-options-manager/index.ts +26 -5
  79. package/src/index.ts +2 -1
  80. package/src/interceptors/index.ts +2 -1
  81. package/src/interceptors/locusRouteToken.ts +80 -0
  82. package/src/locus-info/controlsUtils.ts +18 -0
  83. package/src/locus-info/index.ts +69 -357
  84. package/src/locus-info/parser.ts +5 -1
  85. package/src/media/properties.ts +43 -0
  86. package/src/meeting/in-meeting-actions.ts +29 -0
  87. package/src/meeting/index.ts +296 -87
  88. package/src/meeting/request.ts +141 -0
  89. package/src/meeting/type.ts +9 -0
  90. package/src/meeting/util.ts +107 -3
  91. package/src/meeting-info/meeting-info-v2.ts +24 -5
  92. package/src/meetings/index.ts +15 -22
  93. package/src/member/index.ts +10 -0
  94. package/src/member/util.ts +14 -0
  95. package/src/members/index.ts +20 -10
  96. package/src/members/util.ts +20 -3
  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/reachability/index.ts +3 -3
  102. package/test/unit/spec/common/browser-detection.js +0 -24
  103. package/test/unit/spec/controls-options-manager/index.js +47 -0
  104. package/test/unit/spec/fixture/locus.js +1 -0
  105. package/test/unit/spec/interceptors/locusRouteToken.ts +87 -0
  106. package/test/unit/spec/locus-info/index.js +80 -361
  107. package/test/unit/spec/locus-info/parser.js +3 -2
  108. package/test/unit/spec/media/properties.ts +137 -0
  109. package/test/unit/spec/meeting/in-meeting-actions.ts +14 -0
  110. package/test/unit/spec/meeting/index.js +637 -53
  111. package/test/unit/spec/meeting/muteState.js +32 -6
  112. package/test/unit/spec/meeting/request.js +21 -0
  113. package/test/unit/spec/meeting/utils.js +171 -18
  114. package/test/unit/spec/meeting-info/meetinginfov2.js +8 -3
  115. package/test/unit/spec/meetings/index.js +12 -5
  116. package/test/unit/spec/member/util.js +24 -0
  117. package/test/unit/spec/members/collection.js +120 -0
  118. package/test/unit/spec/members/index.js +107 -2
  119. package/test/unit/spec/members/request.js +55 -0
  120. package/test/unit/spec/members/utils.js +116 -14
  121. package/test/unit/spec/multistream/mediaRequestManager.ts +19 -6
  122. package/test/unit/spec/multistream/remoteMedia.ts +66 -2
  123. package/test/unit/spec/reachability/index.ts +158 -3
  124. package/test/unit/spec/roap/turnDiscovery.ts +3 -3
  125. package/dist/hashTree/constants.js +0 -23
  126. package/dist/hashTree/constants.js.map +0 -1
  127. package/dist/hashTree/hashTree.js +0 -516
  128. package/dist/hashTree/hashTree.js.map +0 -1
  129. package/dist/hashTree/hashTreeParser.js +0 -521
  130. package/dist/hashTree/hashTreeParser.js.map +0 -1
  131. package/dist/types/hashTree/constants.d.ts +0 -8
  132. package/dist/types/hashTree/hashTree.d.ts +0 -128
  133. package/dist/types/hashTree/hashTreeParser.d.ts +0 -152
  134. package/src/hashTree/constants.ts +0 -12
  135. package/src/hashTree/hashTree.ts +0 -460
  136. package/src/hashTree/hashTreeParser.ts +0 -556
  137. package/test/unit/spec/hashTree/hashTree.ts +0 -394
  138. package/test/unit/spec/hashTree/hashTreeParser.ts +0 -156
@@ -1,11 +1,4 @@
1
1
  import EventsScope from '../common/events/events-scope';
2
- import HashTreeParser, { DataSet, HashTreeMessage, HashTreeObject, HtMeta } from '../hashTree/hashTreeParser';
3
- export type LocusLLMEvent = {
4
- data: {
5
- eventType: 'locus.state_message';
6
- stateElementsMessage: HashTreeMessage;
7
- };
8
- };
9
2
  export type LocusDTO = {
10
3
  controls?: any;
11
4
  fullState?: {
@@ -26,11 +19,7 @@ export type LocusDTO = {
26
19
  name: string;
27
20
  orgId: string;
28
21
  };
29
- htMeta?: HtMeta;
30
22
  info?: any;
31
- jsSdkMeta?: {
32
- removedParticipantIds: string[];
33
- };
34
23
  links?: any;
35
24
  mediaShares?: any[];
36
25
  meetings?: any[];
@@ -51,7 +40,6 @@ export type LocusDTO = {
51
40
  url?: string;
52
41
  };
53
42
  export type LocusApiResponseBody = {
54
- dataSets?: DataSet[];
55
43
  locus: LocusDTO;
56
44
  };
57
45
  /**
@@ -71,7 +59,6 @@ export default class LocusInfo extends EventsScope {
71
59
  aclUrl: any;
72
60
  baseSequence: any;
73
61
  created: any;
74
- deltaParticipants: any;
75
62
  identities: any;
76
63
  membership: any;
77
64
  participants: any;
@@ -93,8 +80,6 @@ export default class LocusInfo extends EventsScope {
93
80
  resources: any;
94
81
  mainSessionLocusCache: any;
95
82
  self: any;
96
- hashTreeParser?: HashTreeParser;
97
- hashTreeObjectId2ParticipantId: Map<number, string>;
98
83
  /**
99
84
  * Constructor
100
85
  * @param {function} updateMeeting callback to update the meeting object from an object
@@ -107,6 +92,8 @@ export default class LocusInfo extends EventsScope {
107
92
  * Does a Locus sync. It tries to get the latest delta DTO or if it can't, it falls back to getting the full Locus DTO.
108
93
  *
109
94
  * @param {Meeting} meeting
95
+ * @param {boolean} isLocusUrlChanged
96
+ * @param {Locus} locus
110
97
  * @returns {undefined}
111
98
  */
112
99
  private doLocusSync;
@@ -135,41 +122,17 @@ export default class LocusInfo extends EventsScope {
135
122
  init(locus?: any): void;
136
123
  /**
137
124
  * @param {Object} locus
138
- * @param {DataSet[]} [dataSets=[]] - Array of data sets
139
125
  * @returns {undefined}
140
126
  * @memberof LocusInfo
141
127
  */
142
- initialSetup(locus: object, dataSets?: DataSet[]): void;
143
- /**
144
- *
145
- * @param {HashTreeObject} object data set object
146
- * @param {any} locus
147
- * @returns {void}
148
- */
149
- updateHashTreeObjectInLocus(object: HashTreeObject, locus: LocusDTO): LocusDTO;
128
+ initialSetup(locus: object): void;
150
129
  /**
151
- * Handles HTTP response from Locus API call when hash tree update.
130
+ * Handles HTTP response from Locus API call.
152
131
  * @param {Meeting} meeting meeting object
153
- * @param {LocusApiResponseBody} responseBody body of the http reponse from Locus API call
132
+ * @param {LocusApiResponseBody} responseBody body of the http response from Locus API call
154
133
  * @returns {void}
155
134
  */
156
135
  handleLocusAPIResponse(meeting: any, responseBody: LocusApiResponseBody): void;
157
- /**
158
- * Handles a hash tree message received from Locus.
159
- *
160
- * @param {Meeting} meeting - The meeting object
161
- * @param {HashTreeMessage} message incoming hash tree message
162
- * @returns {void}
163
- */
164
- private handleHashTreeMessage;
165
- /**
166
- * Updates our locus info based on the data parsed by the hash tree parser.
167
- *
168
- * @param {LocusInfoUpdateType} updateType - The type of update received.
169
- * @param {Object} [data] - Additional data for the update, if applicable.
170
- * @returns {void}
171
- */
172
- private updateFromHashTree;
173
136
  /**
174
137
  * @param {Meeting} meeting
175
138
  * @param {Object} data
@@ -189,11 +152,10 @@ export default class LocusInfo extends EventsScope {
189
152
  * updates the locus with full locus object
190
153
  * @param {object} locus locus object
191
154
  * @param {string} eventType particulat locus event
192
- * @param {DataSet[]} dataSets
193
155
  * @returns {object} null
194
156
  * @memberof LocusInfo
195
157
  */
196
- onFullLocus(locus: any, eventType?: string, dataSets?: Array<DataSet>): void;
158
+ onFullLocus(locus: any, eventType?: string): void;
197
159
  /**
198
160
  * @param {String} eventType
199
161
  * @returns {undefined}
@@ -237,14 +199,6 @@ export default class LocusInfo extends EventsScope {
237
199
  * @memberof LocusInfo
238
200
  */
239
201
  compareSelfAndHost(): void;
240
- /**
241
- * Update the deltaParticipants property of this object based on a list of
242
- * provided participants.
243
- *
244
- * @param {Array} [participants] - The participants to update against.
245
- * @returns {void}
246
- */
247
- updateParticipantDeltas(participants?: Array<any>): void;
248
202
  /**
249
203
  * update meeting's members
250
204
  * @param {Object} participants new participants object
@@ -253,7 +207,7 @@ export default class LocusInfo extends EventsScope {
253
207
  * @returns {Array} updatedParticipants
254
208
  * @memberof LocusInfo
255
209
  */
256
- updateParticipants(participants: object, removedParticipantIds: string[], isReplace?: boolean): void;
210
+ updateParticipants(participants: object, removedParticipantIds?: string[], isReplace?: boolean): void;
257
211
  /**
258
212
  * @param {Object} controls
259
213
  * @param {Object} self
@@ -349,10 +303,11 @@ export default class LocusInfo extends EventsScope {
349
303
  /**
350
304
  * handles when the locus.url is updated
351
305
  * @param {String} url
306
+ * @param {Boolean} isMainLocus
352
307
  * @returns {undefined}
353
308
  * emits internal event locus_info_update_url
354
309
  */
355
- updateLocusUrl(url: string): void;
310
+ updateLocusUrl(url: string, isMainLocus?: boolean): void;
356
311
  /**
357
312
  * @param {String} aclUrl
358
313
  * @returns {undefined}
@@ -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
  }
@@ -34,8 +34,14 @@ interface IInMeetingActions {
34
34
  isClosedCaptionActive?: boolean;
35
35
  canStartManualCaption?: boolean;
36
36
  canStopManualCaption?: boolean;
37
+ isLocalRecordingStarted?: boolean;
38
+ isLocalRecordingStopped?: boolean;
39
+ isLocalRecordingPaused?: boolean;
40
+ isLocalStreamingStarted?: boolean;
41
+ isLocalStreamingStopped?: boolean;
37
42
  isManualCaptionActive?: boolean;
38
43
  isSaveTranscriptsEnabled?: boolean;
44
+ isSpokenLanguageAutoDetectionEnabled?: boolean;
39
45
  isWebexAssistantActive?: boolean;
40
46
  canViewCaptionPanel?: boolean;
41
47
  isRealTimeTranslationEnabled?: boolean;
@@ -83,6 +89,7 @@ interface IInMeetingActions {
83
89
  canDoVideo?: boolean;
84
90
  canAnnotate?: boolean;
85
91
  canUseVoip?: boolean;
92
+ showAutoEndMeetingWarning?: boolean;
86
93
  supportHQV?: boolean;
87
94
  supportHDV?: boolean;
88
95
  canShareWhiteBoard?: boolean;
@@ -139,8 +146,14 @@ export default class InMeetingActions implements IInMeetingActions {
139
146
  isClosedCaptionActive: any;
140
147
  canStartManualCaption: any;
141
148
  canStopManualCaption: any;
149
+ isLocalRecordingStopped: any;
150
+ isLocalRecordingStarted: any;
151
+ isLocalRecordingPaused: any;
142
152
  isManualCaptionActive: any;
153
+ isLocalStreamingStarted: any;
154
+ isLocalStreamingStopped: any;
143
155
  isSaveTranscriptsEnabled: any;
156
+ isSpokenLanguageAutoDetectionEnabled: any;
144
157
  isWebexAssistantActive: any;
145
158
  canViewCaptionPanel: any;
146
159
  isRealTimeTranslationEnabled: any;
@@ -188,6 +201,7 @@ export default class InMeetingActions implements IInMeetingActions {
188
201
  canDoVideo: any;
189
202
  canAnnotate: any;
190
203
  canUseVoip: any;
204
+ showAutoEndMeetingWarning: any;
191
205
  supportHQV: any;
192
206
  enforceVirtualBackground: any;
193
207
  supportHDV: any;
@@ -2,13 +2,12 @@
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';
9
9
  import { type BundlePolicy } from '../media';
10
10
  import MediaProperties from '../media/properties';
11
- import { LocusDTO } from '../locus-info';
12
11
  import ReconnectionManager from '../reconnection-manager';
13
12
  import MeetingRequest from './request';
14
13
  import Members from '../members/index';
@@ -23,7 +22,7 @@ import ControlsOptionsManager from '../controls-options-manager';
23
22
  import { LocusMediaRequest } from './locusMediaRequest';
24
23
  import { BrbState } from './brbState';
25
24
  import { SetStageOptions } from './request.type';
26
- import { DataSet } from '../hashTree/hashTreeParser';
25
+ import { Invitee } from './type';
27
26
  export type CaptionData = {
28
27
  id: string;
29
28
  isFinal: boolean;
@@ -84,6 +83,7 @@ export type CallStateForMetrics = {
84
83
  loginType?: string;
85
84
  userNameInput?: string;
86
85
  emailInput?: string;
86
+ pstnCorrelationId?: string;
87
87
  };
88
88
  export declare const MEDIA_UPDATE_TYPE: {
89
89
  TRANSCODED_MEDIA_CONNECTION: string;
@@ -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;
@@ -489,10 +491,11 @@ export default class Meeting extends StatelessWebexPlugin {
489
491
  /**
490
492
  * @param {Object} attrs
491
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
492
495
  * @constructor
493
496
  * @memberof Meeting
494
497
  */
495
- constructor(attrs: any, options: object);
498
+ constructor(attrs: any, options: object, callback: (meeting: Meeting) => void);
496
499
  /**
497
500
  * returns meeting is joined
498
501
  * @private
@@ -515,6 +518,16 @@ export default class Meeting extends StatelessWebexPlugin {
515
518
  * @param {string} correlationId
516
519
  */
517
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);
518
531
  /**
519
532
  * Getter - Returns callStateForMetrics.userNameInput
520
533
  * @returns {string}
@@ -864,45 +877,37 @@ export default class Meeting extends StatelessWebexPlugin {
864
877
  private updateMeetingObject;
865
878
  /**
866
879
  * Invite a guest to the call that isn't normally part of this call
867
- * @param {Object} invitee
880
+ * @param {Invitee} invitee
868
881
  * @param {String} invitee.emailAddress
869
882
  * @param {String} invitee.email
870
883
  * @param {String} invitee.phoneNumber
871
884
  * @param {Boolean} [alertIfActive]
885
+ * @param {Boolean} [invitee.skipEmailValidation]
886
+ * @param {Boolean} [invitee.isInternalNumber]
872
887
  * @returns {Promise} see #members.addMember
873
888
  * @public
874
889
  * @memberof Meeting
875
890
  */
876
- invite(invitee: {
877
- emailAddress: string;
878
- email: string;
879
- phoneNumber: string;
880
- roles: Array<string>;
881
- }, alertIfActive?: boolean): any;
891
+ invite(invitee: Invitee, alertIfActive?: boolean): any;
882
892
  /**
883
893
  * Cancel an outgoing phone call invitation made during a meeting
884
- * @param {Object} invitee
894
+ * @param {Invitee} invitee
885
895
  * @param {String} invitee.phoneNumber
886
896
  * @returns {Promise} see #members.cancelPhoneInvite
887
897
  * @public
888
898
  * @memberof Meeting
889
899
  */
890
- cancelPhoneInvite(invitee: {
891
- phoneNumber: string;
892
- }): any;
900
+ cancelPhoneInvite(invitee: Invitee): any;
893
901
  /**
894
902
  * Cancel an SIP/phone call invitation made during a meeting
895
- * @param {Object} invitee
903
+ * @param {Invitee} invitee
896
904
  * @param {String} invitee.memberId
897
905
  * @param {Boolean} [invitee.isInternalNumber] - When cancel phone invitation, if the number is internal
898
906
  * @returns {Promise} see #members.cancelInviteByMemberId
899
907
  * @public
900
908
  * @memberof Meeting
901
909
  */
902
- cancelInviteByMemberId(invitee: {
903
- memberId: string;
904
- isInternalNumber?: boolean;
905
- }): any;
910
+ cancelInviteByMemberId(invitee: Invitee): any;
906
911
  /**
907
912
  * Admit the guest(s) to the call once they are waiting.
908
913
  * If the host/cohost is in a breakout session, the locus url
@@ -1042,13 +1047,11 @@ export default class Meeting extends StatelessWebexPlugin {
1042
1047
  * @memberof Meeting
1043
1048
  */
1044
1049
  setLocus(locus: {
1045
- locus: LocusDTO;
1046
1050
  mediaConnections: Array<any>;
1047
1051
  locusUrl: string;
1048
1052
  locusId: string;
1049
1053
  mediaId: string;
1050
1054
  host: object;
1051
- dataSets: DataSet[];
1052
1055
  } | any): void;
1053
1056
  /**
1054
1057
  * Upload logs for the current meeting
@@ -1266,12 +1269,6 @@ export default class Meeting extends StatelessWebexPlugin {
1266
1269
  startTranscription(options?: {
1267
1270
  spokenLanguage?: string;
1268
1271
  }): Promise<void>;
1269
- /** Handles Locus LLM events
1270
- *
1271
- * @param {LocusLLMEvent} event - The Locus LLM event to process
1272
- * @returns {void}
1273
- */
1274
- private processLocusLLMEvent;
1275
1272
  /**
1276
1273
  * Callback called when a relay event is received from meeting LLM Connection
1277
1274
  * @param {RelayEvent} e Event object coming from LLM Connection
@@ -1357,7 +1354,7 @@ export default class Meeting extends StatelessWebexPlugin {
1357
1354
  * @memberof Meeting
1358
1355
  * @returns {Promise}
1359
1356
  */
1360
- disconnectPhoneAudio(): Promise<[any, any]>;
1357
+ disconnectPhoneAudio(): Promise<void>;
1361
1358
  /**
1362
1359
  * Moves the call to the specified resourceId
1363
1360
  * @param {String} resourceId
@@ -1911,6 +1908,20 @@ export default class Meeting extends StatelessWebexPlugin {
1911
1908
  * @memberof Meeting
1912
1909
  */
1913
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;
1914
1925
  /**
1915
1926
  * Method to enable or disable reactions inside the meeting.
1916
1927
  *
@@ -2026,5 +2037,29 @@ export default class Meeting extends StatelessWebexPlugin {
2026
2037
  * @returns {Promise} The locus request
2027
2038
  */
2028
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>;
2029
2064
  }
2030
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
  }
@@ -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,13 +77,20 @@ 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;
83
+ isLocalStreamingStarted: (displayHints: any) => any;
84
+ isLocalStreamingStopped: (displayHints: any) => any;
74
85
  canStopManualCaption: (displayHints: any) => any;
75
86
  isManualCaptionActive: (displayHints: any) => any;
87
+ isSpokenLanguageAutoDetectionEnabled: (displayHints: any) => any;
76
88
  isWebexAssistantActive: (displayHints: any) => any;
77
89
  canViewCaptionPanel: (displayHints: any) => any;
78
90
  isRealTimeTranslationEnabled: (displayHints: any) => any;
79
91
  canSelectSpokenLanguages: (displayHints: any) => any;
80
92
  waitingForOthersToJoin: (displayHints: any) => any;
93
+ showAutoEndMeetingWarning: (displayHints: any) => any;
81
94
  canSendReactions: (originalValue: any, displayHints: any) => any;
82
95
  canUserRenameSelfAndObserved: (displayHints: any) => any;
83
96
  requiresPostMeetingDataConsentPrompt: (displayHints: any) => any;
@@ -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
@@ -35,6 +35,7 @@ export default class Member {
35
35
  status: any;
36
36
  supportsBreakouts: boolean;
37
37
  supportsInterpretation: boolean;
38
+ supportsSingleUserAutoEndMeeting: boolean;
38
39
  supportLiveAnnotation: boolean;
39
40
  type: any;
40
41
  namespace: string;
@@ -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}