@webex/plugin-meetings 3.0.0-test.1 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +6 -0
- package/babel.config.js +3 -0
- package/dist/annotation/constants.js +12 -20
- package/dist/annotation/constants.js.map +1 -1
- package/dist/annotation/index.js +25 -10
- package/dist/annotation/index.js.map +1 -1
- package/dist/breakouts/breakout.js +2 -3
- package/dist/breakouts/breakout.js.map +1 -1
- package/dist/breakouts/collection.js +1 -2
- package/dist/breakouts/collection.js.map +1 -1
- package/dist/breakouts/edit-lock-error.js +1 -2
- package/dist/breakouts/edit-lock-error.js.map +1 -1
- package/dist/breakouts/events.js +1 -2
- package/dist/breakouts/events.js.map +1 -1
- package/dist/breakouts/index.js +13 -14
- package/dist/breakouts/index.js.map +1 -1
- package/dist/breakouts/request.js +1 -2
- package/dist/breakouts/request.js.map +1 -1
- package/dist/breakouts/utils.js +3 -6
- package/dist/breakouts/utils.js.map +1 -1
- package/dist/common/browser-detection.js +2 -3
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +3 -4
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +1 -2
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +1 -2
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +1 -2
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +1 -2
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +1 -2
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/no-meeting-info.js +1 -2
- package/dist/common/errors/no-meeting-info.js.map +1 -1
- package/dist/common/errors/parameter.js +3 -4
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +1 -2
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +1 -2
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reclaim-host-role-errors.js +6 -10
- package/dist/common/errors/reclaim-host-role-errors.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.js +1 -2
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +1 -2
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +1 -2
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +14 -15
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +1 -2
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +1 -2
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +1 -2
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +1 -2
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +1 -2
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +1 -2
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -2
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/{types/common → common}/logs/request.d.ts +1 -1
- package/dist/common/logs/request.js +3 -4
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +2 -4
- package/dist/common/queue.js.map +1 -1
- package/dist/{types/config.d.ts → config.d.ts} +1 -0
- package/dist/config.js +4 -3
- package/dist/config.js.map +1 -1
- package/dist/{types/constants.d.ts → constants.d.ts} +10 -5
- package/dist/constants.js +207 -380
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +3 -6
- package/dist/controls-options-manager/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +7 -10
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.js +27 -32
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/util.js +1 -2
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/index.js +3 -4
- package/dist/index.js.map +1 -1
- package/dist/interceptors/index.js.map +1 -1
- package/dist/interceptors/locusRetry.js +4 -3
- package/dist/interceptors/locusRetry.js.map +1 -1
- package/dist/interpretation/collection.js +1 -2
- package/dist/interpretation/collection.js.map +1 -1
- package/dist/interpretation/index.js +4 -5
- package/dist/interpretation/index.js.map +1 -1
- package/dist/interpretation/siLanguage.js +2 -3
- package/dist/interpretation/siLanguage.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +12 -13
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -4
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +1 -2
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +1 -2
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +23 -27
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +3 -4
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +16 -3
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +6 -10
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +12 -6
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/MediaConnectionAwaiter.d.ts +61 -0
- package/dist/media/MediaConnectionAwaiter.js +163 -0
- package/dist/media/MediaConnectionAwaiter.js.map +1 -0
- package/dist/media/index.js +9 -5
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +7 -28
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +1 -2
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +9 -18
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +14 -2
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/{types/meeting → meeting}/index.d.ts +71 -16
- package/dist/meeting/index.js +1411 -1036
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +4 -5
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/meeting/muteState.js +2 -4
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/{types/meeting → meeting}/request.d.ts +3 -0
- package/dist/meeting/request.js +45 -36
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/state.js +1 -2
- package/dist/meeting/state.js.map +1 -1
- package/dist/{types/meeting → meeting}/util.d.ts +1 -0
- package/dist/meeting/util.js +13 -10
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting/voicea-meeting.d.ts +16 -0
- package/dist/meeting/voicea-meeting.js +169 -0
- package/dist/meeting/voicea-meeting.js.map +1 -0
- package/dist/meeting-info/collection.js +3 -4
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +5 -4
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +27 -29
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +1 -2
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +8 -8
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +15 -9
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +5 -6
- package/dist/meetings/collection.js.map +1 -1
- package/dist/{types/meetings → meetings}/index.d.ts +11 -2
- package/dist/meetings/index.js +44 -17
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +2 -3
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +1 -4
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +1 -3
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +6 -8
- package/dist/member/types.js.map +1 -1
- package/dist/member/util.js +1 -2
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +1 -2
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +8 -7
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +2 -3
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +3 -4
- package/dist/members/types.js.map +1 -1
- package/dist/{types/members → members}/util.d.ts +1 -1
- package/dist/members/util.js +3 -4
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +1 -2
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +3 -2
- package/dist/metrics/index.js.map +1 -1
- package/dist/{types/multistream → multistream}/mediaRequestManager.d.ts +1 -2
- package/dist/multistream/mediaRequestManager.js +9 -11
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +3 -5
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +7 -9
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +3 -5
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/{types/multistream → multistream}/remoteMediaGroup.d.ts +1 -1
- package/dist/multistream/remoteMediaGroup.js +7 -6
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/{types/multistream → multistream}/remoteMediaManager.d.ts +1 -2
- package/dist/multistream/remoteMediaManager.js +32 -29
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/{types/multistream → multistream}/sendSlotManager.d.ts +1 -2
- package/dist/multistream/sendSlotManager.js +9 -6
- package/dist/multistream/sendSlotManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +1 -2
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +2 -3
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +2 -3
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +1 -2
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/{types/reachability → reachability}/clusterReachability.d.ts +1 -0
- package/dist/reachability/clusterReachability.js +35 -20
- package/dist/reachability/clusterReachability.js.map +1 -1
- package/dist/{types/reachability → reachability}/index.d.ts +4 -0
- package/dist/reachability/index.js +41 -12
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +25 -20
- package/dist/reachability/request.js.map +1 -1
- package/dist/{types/reachability → reachability}/util.d.ts +7 -0
- package/dist/reachability/util.js +19 -0
- package/dist/reachability/util.js.map +1 -1
- package/dist/reactions/constants.js +1 -2
- package/dist/reactions/constants.js.map +1 -1
- package/dist/reactions/reactions.js +2 -4
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.js +6 -8
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.js +18 -11
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +4 -5
- package/dist/recording-controller/enums.js.map +1 -1
- package/dist/recording-controller/index.js +43 -51
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.js +1 -2
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/{types/roap → roap}/index.d.ts +10 -2
- package/dist/roap/index.js +17 -3
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +10 -10
- package/dist/roap/request.js.map +1 -1
- package/dist/{types/roap → roap}/turnDiscovery.d.ts +64 -17
- package/dist/roap/turnDiscovery.js +316 -134
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/rtcMetrics/constants.js +1 -2
- package/dist/rtcMetrics/constants.js.map +1 -1
- package/dist/rtcMetrics/index.js +4 -6
- package/dist/rtcMetrics/index.js.map +1 -1
- package/dist/statsAnalyzer/global.js +1 -2
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +123 -96
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +24 -31
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +1 -2
- package/dist/transcription/index.js.map +1 -1
- package/dist/webinar/collection.js +1 -2
- package/dist/webinar/collection.js.map +1 -1
- package/dist/webinar/index.js +2 -3
- package/dist/webinar/index.js.map +1 -1
- package/jest.config.js +3 -0
- package/package.json +44 -25
- package/process +1 -0
- package/src/config.ts +3 -4
- package/src/constants.ts +13 -4
- package/src/interpretation/index.ts +2 -2
- package/src/locus-info/mediaSharesUtils.ts +16 -0
- package/src/locus-info/selfUtils.ts +5 -0
- package/src/media/MediaConnectionAwaiter.ts +174 -0
- package/src/media/index.ts +3 -1
- package/src/media/properties.ts +6 -31
- package/src/meeting/index.ts +526 -227
- package/src/meeting/request.ts +18 -2
- package/src/meeting/util.ts +6 -1
- package/src/meeting/voicea-meeting.ts +122 -0
- package/src/meeting-info/meeting-info-v2.ts +5 -11
- package/src/meeting-info/util.ts +12 -9
- package/src/meeting-info/utilv2.ts +26 -15
- package/src/meetings/index.ts +18 -0
- package/src/member/index.ts +0 -1
- package/src/multistream/mediaRequestManager.ts +1 -1
- package/src/multistream/remoteMediaGroup.ts +1 -1
- package/src/multistream/remoteMediaManager.ts +1 -2
- package/src/multistream/sendSlotManager.ts +1 -2
- package/src/reachability/clusterReachability.ts +20 -5
- package/src/reachability/index.ts +24 -1
- package/src/reachability/request.ts +15 -11
- package/src/reachability/util.ts +21 -0
- package/src/reconnection-manager/index.ts +1 -1
- package/src/roap/index.ts +25 -3
- package/src/roap/request.ts +2 -2
- package/src/roap/turnDiscovery.ts +244 -78
- package/src/statsAnalyzer/index.ts +63 -27
- package/test/integration/spec/journey.js +2 -2
- package/test/unit/spec/breakouts/breakout.ts +2 -1
- package/test/unit/spec/breakouts/index.ts +7 -4
- package/test/unit/spec/interpretation/index.ts +4 -1
- package/test/unit/spec/locus-info/index.js +27 -18
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +9 -0
- package/test/unit/spec/locus-info/selfUtils.js +41 -11
- package/test/unit/spec/media/MediaConnectionAwaiter.ts +344 -0
- package/test/unit/spec/media/index.ts +94 -78
- package/test/unit/spec/media/properties.ts +16 -70
- package/test/unit/spec/meeting/index.js +757 -141
- package/test/unit/spec/meeting/request.js +21 -0
- package/test/unit/spec/meeting/utils.js +58 -11
- package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
- package/test/unit/spec/meeting-info/meetinginfov2.js +20 -15
- package/test/unit/spec/meeting-info/utilv2.js +6 -0
- package/test/unit/spec/meetings/index.js +101 -13
- package/test/unit/spec/metrics/index.js +1 -2
- package/test/unit/spec/multistream/mediaRequestManager.ts +1 -0
- package/test/unit/spec/multistream/remoteMediaGroup.ts +0 -1
- package/test/unit/spec/multistream/remoteMediaManager.ts +0 -1
- package/test/unit/spec/reachability/clusterReachability.ts +86 -22
- package/test/unit/spec/reachability/index.ts +197 -60
- package/test/unit/spec/reachability/request.js +15 -7
- package/test/unit/spec/reachability/util.ts +32 -2
- package/test/unit/spec/reconnection-manager/index.js +28 -0
- package/test/unit/spec/recording-controller/index.js +0 -1
- package/test/unit/spec/roap/index.ts +61 -6
- package/test/unit/spec/roap/turnDiscovery.ts +299 -17
- package/test/unit/spec/stats-analyzer/index.js +179 -0
- /package/dist/{types/annotation → annotation}/annotation.types.d.ts +0 -0
- /package/dist/{types/annotation → annotation}/constants.d.ts +0 -0
- /package/dist/{types/annotation → annotation}/index.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/breakout.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/collection.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/edit-lock-error.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/events.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/index.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/request.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/utils.d.ts +0 -0
- /package/dist/{types/common → common}/browser-detection.d.ts +0 -0
- /package/dist/{types/common → common}/collection.d.ts +0 -0
- /package/dist/{types/common → common}/config.d.ts +0 -0
- /package/dist/{types/common → common}/errors/captcha-error.d.ts +0 -0
- /package/dist/{types/common → common}/errors/intent-to-join.d.ts +0 -0
- /package/dist/{types/common → common}/errors/join-meeting.d.ts +0 -0
- /package/dist/{types/common → common}/errors/media.d.ts +0 -0
- /package/dist/{types/common → common}/errors/no-meeting-info.d.ts +0 -0
- /package/dist/{types/common → common}/errors/parameter.d.ts +0 -0
- /package/dist/{types/common → common}/errors/password-error.d.ts +0 -0
- /package/dist/{types/common → common}/errors/permission.d.ts +0 -0
- /package/dist/{types/common → common}/errors/reclaim-host-role-errors.d.ts +0 -0
- /package/dist/{types/common → common}/errors/reconnection-in-progress.d.ts +0 -0
- /package/dist/{types/common → common}/errors/reconnection.d.ts +0 -0
- /package/dist/{types/common → common}/errors/stats.d.ts +0 -0
- /package/dist/{types/common → common}/errors/webex-errors.d.ts +0 -0
- /package/dist/{types/common → common}/errors/webex-meetings-error.d.ts +0 -0
- /package/dist/{types/common → common}/events/events-scope.d.ts +0 -0
- /package/dist/{types/common → common}/events/events.d.ts +0 -0
- /package/dist/{types/common → common}/events/trigger-proxy.d.ts +0 -0
- /package/dist/{types/common → common}/events/util.d.ts +0 -0
- /package/dist/{types/common → common}/logs/logger-config.d.ts +0 -0
- /package/dist/{types/common → common}/logs/logger-proxy.d.ts +0 -0
- /package/dist/{types/common → common}/queue.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/constants.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/enums.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/index.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/types.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/util.d.ts +0 -0
- /package/dist/{types/index.d.ts → index.d.ts} +0 -0
- /package/dist/{types/interceptors → interceptors}/index.d.ts +0 -0
- /package/dist/{types/interceptors → interceptors}/locusRetry.d.ts +0 -0
- /package/dist/{types/interpretation → interpretation}/collection.d.ts +0 -0
- /package/dist/{types/interpretation → interpretation}/index.d.ts +0 -0
- /package/dist/{types/interpretation → interpretation}/siLanguage.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/controlsUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/embeddedAppsUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/fullState.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/hostUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/index.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/infoUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/mediaSharesUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/parser.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/selfUtils.d.ts +0 -0
- /package/dist/{types/media → media}/index.d.ts +0 -0
- /package/dist/{types/media → media}/properties.d.ts +0 -0
- /package/dist/{types/media → media}/util.d.ts +0 -0
- /package/dist/{types/mediaQualityMetrics → mediaQualityMetrics}/config.d.ts +0 -0
- /package/dist/{types/meeting → meeting}/in-meeting-actions.d.ts +0 -0
- /package/dist/{types/meeting → meeting}/locusMediaRequest.d.ts +0 -0
- /package/dist/{types/meeting → meeting}/muteState.d.ts +0 -0
- /package/dist/{types/meeting → meeting}/request.type.d.ts +0 -0
- /package/dist/{types/meeting → meeting}/state.d.ts +0 -0
- /package/dist/{types/meeting-info → meeting-info}/collection.d.ts +0 -0
- /package/dist/{types/meeting-info → meeting-info}/index.d.ts +0 -0
- /package/dist/{types/meeting-info → meeting-info}/meeting-info-v2.d.ts +0 -0
- /package/dist/{types/meeting-info → meeting-info}/request.d.ts +0 -0
- /package/dist/{types/meeting-info → meeting-info}/util.d.ts +0 -0
- /package/dist/{types/meeting-info → meeting-info}/utilv2.d.ts +0 -0
- /package/dist/{types/meetings → meetings}/collection.d.ts +0 -0
- /package/dist/{types/meetings → meetings}/meetings.types.d.ts +0 -0
- /package/dist/{types/meetings → meetings}/request.d.ts +0 -0
- /package/dist/{types/meetings → meetings}/util.d.ts +0 -0
- /package/dist/{types/member → member}/index.d.ts +0 -0
- /package/dist/{types/member → member}/types.d.ts +0 -0
- /package/dist/{types/member → member}/util.d.ts +0 -0
- /package/dist/{types/members → members}/collection.d.ts +0 -0
- /package/dist/{types/members → members}/index.d.ts +0 -0
- /package/dist/{types/members → members}/request.d.ts +0 -0
- /package/dist/{types/members → members}/types.d.ts +0 -0
- /package/dist/{types/metrics → metrics}/constants.d.ts +0 -0
- /package/dist/{types/metrics → metrics}/index.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/receiveSlot.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/receiveSlotManager.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/remoteMedia.d.ts +0 -0
- /package/dist/{types/networkQualityMonitor → networkQualityMonitor}/index.d.ts +0 -0
- /package/dist/{types/personal-meeting-room → personal-meeting-room}/index.d.ts +0 -0
- /package/dist/{types/personal-meeting-room → personal-meeting-room}/request.d.ts +0 -0
- /package/dist/{types/personal-meeting-room → personal-meeting-room}/util.d.ts +0 -0
- /package/dist/{types/reachability → reachability}/request.d.ts +0 -0
- /package/dist/{types/reactions → reactions}/constants.d.ts +0 -0
- /package/dist/{types/reactions → reactions}/reactions.d.ts +0 -0
- /package/dist/{types/reactions → reactions}/reactions.type.d.ts +0 -0
- /package/dist/{types/reconnection-manager → reconnection-manager}/index.d.ts +0 -0
- /package/dist/{types/recording-controller → recording-controller}/enums.d.ts +0 -0
- /package/dist/{types/recording-controller → recording-controller}/index.d.ts +0 -0
- /package/dist/{types/recording-controller → recording-controller}/util.d.ts +0 -0
- /package/dist/{types/roap → roap}/request.d.ts +0 -0
- /package/dist/{types/rtcMetrics → rtcMetrics}/constants.d.ts +0 -0
- /package/dist/{types/rtcMetrics → rtcMetrics}/index.d.ts +0 -0
- /package/dist/{types/statsAnalyzer → statsAnalyzer}/global.d.ts +0 -0
- /package/dist/{types/statsAnalyzer → statsAnalyzer}/index.d.ts +0 -0
- /package/dist/{types/statsAnalyzer → statsAnalyzer}/mqaUtil.d.ts +0 -0
- /package/dist/{types/transcription → transcription}/index.d.ts +0 -0
- /package/dist/{types/webinar → webinar}/collection.d.ts +0 -0
- /package/dist/{types/webinar → webinar}/index.d.ts +0 -0
|
@@ -194,12 +194,14 @@ describe('plugin-meetings', () => {
|
|
|
194
194
|
const roapMessage = 'roap-message';
|
|
195
195
|
const permissionToken = 'permission-token';
|
|
196
196
|
const installationId = 'installationId';
|
|
197
|
+
const reachability = 'reachability';
|
|
197
198
|
|
|
198
199
|
await meetingsRequest.joinMeeting({
|
|
199
200
|
locusUrl,
|
|
200
201
|
deviceUrl,
|
|
201
202
|
correlationId,
|
|
202
203
|
roapMessage,
|
|
204
|
+
reachability,
|
|
203
205
|
permissionToken,
|
|
204
206
|
});
|
|
205
207
|
const requestParams = meetingsRequest.request.getCall(0).args[0];
|
|
@@ -212,6 +214,9 @@ describe('plugin-meetings', () => {
|
|
|
212
214
|
assert.equal(requestParams.body.permissionToken, 'permission-token');
|
|
213
215
|
assert.equal(requestParams.body.device.regionCode, 'WEST-COAST');
|
|
214
216
|
assert.include(requestParams.body.device.localIp, '127.0.0');
|
|
217
|
+
assert.deepEqual(requestParams.body.localMedias, [
|
|
218
|
+
{localSdp: '{"roapMessage":"roap-message","reachability":"reachability"}'},
|
|
219
|
+
]);
|
|
215
220
|
|
|
216
221
|
assert.calledOnceWithExactly(anonymizeIpSpy, '127.0.0.1');
|
|
217
222
|
});
|
|
@@ -365,6 +370,22 @@ describe('plugin-meetings', () => {
|
|
|
365
370
|
assert.deepEqual(requestParams.body.locale, undefined);
|
|
366
371
|
});
|
|
367
372
|
|
|
373
|
+
it('adds alias to request when they are provided', async () => {
|
|
374
|
+
await meetingsRequest.joinMeeting({
|
|
375
|
+
alias: 'assigned name',
|
|
376
|
+
});
|
|
377
|
+
const requestParams = meetingsRequest.request.getCall(0).args[0];
|
|
378
|
+
|
|
379
|
+
assert.deepEqual(requestParams.body.alias, 'assigned name');
|
|
380
|
+
});
|
|
381
|
+
|
|
382
|
+
it('does not add alias to request when they are not provided', async () => {
|
|
383
|
+
await meetingsRequest.joinMeeting({});
|
|
384
|
+
const requestParams = meetingsRequest.request.getCall(0).args[0];
|
|
385
|
+
|
|
386
|
+
assert.deepEqual(requestParams.body.alias, undefined);
|
|
387
|
+
});
|
|
388
|
+
|
|
368
389
|
it('includes joinCookie and ipver correctly', async () => {
|
|
369
390
|
const locusUrl = 'locusURL';
|
|
370
391
|
const deviceUrl = 'deviceUrl';
|
|
@@ -57,7 +57,8 @@ describe('plugin-meetings', () => {
|
|
|
57
57
|
});
|
|
58
58
|
|
|
59
59
|
describe('#cleanup', () => {
|
|
60
|
-
it('do clean up on meeting object', async () => {
|
|
60
|
+
it('do clean up on meeting object with LLM enabled', async () => {
|
|
61
|
+
meeting.config = {enableAutomaticLLM : true};
|
|
61
62
|
await MeetingUtil.cleanUp(meeting);
|
|
62
63
|
assert.calledOnce(meeting.cleanupLocalStreams);
|
|
63
64
|
assert.calledOnce(meeting.closeRemoteStreams);
|
|
@@ -71,6 +72,37 @@ describe('plugin-meetings', () => {
|
|
|
71
72
|
assert.calledOnce(meeting.breakouts.cleanUp);
|
|
72
73
|
assert.calledOnce(meeting.simultaneousInterpretation.cleanUp);
|
|
73
74
|
});
|
|
75
|
+
|
|
76
|
+
it('do clean up on meeting object with LLM disabled', async () => {
|
|
77
|
+
meeting.config = {enableAutomaticLLM : false};
|
|
78
|
+
await MeetingUtil.cleanUp(meeting);
|
|
79
|
+
assert.calledOnce(meeting.cleanupLocalStreams);
|
|
80
|
+
assert.calledOnce(meeting.closeRemoteStreams);
|
|
81
|
+
assert.calledOnce(meeting.closePeerConnections);
|
|
82
|
+
|
|
83
|
+
assert.calledOnce(meeting.unsetRemoteStreams);
|
|
84
|
+
assert.calledOnce(meeting.unsetPeerConnections);
|
|
85
|
+
assert.calledOnce(meeting.reconnectionManager.cleanUp);
|
|
86
|
+
assert.calledOnce(meeting.stopKeepAlive);
|
|
87
|
+
assert.notCalled(meeting.updateLLMConnection);
|
|
88
|
+
assert.calledOnce(meeting.breakouts.cleanUp);
|
|
89
|
+
assert.calledOnce(meeting.simultaneousInterpretation.cleanUp);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
it('do clean up on meeting object with no config', async () => {
|
|
93
|
+
await MeetingUtil.cleanUp(meeting);
|
|
94
|
+
assert.calledOnce(meeting.cleanupLocalStreams);
|
|
95
|
+
assert.calledOnce(meeting.closeRemoteStreams);
|
|
96
|
+
assert.calledOnce(meeting.closePeerConnections);
|
|
97
|
+
|
|
98
|
+
assert.calledOnce(meeting.unsetRemoteStreams);
|
|
99
|
+
assert.calledOnce(meeting.unsetPeerConnections);
|
|
100
|
+
assert.calledOnce(meeting.reconnectionManager.cleanUp);
|
|
101
|
+
assert.calledOnce(meeting.stopKeepAlive);
|
|
102
|
+
assert.notCalled(meeting.updateLLMConnection);
|
|
103
|
+
assert.calledOnce(meeting.breakouts.cleanUp);
|
|
104
|
+
assert.calledOnce(meeting.simultaneousInterpretation.cleanUp);
|
|
105
|
+
});
|
|
74
106
|
});
|
|
75
107
|
|
|
76
108
|
describe('logging', () => {
|
|
@@ -369,14 +401,19 @@ describe('plugin-meetings', () => {
|
|
|
369
401
|
getWebexObject: sinon.stub().returns(webex),
|
|
370
402
|
};
|
|
371
403
|
|
|
372
|
-
|
|
373
|
-
await MeetingUtil.joinMeeting(meeting, {
|
|
404
|
+
const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
|
|
405
|
+
await MeetingUtil.joinMeeting(meeting, {
|
|
406
|
+
reachability: 'reachability',
|
|
407
|
+
roapMessage: 'roapMessage',
|
|
408
|
+
});
|
|
374
409
|
|
|
375
410
|
assert.calledOnce(meeting.meetingRequest.joinMeeting);
|
|
376
411
|
const parameter = meeting.meetingRequest.joinMeeting.getCall(0).args[0];
|
|
377
412
|
|
|
378
413
|
assert.equal(parameter.inviteeAddress, 'meetingJoinUrl');
|
|
379
414
|
assert.equal(parameter.preferTranscoding, true);
|
|
415
|
+
assert.equal(parameter.reachability, 'reachability');
|
|
416
|
+
assert.equal(parameter.roapMessage, 'roapMessage');
|
|
380
417
|
|
|
381
418
|
assert.calledWith(webex.internal.newMetrics.submitClientEvent, {
|
|
382
419
|
name: 'client.locus.join.request',
|
|
@@ -396,6 +433,7 @@ describe('plugin-meetings', () => {
|
|
|
396
433
|
mediaConnections: 'mediaConnections',
|
|
397
434
|
},
|
|
398
435
|
});
|
|
436
|
+
parseLocusJoinSpy.restore();
|
|
399
437
|
});
|
|
400
438
|
|
|
401
439
|
it('#Should call meetingRequest.joinMeeting with breakoutsSupported=true when passed in as true', async () => {
|
|
@@ -406,7 +444,7 @@ describe('plugin-meetings', () => {
|
|
|
406
444
|
getWebexObject: sinon.stub().returns(webex),
|
|
407
445
|
};
|
|
408
446
|
|
|
409
|
-
|
|
447
|
+
const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
|
|
410
448
|
await MeetingUtil.joinMeeting(meeting, {
|
|
411
449
|
breakoutsSupported: true,
|
|
412
450
|
});
|
|
@@ -415,6 +453,7 @@ describe('plugin-meetings', () => {
|
|
|
415
453
|
const parameter = meeting.meetingRequest.joinMeeting.getCall(0).args[0];
|
|
416
454
|
|
|
417
455
|
assert.equal(parameter.breakoutsSupported, true);
|
|
456
|
+
parseLocusJoinSpy.restore();
|
|
418
457
|
});
|
|
419
458
|
|
|
420
459
|
it('#Should call meetingRequest.joinMeeting with liveAnnotationSupported=true when passed in as true', async () => {
|
|
@@ -425,7 +464,7 @@ describe('plugin-meetings', () => {
|
|
|
425
464
|
getWebexObject: sinon.stub().returns(webex),
|
|
426
465
|
};
|
|
427
466
|
|
|
428
|
-
|
|
467
|
+
const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
|
|
429
468
|
await MeetingUtil.joinMeeting(meeting, {
|
|
430
469
|
liveAnnotationSupported: true,
|
|
431
470
|
});
|
|
@@ -434,6 +473,7 @@ describe('plugin-meetings', () => {
|
|
|
434
473
|
const parameter = meeting.meetingRequest.joinMeeting.getCall(0).args[0];
|
|
435
474
|
|
|
436
475
|
assert.equal(parameter.liveAnnotationSupported, true);
|
|
476
|
+
parseLocusJoinSpy.restore();
|
|
437
477
|
});
|
|
438
478
|
|
|
439
479
|
it('#Should call meetingRequest.joinMeeting with locale=en_UK, deviceCapabilities=["TEST"] when they are passed in as those values', async () => {
|
|
@@ -444,7 +484,7 @@ describe('plugin-meetings', () => {
|
|
|
444
484
|
getWebexObject: sinon.stub().returns(webex),
|
|
445
485
|
};
|
|
446
486
|
|
|
447
|
-
|
|
487
|
+
const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
|
|
448
488
|
await MeetingUtil.joinMeeting(meeting, {
|
|
449
489
|
locale: 'en_UK',
|
|
450
490
|
deviceCapabilities: ['TEST'],
|
|
@@ -455,6 +495,7 @@ describe('plugin-meetings', () => {
|
|
|
455
495
|
|
|
456
496
|
assert.equal(parameter.locale, 'en_UK');
|
|
457
497
|
assert.deepEqual(parameter.deviceCapabilities, ['TEST']);
|
|
498
|
+
parseLocusJoinSpy.restore();
|
|
458
499
|
});
|
|
459
500
|
|
|
460
501
|
it('#Should call meetingRequest.joinMeeting with preferTranscoding=false when multistream is enabled', async () => {
|
|
@@ -468,7 +509,7 @@ describe('plugin-meetings', () => {
|
|
|
468
509
|
getWebexObject: sinon.stub().returns(webex),
|
|
469
510
|
};
|
|
470
511
|
|
|
471
|
-
|
|
512
|
+
const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
|
|
472
513
|
await MeetingUtil.joinMeeting(meeting, {});
|
|
473
514
|
|
|
474
515
|
assert.calledOnce(meeting.meetingRequest.joinMeeting);
|
|
@@ -476,6 +517,7 @@ describe('plugin-meetings', () => {
|
|
|
476
517
|
|
|
477
518
|
assert.equal(parameter.inviteeAddress, 'meetingJoinUrl');
|
|
478
519
|
assert.equal(parameter.preferTranscoding, false);
|
|
520
|
+
parseLocusJoinSpy.restore();
|
|
479
521
|
});
|
|
480
522
|
|
|
481
523
|
it('#Should fallback sipUrl if meetingJoinUrl does not exists', async () => {
|
|
@@ -488,13 +530,14 @@ describe('plugin-meetings', () => {
|
|
|
488
530
|
getWebexObject: sinon.stub().returns(webex),
|
|
489
531
|
};
|
|
490
532
|
|
|
491
|
-
|
|
533
|
+
const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
|
|
492
534
|
await MeetingUtil.joinMeeting(meeting, {});
|
|
493
535
|
|
|
494
536
|
assert.calledOnce(meeting.meetingRequest.joinMeeting);
|
|
495
537
|
const parameter = meeting.meetingRequest.joinMeeting.getCall(0).args[0];
|
|
496
538
|
|
|
497
539
|
assert.equal(parameter.inviteeAddress, 'sipUri');
|
|
540
|
+
parseLocusJoinSpy.restore();
|
|
498
541
|
});
|
|
499
542
|
|
|
500
543
|
it('#Should fallback to meetingNumber if meetingJoinUrl/sipUrl does not exists', async () => {
|
|
@@ -507,7 +550,7 @@ describe('plugin-meetings', () => {
|
|
|
507
550
|
getWebexObject: sinon.stub().returns(webex),
|
|
508
551
|
};
|
|
509
552
|
|
|
510
|
-
|
|
553
|
+
const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
|
|
511
554
|
await MeetingUtil.joinMeeting(meeting, {});
|
|
512
555
|
|
|
513
556
|
assert.calledOnce(meeting.meetingRequest.joinMeeting);
|
|
@@ -515,6 +558,7 @@ describe('plugin-meetings', () => {
|
|
|
515
558
|
|
|
516
559
|
assert.isUndefined(parameter.inviteeAddress);
|
|
517
560
|
assert.equal(parameter.meetingNumber, 'meetingNumber');
|
|
561
|
+
parseLocusJoinSpy.restore();
|
|
518
562
|
});
|
|
519
563
|
|
|
520
564
|
it('should pass in the locusClusterUrl from meetingInfo', async () => {
|
|
@@ -528,19 +572,20 @@ describe('plugin-meetings', () => {
|
|
|
528
572
|
getWebexObject: sinon.stub().returns(webex),
|
|
529
573
|
};
|
|
530
574
|
|
|
531
|
-
|
|
575
|
+
const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
|
|
532
576
|
await MeetingUtil.joinMeeting(meeting, {});
|
|
533
577
|
|
|
534
578
|
assert.calledOnce(meeting.meetingRequest.joinMeeting);
|
|
535
579
|
const parameter = meeting.meetingRequest.joinMeeting.getCall(0).args[0];
|
|
536
580
|
|
|
537
581
|
assert.equal(parameter.locusClusterUrl, 'locusClusterUrl');
|
|
582
|
+
parseLocusJoinSpy.restore();
|
|
538
583
|
});
|
|
539
584
|
});
|
|
540
585
|
|
|
541
586
|
describe('joinMeetingOptions', () => {
|
|
542
587
|
it('sends client events correctly', async () => {
|
|
543
|
-
|
|
588
|
+
const joinMeetingSpy = sinon.stub(MeetingUtil, 'joinMeeting').rejects({});
|
|
544
589
|
MeetingUtil.isPinOrGuest = sinon.stub().returns(true);
|
|
545
590
|
const meeting = {
|
|
546
591
|
id: 'meeting-id',
|
|
@@ -571,6 +616,8 @@ describe('plugin-meetings', () => {
|
|
|
571
616
|
meetingId: meeting.id,
|
|
572
617
|
},
|
|
573
618
|
});
|
|
619
|
+
} finally {
|
|
620
|
+
joinMeetingSpy.restore();
|
|
574
621
|
}
|
|
575
622
|
});
|
|
576
623
|
});
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getSpeakerFromProxyOrStore,
|
|
3
|
+
processNewCaptions,
|
|
4
|
+
} from '@webex/plugin-meetings/src/meeting/voicea-meeting';
|
|
5
|
+
import {assert} from '@webex/test-helper-chai';
|
|
6
|
+
import { expect } from 'chai';
|
|
7
|
+
|
|
8
|
+
describe('plugin-meetings', () => {
|
|
9
|
+
let fakeMeeting, fakeVoiceaPayload;
|
|
10
|
+
const fakeMemberId = "4f35a5ab-f750-3ba7-b309-dea62a512257";
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
const fakeMemberList = {
|
|
13
|
+
[fakeMemberId]: {
|
|
14
|
+
participant: {
|
|
15
|
+
person: {
|
|
16
|
+
id: "8093d335-9b96-4f9d-a6b2-7293423be88a",
|
|
17
|
+
name: "John Doe",
|
|
18
|
+
isExternal: false,
|
|
19
|
+
orgId: "1eb65fdf-9643-417f-9974-ad72cae0e10f",
|
|
20
|
+
incomingCallProtocols: []
|
|
21
|
+
},
|
|
22
|
+
status: {
|
|
23
|
+
audioStatus: "SENDRECV",
|
|
24
|
+
videoStatus: "INACTIVE",
|
|
25
|
+
videoSlidesStatus: "RECVONLY",
|
|
26
|
+
audioSlidesStatus: "INACTIVE",
|
|
27
|
+
csis: [
|
|
28
|
+
3060099329,
|
|
29
|
+
3060099328,
|
|
30
|
+
1234867712,
|
|
31
|
+
1234867713
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
id: fakeMemberId
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
const fakeCaptions = {
|
|
40
|
+
captions: [
|
|
41
|
+
{
|
|
42
|
+
id: "6bece1b9-4e50-fafe-fb63-d27d5fb27280",
|
|
43
|
+
isFinal: true,
|
|
44
|
+
text: "Oh it's not update.",
|
|
45
|
+
currentSpokenLanguage: "en",
|
|
46
|
+
timestamp: "1:34",
|
|
47
|
+
speaker: {
|
|
48
|
+
speakerId: "8093d335-9b96-4f9d-a6b2-7293423be88a",
|
|
49
|
+
name: "John Doe"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
id: "c34400a9-cb2b-20c3-d20c-bd7981cc62a9",
|
|
54
|
+
isFinal: true,
|
|
55
|
+
text: "Nice.",
|
|
56
|
+
currentSpokenLanguage: "en",
|
|
57
|
+
timestamp: "1:60",
|
|
58
|
+
speaker: {
|
|
59
|
+
speakerId: "8093d335-9b96-4f9d-a6b2-7293423be88a",
|
|
60
|
+
name: "John Doe"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
id: "311cc182-e657-c077-c078-795f866c4e9b_8093d335-9b96-4f9d-a6b2-7293423be88a",
|
|
65
|
+
isFinal: false,
|
|
66
|
+
text: " Don't bother me talking I'm just going to get the transcript data that is interim and I",
|
|
67
|
+
currentCaptionLanguage: "en",
|
|
68
|
+
speaker: {
|
|
69
|
+
speakerId: "8093d335-9b96-4f9d-a6b2-7293423be88a",
|
|
70
|
+
name: "John Doe"
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
interimCaptions: {
|
|
75
|
+
"6bece1b9-4e50-fafe-fb63-d27d5fb27280": [],
|
|
76
|
+
"c34400a9-cb2b-20c3-d20c-bd7981cc62a9": [],
|
|
77
|
+
"311cc182-e657-c077-c078-795f866c4e9b": [
|
|
78
|
+
"311cc182-e657-c077-c078-795f866c4e9b_8093d335-9b96-4f9d-a6b2-7293423be88a"
|
|
79
|
+
]
|
|
80
|
+
},
|
|
81
|
+
speakerProxy: {},
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
fakeMeeting = {
|
|
85
|
+
members: {
|
|
86
|
+
membersCollection: {
|
|
87
|
+
members: fakeMemberList
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
transcription: fakeCaptions
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
fakeVoiceaPayload = {
|
|
94
|
+
isFinal: true,
|
|
95
|
+
transcriptId: "311cc182-e657-c077-c078-795f866c4e9b",
|
|
96
|
+
transcripts: [
|
|
97
|
+
{
|
|
98
|
+
text: "Don't bother me talking I'm just going to get the transcript data that is interim and I needed if I keep talking, I get the interim data",
|
|
99
|
+
csis: [
|
|
100
|
+
1234867712
|
|
101
|
+
],
|
|
102
|
+
transcript_language_code: "en"
|
|
103
|
+
}
|
|
104
|
+
],
|
|
105
|
+
transcript: {
|
|
106
|
+
text: "Don't bother me talking I'm just going to get the transcript data that is interim and I needed if I keep talking, I get the interim data",
|
|
107
|
+
csis: [
|
|
108
|
+
1234867712
|
|
109
|
+
],
|
|
110
|
+
transcript_language_code: "en"
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
describe('voicea-meeting', () => {
|
|
116
|
+
it('should export the correct members', () => {
|
|
117
|
+
assert.isFunction(getSpeakerFromProxyOrStore);
|
|
118
|
+
assert.isFunction(processNewCaptions);
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
describe('getSpeakerFromProxyOrStore', () => {
|
|
122
|
+
it('should return a cached speaker if csisKey is in speakerProxy', () => {
|
|
123
|
+
// Add a speaker to the speakerProxy
|
|
124
|
+
const csisKey = 1234867712;
|
|
125
|
+
const cachedSpeaker = {
|
|
126
|
+
speakerId: 'cached-speaker-id',
|
|
127
|
+
name: 'Cached Speaker'
|
|
128
|
+
};
|
|
129
|
+
fakeMeeting.transcription.speakerProxy[csisKey] = cachedSpeaker;
|
|
130
|
+
|
|
131
|
+
const { speaker, needsCaching } = getSpeakerFromProxyOrStore({
|
|
132
|
+
csisKey,
|
|
133
|
+
meetingMembers: fakeMeeting.members.membersCollection.members,
|
|
134
|
+
transcriptData: fakeMeeting.transcription
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
expect(speaker).to.deep.equal(cachedSpeaker);
|
|
138
|
+
expect(needsCaching).to.be.false;
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
it('should find and cache a speaker if not already in speakerProxy', () => {
|
|
142
|
+
const csisKey = 1234867712; // This csis exists in the fakeMemberList
|
|
143
|
+
|
|
144
|
+
// Ensure speakerProxy is empty
|
|
145
|
+
fakeMeeting.transcription.speakerProxy = {};
|
|
146
|
+
|
|
147
|
+
const { speaker, needsCaching } = getSpeakerFromProxyOrStore({
|
|
148
|
+
csisKey,
|
|
149
|
+
meetingMembers: fakeMeeting.members.membersCollection.members,
|
|
150
|
+
transcriptData: fakeMeeting.transcription
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
expect(speaker.speakerId).to.equal(fakeMeeting.members.membersCollection.members[fakeMemberId].participant.person.id);
|
|
154
|
+
expect(speaker.name).to.equal(fakeMeeting.members.membersCollection.members[fakeMemberId].participant.person.name);
|
|
155
|
+
expect(needsCaching).to.be.true;
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
describe('processNewCaptions', () => {
|
|
160
|
+
it('should process new final captions correctly', () => {
|
|
161
|
+
let transcriptData = fakeMeeting.transcription;
|
|
162
|
+
let transcriptId = fakeVoiceaPayload.transcriptId;
|
|
163
|
+
delete fakeVoiceaPayload.transcripts;
|
|
164
|
+
|
|
165
|
+
// Assuming that processNewCaptions is a pure function that doesn't mutate the input but returns a new state
|
|
166
|
+
processNewCaptions({
|
|
167
|
+
data: fakeVoiceaPayload,
|
|
168
|
+
meeting: fakeMeeting
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
// Check if speaker details are cached if needed
|
|
172
|
+
const csisKey = fakeVoiceaPayload.transcript.csis[0];
|
|
173
|
+
const speaker = transcriptData.speakerProxy[csisKey];
|
|
174
|
+
expect(speaker).to.exist;
|
|
175
|
+
|
|
176
|
+
// Check if interim captions are removed
|
|
177
|
+
expect(transcriptData.interimCaptions[transcriptId]).to.deep.equal([]);
|
|
178
|
+
|
|
179
|
+
//check if the interim caption is removed
|
|
180
|
+
const oldInterimCaption = transcriptData.captions.find(caption => caption.id === `${transcriptId}_${speaker.speakerId}`);
|
|
181
|
+
expect(oldInterimCaption).to.not.exist;
|
|
182
|
+
|
|
183
|
+
// Check the final caption data
|
|
184
|
+
const newCaption = transcriptData.captions.find(caption => caption.id === transcriptId);
|
|
185
|
+
expect(newCaption).to.exist;
|
|
186
|
+
expect(newCaption).to.include({
|
|
187
|
+
id: transcriptId,
|
|
188
|
+
isFinal: fakeVoiceaPayload.isFinal,
|
|
189
|
+
text: fakeVoiceaPayload.transcript.text,
|
|
190
|
+
currentSpokenLanguage: fakeVoiceaPayload.transcript.transcript_language_code,
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
// Check the speaker data in the new caption
|
|
194
|
+
expect(newCaption.speaker).to.deep.equal(speaker);
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
it('should process new interim captions correctly', () => {
|
|
198
|
+
let transcriptData = fakeMeeting.transcription;
|
|
199
|
+
let transcriptId = fakeVoiceaPayload.transcriptId;
|
|
200
|
+
delete fakeVoiceaPayload.transcript;
|
|
201
|
+
|
|
202
|
+
transcriptData.captions.splice(transcriptData.length - 1, 1);
|
|
203
|
+
fakeVoiceaPayload.isFinal = false;
|
|
204
|
+
|
|
205
|
+
processNewCaptions({
|
|
206
|
+
data: fakeVoiceaPayload,
|
|
207
|
+
meeting: fakeMeeting
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
// Check if speaker details are cached if needed
|
|
211
|
+
const csisKey = fakeVoiceaPayload.transcripts[0].csis[0];
|
|
212
|
+
const speaker = transcriptData.speakerProxy[csisKey];
|
|
213
|
+
expect(speaker).to.exist;
|
|
214
|
+
|
|
215
|
+
// Check the final caption data
|
|
216
|
+
const newCaption = transcriptData.captions.find(caption => caption.id === `${transcriptId}_${speaker.speakerId}`);
|
|
217
|
+
expect(newCaption).to.exist;
|
|
218
|
+
expect(newCaption).to.include({
|
|
219
|
+
id: `${transcriptId}_${speaker.speakerId}`,
|
|
220
|
+
isFinal: fakeVoiceaPayload.isFinal,
|
|
221
|
+
text: fakeVoiceaPayload.transcripts[0].text,
|
|
222
|
+
currentCaptionLanguage: fakeVoiceaPayload.transcripts[0].transcript_language_code,
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
// Check if interim captions has the right caption id
|
|
226
|
+
expect(transcriptData.interimCaptions[transcriptId]).to.deep.equal([newCaption.id]);
|
|
227
|
+
|
|
228
|
+
// Check the speaker data in the new caption
|
|
229
|
+
expect(newCaption.speaker).to.deep.equal(speaker);
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
it('should process interim captions with an existing one correctly', () => {
|
|
233
|
+
let transcriptData = fakeMeeting.transcription;
|
|
234
|
+
let transcriptId = fakeVoiceaPayload.transcriptId;
|
|
235
|
+
delete fakeVoiceaPayload.transcript;
|
|
236
|
+
fakeVoiceaPayload.isFinal = false;
|
|
237
|
+
|
|
238
|
+
processNewCaptions({
|
|
239
|
+
data: fakeVoiceaPayload,
|
|
240
|
+
meeting: fakeMeeting
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
// Check if speaker details are cached if needed
|
|
244
|
+
const csisKey = fakeVoiceaPayload.transcripts[0].csis[0];
|
|
245
|
+
const speaker = transcriptData.speakerProxy[csisKey];
|
|
246
|
+
expect(speaker).to.exist;
|
|
247
|
+
|
|
248
|
+
// Check the final caption data
|
|
249
|
+
const newCaption = transcriptData.captions.find(caption => caption.id === `${transcriptId}_${speaker.speakerId}`);
|
|
250
|
+
expect(newCaption).to.exist;
|
|
251
|
+
expect(newCaption).to.include({
|
|
252
|
+
id: `${transcriptId}_${speaker.speakerId}`,
|
|
253
|
+
isFinal: fakeVoiceaPayload.isFinal,
|
|
254
|
+
text: fakeVoiceaPayload.transcripts[0].text,
|
|
255
|
+
currentCaptionLanguage: fakeVoiceaPayload.transcripts[0].transcript_language_code,
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
// Check if interim captions has the right caption id
|
|
259
|
+
expect(transcriptData.interimCaptions[transcriptId]).to.deep.equal([newCaption.id]);
|
|
260
|
+
|
|
261
|
+
// Check the speaker data in the new caption
|
|
262
|
+
expect(newCaption.speaker).to.deep.equal(speaker);
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
});
|
|
266
|
+
});
|
|
@@ -795,13 +795,17 @@ describe('plugin-meetings', () => {
|
|
|
795
795
|
it('Make a request to /spaceInstant when conversationUrl', async () => {
|
|
796
796
|
const {invitee} = setup();
|
|
797
797
|
|
|
798
|
-
|
|
798
|
+
webex.request.resolves({
|
|
799
|
+
statusCode: 200,
|
|
800
|
+
body: conversation
|
|
801
|
+
});
|
|
802
|
+
|
|
803
|
+
const result = await meetingInfo.createAdhocSpaceMeeting(conversationUrl,installedOrgID);
|
|
799
804
|
|
|
800
805
|
assert.calledWith(
|
|
801
|
-
webex.
|
|
802
|
-
{
|
|
803
|
-
|
|
804
|
-
);
|
|
806
|
+
webex.request,
|
|
807
|
+
{uri:conversationUrl, qs: {includeParticipants: true}, disableTransform: true}
|
|
808
|
+
)
|
|
805
809
|
|
|
806
810
|
assert.calledWith(webex.request, {
|
|
807
811
|
method: 'POST',
|
|
@@ -812,27 +816,28 @@ describe('plugin-meetings', () => {
|
|
|
812
816
|
keyUrl: conversation.encryptionKeyUrl,
|
|
813
817
|
kroUrl: conversation.kmsResourceObjectUrl,
|
|
814
818
|
invitees: invitee,
|
|
819
|
+
installedOrgID: installedOrgID
|
|
815
820
|
},
|
|
816
821
|
});
|
|
817
|
-
assert(Metrics.sendBehavioralMetric
|
|
822
|
+
assert.calledOnce(Metrics.sendBehavioralMetric);
|
|
818
823
|
assert.calledWith(Metrics.sendBehavioralMetric, BEHAVIORAL_METRICS.ADHOC_MEETING_SUCCESS);
|
|
819
824
|
assert.deepEqual(result, {
|
|
820
|
-
body:
|
|
825
|
+
body: conversation,
|
|
821
826
|
statusCode: 200
|
|
822
827
|
});
|
|
823
828
|
});
|
|
824
|
-
|
|
825
829
|
it('Make a request to /spaceInstant when conversationUrl with installed org ID', async () => {
|
|
826
830
|
const {invitee} = setup();
|
|
827
|
-
|
|
831
|
+
webex.request = sinon.stub().resolves({
|
|
832
|
+
body: conversation,
|
|
833
|
+
});
|
|
828
834
|
await meetingInfo.createAdhocSpaceMeeting(conversationUrl, installedOrgID);
|
|
829
835
|
|
|
830
|
-
assert.calledWith(
|
|
831
|
-
|
|
832
|
-
{
|
|
833
|
-
|
|
834
|
-
);
|
|
835
|
-
|
|
836
|
+
assert.calledWith(webex.request, {
|
|
837
|
+
uri: conversationUrl,
|
|
838
|
+
qs: {includeParticipants: true},
|
|
839
|
+
disableTransform: true,
|
|
840
|
+
});
|
|
836
841
|
assert.calledWith(webex.request, {
|
|
837
842
|
method: 'POST',
|
|
838
843
|
uri: 'https://go.webex.com/wbxappapi/v2/meetings/spaceInstant',
|
|
@@ -252,6 +252,12 @@ describe('plugin-meetings', () => {
|
|
|
252
252
|
it('SIP meeting address from excepted domain', () => {
|
|
253
253
|
assert.equal(MeetingInfoUtil.getWebexSite('10019857020@meet.webex.com'), null);
|
|
254
254
|
});
|
|
255
|
+
it('SIP meeting address from excepted domain for IC', () => {
|
|
256
|
+
assert.equal(MeetingInfoUtil.getWebexSite('10019857020@meet-intb.ciscospark.com'), null);
|
|
257
|
+
});
|
|
258
|
+
it('SIP meeting address from webex domain', () => {
|
|
259
|
+
assert.equal(MeetingInfoUtil.getWebexSite('10019857020@webex.com'), null);
|
|
260
|
+
});
|
|
255
261
|
it('invalid domain', () => {
|
|
256
262
|
assert.equal(MeetingInfoUtil.getWebexSite('invaliddomain'), null);
|
|
257
263
|
});
|