@webex/plugin-meetings 2.60.1-next.1 → 2.60.1-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 (58) hide show
  1. package/README.md +12 -0
  2. package/dist/breakouts/breakout.js +1 -1
  3. package/dist/breakouts/index.js +1 -1
  4. package/dist/constants.d.ts +18 -4
  5. package/dist/constants.js +23 -9
  6. package/dist/constants.js.map +1 -1
  7. package/dist/interpretation/index.js +1 -1
  8. package/dist/interpretation/siLanguage.js +1 -1
  9. package/dist/locus-info/index.d.ts +1 -1
  10. package/dist/locus-info/index.js +8 -8
  11. package/dist/locus-info/index.js.map +1 -1
  12. package/dist/meeting/index.d.ts +119 -31
  13. package/dist/meeting/index.js +1021 -805
  14. package/dist/meeting/index.js.map +1 -1
  15. package/dist/meeting/request.js +25 -18
  16. package/dist/meeting/request.js.map +1 -1
  17. package/dist/meeting/util.d.ts +16 -0
  18. package/dist/meeting/util.js +71 -0
  19. package/dist/meeting/util.js.map +1 -1
  20. package/dist/meeting/voicea-meeting.d.ts +20 -0
  21. package/dist/meeting/voicea-meeting.js +201 -0
  22. package/dist/meeting/voicea-meeting.js.map +1 -0
  23. package/dist/meetings/index.d.ts +25 -3
  24. package/dist/meetings/index.js +83 -32
  25. package/dist/meetings/index.js.map +1 -1
  26. package/dist/reachability/index.js +11 -6
  27. package/dist/reachability/index.js.map +1 -1
  28. package/dist/reconnection-manager/index.js +3 -1
  29. package/dist/reconnection-manager/index.js.map +1 -1
  30. package/dist/roap/index.js +50 -54
  31. package/dist/roap/index.js.map +1 -1
  32. package/dist/statsAnalyzer/index.js +1 -1
  33. package/dist/statsAnalyzer/index.js.map +1 -1
  34. package/dist/statsAnalyzer/mqaUtil.js +13 -10
  35. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  36. package/dist/webinar/index.js +1 -1
  37. package/package.json +22 -21
  38. package/src/constants.ts +22 -4
  39. package/src/locus-info/index.ts +13 -12
  40. package/src/meeting/index.ts +546 -276
  41. package/src/meeting/request.ts +7 -0
  42. package/src/meeting/util.ts +97 -0
  43. package/src/meeting/voicea-meeting.ts +161 -0
  44. package/src/meetings/index.ts +59 -18
  45. package/src/reachability/index.ts +7 -4
  46. package/src/reconnection-manager/index.ts +1 -1
  47. package/src/roap/index.ts +49 -51
  48. package/src/statsAnalyzer/index.ts +2 -2
  49. package/src/statsAnalyzer/mqaUtil.ts +15 -14
  50. package/test/unit/spec/locus-info/index.js +53 -5
  51. package/test/unit/spec/meeting/index.js +1792 -1139
  52. package/test/unit/spec/meeting/request.js +22 -12
  53. package/test/unit/spec/meeting/utils.js +93 -0
  54. package/test/unit/spec/meetings/index.js +180 -21
  55. package/test/unit/spec/reachability/index.ts +2 -1
  56. package/test/unit/spec/reconnection-manager/index.js +1 -0
  57. package/test/unit/spec/roap/index.ts +28 -42
  58. package/test/unit/spec/stats-analyzer/index.js +415 -30
@@ -10,7 +10,6 @@ import MediaProperties from '../media/properties';
10
10
  import ReconnectionManager from '../reconnection-manager';
11
11
  import MeetingRequest from './request';
12
12
  import Members from '../members/index';
13
- import Transcription from '../transcription';
14
13
  import { NETWORK_STATUS } from '../constants';
15
14
  import { ReceiveSlotManager } from '../multistream/receiveSlotManager';
16
15
  import { MediaRequestManager } from '../multistream/mediaRequestManager';
@@ -20,6 +19,35 @@ import InMeetingActions from './in-meeting-actions';
20
19
  import RecordingController from '../recording-controller';
21
20
  import ControlsOptionsManager from '../controls-options-manager';
22
21
  import { LocusMediaRequest } from './locusMediaRequest';
