@webex/plugin-meetings 3.0.0-beta.39 → 3.0.0-beta.391
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/README.md +58 -8
- package/dist/annotation/annotation.types.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.js +49 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.js +342 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +94 -15
- package/dist/breakouts/breakout.js.map +1 -1
- package/dist/breakouts/events.js +45 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +671 -81
- package/dist/breakouts/index.js.map +1 -1
- package/dist/breakouts/utils.js +45 -1
- package/dist/breakouts/utils.js.map +1 -1
- package/dist/common/errors/no-meeting-info.js +51 -0
- package/dist/common/errors/no-meeting-info.js.map +1 -0
- package/dist/common/errors/reclaim-host-role-errors.js +158 -0
- package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
- package/dist/common/errors/webex-errors.js +48 -7
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -1
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +5 -1
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +24 -9
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +5 -10
- package/dist/config.js.map +1 -1
- package/dist/constants.js +242 -33
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +14 -2
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.js +109 -15
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/types.js +7 -0
- package/dist/controls-options-manager/types.js.map +1 -0
- package/dist/controls-options-manager/util.js +309 -18
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/index.js +110 -2
- package/dist/index.js.map +1 -1
- package/dist/interceptors/index.js +15 -0
- package/dist/interceptors/index.js.map +1 -0
- package/dist/interceptors/locusRetry.js +93 -0
- package/dist/interceptors/locusRetry.js.map +1 -0
- package/dist/interpretation/collection.js +23 -0
- package/dist/interpretation/collection.js.map +1 -0
- package/dist/interpretation/index.js +380 -0
- package/dist/interpretation/index.js.map +1 -0
- package/dist/interpretation/siLanguage.js +25 -0
- package/dist/interpretation/siLanguage.js.map +1 -0
- package/dist/locus-info/controlsUtils.js +91 -2
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +386 -62
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +7 -1
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +71 -1
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +249 -72
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +89 -14
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +65 -102
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +73 -124
- package/dist/media/properties.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +135 -330
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +86 -2
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +4075 -2827
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +292 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -0
- package/dist/meeting/muteState.js +224 -136
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +177 -152
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.js +672 -417
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/index.js +73 -7
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +192 -51
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/util.js +1 -1
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +36 -36
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +39 -0
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +484 -119
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.js +7 -0
- package/dist/meetings/meetings.types.js.map +1 -0
- package/dist/meetings/request.js +2 -0
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +73 -7
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +58 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +25 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +132 -25
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +10 -0
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +102 -6
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +106 -38
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +15 -0
- package/dist/members/types.js.map +1 -0
- package/dist/members/util.js +326 -232
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +18 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +1 -446
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +223 -32
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +10 -0
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +39 -36
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +3 -1
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +76 -5
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +366 -104
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +255 -0
- package/dist/multistream/sendSlotManager.js.map +1 -0
- package/dist/reachability/clusterReachability.js +356 -0
- package/dist/reachability/clusterReachability.js.map +1 -0
- package/dist/reachability/index.js +263 -390
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +6 -4
- package/dist/reachability/request.js.map +1 -1
- package/dist/reachability/util.js +29 -0
- package/dist/reachability/util.js.map +1 -0
- package/dist/reconnection-manager/index.js +266 -202
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/index.js +21 -2
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.js +9 -8
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/roap/index.js +51 -28
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +48 -64
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +220 -70
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/rtcMetrics/constants.js +12 -0
- package/dist/rtcMetrics/constants.js.map +1 -0
- package/dist/rtcMetrics/index.js +179 -0
- package/dist/rtcMetrics/index.js.map +1 -0
- package/dist/statsAnalyzer/index.js +357 -295
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +296 -156
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +42 -0
- package/dist/types/annotation/constants.d.ts +31 -0
- package/dist/types/annotation/index.d.ts +117 -0
- package/dist/types/breakouts/events.d.ts +8 -0
- package/dist/types/breakouts/utils.d.ts +14 -0
- package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
- package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
- package/dist/types/common/errors/webex-errors.d.ts +25 -1
- package/dist/types/common/logs/request.d.ts +2 -0
- package/dist/types/common/queue.d.ts +9 -7
- package/dist/types/config.d.ts +2 -7
- package/dist/types/constants.d.ts +203 -31
- package/dist/types/controls-options-manager/enums.d.ts +11 -1
- package/dist/types/controls-options-manager/index.d.ts +17 -1
- package/dist/types/controls-options-manager/types.d.ts +43 -0
- package/dist/types/controls-options-manager/util.d.ts +1 -7
- package/dist/types/index.d.ts +6 -5
- package/dist/types/interceptors/index.d.ts +2 -0
- package/dist/types/interceptors/locusRetry.d.ts +27 -0
- package/dist/types/interpretation/collection.d.ts +5 -0
- package/dist/types/interpretation/index.d.ts +5 -0
- package/dist/types/interpretation/siLanguage.d.ts +5 -0
- package/dist/types/locus-info/index.d.ts +57 -4
- package/dist/types/locus-info/parser.d.ts +66 -6
- package/dist/types/media/index.d.ts +2 -0
- package/dist/types/media/properties.d.ts +34 -49
- package/dist/types/mediaQualityMetrics/config.d.ts +99 -223
- package/dist/types/meeting/in-meeting-actions.d.ts +86 -2
- package/dist/types/meeting/index.d.ts +567 -496
- package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
- package/dist/types/meeting/muteState.d.ts +93 -25
- package/dist/types/meeting/request.d.ts +64 -43
- package/dist/types/meeting/util.d.ts +117 -1
- package/dist/types/meeting-info/index.d.ts +13 -1
- package/dist/types/meeting-info/meeting-info-v2.d.ts +31 -1
- package/dist/types/meetings/collection.d.ts +17 -0
- package/dist/types/meetings/index.d.ts +113 -21
- package/dist/types/meetings/meetings.types.d.ts +4 -0
- package/dist/types/member/index.d.ts +14 -0
- package/dist/types/member/types.d.ts +32 -0
- package/dist/types/members/collection.d.ts +5 -0
- package/dist/types/members/index.d.ts +35 -2
- package/dist/types/members/request.d.ts +73 -9
- package/dist/types/members/types.d.ts +25 -0
- package/dist/types/members/util.d.ts +214 -1
- package/dist/types/metrics/constants.d.ts +17 -0
- package/dist/types/metrics/index.d.ts +4 -111
- package/dist/types/multistream/mediaRequestManager.d.ts +72 -3
- package/dist/types/multistream/receiveSlot.d.ts +7 -3
- package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
- package/dist/types/multistream/remoteMedia.d.ts +3 -31
- package/dist/types/multistream/remoteMediaGroup.d.ts +2 -9
- package/dist/types/multistream/remoteMediaManager.d.ts +62 -2
- package/dist/types/multistream/sendSlotManager.d.ts +70 -0
- package/dist/types/reachability/clusterReachability.d.ts +109 -0
- package/dist/types/reachability/index.d.ts +60 -95
- package/dist/types/reachability/request.d.ts +3 -1
- package/dist/types/reachability/util.d.ts +8 -0
- package/dist/types/reconnection-manager/index.d.ts +19 -0
- package/dist/types/recording-controller/index.d.ts +15 -1
- package/dist/types/recording-controller/util.d.ts +5 -4
- package/dist/types/roap/index.d.ts +2 -1
- package/dist/types/roap/request.d.ts +9 -8
- package/dist/types/roap/turnDiscovery.d.ts +39 -5
- package/dist/types/rtcMetrics/constants.d.ts +4 -0
- package/dist/types/rtcMetrics/index.d.ts +61 -0
- package/dist/types/statsAnalyzer/index.d.ts +34 -12
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +28 -4
- package/dist/types/webinar/collection.d.ts +16 -0
- package/dist/types/webinar/index.d.ts +5 -0
- package/dist/webinar/collection.js +44 -0
- package/dist/webinar/collection.js.map +1 -0
- package/dist/webinar/index.js +69 -0
- package/dist/webinar/index.js.map +1 -0
- package/package.json +22 -19
- package/src/annotation/annotation.types.ts +50 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +328 -0
- package/src/breakouts/README.md +35 -11
- package/src/breakouts/breakout.ts +67 -9
- package/src/breakouts/events.ts +56 -0
- package/src/breakouts/index.ts +558 -59
- package/src/breakouts/utils.ts +42 -0
- package/src/common/errors/no-meeting-info.ts +24 -0
- package/src/common/errors/reclaim-host-role-errors.ts +134 -0
- package/src/common/errors/webex-errors.ts +44 -2
- package/src/common/logs/logger-proxy.ts +1 -1
- package/src/common/logs/request.ts +5 -1
- package/src/common/queue.ts +22 -8
- package/src/config.ts +4 -9
- package/src/constants.ts +229 -21
- package/src/controls-options-manager/enums.ts +12 -0
- package/src/controls-options-manager/index.ts +116 -21
- package/src/controls-options-manager/types.ts +59 -0
- package/src/controls-options-manager/util.ts +294 -14
- package/src/index.ts +44 -0
- package/src/interceptors/index.ts +3 -0
- package/src/interceptors/locusRetry.ts +67 -0
- package/src/interpretation/README.md +60 -0
- package/src/interpretation/collection.ts +19 -0
- package/src/interpretation/index.ts +349 -0
- package/src/interpretation/siLanguage.ts +18 -0
- package/src/locus-info/controlsUtils.ts +108 -0
- package/src/locus-info/index.ts +417 -59
- package/src/locus-info/infoUtils.ts +10 -2
- package/src/locus-info/mediaSharesUtils.ts +80 -0
- package/src/locus-info/parser.ts +258 -47
- package/src/locus-info/selfUtils.ts +81 -5
- package/src/media/index.ts +100 -108
- package/src/media/properties.ts +88 -117
- package/src/mediaQualityMetrics/config.ts +103 -238
- package/src/meeting/in-meeting-actions.ts +171 -3
- package/src/meeting/index.ts +3411 -2435
- package/src/meeting/locusMediaRequest.ts +313 -0
- package/src/meeting/muteState.ts +223 -136
- package/src/meeting/request.ts +155 -120
- package/src/meeting/util.ts +685 -395
- package/src/meeting-info/index.ts +81 -8
- package/src/meeting-info/meeting-info-v2.ts +170 -14
- package/src/meeting-info/util.ts +1 -1
- package/src/meeting-info/utilv2.ts +23 -23
- package/src/meetings/collection.ts +33 -0
- package/src/meetings/index.ts +507 -127
- package/src/meetings/meetings.types.ts +12 -0
- package/src/meetings/request.ts +2 -0
- package/src/meetings/util.ts +81 -12
- package/src/member/index.ts +58 -0
- package/src/member/types.ts +38 -0
- package/src/member/util.ts +141 -25
- package/src/members/collection.ts +8 -0
- package/src/members/index.ts +134 -8
- package/src/members/request.ts +97 -17
- package/src/members/types.ts +29 -0
- package/src/members/util.ts +333 -240
- package/src/metrics/constants.ts +17 -0
- package/src/metrics/index.ts +1 -469
- package/src/multistream/mediaRequestManager.ts +271 -56
- package/src/multistream/receiveSlot.ts +11 -4
- package/src/multistream/receiveSlotManager.ts +34 -24
- package/src/multistream/remoteMedia.ts +5 -3
- package/src/multistream/remoteMediaGroup.ts +78 -0
- package/src/multistream/remoteMediaManager.ts +248 -44
- package/src/multistream/sendSlotManager.ts +199 -0
- package/src/reachability/clusterReachability.ts +320 -0
- package/src/reachability/index.ts +229 -346
- package/src/reachability/request.ts +8 -4
- package/src/reachability/util.ts +24 -0
- package/src/reconnection-manager/index.ts +128 -97
- package/src/recording-controller/index.ts +20 -3
- package/src/recording-controller/util.ts +26 -9
- package/src/roap/index.ts +52 -23
- package/src/roap/request.ts +48 -67
- package/src/roap/turnDiscovery.ts +147 -49
- package/src/rtcMetrics/constants.ts +3 -0
- package/src/rtcMetrics/index.ts +166 -0
- package/src/statsAnalyzer/index.ts +457 -416
- package/src/statsAnalyzer/mqaUtil.ts +317 -170
- package/src/webinar/collection.ts +31 -0
- package/src/webinar/index.ts +62 -0
- package/test/integration/spec/converged-space-meetings.js +60 -3
- package/test/integration/spec/journey.js +320 -261
- package/test/integration/spec/space-meeting.js +76 -3
- package/test/unit/spec/annotation/index.ts +418 -0
- package/test/unit/spec/breakouts/breakout.ts +118 -28
- package/test/unit/spec/breakouts/events.ts +89 -0
- package/test/unit/spec/breakouts/index.ts +1349 -114
- package/test/unit/spec/breakouts/utils.js +52 -1
- package/test/unit/spec/common/queue.js +31 -2
- package/test/unit/spec/controls-options-manager/index.js +163 -0
- package/test/unit/spec/controls-options-manager/util.js +576 -60
- package/test/unit/spec/fixture/locus.js +1 -0
- package/test/unit/spec/interceptors/locusRetry.ts +131 -0
- package/test/unit/spec/interpretation/collection.ts +15 -0
- package/test/unit/spec/interpretation/index.ts +625 -0
- package/test/unit/spec/interpretation/siLanguage.ts +28 -0
- package/test/unit/spec/locus-info/controlsUtils.js +316 -43
- package/test/unit/spec/locus-info/index.js +1363 -37
- package/test/unit/spec/locus-info/infoUtils.js +37 -15
- package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +41 -0
- package/test/unit/spec/locus-info/parser.js +116 -35
- package/test/unit/spec/locus-info/selfConstant.js +27 -4
- package/test/unit/spec/locus-info/selfUtils.js +208 -17
- package/test/unit/spec/media/index.ts +173 -81
- package/test/unit/spec/media/properties.ts +2 -2
- package/test/unit/spec/meeting/in-meeting-actions.ts +85 -3
- package/test/unit/spec/meeting/index.js +6821 -2172
- package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
- package/test/unit/spec/meeting/muteState.js +402 -212
- package/test/unit/spec/meeting/request.js +473 -54
- package/test/unit/spec/meeting/utils.js +773 -67
- package/test/unit/spec/meeting-info/index.js +300 -0
- package/test/unit/spec/meeting-info/meetinginfov2.js +526 -5
- package/test/unit/spec/meeting-info/utilv2.js +21 -0
- package/test/unit/spec/meetings/collection.js +26 -0
- package/test/unit/spec/meetings/index.js +1415 -213
- package/test/unit/spec/meetings/utils.js +229 -2
- package/test/unit/spec/member/index.js +61 -6
- package/test/unit/spec/member/util.js +510 -34
- package/test/unit/spec/members/index.js +432 -1
- package/test/unit/spec/members/request.js +206 -27
- package/test/unit/spec/members/utils.js +210 -0
- package/test/unit/spec/metrics/index.js +1 -50
- package/test/unit/spec/multistream/mediaRequestManager.ts +781 -114
- package/test/unit/spec/multistream/receiveSlot.ts +9 -1
- package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
- package/test/unit/spec/multistream/remoteMedia.ts +2 -0
- package/test/unit/spec/multistream/remoteMediaGroup.ts +345 -0
- package/test/unit/spec/multistream/remoteMediaManager.ts +525 -0
- package/test/unit/spec/multistream/sendSlotManager.ts +274 -0
- package/test/unit/spec/reachability/clusterReachability.ts +279 -0
- package/test/unit/spec/reachability/index.ts +551 -14
- package/test/unit/spec/reachability/request.js +3 -1
- package/test/unit/spec/reachability/util.ts +40 -0
- package/test/unit/spec/reconnection-manager/index.js +171 -11
- package/test/unit/spec/recording-controller/index.js +294 -218
- package/test/unit/spec/recording-controller/util.js +223 -96
- package/test/unit/spec/roap/index.ts +180 -83
- package/test/unit/spec/roap/request.ts +100 -62
- package/test/unit/spec/roap/turnDiscovery.ts +388 -96
- package/test/unit/spec/rtcMetrics/index.ts +122 -0
- package/test/unit/spec/stats-analyzer/index.js +1252 -12
- package/test/unit/spec/webinar/collection.ts +13 -0
- package/test/unit/spec/webinar/index.ts +60 -0
- package/test/utils/integrationTestUtils.js +46 -0
- package/test/utils/testUtils.js +0 -57
- package/test/utils/webex-test-users.js +12 -4
- package/dist/metrics/config.js +0 -289
- package/dist/metrics/config.js.map +0 -1
- package/dist/types/metrics/config.d.ts +0 -169
- package/src/index.js +0 -18
- package/src/metrics/config.ts +0 -485
package/src/meeting/request.ts
CHANGED
|
@@ -4,6 +4,7 @@ import {debounce} from 'lodash';
|
|
|
4
4
|
import {StatelessWebexPlugin} from '@webex/webex-core';
|
|
5
5
|
// @ts-ignore
|
|
6
6
|
import {deviceType} from '@webex/common';
|
|
7
|
+
import {CallDiagnosticUtils} from '@webex/internal-plugin-metrics';
|
|
7
8
|
|
|
8
9
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
9
10
|
import {
|
|
@@ -18,22 +19,27 @@ import {
|
|
|
18
19
|
HTTP_VERBS,
|
|
19
20
|
LEAVE,
|
|
20
21
|
LOCI,
|
|
21
|
-
LOCUS,
|
|
22
|
-
MEDIA,
|
|
23
22
|
PARTICIPANT,
|
|
24
23
|
PROVISIONAL_TYPE_DIAL_IN,
|
|
25
24
|
PROVISIONAL_TYPE_DIAL_OUT,
|
|
26
25
|
REACHABILITY,
|
|
27
26
|
SEND_DTMF_ENDPOINT,
|
|
28
27
|
_SLIDES_,
|
|
28
|
+
ANNOTATION,
|
|
29
|
+
IP_VERSION,
|
|
29
30
|
} from '../constants';
|
|
30
31
|
import {SendReactionOptions, ToggleReactionsOptions} from './request.type';
|
|
32
|
+
import MeetingUtil from './util';
|
|
33
|
+
import {AnnotationInfo} from '../annotation/annotation.types';
|
|
31
34
|
|
|
32
35
|
/**
|
|
33
36
|
* @class MeetingRequest
|
|
34
37
|
*/
|
|
35
38
|
export default class MeetingRequest extends StatelessWebexPlugin {
|
|
36
39
|
changeVideoLayoutDebounced: any;
|
|
40
|
+
meetingRef: WeakRef<any>;
|
|
41
|
+
locusDeltaRequest: (options: object) => Promise<any>;
|
|
42
|
+
buildLocusDeltaRequestOptions: (options: object) => Promise<any>;
|
|
37
43
|
|
|
38
44
|
/**
|
|
39
45
|
* Constructor
|
|
@@ -41,7 +47,13 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
41
47
|
* @param {Object} options
|
|
42
48
|
*/
|
|
43
49
|
constructor(attrs: any, options: any) {
|
|
44
|
-
|
|
50
|
+
const {meeting, ...otherAttrs} = attrs;
|
|
51
|
+
|
|
52
|
+
super(otherAttrs, options);
|
|
53
|
+
|
|
54
|
+
this.locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);
|
|
55
|
+
this.buildLocusDeltaRequestOptions = MeetingUtil.generateBuildLocusDeltaRequestOptions(meeting);
|
|
56
|
+
|
|
45
57
|
this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {
|
|
46
58
|
leading: true,
|
|
47
59
|
trailing: true,
|
|
@@ -88,12 +100,16 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
88
100
|
* @param {boolean} options.moveToResource
|
|
89
101
|
* @param {Object} options.roapMessage
|
|
90
102
|
* @param {boolean} options.breakoutsSupported
|
|
103
|
+
* @param {String} options.locale,
|
|
104
|
+
* @param {Array} options.deviceCapabilities
|
|
105
|
+
* @param {boolean} options.liveAnnotationSupported
|
|
91
106
|
* @returns {Promise}
|
|
92
107
|
*/
|
|
93
108
|
async joinMeeting(options: {
|
|
94
109
|
sipUri: string;
|
|
95
110
|
deviceUrl: string;
|
|
96
111
|
locusUrl: string;
|
|
112
|
+
locusClusterUrl: string;
|
|
97
113
|
resourceId: string;
|
|
98
114
|
correlationId: string;
|
|
99
115
|
ensureConversation: boolean;
|
|
@@ -107,6 +123,10 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
107
123
|
permissionToken: any;
|
|
108
124
|
preferTranscoding: any;
|
|
109
125
|
breakoutsSupported: boolean;
|
|
126
|
+
locale?: string;
|
|
127
|
+
deviceCapabilities?: Array<string>;
|
|
128
|
+
liveAnnotationSupported: boolean;
|
|
129
|
+
ipVersion?: IP_VERSION;
|
|
110
130
|
}) {
|
|
111
131
|
const {
|
|
112
132
|
asResourceOccupant,
|
|
@@ -115,6 +135,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
115
135
|
permissionToken,
|
|
116
136
|
deviceUrl,
|
|
117
137
|
locusUrl,
|
|
138
|
+
locusClusterUrl,
|
|
118
139
|
resourceId,
|
|
119
140
|
correlationId,
|
|
120
141
|
ensureConversation,
|
|
@@ -124,6 +145,10 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
124
145
|
roapMessage,
|
|
125
146
|
preferTranscoding,
|
|
126
147
|
breakoutsSupported,
|
|
148
|
+
locale,
|
|
149
|
+
deviceCapabilities = [],
|
|
150
|
+
liveAnnotationSupported,
|
|
151
|
+
ipVersion,
|
|
127
152
|
} = options;
|
|
128
153
|
|
|
129
154
|
LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);
|
|
@@ -149,19 +174,42 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
149
174
|
clientMediaPreferences: {
|
|
150
175
|
preferTranscoding: preferTranscoding ?? true,
|
|
151
176
|
joinCookie,
|
|
177
|
+
ipver: ipVersion,
|
|
152
178
|
},
|
|
153
179
|
};
|
|
154
180
|
|
|
155
181
|
if (breakoutsSupported) {
|
|
156
|
-
|
|
182
|
+
deviceCapabilities.push(BREAKOUTS.BREAKOUTS_SUPPORTED);
|
|
183
|
+
}
|
|
184
|
+
if (liveAnnotationSupported) {
|
|
185
|
+
deviceCapabilities.push(ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED);
|
|
157
186
|
}
|
|
158
187
|
|
|
188
|
+
// append installationId to device config if it exists
|
|
159
189
|
// @ts-ignore
|
|
160
|
-
if (this.webex.
|
|
190
|
+
if (this.webex.internal.device.config.installationId) {
|
|
161
191
|
// @ts-ignore
|
|
162
|
-
body.device.
|
|
192
|
+
body.device.installationId = this.webex.internal.device.config.installationId;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
if (locale) {
|
|
196
|
+
body.locale = locale;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// add deviceCapabilities prop
|
|
200
|
+
if (deviceCapabilities.length) {
|
|
201
|
+
body.deviceCapabilities = deviceCapabilities;
|
|
202
|
+
}
|
|
203
|
+
// @ts-ignore
|
|
204
|
+
if (this.webex.meetings.geoHintInfo) {
|
|
205
|
+
// @ts-ignore
|
|
206
|
+
body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;
|
|
163
207
|
// @ts-ignore
|
|
164
|
-
body.device.regionCode = this.webex.meetings.
|
|
208
|
+
body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;
|
|
209
|
+
body.device.localIp =
|
|
210
|
+
// @ts-ignore
|
|
211
|
+
CallDiagnosticUtils.anonymizeIPAddress(this.webex.meetings.geoHintInfo.clientAddress) ||
|
|
212
|
+
undefined;
|
|
165
213
|
}
|
|
166
214
|
|
|
167
215
|
if (moderator !== undefined) {
|
|
@@ -180,10 +228,18 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
180
228
|
url = `${locusUrl}/${PARTICIPANT}`;
|
|
181
229
|
} else if (inviteeAddress || meetingNumber) {
|
|
182
230
|
try {
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
231
|
+
let clusterUrl;
|
|
232
|
+
|
|
233
|
+
if (locusClusterUrl) {
|
|
234
|
+
clusterUrl = `https://${locusClusterUrl}/locus/api/v1`;
|
|
235
|
+
} else {
|
|
236
|
+
// @ts-ignore
|
|
237
|
+
await this.webex.internal.services.waitForCatalog('postauth');
|
|
238
|
+
// @ts-ignore
|
|
239
|
+
clusterUrl = this.webex.internal.services.get('locus');
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
url = `${clusterUrl}/${LOCI}/${CALL}`;
|
|
187
243
|
body.invitee = {
|
|
188
244
|
address: inviteeAddress || `wbxmn:${meetingNumber}`,
|
|
189
245
|
};
|
|
@@ -285,7 +341,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
285
341
|
};
|
|
286
342
|
|
|
287
343
|
// @ts-ignore
|
|
288
|
-
return this.
|
|
344
|
+
return this.locusDeltaRequest({
|
|
289
345
|
method: HTTP_VERBS.POST,
|
|
290
346
|
uri,
|
|
291
347
|
body,
|
|
@@ -340,7 +396,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
340
396
|
};
|
|
341
397
|
|
|
342
398
|
// @ts-ignore
|
|
343
|
-
return this.
|
|
399
|
+
return this.locusDeltaRequest({
|
|
344
400
|
method: HTTP_VERBS.POST,
|
|
345
401
|
uri,
|
|
346
402
|
body,
|
|
@@ -354,65 +410,25 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
354
410
|
}
|
|
355
411
|
|
|
356
412
|
/**
|
|
357
|
-
*
|
|
358
|
-
* @param {Object} options
|
|
359
|
-
* @param {boolean} options.desync flag to get partial or whole locus object
|
|
360
|
-
* @param {String} options.syncUrl sync url to get ht elatest locus delta
|
|
361
|
-
* @returns {Promise}
|
|
362
|
-
*/
|
|
363
|
-
syncMeeting(options: {desync: boolean; syncUrl: string}) {
|
|
364
|
-
/* eslint-disable no-else-return */
|
|
365
|
-
const {desync} = options;
|
|
366
|
-
let {syncUrl} = options;
|
|
367
|
-
|
|
368
|
-
/* istanbul ignore else */
|
|
369
|
-
if (desync) {
|
|
370
|
-
// check for existing URL parameters
|
|
371
|
-
syncUrl = syncUrl
|
|
372
|
-
.concat(syncUrl.split('?')[1] ? '&' : '?')
|
|
373
|
-
.concat(`${LOCUS.SYNCDEBUG}=${desync}`);
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
// @ts-ignore
|
|
377
|
-
return this.request({
|
|
378
|
-
method: HTTP_VERBS.GET,
|
|
379
|
-
uri: syncUrl,
|
|
380
|
-
}) // TODO: Handle if delta sync failed . Get the full locus object
|
|
381
|
-
.catch((err) => {
|
|
382
|
-
LoggerProxy.logger.error(
|
|
383
|
-
`Meeting:request#syncMeeting --> Error syncing meeting, error ${err}`
|
|
384
|
-
);
|
|
385
|
-
|
|
386
|
-
return err;
|
|
387
|
-
});
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
/**
|
|
391
|
-
* Request to get the complete locus object
|
|
413
|
+
* Sends a requests to get the latest locus DTO, it might be a full Locus or a delta, depending on the url provided
|
|
392
414
|
* @param {Object} options
|
|
393
|
-
* @param {boolean} options.desync flag to get partial or whole locus object
|
|
394
415
|
* @param {String} options.locusUrl sync url to get ht elatest locus delta
|
|
395
416
|
* @returns {Promise}
|
|
396
417
|
*/
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
const {desync} = options;
|
|
400
|
-
|
|
401
|
-
if (locusUrl) {
|
|
402
|
-
if (desync) {
|
|
403
|
-
locusUrl += `?${LOCUS.SYNCDEBUG}=${desync}`;
|
|
404
|
-
}
|
|
418
|
+
getLocusDTO(options: {url: string}) {
|
|
419
|
+
const {url} = options;
|
|
405
420
|
|
|
421
|
+
if (url) {
|
|
406
422
|
// @ts-ignore
|
|
407
423
|
return this.request({
|
|
408
424
|
method: HTTP_VERBS.GET,
|
|
409
|
-
uri:
|
|
425
|
+
uri: url,
|
|
410
426
|
}).catch((err) => {
|
|
411
427
|
LoggerProxy.logger.error(
|
|
412
|
-
`Meeting:request#
|
|
428
|
+
`Meeting:request#getLocusDTO --> Error getting latest locus, error ${err}`
|
|
413
429
|
);
|
|
414
430
|
|
|
415
|
-
|
|
431
|
+
throw err;
|
|
416
432
|
});
|
|
417
433
|
}
|
|
418
434
|
|
|
@@ -455,7 +471,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
455
471
|
};
|
|
456
472
|
|
|
457
473
|
// @ts-ignore
|
|
458
|
-
return this.
|
|
474
|
+
return this.locusDeltaRequest({
|
|
459
475
|
method: HTTP_VERBS.PUT,
|
|
460
476
|
uri,
|
|
461
477
|
body,
|
|
@@ -469,13 +485,49 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
469
485
|
}
|
|
470
486
|
|
|
471
487
|
/**
|
|
472
|
-
*
|
|
488
|
+
* Prepares request options to to leave a meeting
|
|
473
489
|
* @param {Object} options
|
|
474
490
|
* @param {Url} options.locusUrl
|
|
475
491
|
* @param {String} options.selfId
|
|
476
492
|
* @param {Url} options.deviceUrl
|
|
477
493
|
* @param {String} options.resourceId,
|
|
478
494
|
* @param {String} options.correlationId
|
|
495
|
+
* @returns {Object} request options
|
|
496
|
+
*/
|
|
497
|
+
prepareLeaveMeetingRequestOptions({
|
|
498
|
+
locusUrl,
|
|
499
|
+
selfId,
|
|
500
|
+
deviceUrl: url,
|
|
501
|
+
resourceId,
|
|
502
|
+
correlationId,
|
|
503
|
+
}: {
|
|
504
|
+
locusUrl: string;
|
|
505
|
+
selfId: string;
|
|
506
|
+
deviceUrl: string;
|
|
507
|
+
resourceId: string;
|
|
508
|
+
correlationId: string;
|
|
509
|
+
}) {
|
|
510
|
+
const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;
|
|
511
|
+
const body = {
|
|
512
|
+
device: {
|
|
513
|
+
// @ts-ignore
|
|
514
|
+
deviceType: this.config.meetings.deviceType,
|
|
515
|
+
url,
|
|
516
|
+
},
|
|
517
|
+
usingResource: resourceId || null,
|
|
518
|
+
correlationId,
|
|
519
|
+
};
|
|
520
|
+
|
|
521
|
+
return {
|
|
522
|
+
method: HTTP_VERBS.PUT,
|
|
523
|
+
uri,
|
|
524
|
+
body,
|
|
525
|
+
};
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
/**
|
|
529
|
+
* Make a network request to leave a meeting
|
|
530
|
+
* @param {Object} options
|
|
479
531
|
* @returns {Promise}
|
|
480
532
|
*/
|
|
481
533
|
leaveMeeting({
|
|
@@ -504,14 +556,22 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
504
556
|
correlationId,
|
|
505
557
|
};
|
|
506
558
|
|
|
507
|
-
|
|
508
|
-
return this.request({
|
|
559
|
+
return this.locusDeltaRequest({
|
|
509
560
|
method: HTTP_VERBS.PUT,
|
|
510
561
|
uri,
|
|
511
562
|
body,
|
|
512
563
|
});
|
|
513
564
|
}
|
|
514
565
|
|
|
566
|
+
/**
|
|
567
|
+
* Builds request options to leave a meeting
|
|
568
|
+
* @param {Object} options
|
|
569
|
+
* @returns {Object} request options
|
|
570
|
+
*/
|
|
571
|
+
buildLeaveMeetingRequestOptions(options: any) {
|
|
572
|
+
return this.buildLocusDeltaRequestOptions(this.prepareLeaveMeetingRequestOptions(options));
|
|
573
|
+
}
|
|
574
|
+
|
|
515
575
|
/**
|
|
516
576
|
* Make a network request to acknowledge a meeting
|
|
517
577
|
* @param {Object} options
|
|
@@ -531,14 +591,19 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
531
591
|
correlationId: options.correlationId,
|
|
532
592
|
};
|
|
533
593
|
|
|
534
|
-
|
|
535
|
-
return this.request({
|
|
594
|
+
return this.locusDeltaRequest({
|
|
536
595
|
method: HTTP_VERBS.PUT,
|
|
537
596
|
uri,
|
|
538
597
|
body,
|
|
539
598
|
});
|
|
540
599
|
}
|
|
541
600
|
|
|
601
|
+
/**
|
|
602
|
+
* Makes a network request to lock the meeting
|
|
603
|
+
* @param {Object} options
|
|
604
|
+
* @param {Boolean} options.lock Whether it is locked or not
|
|
605
|
+
* @returns {Promise}
|
|
606
|
+
*/
|
|
542
607
|
lockMeeting(options) {
|
|
543
608
|
const uri = `${options.locusUrl}/${CONTROLS}`;
|
|
544
609
|
const body = {
|
|
@@ -547,8 +612,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
547
612
|
},
|
|
548
613
|
};
|
|
549
614
|
|
|
550
|
-
|
|
551
|
-
return this.request({
|
|
615
|
+
return this.locusDeltaRequest({
|
|
552
616
|
method: HTTP_VERBS.PATCH,
|
|
553
617
|
uri,
|
|
554
618
|
body,
|
|
@@ -574,54 +638,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
574
638
|
...(options.reason && {reason: options.reason}),
|
|
575
639
|
};
|
|
576
640
|
|
|
577
|
-
|
|
578
|
-
return this.request({
|
|
579
|
-
method: HTTP_VERBS.PUT,
|
|
580
|
-
uri,
|
|
581
|
-
body,
|
|
582
|
-
});
|
|
583
|
-
}
|
|
584
|
-
|
|
585
|
-
/**
|
|
586
|
-
* Toggle remote audio and/or video
|
|
587
|
-
* @param {Object} options options for toggling
|
|
588
|
-
* @param {String} options.selfId Locus self id??
|
|
589
|
-
* @param {String} options.locusUrl Locus url
|
|
590
|
-
* @param {String} options.deviceUrl Url of a device
|
|
591
|
-
* @param {String} options.resourceId Populated if you are paired to a device
|
|
592
|
-
* @param {String} options.localMedias local sdps
|
|
593
|
-
* @param {Boolean} options.preferTranscoding false for multistream (Homer), true for transcoded media (Edonus)
|
|
594
|
-
* @returns {Promise}
|
|
595
|
-
*/
|
|
596
|
-
remoteAudioVideoToggle(
|
|
597
|
-
options:
|
|
598
|
-
| {
|
|
599
|
-
selfId: string;
|
|
600
|
-
locusUrl: string;
|
|
601
|
-
deviceUrl: string;
|
|
602
|
-
resourceId: string;
|
|
603
|
-
localMedias: string;
|
|
604
|
-
}
|
|
605
|
-
| any
|
|
606
|
-
) {
|
|
607
|
-
const uri = `${options.locusUrl}/${PARTICIPANT}/${options.selfId}/${MEDIA}`;
|
|
608
|
-
const body = {
|
|
609
|
-
device: {
|
|
610
|
-
// @ts-ignore
|
|
611
|
-
deviceType: this.config.meetings.deviceType,
|
|
612
|
-
url: options.deviceUrl,
|
|
613
|
-
},
|
|
614
|
-
usingResource: options.resourceId || null,
|
|
615
|
-
correlationId: options.correlationId,
|
|
616
|
-
respOnlySdp: true,
|
|
617
|
-
localMedias: options.localMedias,
|
|
618
|
-
clientMediaPreferences: {
|
|
619
|
-
preferTranscoding: options.preferTranscoding ?? true,
|
|
620
|
-
},
|
|
621
|
-
};
|
|
622
|
-
|
|
623
|
-
// @ts-ignore
|
|
624
|
-
return this.request({
|
|
641
|
+
return this.locusDeltaRequest({
|
|
625
642
|
method: HTTP_VERBS.PUT,
|
|
626
643
|
uri,
|
|
627
644
|
body,
|
|
@@ -636,6 +653,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
636
653
|
* @param {String} options.deviceUrl Url of a device
|
|
637
654
|
* @param {String} options.resourceId Populated if you are paired to a device
|
|
638
655
|
* @param {String} options.uri floor grant uri
|
|
656
|
+
* @param {String} options.shareInstanceId id for current share
|
|
639
657
|
* @returns {Promise}
|
|
640
658
|
*/
|
|
641
659
|
changeMeetingFloor(
|
|
@@ -646,6 +664,8 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
646
664
|
deviceUrl: string;
|
|
647
665
|
resourceId: string;
|
|
648
666
|
uri: string;
|
|
667
|
+
annotationInfo: AnnotationInfo;
|
|
668
|
+
shareInstanceId: string;
|
|
649
669
|
}
|
|
650
670
|
| any
|
|
651
671
|
) {
|
|
@@ -676,9 +696,16 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
676
696
|
resourceUrl: options.resourceUrl,
|
|
677
697
|
};
|
|
678
698
|
|
|
699
|
+
if (options?.shareInstanceId) {
|
|
700
|
+
body.floor.shareInstanceId = options.shareInstanceId;
|
|
701
|
+
}
|
|
702
|
+
|
|
679
703
|
if (options?.resourceToken) {
|
|
680
704
|
body.resourceToken = options?.resourceToken;
|
|
681
705
|
}
|
|
706
|
+
if (options?.annotationInfo) {
|
|
707
|
+
body.annotation = options?.annotationInfo;
|
|
708
|
+
}
|
|
682
709
|
|
|
683
710
|
// @ts-ignore
|
|
684
711
|
return this.request({
|
|
@@ -698,7 +725,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
698
725
|
*/
|
|
699
726
|
sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {
|
|
700
727
|
// @ts-ignore
|
|
701
|
-
return this.
|
|
728
|
+
return this.locusDeltaRequest({
|
|
702
729
|
method: HTTP_VERBS.POST,
|
|
703
730
|
uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,
|
|
704
731
|
body: {
|
|
@@ -779,7 +806,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
779
806
|
: undefined;
|
|
780
807
|
|
|
781
808
|
// @ts-ignore
|
|
782
|
-
return this.
|
|
809
|
+
return this.locusDeltaRequest({
|
|
783
810
|
method: HTTP_VERBS.PUT,
|
|
784
811
|
uri: `${locusUrl}/${CONTROLS}`,
|
|
785
812
|
body: {
|
|
@@ -802,7 +829,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
802
829
|
const uri = `${locusUrl}/${END}`;
|
|
803
830
|
|
|
804
831
|
// @ts-ignore
|
|
805
|
-
return this.
|
|
832
|
+
return this.locusDeltaRequest({
|
|
806
833
|
method: HTTP_VERBS.POST,
|
|
807
834
|
uri,
|
|
808
835
|
});
|
|
@@ -854,7 +881,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
854
881
|
const uri = `${locusUrl}/${CONTROLS}`;
|
|
855
882
|
|
|
856
883
|
// @ts-ignore
|
|
857
|
-
return this.
|
|
884
|
+
return this.locusDeltaRequest({
|
|
858
885
|
method: HTTP_VERBS.PUT,
|
|
859
886
|
uri,
|
|
860
887
|
body: {
|
|
@@ -865,4 +892,12 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
865
892
|
},
|
|
866
893
|
});
|
|
867
894
|
}
|
|
895
|
+
|
|
896
|
+
getLocusStatusByUrl(locusUrl: string) {
|
|
897
|
+
// @ts-ignore
|
|
898
|
+
return this.request({
|
|
899
|
+
method: HTTP_VERBS.GET,
|
|
900
|
+
uri: locusUrl,
|
|
901
|
+
});
|
|
902
|
+
}
|
|
868
903
|
}
|