@webex/plugin-meetings 3.7.0 → 3.8.0-next.10

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 (206) hide show
  1. package/dist/annotation/index.js +17 -0
  2. package/dist/annotation/index.js.map +1 -1
  3. package/dist/breakouts/breakout.js +1 -1
  4. package/dist/breakouts/index.js +1 -1
  5. package/dist/common/errors/join-forbidden-error.js +52 -0
  6. package/dist/common/errors/join-forbidden-error.js.map +1 -0
  7. package/dist/common/errors/{webinar-registration-error.js → join-webinar-error.js} +12 -12
  8. package/dist/common/errors/join-webinar-error.js.map +1 -0
  9. package/dist/common/errors/multistream-not-supported-error.js +53 -0
  10. package/dist/common/errors/multistream-not-supported-error.js.map +1 -0
  11. package/dist/config.js +3 -1
  12. package/dist/config.js.map +1 -1
  13. package/dist/constants.js +69 -6
  14. package/dist/constants.js.map +1 -1
  15. package/dist/index.js +16 -11
  16. package/dist/index.js.map +1 -1
  17. package/dist/interpretation/index.js +4 -4
  18. package/dist/interpretation/index.js.map +1 -1
  19. package/dist/interpretation/siLanguage.js +1 -1
  20. package/dist/locus-info/index.js +14 -3
  21. package/dist/locus-info/index.js.map +1 -1
  22. package/dist/locus-info/selfUtils.js +35 -17
  23. package/dist/locus-info/selfUtils.js.map +1 -1
  24. package/dist/media/MediaConnectionAwaiter.js +1 -0
  25. package/dist/media/MediaConnectionAwaiter.js.map +1 -1
  26. package/dist/media/properties.js +30 -16
  27. package/dist/media/properties.js.map +1 -1
  28. package/dist/meeting/brbState.js +167 -0
  29. package/dist/meeting/brbState.js.map +1 -0
  30. package/dist/meeting/in-meeting-actions.js +13 -1
  31. package/dist/meeting/in-meeting-actions.js.map +1 -1
  32. package/dist/meeting/index.js +1373 -1052
  33. package/dist/meeting/index.js.map +1 -1
  34. package/dist/meeting/locusMediaRequest.js +32 -11
  35. package/dist/meeting/locusMediaRequest.js.map +1 -1
  36. package/dist/meeting/muteState.js +1 -6
  37. package/dist/meeting/muteState.js.map +1 -1
  38. package/dist/meeting/request.js +51 -29
  39. package/dist/meeting/request.js.map +1 -1
  40. package/dist/meeting/request.type.js.map +1 -1
  41. package/dist/meeting/util.js +103 -67
  42. package/dist/meeting/util.js.map +1 -1
  43. package/dist/meeting-info/meeting-info-v2.js +115 -45
  44. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  45. package/dist/meeting-info/utilv2.js +6 -2
  46. package/dist/meeting-info/utilv2.js.map +1 -1
  47. package/dist/meetings/index.js +107 -55
  48. package/dist/meetings/index.js.map +1 -1
  49. package/dist/meetings/meetings.types.js +2 -0
  50. package/dist/meetings/meetings.types.js.map +1 -1
  51. package/dist/meetings/util.js +1 -1
  52. package/dist/meetings/util.js.map +1 -1
  53. package/dist/member/index.js +9 -0
  54. package/dist/member/index.js.map +1 -1
  55. package/dist/member/types.js.map +1 -1
  56. package/dist/member/util.js +39 -28
  57. package/dist/member/util.js.map +1 -1
  58. package/dist/members/util.js +4 -2
  59. package/dist/members/util.js.map +1 -1
  60. package/dist/metrics/constants.js +6 -1
  61. package/dist/metrics/constants.js.map +1 -1
  62. package/dist/multistream/remoteMedia.js +30 -15
  63. package/dist/multistream/remoteMedia.js.map +1 -1
  64. package/dist/multistream/remoteMediaManager.js +40 -8
  65. package/dist/multistream/remoteMediaManager.js.map +1 -1
  66. package/dist/multistream/sendSlotManager.js +24 -0
  67. package/dist/multistream/sendSlotManager.js.map +1 -1
  68. package/dist/reachability/clusterReachability.js +12 -15
  69. package/dist/reachability/clusterReachability.js.map +1 -1
  70. package/dist/reachability/index.js +471 -140
  71. package/dist/reachability/index.js.map +1 -1
  72. package/dist/{rtcMetrics/constants.js → reachability/reachability.types.js} +1 -5
  73. package/dist/reachability/reachability.types.js.map +1 -0
  74. package/dist/reachability/request.js +21 -8
  75. package/dist/reachability/request.js.map +1 -1
  76. package/dist/recording-controller/enums.js +8 -4
  77. package/dist/recording-controller/enums.js.map +1 -1
  78. package/dist/recording-controller/index.js +18 -9
  79. package/dist/recording-controller/index.js.map +1 -1
  80. package/dist/recording-controller/util.js +13 -9
  81. package/dist/recording-controller/util.js.map +1 -1
  82. package/dist/roap/index.js +15 -15
  83. package/dist/roap/index.js.map +1 -1
  84. package/dist/roap/request.js +45 -79
  85. package/dist/roap/request.js.map +1 -1
  86. package/dist/roap/turnDiscovery.js +3 -6
  87. package/dist/roap/turnDiscovery.js.map +1 -1
  88. package/dist/types/annotation/index.d.ts +5 -0
  89. package/dist/types/common/errors/join-forbidden-error.d.ts +15 -0
  90. package/dist/types/common/errors/{webinar-registration-error.d.ts → join-webinar-error.d.ts} +2 -2
  91. package/dist/types/common/errors/multistream-not-supported-error.d.ts +17 -0
  92. package/dist/types/config.d.ts +2 -0
  93. package/dist/types/constants.d.ts +54 -1
  94. package/dist/types/index.d.ts +3 -3
  95. package/dist/types/locus-info/index.d.ts +2 -1
  96. package/dist/types/meeting/brbState.d.ts +54 -0
  97. package/dist/types/meeting/in-meeting-actions.d.ts +12 -0
  98. package/dist/types/meeting/index.d.ts +86 -14
  99. package/dist/types/meeting/locusMediaRequest.d.ts +6 -3
  100. package/dist/types/meeting/request.d.ts +14 -3
  101. package/dist/types/meeting/request.type.d.ts +6 -0
  102. package/dist/types/meeting/util.d.ts +3 -3
  103. package/dist/types/meeting-info/meeting-info-v2.d.ts +30 -5
  104. package/dist/types/meetings/index.d.ts +20 -2
  105. package/dist/types/meetings/meetings.types.d.ts +8 -0
  106. package/dist/types/member/index.d.ts +1 -0
  107. package/dist/types/member/types.d.ts +7 -0
  108. package/dist/types/members/util.d.ts +2 -0
  109. package/dist/types/metrics/constants.d.ts +6 -1
  110. package/dist/types/multistream/remoteMediaManager.d.ts +10 -1
  111. package/dist/types/multistream/sendSlotManager.d.ts +8 -1
  112. package/dist/types/reachability/clusterReachability.d.ts +1 -10
  113. package/dist/types/reachability/index.d.ts +83 -36
  114. package/dist/types/reachability/reachability.types.d.ts +64 -0
  115. package/dist/types/reachability/request.d.ts +5 -1
  116. package/dist/types/recording-controller/enums.d.ts +5 -2
  117. package/dist/types/recording-controller/index.d.ts +1 -0
  118. package/dist/types/recording-controller/util.d.ts +2 -1
  119. package/dist/types/roap/request.d.ts +1 -13
  120. package/dist/webinar/index.js +390 -7
  121. package/dist/webinar/index.js.map +1 -1
  122. package/package.json +23 -22
  123. package/src/annotation/index.ts +16 -0
  124. package/src/common/errors/join-forbidden-error.ts +26 -0
  125. package/src/common/errors/join-webinar-error.ts +24 -0
  126. package/src/common/errors/multistream-not-supported-error.ts +30 -0
  127. package/src/config.ts +2 -0
  128. package/src/constants.ts +62 -3
  129. package/src/index.ts +5 -3
  130. package/src/interpretation/index.ts +3 -3
  131. package/src/locus-info/index.ts +20 -3
  132. package/src/locus-info/selfUtils.ts +24 -6
  133. package/src/media/MediaConnectionAwaiter.ts +2 -0
  134. package/src/media/properties.ts +34 -13
  135. package/src/meeting/brbState.ts +169 -0
  136. package/src/meeting/in-meeting-actions.ts +25 -0
  137. package/src/meeting/index.ts +485 -88
  138. package/src/meeting/locusMediaRequest.ts +38 -12
  139. package/src/meeting/muteState.ts +1 -6
  140. package/src/meeting/request.ts +30 -12
  141. package/src/meeting/request.type.ts +7 -0
  142. package/src/meeting/util.ts +32 -13
  143. package/src/meeting-info/meeting-info-v2.ts +83 -12
  144. package/src/meeting-info/utilv2.ts +17 -3
  145. package/src/meetings/index.ts +79 -20
  146. package/src/meetings/meetings.types.ts +10 -0
  147. package/src/meetings/util.ts +2 -1
  148. package/src/member/index.ts +9 -0
  149. package/src/member/types.ts +8 -0
  150. package/src/member/util.ts +34 -24
  151. package/src/members/util.ts +1 -0
  152. package/src/metrics/constants.ts +6 -1
  153. package/src/multistream/remoteMedia.ts +28 -15
  154. package/src/multistream/remoteMediaManager.ts +32 -10
  155. package/src/multistream/sendSlotManager.ts +31 -0
  156. package/src/reachability/clusterReachability.ts +5 -15
  157. package/src/reachability/index.ts +315 -75
  158. package/src/reachability/reachability.types.ts +85 -0
  159. package/src/reachability/request.ts +55 -31
  160. package/src/recording-controller/enums.ts +5 -2
  161. package/src/recording-controller/index.ts +17 -4
  162. package/src/recording-controller/util.ts +28 -9
  163. package/src/roap/index.ts +14 -13
  164. package/src/roap/request.ts +30 -44
  165. package/src/roap/turnDiscovery.ts +2 -4
  166. package/src/webinar/index.ts +235 -9
  167. package/test/unit/spec/annotation/index.ts +46 -1
  168. package/test/unit/spec/interpretation/index.ts +39 -1
  169. package/test/unit/spec/locus-info/index.js +292 -60
  170. package/test/unit/spec/locus-info/selfConstant.js +7 -0
  171. package/test/unit/spec/locus-info/selfUtils.js +101 -1
  172. package/test/unit/spec/media/properties.ts +15 -0
  173. package/test/unit/spec/meeting/brbState.ts +114 -0
  174. package/test/unit/spec/meeting/in-meeting-actions.ts +15 -1
  175. package/test/unit/spec/meeting/index.js +908 -124
  176. package/test/unit/spec/meeting/locusMediaRequest.ts +111 -66
  177. package/test/unit/spec/meeting/muteState.js +0 -24
  178. package/test/unit/spec/meeting/request.js +3 -26
  179. package/test/unit/spec/meeting/utils.js +73 -28
  180. package/test/unit/spec/meeting-info/meetinginfov2.js +46 -4
  181. package/test/unit/spec/meeting-info/utilv2.js +26 -0
  182. package/test/unit/spec/meetings/index.js +172 -18
  183. package/test/unit/spec/meetings/utils.js +10 -0
  184. package/test/unit/spec/member/util.js +52 -11
  185. package/test/unit/spec/members/utils.js +95 -0
  186. package/test/unit/spec/multistream/remoteMedia.ts +11 -7
  187. package/test/unit/spec/multistream/remoteMediaManager.ts +397 -118
  188. package/test/unit/spec/reachability/clusterReachability.ts +7 -0
  189. package/test/unit/spec/reachability/index.ts +391 -9
  190. package/test/unit/spec/reachability/request.js +48 -12
  191. package/test/unit/spec/recording-controller/index.js +61 -5
  192. package/test/unit/spec/recording-controller/util.js +39 -3
  193. package/test/unit/spec/roap/index.ts +48 -1
  194. package/test/unit/spec/roap/request.ts +51 -109
  195. package/test/unit/spec/roap/turnDiscovery.ts +202 -147
  196. package/test/unit/spec/webinar/index.ts +509 -0
  197. package/dist/common/errors/webinar-registration-error.js.map +0 -1
  198. package/dist/networkQualityMonitor/index.js +0 -227
  199. package/dist/networkQualityMonitor/index.js.map +0 -1
  200. package/dist/rtcMetrics/constants.js.map +0 -1
  201. package/dist/rtcMetrics/index.js +0 -197
  202. package/dist/rtcMetrics/index.js.map +0 -1
  203. package/dist/types/networkQualityMonitor/index.d.ts +0 -70
  204. package/dist/types/rtcMetrics/constants.d.ts +0 -4
  205. package/dist/types/rtcMetrics/index.d.ts +0 -71
  206. package/src/common/errors/webinar-registration-error.ts +0 -27