22
+ export type CaptionData = {
23
+ id: string;
24
+ isFinal: boolean;
25
+ translations: Array<string>;
26
+ text: string;
27
+ currentCaptionLanguage: string;
28
+ timestamp: string;
29
+ speaker: string;
30
+ };
31
+ export type Transcription = {
32
+ languageOptions: {
33
+ captionLanguages?: string;
34
+ maxLanguages?: number;
35
+ spokenLanguages?: Array<string>;
36
+ currentCaptionLanguage?: string;
37
+ requestedCaptionLanguage?: string;
38
+ currentSpokenLanguage?: string;
39
+ };
40
+ status: string;
41
+ isListening: boolean;
42
+ commandText: string;
43
+ captions: Array<CaptionData>;
44
+ highlights: Array<any>;
45
+ showCaptionBox: boolean;
46
+ transcribingRequestStatus: string;
47
+ isCaptioning: boolean;
48
+ speakerProxy: Map<string, any>;
49
+ interimCaptions: Map<string, CaptionData>;
50
+ };
23
51
  export type LocalStreams = {
24
52
  microphone?: LocalMicrophoneStream;
25
53
  camera?: LocalCameraStream;
@@ -53,6 +81,12 @@ export declare enum ScreenShareFloorStatus {
53
81
  GRANTED = "floor_request_granted",
54
82
  RELEASED = "floor_released"
55
83
  }
84
+ type FetchMeetingInfoParams = {
85
+ password?: string;
86
+ captchaCode?: string;
87
+ extraParams?: Record<string, any>;
88
+ sendCAevents?: boolean;
89
+ };
56
90
  /**
57
91
  * MediaDirection
58
92
  * @typedef {Object} MediaDirection
@@ -379,7 +413,6 @@ export default class Meeting extends StatelessWebexPlugin {
379
413
  screenShareFloorState: ScreenShareFloorStatus;
380
414
  statsAnalyzer: StatsAnalyzer;
381
415
  transcription: Transcription;
382
- receiveTranscription: boolean;
383
416
  updateMediaConnections: (mediaConnections: any[]) => void;
384
417
  userDisplayHints: any;
385
418
  endCallInitJoinReq: any;
@@ -409,8 +442,12 @@ export default class Meeting extends StatelessWebexPlugin {
409
442
  environment: string;
410
443
  namespace: string;
411
444
  allowMediaInLobby: boolean;
445
+ localShareInstanceId: string;
446
+ remoteShareInstanceId: string;
412
447
  turnDiscoverySkippedReason: string;
413
448
  turnServerUsed: boolean;
449
+ areVoiceaEventsSetup: boolean;
450
+ voiceaListenerCallbacks: object;
414
451
  private retriedWithTurnServer;
415
452
  private sendSlotManager;
416
453
  private deferSDPAnswer?;
@@ -445,6 +482,34 @@ export default class Meeting extends StatelessWebexPlugin {
445
482
  * @param {string} correlationId
446
483
  */
447
484
  set correlationId(correlationId: string);
485
+ /**
486
+ * Set meeting info and trigger `MEETING_INFO_AVAILABLE` event
487
+ * @param {any} info
488
+ * @param {string} [meetingLookupUrl] Lookup url, defined when the meeting info fetched
489
+ * @returns {void}
490
+ */
491
+ private setMeetingInfo;
492
+ /**
493
+ * Add pre-fetched meeting info
494
+ *
495
+ * The passed meeting info should be be complete, e.g.: fetched after password or captcha provided
496
+ *
497
+ * @param {Object} meetingInfo - Complete meeting info
498
+ * @param {FetchMeetingInfoParams} fetchParams - Fetch parameters for validation
499
+ * @param {String|undefined} meetingLookupUrl - Lookup url, defined when the meeting info fetched
500
+ * @returns {Promise<void>}
501
+ */
502
+ injectMeetingInfo(meetingInfo: any, fetchParams: FetchMeetingInfoParams, meetingLookupUrl: string | undefined): Promise<void>;
503
+ /**
504
+ * Validate fetch parameters and clear the fetchMeetingInfoTimeout timeout
505
+ *
506
+ * @param {FetchMeetingInfoParams} fetchParams - fetch parameters for validation
507
+ * @param {String} caller - Name of the caller for logging
508
+ *
509
+ * @returns {Promise<void>}
510
+ * @private
511
+ */
512
+ private prepForFetchMeetingInfo;
448
513
  /**
449
514
  * Internal method for fetching meeting info
450
515
  *
@@ -468,12 +533,7 @@ export default class Meeting extends StatelessWebexPlugin {
468
533
  * @memberof Meeting
469
534
  * @returns {Promise}
470
535
  */
471
- fetchMeetingInfo({ password, captchaCode, extraParams, sendCAevents, }: {
472
- password?: string;
473
- captchaCode?: string;
474
- extraParams?: Record<string, any>;
475
- sendCAevents?: boolean;
476
- }): Promise<void>;
536
+ fetchMeetingInfo(options: FetchMeetingInfoParams): Promise<void>;
477
537
  /**
478
538
  * Checks if the supplied password/host key is correct. It returns a promise with information whether the
479
539
  * password and captcha code were correct or not.
@@ -530,6 +590,13 @@ export default class Meeting extends StatelessWebexPlugin {
530
590
  * @memberof Meeting
531
591
  */
532
592
  private setUpInterpretationListener;
593
+ /**
594
+ * Set up the listeners for captions
595
+ * @returns {undefined}
596
+ * @private
597
+ * @memberof Meeting
598
+ */
599
+ private setUpVoiceaListeners;
533
600
  /**
534
601
  * Set up the locus info listener for meetings disconnected due to inactivity
535
602
  * @returns {undefined}
@@ -771,24 +838,36 @@ export default class Meeting extends StatelessWebexPlugin {
771
838
  /**
772
839
  * Sets the meeting info on the class instance
773
840
  * @param {Object} meetingInfo
774
- * @param {Object} meetingInfo.body
775
- * @param {String} meetingInfo.body.conversationUrl
776
- * @param {String} meetingInfo.body.locusUrl
777
- * @param {String} meetingInfo.body.sipUri
778
- * @param {Object} meetingInfo.body.owner
841
+ * @param {String} meetingInfo.conversationUrl
842
+ * @param {String} meetingInfo.locusUrl
843
+ * @param {String} meetingInfo.sipUri
844
+ * @param {String} [meetingInfo.sipUrl]
845
+ * @param {String} [meetingInfo.sipMeetingUri]
846
+ * @param {String} [meetingInfo.meetingNumber]
847
+ * @param {String} [meetingInfo.meetingJoinUrl]
848
+ * @param {String} [meetingInfo.hostId]
849
+ * @param {String} [meetingInfo.permissionToken]
850
+ * @param {String} [meetingInfo.channel]
851
+ * @param {Object} meetingInfo.owner
779
852
  * @param {Object | String} destination locus object with meeting data or destination string (sip url, meeting link, etc)
853
+ * @param {Object | String} errors Meeting info request error
780
854
  * @returns {undefined}
781
855
  * @private
782
856
  * @memberof Meeting
783
857
  */
784
858
  parseMeetingInfo(meetingInfo: {
785
- body: {
786
- conversationUrl: string;
787
- locusUrl: string;
788
- sipUri: string;
789
- owner: object;
790
- };
791
- } | any, destination?: object | string | null): void;
859
+ conversationUrl: string;
860
+ locusUrl: string;
861
+ sipUri: string;
862
+ owner: object;
863
+ sipUrl?: string;
864
+ sipMeetingUri?: string;
865
+ meetingNumber?: string;
866
+ meetingJoinUrl?: string;
867
+ hostId?: string;
868
+ permissionToken?: string;
869
+ channel?: string;
870
+ }, destination?: object | string | null, errors?: any): void;
792
871
  /**
793
872
  * Indicates whether policy can be applied
794
873
  * @returns {boolean}
@@ -1023,17 +1102,26 @@ export default class Meeting extends StatelessWebexPlugin {
1023
1102
  */
