@webex/plugin-meetings 3.0.0-beta.36 → 3.0.0-beta.360
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 +226 -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 +117 -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 +366 -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 +383 -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 +57 -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 +61 -101
- 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 +1 -204
- 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 +3938 -2803
- 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 +166 -152
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.js +601 -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 +478 -118
- 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 +72 -6
- 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 +16 -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 +228 -58
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +29 -16
- 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 +44 -18
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +60 -3
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +209 -59
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +233 -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 +269 -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 +217 -170
- 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 +95 -38
- 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 +142 -0
- package/dist/rtcMetrics/index.js.map +1 -0
- package/dist/statsAnalyzer/index.js +182 -215
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +35 -28
- 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 +191 -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 -4
- 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 +0 -128
- package/dist/types/meeting/in-meeting-actions.d.ts +86 -2
- package/dist/types/meeting/index.d.ts +557 -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 +62 -43
- package/dist/types/meeting/util.d.ts +101 -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 +112 -20
- 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 +15 -0
- package/dist/types/metrics/index.d.ts +4 -111
- package/dist/types/multistream/mediaRequestManager.d.ts +72 -5
- package/dist/types/multistream/receiveSlot.d.ts +13 -11
- package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
- package/dist/types/multistream/remoteMedia.d.ts +8 -29
- package/dist/types/multistream/remoteMediaGroup.d.ts +0 -9
- package/dist/types/multistream/remoteMediaManager.d.ts +46 -2
- package/dist/types/multistream/sendSlotManager.d.ts +61 -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 +21 -3
- package/dist/types/rtcMetrics/constants.d.ts +4 -0
- package/dist/types/rtcMetrics/index.d.ts +54 -0
- package/dist/types/statsAnalyzer/index.d.ts +29 -11
- 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 +214 -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 +332 -0
- package/src/interpretation/siLanguage.ts +18 -0
- package/src/locus-info/controlsUtils.ts +108 -0
- package/src/locus-info/index.ts +414 -59
- package/src/locus-info/infoUtils.ts +10 -2
- package/src/locus-info/mediaSharesUtils.ts +64 -0
- package/src/locus-info/parser.ts +258 -47
- package/src/locus-info/selfUtils.ts +81 -5
- package/src/media/index.ts +97 -107
- package/src/media/properties.ts +88 -117
- package/src/mediaQualityMetrics/config.ts +0 -135
- package/src/meeting/in-meeting-actions.ts +171 -3
- package/src/meeting/index.ts +3253 -2408
- package/src/meeting/locusMediaRequest.ts +313 -0
- package/src/meeting/muteState.ts +223 -136
- package/src/meeting/request.ts +142 -120
- package/src/meeting/util.ts +588 -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 +497 -126
- package/src/meetings/meetings.types.ts +12 -0
- package/src/meetings/request.ts +2 -0
- package/src/meetings/util.ts +80 -11
- 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 +15 -0
- package/src/metrics/index.ts +1 -469
- package/src/multistream/mediaRequestManager.ts +277 -82
- package/src/multistream/receiveSlot.ts +31 -17
- package/src/multistream/receiveSlotManager.ts +34 -24
- package/src/multistream/remoteMedia.ts +27 -2
- package/src/multistream/remoteMediaGroup.ts +59 -0
- package/src/multistream/remoteMediaManager.ts +148 -30
- package/src/multistream/sendSlotManager.ts +170 -0
- package/src/reachability/clusterReachability.ts +320 -0
- package/src/reachability/index.ts +229 -340
- package/src/reachability/request.ts +8 -4
- package/src/reachability/util.ts +24 -0
- package/src/reconnection-manager/index.ts +128 -106
- 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 +48 -26
- package/src/rtcMetrics/constants.ts +3 -0
- package/src/rtcMetrics/index.ts +124 -0
- package/src/statsAnalyzer/index.ts +220 -291
- package/src/statsAnalyzer/mqaUtil.ts +43 -44
- 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 +589 -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 +1352 -33
- 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 +32 -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 +118 -37
- 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 +6686 -2212
- 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 +459 -52
- package/test/unit/spec/meeting/utils.js +680 -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 +1393 -212
- package/test/unit/spec/meetings/utils.js +202 -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 +776 -162
- package/test/unit/spec/multistream/receiveSlot.ts +28 -20
- package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
- package/test/unit/spec/multistream/remoteMedia.ts +30 -0
- package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
- package/test/unit/spec/multistream/remoteMediaManager.ts +326 -0
- package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
- package/test/unit/spec/reachability/clusterReachability.ts +279 -0
- package/test/unit/spec/reachability/index.ts +477 -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 +118 -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 +76 -34
- package/test/unit/spec/rtcMetrics/index.ts +93 -0
- package/test/unit/spec/stats-analyzer/index.js +621 -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/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 -16
- 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,35 @@ 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
|
+
if (locale) {
|
|
189
|
+
body.locale = locale;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// add deviceCapabilities prop
|
|
193
|
+
if (deviceCapabilities.length) {
|
|
194
|
+
body.deviceCapabilities = deviceCapabilities;
|
|
195
|
+
}
|
|
159
196
|
// @ts-ignore
|
|
160
|
-
if (this.webex.meetings.
|
|
197
|
+
if (this.webex.meetings.geoHintInfo) {
|
|
161
198
|
// @ts-ignore
|
|
162
|
-
body.device.countryCode = this.webex.meetings.
|
|
199
|
+
body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;
|
|
163
200
|
// @ts-ignore
|
|
164
|
-
body.device.regionCode = this.webex.meetings.
|
|
201
|
+
body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;
|
|
202
|
+
body.device.localIp =
|
|
203
|
+
// @ts-ignore
|
|
204
|
+
CallDiagnosticUtils.anonymizeIPAddress(this.webex.meetings.geoHintInfo.clientAddress) ||
|
|
205
|
+
undefined;
|
|
165
206
|
}
|
|
166
207
|
|
|
167
208
|
if (moderator !== undefined) {
|
|
@@ -180,10 +221,18 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
180
221
|
url = `${locusUrl}/${PARTICIPANT}`;
|
|
181
222
|
} else if (inviteeAddress || meetingNumber) {
|
|
182
223
|
try {
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
224
|
+
let clusterUrl;
|
|
225
|
+
|
|
226
|
+
if (locusClusterUrl) {
|
|
227
|
+
clusterUrl = `https://${locusClusterUrl}/locus/api/v1`;
|
|
228
|
+
} else {
|
|
229
|
+
// @ts-ignore
|
|
230
|
+
await this.webex.internal.services.waitForCatalog('postauth');
|
|
231
|
+
// @ts-ignore
|
|
232
|
+
clusterUrl = this.webex.internal.services.get('locus');
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
url = `${clusterUrl}/${LOCI}/${CALL}`;
|
|
187
236
|
body.invitee = {
|
|
188
237
|
address: inviteeAddress || `wbxmn:${meetingNumber}`,
|
|
189
238
|
};
|
|
@@ -285,7 +334,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
285
334
|
};
|
|
286
335
|
|
|
287
336
|
// @ts-ignore
|
|
288
|
-
return this.
|
|
337
|
+
return this.locusDeltaRequest({
|
|
289
338
|
method: HTTP_VERBS.POST,
|
|
290
339
|
uri,
|
|
291
340
|
body,
|
|
@@ -340,7 +389,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
340
389
|
};
|
|
341
390
|
|
|
342
391
|
// @ts-ignore
|
|
343
|
-
return this.
|
|
392
|
+
return this.locusDeltaRequest({
|
|
344
393
|
method: HTTP_VERBS.POST,
|
|
345
394
|
uri,
|
|
346
395
|
body,
|
|
@@ -354,65 +403,25 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
354
403
|
}
|
|
355
404
|
|
|
356
405
|
/**
|
|
357
|
-
*
|
|
406
|
+
* Sends a requests to get the latest locus DTO, it might be a full Locus or a delta, depending on the url provided
|
|
358
407
|
* @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
|
|
392
|
-
* @param {Object} options
|
|
393
|
-
* @param {boolean} options.desync flag to get partial or whole locus object
|
|
394
408
|
* @param {String} options.locusUrl sync url to get ht elatest locus delta
|
|
395
409
|
* @returns {Promise}
|
|
396
410
|
*/
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
const {desync} = options;
|
|
400
|
-
|
|
401
|
-
if (locusUrl) {
|
|
402
|
-
if (desync) {
|
|
403
|
-
locusUrl += `?${LOCUS.SYNCDEBUG}=${desync}`;
|
|
404
|
-
}
|
|
411
|
+
getLocusDTO(options: {url: string}) {
|
|
412
|
+
const {url} = options;
|
|
405
413
|
|
|
414
|
+
if (url) {
|
|
406
415
|
// @ts-ignore
|
|
407
416
|
return this.request({
|
|
408
417
|
method: HTTP_VERBS.GET,
|
|
409
|
-
uri:
|
|
418
|
+
uri: url,
|
|
410
419
|
}).catch((err) => {
|
|
411
420
|
LoggerProxy.logger.error(
|
|
412
|
-
`Meeting:request#
|
|
421
|
+
`Meeting:request#getLocusDTO --> Error getting latest locus, error ${err}`
|
|
413
422
|
);
|
|
414
423
|
|
|
415
|
-
|
|
424
|
+
throw err;
|
|
416
425
|
});
|
|
417
426
|
}
|
|
418
427
|
|
|
@@ -455,7 +464,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
455
464
|
};
|
|
456
465
|
|
|
457
466
|
// @ts-ignore
|
|
458
|
-
return this.
|
|
467
|
+
return this.locusDeltaRequest({
|
|
459
468
|
method: HTTP_VERBS.PUT,
|
|
460
469
|
uri,
|
|
461
470
|
body,
|
|
@@ -469,13 +478,49 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
469
478
|
}
|
|
470
479
|
|
|
471
480
|
/**
|
|
472
|
-
*
|
|
481
|
+
* Prepares request options to to leave a meeting
|
|
473
482
|
* @param {Object} options
|
|
474
483
|
* @param {Url} options.locusUrl
|
|
475
484
|
* @param {String} options.selfId
|
|
476
485
|
* @param {Url} options.deviceUrl
|
|
477
486
|
* @param {String} options.resourceId,
|
|
478
487
|
* @param {String} options.correlationId
|
|
488
|
+
* @returns {Object} request options
|
|
489
|
+
*/
|
|
490
|
+
prepareLeaveMeetingRequestOptions({
|
|
491
|
+
locusUrl,
|
|
492
|
+
selfId,
|
|
493
|
+
deviceUrl: url,
|
|
494
|
+
resourceId,
|
|
495
|
+
correlationId,
|
|
496
|
+
}: {
|
|
497
|
+
locusUrl: string;
|
|
498
|
+
selfId: string;
|
|
499
|
+
deviceUrl: string;
|
|
500
|
+
resourceId: string;
|
|
501
|
+
correlationId: string;
|
|
502
|
+
}) {
|
|
503
|
+
const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;
|
|
504
|
+
const body = {
|
|
505
|
+
device: {
|
|
506
|
+
// @ts-ignore
|
|
507
|
+
deviceType: this.config.meetings.deviceType,
|
|
508
|
+
url,
|
|
509
|
+
},
|
|
510
|
+
usingResource: resourceId || null,
|
|
511
|
+
correlationId,
|
|
512
|
+
};
|
|
513
|
+
|
|
514
|
+
return {
|
|
515
|
+
method: HTTP_VERBS.PUT,
|
|
516
|
+
uri,
|
|
517
|
+
body,
|
|
518
|
+
};
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
/**
|
|
522
|
+
* Make a network request to leave a meeting
|
|
523
|
+
* @param {Object} options
|
|
479
524
|
* @returns {Promise}
|
|
480
525
|
*/
|
|
481
526
|
leaveMeeting({
|
|
@@ -504,14 +549,22 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
504
549
|
correlationId,
|
|
505
550
|
};
|
|
506
551
|
|
|
507
|
-
|
|
508
|
-
return this.request({
|
|
552
|
+
return this.locusDeltaRequest({
|
|
509
553
|
method: HTTP_VERBS.PUT,
|
|
510
554
|
uri,
|
|
511
555
|
body,
|
|
512
556
|
});
|
|
513
557
|
}
|
|
514
558
|
|
|
559
|
+
/**
|
|
560
|
+
* Builds request options to leave a meeting
|
|
561
|
+
* @param {Object} options
|
|
562
|
+
* @returns {Object} request options
|
|
563
|
+
*/
|
|
564
|
+
buildLeaveMeetingRequestOptions(options: any) {
|
|
565
|
+
return this.buildLocusDeltaRequestOptions(this.prepareLeaveMeetingRequestOptions(options));
|
|
566
|
+
}
|
|
567
|
+
|
|
515
568
|
/**
|
|
516
569
|
* Make a network request to acknowledge a meeting
|
|
517
570
|
* @param {Object} options
|
|
@@ -531,14 +584,19 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
531
584
|
correlationId: options.correlationId,
|
|
532
585
|
};
|
|
533
586
|
|
|
534
|
-
|
|
535
|
-
return this.request({
|
|
587
|
+
return this.locusDeltaRequest({
|
|
536
588
|
method: HTTP_VERBS.PUT,
|
|
537
589
|
uri,
|
|
538
590
|
body,
|
|
539
591
|
});
|
|
540
592
|
}
|
|
541
593
|
|
|
594
|
+
/**
|
|
595
|
+
* Makes a network request to lock the meeting
|
|
596
|
+
* @param {Object} options
|
|
597
|
+
* @param {Boolean} options.lock Whether it is locked or not
|
|
598
|
+
* @returns {Promise}
|
|
599
|
+
*/
|
|
542
600
|
lockMeeting(options) {
|
|
543
601
|
const uri = `${options.locusUrl}/${CONTROLS}`;
|
|
544
602
|
const body = {
|
|
@@ -547,8 +605,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
547
605
|
},
|
|
548
606
|
};
|
|
549
607
|
|
|
550
|
-
|
|
551
|
-
return this.request({
|
|
608
|
+
return this.locusDeltaRequest({
|
|
552
609
|
method: HTTP_VERBS.PATCH,
|
|
553
610
|
uri,
|
|
554
611
|
body,
|
|
@@ -574,54 +631,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
574
631
|
...(options.reason && {reason: options.reason}),
|
|
575
632
|
};
|
|
576
633
|
|
|
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({
|
|
634
|
+
return this.locusDeltaRequest({
|
|
625
635
|
method: HTTP_VERBS.PUT,
|
|
626
636
|
uri,
|
|
627
637
|
body,
|
|
@@ -646,6 +656,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
646
656
|
deviceUrl: string;
|
|
647
657
|
resourceId: string;
|
|
648
658
|
uri: string;
|
|
659
|
+
annotationInfo: AnnotationInfo;
|
|
649
660
|
}
|
|
650
661
|
| any
|
|
651
662
|
) {
|
|
@@ -679,6 +690,9 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
679
690
|
if (options?.resourceToken) {
|
|
680
691
|
body.resourceToken = options?.resourceToken;
|
|
681
692
|
}
|
|
693
|
+
if (options?.annotationInfo) {
|
|
694
|
+
body.annotation = options?.annotationInfo;
|
|
695
|
+
}
|
|
682
696
|
|
|
683
697
|
// @ts-ignore
|
|
684
698
|
return this.request({
|
|
@@ -698,7 +712,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
698
712
|
*/
|
|
699
713
|
sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {
|
|
700
714
|
// @ts-ignore
|
|
701
|
-
return this.
|
|
715
|
+
return this.locusDeltaRequest({
|
|
702
716
|
method: HTTP_VERBS.POST,
|
|
703
717
|
uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,
|
|
704
718
|
body: {
|
|
@@ -779,7 +793,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
779
793
|
: undefined;
|
|
780
794
|
|
|
781
795
|
// @ts-ignore
|
|
782
|
-
return this.
|
|
796
|
+
return this.locusDeltaRequest({
|
|
783
797
|
method: HTTP_VERBS.PUT,
|
|
784
798
|
uri: `${locusUrl}/${CONTROLS}`,
|
|
785
799
|
body: {
|
|
@@ -802,7 +816,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
802
816
|
const uri = `${locusUrl}/${END}`;
|
|
803
817
|
|
|
804
818
|
// @ts-ignore
|
|
805
|
-
return this.
|
|
819
|
+
return this.locusDeltaRequest({
|
|
806
820
|
method: HTTP_VERBS.POST,
|
|
807
821
|
uri,
|
|
808
822
|
});
|
|
@@ -854,7 +868,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
854
868
|
const uri = `${locusUrl}/${CONTROLS}`;
|
|
855
869
|
|
|
856
870
|
// @ts-ignore
|
|
857
|
-
return this.
|
|
871
|
+
return this.locusDeltaRequest({
|
|
858
872
|
method: HTTP_VERBS.PUT,
|
|
859
873
|
uri,
|
|
860
874
|
body: {
|
|
@@ -865,4 +879,12 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
865
879
|
},
|
|
866
880
|
});
|
|
867
881
|
}
|
|
882
|
+
|
|
883
|
+
getLocusStatusByUrl(locusUrl: string) {
|
|
884
|
+
// @ts-ignore
|
|
885
|
+
return this.request({
|
|
886
|
+
method: HTTP_VERBS.GET,
|
|
887
|
+
uri: locusUrl,
|
|
888
|
+
});
|
|
889
|
+
}
|
|
868
890
|
}
|