@@ -19,6 +19,7 @@ import InMeetingActions from './in-meeting-actions';
19
19
  import RecordingController from '../recording-controller';
20
20
  import ControlsOptionsManager from '../controls-options-manager';
21
21
  import { LocusMediaRequest } from './locusMediaRequest';
22
+ import { BrbState } from './brbState';
22
23
  export type CaptionData = {
23
24
  id: string;
24
25
  isFinal: boolean;
@@ -70,6 +71,8 @@ export type CallStateForMetrics = {
70
71
  sessionCorrelationId?: string;
71
72
  joinTrigger?: string;
72
73
  loginType?: string;
74
+ userNameInput?: string;
75
+ emailInput?: string;
73
76
  };
74
77
  export declare const MEDIA_UPDATE_TYPE: {
75
78
  TRANSCODED_MEDIA_CONNECTION: string;
@@ -83,6 +86,7 @@ export declare enum ScreenShareFloorStatus {
83
86
  }
84
87
  type FetchMeetingInfoParams = {
85
88
  password?: string;
89
+ registrationId?: string;
86
90
  captchaCode?: string;
87
91
  extraParams?: Record<string, any>;
88
92
  sendCAevents?: boolean;
@@ -449,6 +453,8 @@ export default class Meeting extends StatelessWebexPlugin {
449
453
  turnServerUsed: boolean;
450
454
  areVoiceaEventsSetup: boolean;
451
455
  isMoveToInProgress: boolean;
456
+ registrationIdStatus: string;
457
+ brbState: BrbState;
452
458
  voiceaListenerCallbacks: object;
453
459
  private addMediaData;
454
460
  private sendSlotManager;
@@ -460,6 +466,8 @@ export default class Meeting extends StatelessWebexPlugin {
460
466
  private iceCandidateErrors;
461
467
  private iceCandidatesCount;
462
468
  private rtcMetrics?;
469
+ private uploadLogsTimer?;
470
+ private logUploadIntervalIndex;
463
471
  /**
464
472
  * @param {Object} attrs
465
473
  * @param {Object} options
@@ -489,6 +497,26 @@ export default class Meeting extends StatelessWebexPlugin {
489
497
  * @param {string} correlationId
490
498
  */
491
499
  set correlationId(correlationId: string);
500
+ /**
501
+ * Getter - Returns callStateForMetrics.userNameInput
502
+ * @returns {string}
503
+ */
504
+ get userNameInput(): string;
505
+ /**
506
+ * Setter - sets callStateForMetrics.userNameInput
507
+ * @param {string} userNameInput
508
+ */
509
+ set userNameInput(userNameInput: string);
510
+ /**
511
+ * Getter - Returns callStateForMetrics.emailInput
512
+ * @returns {string}
513
+ */
514
+ get emailInput(): string;
515
+ /**
516
+ * Setter - sets callStateForMetrics.emailInput
517
+ * @param {string} emailInput
518
+ */
519
+ set emailInput(emailInput: string);
492
520
  /**
493
521
  * Getter - Returns callStateForMetrics.sessionCorrelationId
494
522
  * @returns {string}
@@ -576,6 +604,25 @@ export default class Meeting extends StatelessWebexPlugin {
576
604
  requiredCaptcha: any;
577
605
  failureReason: string;
578
606
  }>;
607
+ /**
608
+ * Checks if the supplied registrationId is correct. It returns a promise with information whether the
609
+ * registrationId and captcha code were correct or not.
610
+ * @param {String | undefined} registrationId - can be undefined if only captcha was required
611
+ * @param {String | undefined} captchaCode - can be undefined if captcha was not required by the server
612
+ * @param {Boolean} sendCAevents - whether Call Analyzer events should be sent when fetching meeting information
613
+ * @public
614
+ * @memberof Meeting
615
+ * @returns {Promise<{isRegistrationIdValid: boolean, requiredCaptcha: boolean, failureReason: MEETING_INFO_FAILURE_REASON}>}
616
+ */
617
+ verifyRegistrationId(registrationId: string, captchaCode: string, sendCAevents?: boolean): Promise<{
618
+ isRegistrationIdValid: boolean;
619
+ requiredCaptcha: any;
620
+ failureReason: string;
621
+ } | {
622
+ isRegistrationIdValid: boolean;
623
+ requiredCaptcha: any;
624
+ failureReason: string;
625
+ }>;
579
626
  /**
580
627
  * Refreshes the captcha. As a result the meeting will have new captcha id, image and audio.
581
628
  * If the refresh operation fails, meeting remains with the old captcha properties.
@@ -804,6 +851,7 @@ export default class Meeting extends StatelessWebexPlugin {
804
851
  emailAddress: string;
805
852
  email: string;
806
853
  phoneNumber: string;
854
+ roles: Array<string>;
807
855
  }, alertIfActive?: boolean): any;
808
856
  /**
809
857
  * Cancel an outgoing phone call invitation made during a meeting
@@ -834,6 +882,14 @@ export default class Meeting extends StatelessWebexPlugin {
834
882
  authorizingLocusUrl: string;
835
883
  mainLocusUrl: string;
836
884
  }): any;
885
+ /**
886
+ * Manages be right back status updates for the current participant.
887
+ *
888
+ * @param {boolean} enabled - Indicates whether the user enabled brb or not.
889
+ * @returns {Promise<void>} resolves when the brb status is updated or does nothing if not in a multistream meeting.
890
+ * @throws {Error} - Throws an error if the request fails.
891
+ */
892
+ beRightBack(enabled: boolean): Promise<void>;
837
893
  /**
838
894
  * Remove the member from the meeting, boot them
839
895
  * @param {String} memberId
@@ -961,6 +1017,23 @@ export default class Meeting extends StatelessWebexPlugin {
961
1017
  * @memberof Meeting
962
1018
  */
963
1019
  uploadLogs(options?: object): void;
1020
+ /**
1021
+ * sets the timer for periodic log upload
1022
+ * @returns {void}
1023
+ */
1024
+ private setLogUploadTimer;
1025
+ /**
1026
+ * Starts a periodic upload of logs
1027
+ *
1028
+ * @returns {undefined}
1029
+ */
1030
+ startPeriodicLogUpload(): void;
1031
+ /**
1032
+ * Stops the periodic upload of logs
1033
+ *
1034
+ * @returns {undefined}
1035
+ */
1036
+ stopPeriodicLogUpload(): void;
964
1037
  /**
965
1038
  * Removes remote audio, video and share streams from class instance's mediaProperties
966
1039
  * @returns {undefined}
@@ -1026,11 +1099,12 @@ export default class Meeting extends StatelessWebexPlugin {
1026
1099
  * Close the peer connections and remove them from the class.
1027
1100
  * Cleanup any media connection related things.
1028
1101
  *
1102
+ * @param {boolean} resetMuteStates whether to also reset the audio/video mute state information
1029
1103
  * @returns {Promise}
1030
1104
  * @public
1031
1105
  * @memberof Meeting
1032
1106
  */
1033
- closePeerConnections(): Promise<void>;
1107
+ closePeerConnections(resetMuteStates?: boolean): Promise<void>;
1034
1108
  /**
1035
1109
  * Unsets the peer connections on the class
1036
1110
  * warning DO NOT CALL WITHOUT CLOSING PEER CONNECTIONS FIRST
@@ -1095,7 +1169,7 @@ export default class Meeting extends StatelessWebexPlugin {
1095
1169
  * @param {Object} options - options to join with media
1096
1170
  * @param {JoinOptions} [options.joinOptions] - see #join()
1097
1171
  * @param {AddMediaOptions} [options.mediaOptions] - see #addMedia()
1098
- * @returns {Promise} -- {join: see join(), media: see addMedia()}
1172
+ * @returns {Promise} -- {join: see join(), media: see addMedia(), multistreamEnabled: flag to indicate if we managed to join in multistream mode}
1099
1173
  * @public
1100
1174
  * @memberof Meeting
1101
1175
  * @example
@@ -1244,7 +1318,7 @@ export default class Meeting extends StatelessWebexPlugin {
1244
1318
  * @public
1245
1319
  * @memberof Meeting
1246
1320
  */
1247
- moveTo(resourceId: string): any;
1321
+ moveTo(resourceId: string): Promise<void>;
1248
1322
  /**
1249
1323
  * Moves the call from the specified resourceId, back to computer
1250
1324
  * @param {String} resourceId
@@ -1252,7 +1326,7 @@ export default class Meeting extends StatelessWebexPlugin {
1252
1326
  * @public
1253
1327
  * @memberof Meeting
1254
1328
  */
1255
- moveFrom(resourceId: string): any;
1329
+ moveFrom(resourceId: string): Promise<any>;
1256
1330
  /**
1257
1331
  * Handles ROAP_FAILURE event from the webrtc media connection
1258
1332
  *
@@ -1317,16 +1391,6 @@ export default class Meeting extends StatelessWebexPlugin {
1317
1391
  * @returns {void}
1318
1392
  */
1319
1393
  private createStatsAnalyzer;
1320
- /**
1321
- * Handles device logging
1322
- *
1323
- * @private
1324
- * @static
1325
- * @param {boolean} isAudioEnabled
1326
- * @param {boolean} isVideoEnabled
1327
- * @returns {Promise<void>}
1328
- */
1329
- private static handleDeviceLogging;
1330
1394
  /**
1331
1395
  * Returns a promise. This promise is created once the local sdp offer has been successfully created and is resolved
1332
1396
  * once the remote sdp answer has been received.
@@ -1392,6 +1456,14 @@ export default class Meeting extends StatelessWebexPlugin {
1392
1456
  * @returns {Promise<void>}
1393
1457
  */
1394
1458
  private cleanUpOnAddMediaFailure;
1459
+ /**
1460
+ * Cleans up stats analyzer, peer connection and other things before
1461
+ * we can create a new transcoded media connection
1462
+ *
1463
+ * @private
1464
+ * @returns {Promise<void>}
1465
+ */
1466
+ private downgradeFromMultistreamToTranscoded;
1395
1467
  /**
1396
1468
  * Sends stats report, closes peer connection and cleans up any media connection
1397
1469
  * related things before trying to establish media connection again with turn server
@@ -1,5 +1,5 @@
1
1
  import { WebexPlugin } from '@webex/webex-core';
2
- import { IP_VERSION } from '../constants';
2
+ import { ClientMediaPreferences } from '../reachability/reachability.types';
3
3
  export type MediaRequestType = 'RoapMessage' | 'LocalMute';
4
4
  export type RequestResult = any;
5
5
  export type RoapRequest = {
@@ -8,9 +8,8 @@ export type RoapRequest = {
8
8
  mediaId: string;
9
9
  roapMessage: any;
10
10
  reachability: any;
11
+ clientMediaPreferences: ClientMediaPreferences;
11
12
  sequence?: any;
12
- joinCookie: any;
13
- ipVersion?: IP_VERSION;
14
13
  };
15
14
  export type LocalMuteRequest = {
16
15
  type: 'LocalMute';
@@ -74,4 +73,8 @@ export declare class LocusMediaRequest extends WebexPlugin {
74
73
  send(request: Request): Promise<RequestResult>;
75
74
  /** Returns true if a confluence on the server is already created */
76
75
  isConfluenceCreated(): boolean;
76
+ /**
77
+ * This method needs to be called when we downgrade from multistream to transcoded connection.
78
+ */
79
+ downgradeFromMultistreamToTranscoded(): void;
77
80
  }
@@ -1,7 +1,7 @@
1
1
  import { StatelessWebexPlugin } from '@webex/webex-core';
2
- import { IP_VERSION } from '../constants';
3
- import { SendReactionOptions, ToggleReactionsOptions } from './request.type';
2
+ import { SendReactionOptions, BrbOptions, ToggleReactionsOptions } from './request.type';
4
3
  import { AnnotationInfo } from '../annotation/annotation.types';
4
+ import { ClientMediaPreferences } from '../reachability/reachability.types';
5
5
  /**
6
6
  * @class MeetingRequest
7
7
  */
@@ -63,8 +63,8 @@ export default class MeetingRequest extends StatelessWebexPlugin {
63
63
  locale?: string;
64
64
  deviceCapabilities?: Array<string>;
65
65
  liveAnnotationSupported: boolean;
66
- ipVersion?: IP_VERSION;
67
66
  alias?: string;
67
+ clientMediaPreferences: ClientMediaPreferences;
68
68
  }): Promise<any>;
69
69
  /**
70
70
  * Send a request to refresh the captcha
@@ -292,4 +292,15 @@ export default class MeetingRequest extends StatelessWebexPlugin {
292
292
  */
293
293
  toggleReactions({ enable, locusUrl, requestingParticipantId }: ToggleReactionsOptions): Promise<any>;
294
294
  getLocusStatusByUrl(locusUrl: string): any;
295
+ /**
296
+ * Sends a request to set be right back status.
297
+ *
298
+ * @param {Object} options - The options for brb request.
299
+ * @param {boolean} options.enabled - Whether brb status is enabled.
300
+ * @param {string} options.locusUrl - The URL of the locus.
301
+ * @param {string} options.deviceUrl - The URL of the device.
302
+ * @param {string} options.selfId - The ID of the participant.
303
+ * @returns {Promise}
304
+ */
305
+ setBrb({ enabled, locusUrl, deviceUrl, selfId }: BrbOptions): Promise<any>;
295
306
  }
@@ -9,3 +9,9 @@ export type ToggleReactionsOptions = {
9
9
  locusUrl: string;
10
10
  requestingParticipantId: string;
11
11
  };
12
+ export type BrbOptions = {
13
+ enabled: boolean;
14
+ locusUrl: string;
15
+ deviceUrl: string;
16
+ selfId: string;
17
+ };
@@ -14,7 +14,7 @@ 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
- joinMeeting: (meeting: any, options: any) => any;
17
+ joinMeeting: (meeting: any, options: any) => Promise<any>;
18
18
  cleanUp: (meeting: any) => any;
19
19
  disconnectPhoneAudio: (meeting: any, phoneUrl: any) => any;
20
20
  /**
@@ -30,7 +30,7 @@ declare const MeetingUtil: {
30
30
  isUserInIdleState: (locusInfo: any) => boolean;
31
31
  isUserInJoinedState: (locusInfo: any) => boolean;
32
32
  isMediaEstablished: (currentMediaStatus: any) => any;
33
- joinMeetingOptions: (meeting: any, options?: any) => any;
33
+ joinMeetingOptions: (meeting: any, options?: any) => Promise<any>;
34
34
  /**
35
35
  * Returns request options for leaving a meeting.
36
36
  * @param {any} meeting
@@ -54,6 +54,7 @@ declare const MeetingUtil: {
54
54
  canUserLowerSomeoneElsesHand: (displayHints: any) => any;
55
55
  bothLeaveAndEndMeetingAvailable: (displayHints: any) => any;
56
56
  canManageBreakout: (displayHints: any) => any;
57
+ canStartBreakout: (displayHints: any) => boolean;
57
58
  canBroadcastMessageToBreakout: (displayHints: any, policies?: {}) => boolean;
58
59
  isSuppressBreakoutSupport: (displayHints: any) => any;
59
60
  canAdmitLobbyToBreakout: (displayHints: any) => boolean;
@@ -63,7 +64,6 @@ declare const MeetingUtil: {
63
64
  unlockMeeting: (actions: any, request: any, locusUrl: any) => any;
64
65
  handleAudioLogging: (audioStream?: LocalMicrophoneStream) => void;
65
66
  handleVideoLogging: (videoStream?: LocalCameraStream) => void;
66
- handleDeviceLogging: (devices?: any[]) => void;
67
67
  endMeetingForAll: (meeting: any) => any;
68
68
  canEnableClosedCaption: (displayHints: any) => any;
69
69
  isSaveTranscriptsEnabled: (displayHints: any) => any;
@@ -52,6 +52,7 @@ export declare class MeetingInfoV2PolicyError extends Error {
52
52
  export declare class MeetingInfoV2CaptchaError extends Error {
53
53
  captchaInfo: any;
54
54
  isPasswordRequired: any;
55
+ isRegistrationIdRequired: any;
55
56
  sdkMessage: any;
56
57
  wbxAppApiCode: any;
57
58
  body: any;
@@ -65,9 +66,26 @@ export declare class MeetingInfoV2CaptchaError extends Error {
65
66
  constructor(wbxAppApiErrorCode?: number, captchaInfo?: object, message?: string);
66
67
  }
67
68
  /**
68
- * Error preventing join because of a webinar registration error
69
+ * Error preventing join because of a webinar have some error
69
70
  */
70
- export declare class MeetingInfoV2WebinarRegistrationError extends Error {
71
+ export declare class MeetingInfoV2JoinWebinarError extends Error {
72
+ meetingInfo: any;
73
+ sdkMessage: any;
74
+ wbxAppApiCode: any;
75
+ body: any;
76
+ /**
77
+ *
78
+ * @constructor
79
+ * @param {Number} [wbxAppApiErrorCode]
80
+ * @param {Object} [meetingInfo]
81
+ * @param {String} [message]
82
+ */
83
+ constructor(wbxAppApiErrorCode?: number, meetingInfo?: object, message?: string);
84
+ }
85
+ /**
86
+ * Error preventing join because of a forbidden error
87
+ */
88
+ export declare class MeetingInfoV2JoinForbiddenError extends Error {
71
89
  meetingInfo: any;
72
90
  sdkMessage: any;
73
91
  wbxAppApiCode: any;
@@ -107,11 +125,17 @@ export default class MeetingInfoV2 {
107
125
  */
108
126
  handlePolicyError: (err: any) => void;
109
127
  /**
110
- * Raises a handleWebinarRegistrationError for webinar registration error codes
128
+ * Raises a handleJoinWebinarError for join webinar error codes
129
+ * @param {any} err the error from the request
130
+ * @returns {void}
131
+ */
132
+ handleJoinWebinarError: (err: any) => void;
133
+ /**
134
+ * Raises a handleForbiddenError for join meeting forbidden error
111
135
  * @param {any} err the error from the request
112
136
  * @returns {void}
113
137
  */
114
- handleWebinarRegistrationError: (err: any) => void;
138
+ handleForbiddenError: (err: any) => void;
115
139
  /**
116
140
  * Creates adhoc space meetings for a space by fetching the conversation infomation
117
141
  * @param {String} conversationUrl conversationUrl to start adhoc meeting on
@@ -133,6 +157,7 @@ export default class MeetingInfoV2 {
133
157
  * @param {String} locusId
134
158
  * @param {Object} extraParams
135
159
  * @param {Object} options
160
+ * @param {String} registrationId
136
161
  * @returns {Promise} returns a meeting info object
137
162
  * @public
138
163
  * @memberof MeetingInfo
@@ -143,5 +168,5 @@ export default class MeetingInfoV2 {
143
168
  }, installedOrgID?: any, locusId?: any, extraParams?: object, options?: {
144
169
  meetingId?: string;
145
170
  sendCAevents?: boolean;
146
- }): Promise<any>;
171
+ }, registrationId?: string): Promise<any>;
147
172
  }
@@ -8,7 +8,7 @@ import 'webrtc-adapter';
8
8
  import { DESTINATION_TYPE } from '../constants';
9
9
  import { CallStateForMetrics } from '../meeting';
10
10
  import Reachability from '../reachability';
11
- import { INoiseReductionEffect, IVirtualBackgroundEffect } from './meetings.types';
11
+ import { INoiseReductionEffect, IVirtualBackgroundEffect, MeetingRegistrationStatus } from './meetings.types';
12
12
  /**
13
13
  * Meetings Ready Event
14
14
  * Emitted when the meetings instance on webex is ready
@@ -71,6 +71,9 @@ export type BasicMeetingInformation = {
71
71
  };
72
72
  meetingInfo: any;
73
73
  sessionCorrelationId: string;
74
+ roles: string[];
75
+ getCurUserType: () => string | null;
76
+ callStateForMetrics: CallStateForMetrics;
74
77
  };
75
78
  /**
76
79
  * Maintain a cache of meetings and sync with services.
@@ -91,6 +94,7 @@ export default class Meetings extends WebexPlugin {
91
94
  mediaHelpers: any;
92
95
  breakoutLocusForHandleLater: any;
93
96
  namespace: string;
97
+ registrationStatus: MeetingRegistrationStatus;
94
98
  /**
95
99
  * Initializes the Meetings Plugin
96
100
  * @constructor
@@ -175,6 +179,13 @@ export default class Meetings extends WebexPlugin {
175
179
  * @memberof Meetings
176
180
  */
177
181
  private onReady;
182
+ /**
183
+ * API to change log upload interval. Setting the factor to 0 will disable periodic log uploads.
184
+ *
185
+ * @param {number} factor new factor value
186
+ * @returns {void}
187
+ */
188
+ private _setLogUploadIntervalMultiplicationFactor;
178
189
  /**
179
190
  * API to toggle unified meetings
180
191
  * @param {Boolean} changeState
@@ -216,6 +227,13 @@ export default class Meetings extends WebexPlugin {
216
227
  * @returns {undefined}
217
228
  */
218
229
  private _toggleIpv6BackendNativeSupport;
230
+ /**
231
+ * Executes a registration step and updates the registration status.
232
+ * @param {Function} step - The registration step to execute.
233
+ * @param {string} stepName - The name of the registration step.
234
+ * @returns {Promise} A promise that resolves when the step is completed.
235
+ */
236
+ executeRegistrationStep(step: () => Promise<any>, stepName: string): Promise<void>;
219
237
  /**
220
238
  * Explicitly sets up the meetings plugin by registering
221
239
  * the device, connecting to mercury, and listening for locus events.
@@ -290,7 +308,7 @@ export default class Meetings extends WebexPlugin {
290
308
  * @public
291
309
  * @memberof Meetings
292
310
  */
293
- startReachability(trigger?: string): Promise<import("../reachability").ReachabilityResults>;
311
+ startReachability(trigger?: string): Promise<import("../reachability/reachability.types").ReachabilityResults>;
294
312
  /**
295
313
  * Get geoHint for info for meetings
296
314
  * @returns {Promise}
@@ -11,3 +11,11 @@ export declare const MEETING_KEY: {
11
11
  readonly CORRELATION_ID: "correlationId";
12
12
  };
13
13
  export type MEETING_KEY = Enum<typeof MEETING_KEY>;
14
+ export type MeetingRegistrationStatus = {
15
+ fetchWebexSite: boolean;
16
+ getGeoHint: boolean;
17
+ startReachability: boolean;
18
+ deviceRegister: boolean;
19
+ mercuryConnect: boolean;
20
+ checkH264Support: boolean;
21
+ };
@@ -21,6 +21,7 @@ export default class Member {
21
21
  isRecording: any;
22
22
  isRemovable: any;
23
23
  isSelf: any;
24
+ isBrb: boolean;
24
25
  isUser: any;
25
26
  isVideoMuted: any;
26
27
  roles: IExternalRoles;
@@ -19,6 +19,13 @@ export type ParticipantWithRoles = {
19
19
  };
20
20
  };
21
21
  };
22
+ export type ParticipantWithBrb = {
23
+ controls: {
24
+ brb?: {
25
+ enabled: boolean;
26
+ };
27
+ };
28
+ };
22
29
  export declare enum MediaStatus {
23
30
  RECVONLY = "RECVONLY",
24
31
  SENDONLY = "SENDONLY",
@@ -26,6 +26,7 @@ declare const MembersUtil: {
26
26
  */
27
27
  getAddMemberBody: (options: any) => {
28
28
  invitees: {
29
+ roles?: any;
29
30
  address: any;
30
31
  }[];
31
32
  alertIfActive: any;
@@ -54,6 +55,7 @@ declare const MembersUtil: {
54
55
  uri: any;
55
56
  body: {
56
57
  invitees: {
58
+ roles?: any;
57
59
  address: any;
58
60
  }[];
59
61
  alertIfActive: any;
@@ -67,6 +67,11 @@ declare const BEHAVIORAL_METRICS: {
67
67
  ROAP_HTTP_RESPONSE_MISSING: string;
68
68
  TURN_DISCOVERY_REQUIRES_OK: string;
69
69
  REACHABILITY_COMPLETED: string;
70
- WEBINAR_REGISTRATION_ERROR: string;
70
+ JOIN_WEBINAR_ERROR: string;
71
+ GUEST_ENTERED_LOBBY: string;
72
+ GUEST_EXITED_LOBBY: string;
73
+ VERIFY_REGISTRATION_ID_SUCCESS: string;
74
+ VERIFY_REGISTRATION_ID_ERROR: string;
75
+ JOIN_FORBIDDEN_ERROR: string;
71
76
  };
72
77
  export { BEHAVIORAL_METRICS as default };
@@ -249,13 +249,22 @@ export declare class RemoteMediaManager extends EventsScope {
249
249
  private invalidateCurrentRemoteMedia;
250
250
  /** emits Event.VideoLayoutChanged */
251
251
  private emitVideoLayoutChangedEvent;
252
+ /**
253
+ * Set multiple remote video CSIs at once
254
+ * @param remoteMediaCsis The remote medias and CSIs to set them to
255
+ * @returns {void}
256
+ */
257
+ setRemoteVideoCsis(remoteMediaCsis: {
258
+ remoteMedia: RemoteMedia;
259
+ csi?: CSI | null;
260
+ }[]): void;
252
261
  /**
253
262
  * Sets a new CSI on a given remote media object
254
263
  *
255
264
  * @param {RemoteMedia} remoteMedia remote Media object to modify
256
265
  * @param {CSI} csi new CSI value, can be null if we want to stop receiving media
257
266
  */
258
- setRemoteVideoCsi(remoteMedia: RemoteMedia, csi: CSI | null): void;
267
+ setRemoteVideoCsi(remoteMedia: RemoteMedia, csi?: CSI | null): void;
259
268
  /**
260
269
  * Adds a new member video pane to the currently selected layout.
261
270
  *
@@ -1,4 +1,4 @@
1
- import { SendSlot, MediaType, LocalStream, MultistreamRoapMediaConnection, NamedMediaGroup } from '@webex/internal-media-core';
1
+ import { SendSlot, MediaType, LocalStream, MultistreamRoapMediaConnection, NamedMediaGroup, StreamState } from '@webex/internal-media-core';
2
2
  export default class SendSlotManager {
3
3
  private readonly slots;
4
4
  private readonly LoggerProxy;
@@ -25,6 +25,13 @@ export default class SendSlotManager {
25
25
  * @returns {void}
26
26
  */
27
27
  setNamedMediaGroups(mediaType: MediaType, namedMediaGroups: NamedMediaGroup[]): void;
28
+ /**
29
+ * Sets the source state override for the given media type.
30
+ * @param {MediaType} mediaType - The type of media (must be MediaType.VideoMain to apply source state changes).
31
+ * @param {StreamState | null} state - The state to set or null to clear the override value.
32
+ * @returns {void}
33
+ */
34
+ setSourceStateOverride(mediaType: MediaType, state: StreamState | null): void;
28
35
  /**
29
36
  * This method publishes the given stream to the sendSlot for the given mediaType
30
37
  * @param {MediaType} mediaType MediaType of the sendSlot to which a stream needs to be published (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
@@ -1,16 +1,7 @@
1
1
  import { ClusterNode } from './request';
2
2
  import EventsScope from '../common/events/events-scope';
3
3
  import { Enum } from '../constants';
4
- export type TransportResult = {
5
- result: 'reachable' | 'unreachable' | 'untested';
6
- latencyInMilliseconds?: number;
7
- clientMediaIPs?: string[];
8
- };
9
- export type ClusterReachabilityResult = {
10
- udp: TransportResult;
11
- tcp: TransportResult;
12
- xtls: TransportResult;
13
- };
4
+ import { ClusterReachabilityResult } from './reachability.types';
14
5
  export type ResultEventData = {
15
6
  protocol: 'udp' | 'tcp' | 'xtls';
16
7
  result: 'reachable' | 'unreachable' | 'untested';