1024
1103
  isReactionsSupported(): boolean;
1025
1104
  /**
1026
- * Monitor the Low-Latency Mercury (LLM) web socket connection on `onError` and `onClose` states
1027
- * @private
1028
- * @returns {void}
1105
+ * sets Caption language for the meeting
1106
+ * @param {string} language
1107
+ * @returns {Promise}
1029
1108
  */
1030
- private monitorTranscriptionSocketConnection;
1109
+ setCaptionLanguage(language: string): Promise<unknown>;
1031
1110
  /**
1032
- * Request for a WebSocket Url, open and monitor the WebSocket connection
1033
- * @private
1111
+ * sets Spoken language for the meeting
1112
+ * @param {string} language
1113
+ * @returns {Promise}
1114
+ */
1115
+ setSpokenLanguage(language: string): Promise<unknown>;
1116
+ /**
1117
+ * This method will enable the transcription for the current meeting if the meeting has enabled/supports Webex Assistant
1118
+ * @param {Object} options object with spokenlanguage setting
1119
+ * @public
1034
1120
  * @returns {Promise<void>} a promise to open the WebSocket connection
1035
1121
  */
1036
- private startTranscription;
1122
+ startTranscription(options?: {
1123
+ spokenLanguage?: string;
1124
+ }): Promise<void>;
1037
1125
  /**
1038
1126
  * Callback called when a relay event is received from meeting LLM Connection
1039
1127
  * @param {RelayEvent} e Event object coming from LLM Connection
@@ -1042,11 +1130,10 @@ export default class Meeting extends StatelessWebexPlugin {
1042
1130
  */
1043
1131
  private processRelayEvent;
1044
1132
  /**
1045
- * stop recieving Transcription by closing
1046
- * the web socket connection properly
1133
+ * This method stops receiving transcription for the current meeting
1047
1134
  * @returns {void}
1048
1135
  */
1049
- stopReceivingTranscription(): void;
1136
+ stopTranscription(): void;
1050
1137
  /**
1051
1138
  * triggers an event to notify that the user
1052
1139
  * will not receive any more transcription
@@ -1597,7 +1684,7 @@ export default class Meeting extends StatelessWebexPlugin {
1597
1684
  *
1598
1685
  * @returns {string} one of 'attendee','host','cohost', returns the user type of the current user
1599
1686
  */
1600
- getCurUserType(): "host" | "cohost" | "attendee";
1687
+ getCurUserType(): "host" | "cohost" | "presenter" | "attendee";
1601
1688
  /**
1602
1689
  * End the current meeting for all
1603
1690
  * @returns {Promise}
@@ -1717,3 +1804,4 @@ export default class Meeting extends StatelessWebexPlugin {
1717
1804
  */
1718
1805
  checkAndRefreshPermissionToken(threshold: number, reason: string): Promise<void>;
1719
1806
  }
1807
+ export {};