@webex/plugin-meetings 3.0.0-beta.3 → 3.0.0-beta.300
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 +46 -8
- package/UPGRADING.md +9 -9
- package/browsers.js +19 -24
- 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 +216 -0
- package/dist/breakouts/breakout.js.map +1 -0
- package/dist/breakouts/collection.js +23 -0
- package/dist/breakouts/collection.js.map +1 -0
- package/dist/breakouts/edit-lock-error.js +52 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/events.js +45 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +1048 -0
- package/dist/breakouts/index.js.map +1 -0
- package/dist/breakouts/request.js +78 -0
- package/dist/breakouts/request.js.map +1 -0
- package/dist/breakouts/utils.js +67 -0
- package/dist/breakouts/utils.js.map +1 -0
- package/dist/common/browser-detection.js +1 -20
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +5 -20
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +0 -7
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +10 -24
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +11 -24
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +12 -25
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +10 -24
- package/dist/common/errors/media.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/parameter.js +5 -33
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +10 -24
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +9 -23
- package/dist/common/errors/permission.js.map +1 -1
- 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/reconnection-in-progress.js +0 -17
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +10 -24
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +10 -24
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +54 -48
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +5 -25
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +0 -22
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +0 -23
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +0 -12
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +0 -15
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +0 -4
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -8
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +41 -60
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +28 -23
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +9 -15
- package/dist/config.js.map +1 -1
- package/dist/constants.js +315 -68
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +14 -0
- package/dist/controls-options-manager/constants.js.map +1 -0
- package/dist/controls-options-manager/enums.js +27 -0
- package/dist/controls-options-manager/enums.js.map +1 -0
- package/dist/controls-options-manager/index.js +297 -0
- package/dist/controls-options-manager/index.js.map +1 -0
- 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 +319 -0
- package/dist/controls-options-manager/util.js.map +1 -0
- package/dist/index.js +114 -17
- package/dist/index.js.map +1 -1
- 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 +101 -29
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -26
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +0 -15
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +4 -12
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +561 -246
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +10 -38
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +68 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +314 -163
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +110 -92
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +103 -231
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +137 -222
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +2 -9
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +505 -495
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +93 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +4624 -3740
- 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 +249 -184
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +400 -346
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js +7 -0
- package/dist/meeting/request.type.js.map +1 -0
- package/dist/meeting/state.js +21 -31
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +598 -586
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +6 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +87 -39
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +349 -283
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +3 -15
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +98 -183
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +143 -234
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +26 -19
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +813 -596
- 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 +26 -41
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +183 -156
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +135 -85
- 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 +158 -88
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +13 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +194 -204
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +113 -68
- 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 +324 -259
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +14 -7
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +11 -558
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +263 -50
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +58 -65
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +76 -95
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +62 -76
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +66 -43
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +536 -439
- 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/networkQualityMonitor/index.js +40 -59
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +21 -45
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +1 -31
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +0 -13
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js +322 -200
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +20 -26
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/constants.js +13 -0
- package/dist/reactions/constants.js.map +1 -0
- package/dist/reactions/reactions.js +109 -0
- package/dist/reactions/reactions.js.map +1 -0
- package/dist/reactions/reactions.type.js +36 -0
- package/dist/reactions/reactions.type.js.map +1 -0
- package/dist/reconnection-manager/index.js +388 -476
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +17 -0
- package/dist/recording-controller/enums.js.map +1 -0
- package/dist/recording-controller/index.js +362 -0
- package/dist/recording-controller/index.js.map +1 -0
- package/dist/recording-controller/util.js +64 -0
- package/dist/recording-controller/util.js.map +1 -0
- package/dist/roap/index.js +99 -94
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +131 -135
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +151 -101
- 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 +117 -0
- package/dist/rtcMetrics/index.js.map +1 -0
- package/dist/statsAnalyzer/global.js +1 -95
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +416 -497
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +145 -88
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +22 -47
- package/dist/transcription/index.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/breakout.d.ts +8 -0
- package/dist/types/breakouts/collection.d.ts +5 -0
- package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
- package/dist/types/breakouts/events.d.ts +8 -0
- package/dist/types/breakouts/index.d.ts +5 -0
- package/dist/types/breakouts/request.d.ts +22 -0
- package/dist/types/breakouts/utils.d.ts +15 -0
- package/dist/types/common/browser-detection.d.ts +9 -0
- package/dist/types/common/collection.d.ts +48 -0
- package/dist/types/common/config.d.ts +2 -0
- package/dist/types/common/errors/captcha-error.d.ts +15 -0
- package/dist/types/common/errors/intent-to-join.d.ts +16 -0
- package/dist/types/common/errors/join-meeting.d.ts +17 -0
- package/dist/types/common/errors/media.d.ts +15 -0
- package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
- package/dist/types/common/errors/parameter.d.ts +15 -0
- package/dist/types/common/errors/password-error.d.ts +15 -0
- package/dist/types/common/errors/permission.d.ts +14 -0
- package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
- package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
- package/dist/types/common/errors/reconnection.d.ts +15 -0
- package/dist/types/common/errors/stats.d.ts +15 -0
- package/dist/types/common/errors/webex-errors.d.ts +93 -0
- package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
- package/dist/types/common/events/events-scope.d.ts +17 -0
- package/dist/types/common/events/events.d.ts +12 -0
- package/dist/types/common/events/trigger-proxy.d.ts +2 -0
- package/dist/types/common/events/util.d.ts +2 -0
- package/dist/types/common/logs/logger-config.d.ts +2 -0
- package/dist/types/common/logs/logger-proxy.d.ts +2 -0
- package/dist/types/common/logs/request.d.ts +36 -0
- package/dist/types/common/queue.d.ts +34 -0
- package/dist/types/config.d.ts +71 -0
- package/dist/types/constants.d.ts +1066 -0
- package/dist/types/controls-options-manager/constants.d.ts +4 -0
- package/dist/types/controls-options-manager/enums.d.ts +15 -0
- package/dist/types/controls-options-manager/index.d.ts +136 -0
- package/dist/types/controls-options-manager/types.d.ts +43 -0
- package/dist/types/controls-options-manager/util.d.ts +1 -0
- package/dist/types/index.d.ts +7 -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/controlsUtils.d.ts +2 -0
- package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
- package/dist/types/locus-info/fullState.d.ts +2 -0
- package/dist/types/locus-info/hostUtils.d.ts +2 -0
- package/dist/types/locus-info/index.d.ts +322 -0
- package/dist/types/locus-info/infoUtils.d.ts +2 -0
- package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
- package/dist/types/locus-info/parser.d.ts +273 -0
- package/dist/types/locus-info/selfUtils.d.ts +2 -0
- package/dist/types/media/index.d.ts +34 -0
- package/dist/types/media/properties.d.ts +93 -0
- package/dist/types/media/util.d.ts +2 -0
- package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +163 -0
- package/dist/types/meeting/index.d.ts +1676 -0
- package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
- package/dist/types/meeting/muteState.d.ts +184 -0
- package/dist/types/meeting/request.d.ts +290 -0
- package/dist/types/meeting/request.type.d.ts +11 -0
- package/dist/types/meeting/state.d.ts +9 -0
- package/dist/types/meeting/util.d.ts +102 -0
- package/dist/types/meeting-info/collection.d.ts +20 -0
- package/dist/types/meeting-info/index.d.ts +69 -0
- package/dist/types/meeting-info/meeting-info-v2.d.ts +123 -0
- package/dist/types/meeting-info/request.d.ts +22 -0
- package/dist/types/meeting-info/util.d.ts +2 -0
- package/dist/types/meeting-info/utilv2.d.ts +2 -0
- package/dist/types/meetings/collection.d.ts +31 -0
- package/dist/types/meetings/index.d.ts +367 -0
- package/dist/types/meetings/meetings.types.d.ts +4 -0
- package/dist/types/meetings/request.d.ts +27 -0
- package/dist/types/meetings/util.d.ts +18 -0
- package/dist/types/member/index.d.ts +160 -0
- package/dist/types/member/types.d.ts +32 -0
- package/dist/types/member/util.d.ts +2 -0
- package/dist/types/members/collection.d.ts +29 -0
- package/dist/types/members/index.d.ts +353 -0
- package/dist/types/members/request.d.ts +114 -0
- package/dist/types/members/types.d.ts +25 -0
- package/dist/types/members/util.d.ts +215 -0
- package/dist/types/metrics/constants.d.ts +65 -0
- package/dist/types/metrics/index.d.ts +45 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +118 -0
- package/dist/types/multistream/receiveSlot.d.ts +68 -0
- package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
- package/dist/types/multistream/remoteMedia.d.ts +72 -0
- package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
- package/dist/types/multistream/remoteMediaManager.d.ts +285 -0
- package/dist/types/multistream/sendSlotManager.d.ts +61 -0
- package/dist/types/networkQualityMonitor/index.d.ts +70 -0
- package/dist/types/personal-meeting-room/index.d.ts +47 -0
- package/dist/types/personal-meeting-room/request.d.ts +14 -0
- package/dist/types/personal-meeting-room/util.d.ts +2 -0
- package/dist/types/reachability/index.d.ts +194 -0
- package/dist/types/reachability/request.d.ts +39 -0
- package/dist/types/reactions/constants.d.ts +3 -0
- package/dist/types/reactions/reactions.d.ts +4 -0
- package/dist/types/reactions/reactions.type.d.ts +52 -0
- package/dist/types/reconnection-manager/index.d.ts +126 -0
- package/dist/types/recording-controller/enums.d.ts +7 -0
- package/dist/types/recording-controller/index.d.ts +207 -0
- package/dist/types/recording-controller/util.d.ts +14 -0
- package/dist/types/roap/index.d.ts +78 -0
- package/dist/types/roap/request.d.ts +39 -0
- package/dist/types/roap/turnDiscovery.d.ts +92 -0
- package/dist/types/rtcMetrics/constants.d.ts +4 -0
- package/dist/types/rtcMetrics/index.d.ts +47 -0
- package/dist/types/statsAnalyzer/global.d.ts +36 -0
- package/dist/types/statsAnalyzer/index.d.ts +201 -0
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
- package/dist/types/transcription/index.d.ts +64 -0
- 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/internal-README.md +7 -6
- package/package.json +29 -21
- 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 +220 -0
- package/src/breakouts/breakout.ts +188 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/events.ts +56 -0
- package/src/breakouts/index.ts +925 -0
- package/src/breakouts/request.ts +55 -0
- package/src/breakouts/utils.ts +57 -0
- package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
- package/src/common/collection.ts +9 -7
- package/src/common/{config.js → config.ts} +1 -1
- package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
- package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
- package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
- package/src/common/errors/{media.js → media.ts} +11 -7
- package/src/common/errors/no-meeting-info.ts +24 -0
- package/src/common/errors/parameter.ts +11 -7
- package/src/common/errors/{password-error.js → password-error.ts} +11 -7
- package/src/common/errors/{permission.js → permission.ts} +10 -6
- package/src/common/errors/reclaim-host-role-errors.ts +134 -0
- package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
- package/src/common/errors/{stats.js → stats.ts} +11 -7
- package/src/common/errors/{webex-errors.js → webex-errors.ts} +51 -8
- package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
- package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
- package/src/common/events/{events.js → events.ts} +5 -1
- package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
- package/src/common/events/{util.js → util.ts} +2 -3
- package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
- package/src/common/logs/logger-proxy.ts +44 -0
- package/src/common/logs/{request.js → request.ts} +26 -9
- package/src/common/queue.ts +22 -9
- package/src/{config.js → config.ts} +18 -19
- package/src/constants.ts +260 -22
- package/src/controls-options-manager/constants.ts +5 -0
- package/src/controls-options-manager/enums.ts +18 -0
- package/src/controls-options-manager/index.ts +278 -0
- package/src/controls-options-manager/types.ts +59 -0
- package/src/controls-options-manager/util.ts +300 -0
- package/src/index.ts +40 -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 +222 -0
- package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
- package/src/locus-info/{fullState.js → fullState.ts} +16 -12
- package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
- package/src/locus-info/{index.js → index.ts} +557 -119
- package/src/locus-info/{infoUtils.js → infoUtils.ts} +29 -10
- package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +81 -17
- package/src/locus-info/{parser.js → parser.ts} +303 -104
- package/src/locus-info/{selfUtils.js → selfUtils.ts} +199 -68
- package/src/media/index.ts +458 -0
- package/src/media/properties.ts +283 -0
- package/src/media/{util.js → util.ts} +2 -2
- package/src/mediaQualityMetrics/config.ts +384 -0
- package/src/meeting/in-meeting-actions.ts +191 -3
- package/src/meeting/index.ts +7882 -0
- package/src/meeting/locusMediaRequest.ts +313 -0
- package/src/meeting/muteState.ts +451 -0
- package/src/meeting/{request.js → request.ts} +421 -220
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/{state.js → state.ts} +50 -35
- package/src/meeting/util.ts +697 -0
- package/src/meeting-info/{collection.js → collection.ts} +6 -2
- package/src/meeting-info/index.ts +210 -0
- package/src/meeting-info/meeting-info-v2.ts +429 -0
- package/src/meeting-info/{request.js → request.ts} +14 -4
- package/src/meeting-info/{util.js → util.ts} +60 -51
- package/src/meeting-info/{utilv2.js → utilv2.ts} +78 -71
- package/src/meetings/{collection.js → collection.ts} +26 -3
- package/src/meetings/index.ts +1470 -0
- package/src/meetings/meetings.types.ts +12 -0
- package/src/meetings/{request.js → request.ts} +34 -25
- package/src/meetings/{util.js → util.ts} +132 -37
- package/src/member/{index.js → index.ts} +160 -56
- package/src/member/types.ts +38 -0
- package/src/member/util.ts +397 -0
- package/src/members/{collection.js → collection.ts} +10 -2
- package/src/members/{index.js → index.ts} +351 -146
- package/src/members/request.ts +255 -0
- package/src/members/types.ts +29 -0
- package/src/members/util.ts +353 -0
- package/src/metrics/{constants.js → constants.ts} +12 -6
- package/src/metrics/index.ts +73 -0
- package/src/multistream/mediaRequestManager.ts +337 -63
- package/src/multistream/receiveSlot.ts +69 -26
- package/src/multistream/receiveSlotManager.ts +66 -42
- package/src/multistream/remoteMedia.ts +40 -5
- package/src/multistream/remoteMediaGroup.ts +63 -3
- package/src/multistream/remoteMediaManager.ts +300 -66
- package/src/multistream/sendSlotManager.ts +170 -0
- package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
- package/src/personal-meeting-room/{index.js → index.ts} +28 -19
- package/src/personal-meeting-room/{request.js → request.ts} +13 -4
- package/src/personal-meeting-room/{util.js → util.ts} +4 -4
- package/src/reachability/index.ts +671 -0
- package/src/reachability/request.ts +50 -35
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.ts +104 -0
- package/src/reactions/reactions.type.ts +62 -0
- package/src/reconnection-manager/{index.js → index.ts} +258 -138
- package/src/recording-controller/enums.ts +8 -0
- package/src/recording-controller/index.ts +332 -0
- package/src/recording-controller/util.ts +75 -0
- package/src/roap/{index.js → index.ts} +127 -79
- package/src/roap/request.ts +153 -0
- package/src/roap/turnDiscovery.ts +109 -47
- package/src/rtcMetrics/constants.ts +3 -0
- package/src/rtcMetrics/index.ts +100 -0
- package/src/statsAnalyzer/global.ts +37 -0
- package/src/statsAnalyzer/index.ts +1250 -0
- package/src/statsAnalyzer/mqaUtil.ts +292 -0
- package/src/transcription/{index.js → index.ts} +46 -39
- package/src/webinar/collection.ts +31 -0
- package/src/webinar/index.ts +62 -0
- package/test/integration/spec/converged-space-meetings.js +233 -0
- package/test/integration/spec/journey.js +790 -530
- package/test/integration/spec/space-meeting.js +391 -204
- package/test/integration/spec/transcription.js +7 -8
- package/test/unit/spec/annotation/index.ts +418 -0
- package/test/unit/spec/breakouts/breakout.ts +237 -0
- package/test/unit/spec/breakouts/collection.ts +15 -0
- package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
- package/test/unit/spec/breakouts/events.ts +89 -0
- package/test/unit/spec/breakouts/index.ts +1790 -0
- package/test/unit/spec/breakouts/request.ts +104 -0
- package/test/unit/spec/breakouts/utils.js +72 -0
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/common/queue.js +31 -2
- package/test/unit/spec/controls-options-manager/index.js +287 -0
- package/test/unit/spec/controls-options-manager/util.js +582 -0
- package/test/unit/spec/fixture/locus.js +93 -90
- 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 +325 -32
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +1390 -17
- package/test/unit/spec/locus-info/infoUtils.js +71 -40
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
- package/test/unit/spec/locus-info/lib/SeqCmp.json +529 -685
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
- package/test/unit/spec/locus-info/parser.js +119 -44
- package/test/unit/spec/locus-info/selfConstant.js +120 -103
- package/test/unit/spec/locus-info/selfUtils.js +296 -12
- package/test/unit/spec/media/index.ts +128 -77
- package/test/unit/spec/media/properties.ts +11 -11
- package/test/unit/spec/meeting/in-meeting-actions.ts +92 -3
- package/test/unit/spec/meeting/index.js +7433 -2752
- package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
- package/test/unit/spec/meeting/muteState.js +420 -211
- package/test/unit/spec/meeting/request.js +545 -79
- package/test/unit/spec/meeting/utils.js +722 -174
- package/test/unit/spec/meeting-info/index.js +300 -0
- package/test/unit/spec/meeting-info/meetinginfov2.js +624 -76
- package/test/unit/spec/meeting-info/request.js +7 -9
- package/test/unit/spec/meeting-info/util.js +11 -12
- package/test/unit/spec/meeting-info/utilv2.js +131 -74
- package/test/unit/spec/meetings/collection.js +15 -1
- package/test/unit/spec/meetings/index.js +1365 -377
- package/test/unit/spec/meetings/utils.js +216 -14
- package/test/unit/spec/member/index.js +61 -7
- package/test/unit/spec/member/util.js +526 -26
- package/test/unit/spec/members/index.js +536 -55
- package/test/unit/spec/members/request.js +228 -40
- package/test/unit/spec/members/utils.js +217 -4
- package/test/unit/spec/metrics/index.js +12 -66
- package/test/unit/spec/multistream/mediaRequestManager.ts +1012 -109
- package/test/unit/spec/multistream/receiveSlot.ts +77 -18
- package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
- package/test/unit/spec/multistream/remoteMedia.ts +40 -2
- package/test/unit/spec/multistream/remoteMediaGroup.ts +271 -5
- package/test/unit/spec/multistream/remoteMediaManager.ts +738 -65
- package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
- package/test/unit/spec/networkQualityMonitor/index.js +24 -18
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/index.ts +598 -26
- package/test/unit/spec/reachability/request.js +68 -0
- package/test/unit/spec/reconnection-manager/index.js +181 -12
- package/test/unit/spec/recording-controller/index.js +307 -0
- package/test/unit/spec/recording-controller/util.js +229 -0
- package/test/unit/spec/roap/index.ts +179 -64
- package/test/unit/spec/roap/request.ts +232 -0
- package/test/unit/spec/roap/turnDiscovery.ts +123 -58
- package/test/unit/spec/rtcMetrics/index.ts +73 -0
- package/test/unit/spec/stats-analyzer/index.js +199 -60
- package/test/unit/spec/webinar/collection.ts +13 -0
- package/test/unit/spec/webinar/index.ts +60 -0
- package/test/utils/cmr.js +44 -42
- package/test/utils/constants.js +9 -0
- package/test/utils/integrationTestUtils.js +46 -0
- package/test/utils/testUtils.js +63 -99
- package/test/utils/webex-config.js +22 -18
- package/test/utils/webex-test-users.js +57 -50
- package/tsconfig.json +6 -0
- package/dist/media/internal-media-core-wrapper.js +0 -22
- package/dist/media/internal-media-core-wrapper.js.map +0 -1
- package/dist/meeting/effectsState.js +0 -327
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/metrics/config.js +0 -301
- package/dist/metrics/config.js.map +0 -1
- package/dist/multistream/multistreamMedia.js +0 -116
- package/dist/multistream/multistreamMedia.js.map +0 -1
- package/dist/peer-connection-manager/util.js +0 -124
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/src/common/logs/logger-proxy.js +0 -33
- package/src/index.js +0 -15
- package/src/locus-info/controlsUtils.js +0 -102
- package/src/media/index.js +0 -459
- package/src/media/internal-media-core-wrapper.ts +0 -9
- package/src/media/properties.js +0 -289
- package/src/mediaQualityMetrics/config.js +0 -382
- package/src/meeting/effectsState.js +0 -205
- package/src/meeting/index.js +0 -6284
- package/src/meeting/muteState.js +0 -318
- package/src/meeting/util.js +0 -506
- package/src/meeting-info/index.js +0 -131
- package/src/meeting-info/meeting-info-v2.js +0 -255
- package/src/meetings/index.js +0 -1015
- package/src/member/util.js +0 -254
- package/src/members/request.js +0 -131
- package/src/members/util.js +0 -258
- package/src/metrics/config.js +0 -324
- package/src/metrics/index.js +0 -530
- package/src/multistream/multistreamMedia.ts +0 -92
- package/src/peer-connection-manager/util.ts +0 -117
- package/src/reachability/index.js +0 -464
- package/src/roap/request.js +0 -127
- package/src/statsAnalyzer/global.js +0 -133
- package/src/statsAnalyzer/index.js +0 -1006
- package/src/statsAnalyzer/mqaUtil.js +0 -173
- package/test/unit/spec/meeting/effectsState.js +0 -291
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
- /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import uuid from 'uuid';
|
|
2
2
|
import {debounce} from 'lodash';
|
|
3
|
+
// @ts-ignore
|
|
3
4
|
import {StatelessWebexPlugin} from '@webex/webex-core';
|
|
5
|
+
// @ts-ignore
|
|
4
6
|
import {deviceType} from '@webex/common';
|
|
5
7
|
|
|
6
8
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
7
9
|
import {
|
|
8
10
|
ALERT,
|
|
9
11
|
ALTERNATE_REDIRECT_TRUE,
|
|
12
|
+
BREAKOUTS,
|
|
10
13
|
CALL,
|
|
11
14
|
CONTROLS,
|
|
12
15
|
DECLINE,
|
|
@@ -15,24 +18,73 @@ import {
|
|
|
15
18
|
HTTP_VERBS,
|
|
16
19
|
LEAVE,
|
|
17
20
|
LOCI,
|
|
18
|
-
LOCUS,
|
|
19
|
-
MEDIA,
|
|
20
21
|
PARTICIPANT,
|
|
21
22
|
PROVISIONAL_TYPE_DIAL_IN,
|
|
22
23
|
PROVISIONAL_TYPE_DIAL_OUT,
|
|
24
|
+
REACHABILITY,
|
|
23
25
|
SEND_DTMF_ENDPOINT,
|
|
24
|
-
_SLIDES_
|
|
26
|
+
_SLIDES_,
|
|
27
|
+
ANNOTATION,
|
|
28
|
+
IP_VERSION,
|
|
25
29
|
} from '../constants';
|
|
30
|
+
import {SendReactionOptions, ToggleReactionsOptions} from './request.type';
|
|
31
|
+
import MeetingUtil from './util';
|
|
32
|
+
import {AnnotationInfo} from '../annotation/annotation.types';
|
|
26
33
|
|
|
27
34
|
/**
|
|
28
35
|
* @class MeetingRequest
|
|
29
36
|
*/
|
|
30
37
|
export default class MeetingRequest extends StatelessWebexPlugin {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
38
|
+
changeVideoLayoutDebounced: any;
|
|
39
|
+
meetingRef: WeakRef<any>;
|
|
40
|
+
locusDeltaRequest: (options: object) => Promise<any>;
|
|
41
|
+
buildLocusDeltaRequestOptions: (options: object) => Promise<any>;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Constructor
|
|
45
|
+
* @param {Object} attrs
|
|
46
|
+
* @param {Object} options
|
|
47
|
+
*/
|
|
48
|
+
constructor(attrs: any, options: any) {
|
|
49
|
+
const {meeting, ...otherAttrs} = attrs;
|
|
50
|
+
|
|
51
|
+
super(otherAttrs, options);
|
|
52
|
+
|
|
53
|
+
this.locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);
|
|
54
|
+
this.buildLocusDeltaRequestOptions = MeetingUtil.generateBuildLocusDeltaRequestOptions(meeting);
|
|
55
|
+
|
|
56
|
+
this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {
|
|
57
|
+
leading: true,
|
|
58
|
+
trailing: true,
|
|
59
|
+
});
|
|
34
60
|
}
|
|
35
61
|
|
|
62
|
+
/**
|
|
63
|
+
* Returns joinCookie from boundedStorage if present.
|
|
64
|
+
* @returns {Object} joinCookie
|
|
65
|
+
*/
|
|
66
|
+
private getJoinCookie = async () => {
|
|
67
|
+
// @ts-ignore
|
|
68
|
+
const joinCookieRaw = await this.webex.boundedStorage
|
|
69
|
+
.get(REACHABILITY.namespace, REACHABILITY.localStorageJoinCookie)
|
|
70
|
+
.catch(() => {});
|
|
71
|
+
|
|
72
|
+
if (joinCookieRaw) {
|
|
73
|
+
try {
|
|
74
|
+
const joinCookie = JSON.parse(joinCookieRaw);
|
|
75
|
+
if (joinCookie) {
|
|
76
|
+
return joinCookie;
|
|
77
|
+
}
|
|
78
|
+
} catch (e) {
|
|
79
|
+
LoggerProxy.logger.error(
|
|
80
|
+
`MeetingRequest#constructor --> Error in parsing join cookie data: ${e}`
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return null;
|
|
86
|
+
};
|
|
87
|
+
|
|
36
88
|
/**
|
|
37
89
|
* Make a network request to join a meeting
|
|
38
90
|
* @param {Object} options
|
|
@@ -46,9 +98,35 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
46
98
|
* @param {boolean} options.pin
|
|
47
99
|
* @param {boolean} options.moveToResource
|
|
48
100
|
* @param {Object} options.roapMessage
|
|
101
|
+
* @param {boolean} options.breakoutsSupported
|
|
102
|
+
* @param {String} options.locale,
|
|
103
|
+
* @param {Array} options.deviceCapabilities
|
|
104
|
+
* @param {boolean} options.liveAnnotationSupported
|
|
49
105
|
* @returns {Promise}
|
|
50
106
|
*/
|
|
51
|
-
async joinMeeting(options
|
|
107
|
+
async joinMeeting(options: {
|
|
108
|
+
sipUri: string;
|
|
109
|
+
deviceUrl: string;
|
|
110
|
+
locusUrl: string;
|
|
111
|
+
locusClusterUrl: string;
|
|
112
|
+
resourceId: string;
|
|
113
|
+
correlationId: string;
|
|
114
|
+
ensureConversation: boolean;
|
|
115
|
+
moderator: boolean;
|
|
116
|
+
pin: boolean;
|
|
117
|
+
moveToResource: boolean;
|
|
118
|
+
roapMessage: any;
|
|
119
|
+
asResourceOccupant: any;
|
|
120
|
+
inviteeAddress: any;
|
|
121
|
+
meetingNumber: any;
|
|
122
|
+
permissionToken: any;
|
|
123
|
+
preferTranscoding: any;
|
|
124
|
+
breakoutsSupported: boolean;
|
|
125
|
+
locale?: string;
|
|
126
|
+
deviceCapabilities?: Array<string>;
|
|
127
|
+
liveAnnotationSupported: boolean;
|
|
128
|
+
ipVersion?: IP_VERSION;
|
|
129
|
+
}) {
|
|
52
130
|
const {
|
|
53
131
|
asResourceOccupant,
|
|
54
132
|
inviteeAddress,
|
|
@@ -56,6 +134,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
56
134
|
permissionToken,
|
|
57
135
|
deviceUrl,
|
|
58
136
|
locusUrl,
|
|
137
|
+
locusClusterUrl,
|
|
59
138
|
resourceId,
|
|
60
139
|
correlationId,
|
|
61
140
|
ensureConversation,
|
|
@@ -63,37 +142,62 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
63
142
|
pin,
|
|
64
143
|
moveToResource,
|
|
65
144
|
roapMessage,
|
|
66
|
-
preferTranscoding
|
|
145
|
+
preferTranscoding,
|
|
146
|
+
breakoutsSupported,
|
|
147
|
+
locale,
|
|
148
|
+
deviceCapabilities = [],
|
|
149
|
+
liveAnnotationSupported,
|
|
150
|
+
ipVersion,
|
|
67
151
|
} = options;
|
|
68
152
|
|
|
69
|
-
LoggerProxy.logger.info(
|
|
70
|
-
'Meeting:request#joinMeeting --> Joining a meeting',
|
|
71
|
-
correlationId
|
|
72
|
-
);
|
|
153
|
+
LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);
|
|
73
154
|
|
|
74
155
|
let url = '';
|
|
75
156
|
|
|
76
|
-
const
|
|
157
|
+
const joinCookie = await this.getJoinCookie();
|
|
158
|
+
|
|
159
|
+
const body: any = {
|
|
77
160
|
asResourceOccupant,
|
|
78
161
|
device: {
|
|
79
162
|
url: deviceUrl,
|
|
80
|
-
|
|
163
|
+
// @ts-ignore - config comes from registerPlugin
|
|
164
|
+
deviceType: this.config.meetings.deviceType,
|
|
81
165
|
},
|
|
82
166
|
usingResource: resourceId || null,
|
|
83
|
-
moveMediaToResource: resourceId && moveToResource || false,
|
|
167
|
+
moveMediaToResource: (resourceId && moveToResource) || false,
|
|
84
168
|
correlationId,
|
|
85
169
|
respOnlySdp: true,
|
|
86
170
|
allowMultiDevice: true,
|
|
87
171
|
ensureConversation: ensureConversation || false,
|
|
88
172
|
supportsNativeLobby: 1,
|
|
89
173
|
clientMediaPreferences: {
|
|
90
|
-
preferTranscoding: preferTranscoding ?? true
|
|
91
|
-
|
|
174
|
+
preferTranscoding: preferTranscoding ?? true,
|
|
175
|
+
joinCookie,
|
|
176
|
+
ipver: ipVersion,
|
|
177
|
+
},
|
|
92
178
|
};
|
|
93
179
|
|
|
94
|
-
if (
|
|
95
|
-
|
|
96
|
-
|
|
180
|
+
if (breakoutsSupported) {
|
|
181
|
+
deviceCapabilities.push(BREAKOUTS.BREAKOUTS_SUPPORTED);
|
|
182
|
+
}
|
|
183
|
+
if (liveAnnotationSupported) {
|
|
184
|
+
deviceCapabilities.push(ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
if (locale) {
|
|
188
|
+
body.locale = locale;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// add deviceCapabilities prop
|
|
192
|
+
if (deviceCapabilities.length) {
|
|
193
|
+
body.deviceCapabilities = deviceCapabilities;
|
|
194
|
+
}
|
|
195
|
+
// @ts-ignore
|
|
196
|
+
if (this.webex.meetings.geoHintInfo) {
|
|
197
|
+
// @ts-ignore
|
|
198
|
+
body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;
|
|
199
|
+
// @ts-ignore
|
|
200
|
+
body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;
|
|
97
201
|
}
|
|
98
202
|
|
|
99
203
|
if (moderator !== undefined) {
|
|
@@ -110,28 +214,37 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
110
214
|
|
|
111
215
|
if (locusUrl) {
|
|
112
216
|
url = `${locusUrl}/${PARTICIPANT}`;
|
|
113
|
-
}
|
|
114
|
-
else if (inviteeAddress || meetingNumber) {
|
|
217
|
+
} else if (inviteeAddress || meetingNumber) {
|
|
115
218
|
try {
|
|
116
|
-
|
|
117
|
-
|
|
219
|
+
let clusterUrl;
|
|
220
|
+
|
|
221
|
+
if (locusClusterUrl) {
|
|
222
|
+
clusterUrl = `https://${locusClusterUrl}/locus/api/v1`;
|
|
223
|
+
} else {
|
|
224
|
+
// @ts-ignore
|
|
225
|
+
await this.webex.internal.services.waitForCatalog('postauth');
|
|
226
|
+
// @ts-ignore
|
|
227
|
+
clusterUrl = this.webex.internal.services.get('locus');
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
url = `${clusterUrl}/${LOCI}/${CALL}`;
|
|
118
231
|
body.invitee = {
|
|
119
|
-
address: inviteeAddress || `wbxmn:${meetingNumber}
|
|
232
|
+
address: inviteeAddress || `wbxmn:${meetingNumber}`,
|
|
120
233
|
};
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
234
|
+
} catch (e) {
|
|
235
|
+
LoggerProxy.logger.error(
|
|
236
|
+
`Meeting:request#joinMeeting Error Joining ${inviteeAddress || meetingNumber} --> ${e}`
|
|
237
|
+
);
|
|
238
|
+
throw e;
|
|
125
239
|
}
|
|
126
240
|
}
|
|
127
241
|
|
|
128
|
-
|
|
129
242
|
// TODO: -- this will be resolved in SDK request
|
|
130
243
|
url = url.concat(`?${ALTERNATE_REDIRECT_TRUE}`);
|
|
131
244
|
|
|
132
245
|
if (resourceId === inviteeAddress) {
|
|
133
246
|
body.callPreferences = {
|
|
134
|
-
requestedMedia: [_SLIDES_]
|
|
247
|
+
requestedMedia: [_SLIDES_],
|
|
135
248
|
};
|
|
136
249
|
}
|
|
137
250
|
|
|
@@ -139,10 +252,11 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
139
252
|
body.localMedias = roapMessage.localMedias;
|
|
140
253
|
}
|
|
141
254
|
|
|
255
|
+
/// @ts-ignore
|
|
142
256
|
return this.request({
|
|
143
257
|
method: HTTP_VERBS.POST,
|
|
144
258
|
uri: url,
|
|
145
|
-
body
|
|
259
|
+
body,
|
|
146
260
|
});
|
|
147
261
|
}
|
|
148
262
|
|
|
@@ -154,18 +268,22 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
154
268
|
* @returns {Promise}
|
|
155
269
|
* @private
|
|
156
270
|
*/
|
|
157
|
-
refreshCaptcha({
|
|
271
|
+
private refreshCaptcha({
|
|
158
272
|
captchaRefreshUrl,
|
|
159
|
-
captchaId
|
|
273
|
+
captchaId,
|
|
274
|
+
}: {
|
|
275
|
+
captchaRefreshUrl: string;
|
|
276
|
+
captchaId: string;
|
|
160
277
|
}) {
|
|
161
278
|
const body = {
|
|
162
|
-
captchaId
|
|
279
|
+
captchaId,
|
|
163
280
|
};
|
|
164
281
|
|
|
282
|
+
// @ts-ignore
|
|
165
283
|
return this.request({
|
|
166
284
|
method: HTTP_VERBS.POST,
|
|
167
285
|
uri: captchaRefreshUrl,
|
|
168
|
-
body
|
|
286
|
+
body,
|
|
169
287
|
}).catch((err) => {
|
|
170
288
|
LoggerProxy.logger.error(`Meeting:request#refreshCaptcha --> Error: ${err}`);
|
|
171
289
|
|
|
@@ -177,17 +295,22 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
177
295
|
* Make a network request to add a dial in device
|
|
178
296
|
* @param {Object} options
|
|
179
297
|
* @param {String} options.correlationId
|
|
180
|
-
* @param {String} options.
|
|
298
|
+
* @param {String} options.locusUrl url for the meeting
|
|
181
299
|
* @param {String} options.dialInUrl identifier for the to-be provisioned device
|
|
182
300
|
* @param {String} options.clientUrl identifier for the web device
|
|
183
301
|
* @returns {Promise}
|
|
184
302
|
* @private
|
|
185
303
|
*/
|
|
186
|
-
dialIn({
|
|
304
|
+
private dialIn({
|
|
187
305
|
locusUrl,
|
|
188
306
|
dialInUrl,
|
|
189
307
|
clientUrl,
|
|
190
|
-
correlationId
|
|
308
|
+
correlationId,
|
|
309
|
+
}: {
|
|
310
|
+
correlationId: string;
|
|
311
|
+
locusUrl: string;
|
|
312
|
+
dialInUrl: string;
|
|
313
|
+
clientUrl: string;
|
|
191
314
|
}) {
|
|
192
315
|
LoggerProxy.logger.info(
|
|
193
316
|
'Meeting:request#dialIn --> Provisioning a dial in device',
|
|
@@ -200,17 +323,20 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
200
323
|
deviceType: deviceType.PROVISIONAL,
|
|
201
324
|
provisionalType: PROVISIONAL_TYPE_DIAL_IN,
|
|
202
325
|
url: dialInUrl,
|
|
203
|
-
clientUrl
|
|
326
|
+
clientUrl,
|
|
204
327
|
},
|
|
205
|
-
correlationId
|
|
328
|
+
correlationId,
|
|
206
329
|
};
|
|
207
330
|
|
|
208
|
-
|
|
331
|
+
// @ts-ignore
|
|
332
|
+
return this.locusDeltaRequest({
|
|
209
333
|
method: HTTP_VERBS.POST,
|
|
210
334
|
uri,
|
|
211
|
-
body
|
|
335
|
+
body,
|
|
212
336
|
}).catch((err) => {
|
|
213
|
-
LoggerProxy.logger.error(
|
|
337
|
+
LoggerProxy.logger.error(
|
|
338
|
+
`Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`
|
|
339
|
+
);
|
|
214
340
|
|
|
215
341
|
throw err;
|
|
216
342
|
});
|
|
@@ -220,19 +346,25 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
220
346
|
* Make a network request to add a dial out device
|
|
221
347
|
* @param {Object} options
|
|
222
348
|
* @param {String} options.correlationId
|
|
223
|
-
* @param {String} options.
|
|
349
|
+
* @param {String} options.locusUrl url for the meeting
|
|
224
350
|
* @param {String} options.dialOutUrl identifier for the to-be provisioned device
|
|
225
351
|
* @param {String} options.phoneNumber phone number to dial out to
|
|
226
352
|
* @param {String} options.clientUrl identifier for the web device
|
|
227
353
|
* @returns {Promise}
|
|
228
354
|
* @private
|
|
229
355
|
*/
|
|
230
|
-
dialOut({
|
|
356
|
+
private dialOut({
|
|
231
357
|
locusUrl,
|
|
232
358
|
dialOutUrl,
|
|
233
359
|
phoneNumber,
|
|
234
360
|
clientUrl,
|
|
235
|
-
correlationId
|
|
361
|
+
correlationId,
|
|
362
|
+
}: {
|
|
363
|
+
correlationId: string;
|
|
364
|
+
locusUrl: string;
|
|
365
|
+
dialOutUrl: string;
|
|
366
|
+
phoneNumber: string;
|
|
367
|
+
clientUrl: string;
|
|
236
368
|
}) {
|
|
237
369
|
LoggerProxy.logger.info(
|
|
238
370
|
'Meeting:request#dialOut --> Provisioning a dial out device',
|
|
@@ -246,74 +378,45 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
246
378
|
provisionalType: PROVISIONAL_TYPE_DIAL_OUT,
|
|
247
379
|
url: dialOutUrl,
|
|
248
380
|
dialoutAddress: phoneNumber,
|
|
249
|
-
clientUrl
|
|
381
|
+
clientUrl,
|
|
250
382
|
},
|
|
251
|
-
correlationId
|
|
383
|
+
correlationId,
|
|
252
384
|
};
|
|
253
385
|
|
|
254
|
-
|
|
386
|
+
// @ts-ignore
|
|
387
|
+
return this.locusDeltaRequest({
|
|
255
388
|
method: HTTP_VERBS.POST,
|
|
256
389
|
uri,
|
|
257
|
-
body
|
|
390
|
+
body,
|
|
258
391
|
}).catch((err) => {
|
|
259
|
-
LoggerProxy.logger.error(
|
|
392
|
+
LoggerProxy.logger.error(
|
|
393
|
+
`Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`
|
|
394
|
+
);
|
|
260
395
|
|
|
261
396
|
throw err;
|
|
262
397
|
});
|
|
263
398
|
}
|
|
264
399
|
|
|
265
400
|
/**
|
|
266
|
-
*
|
|
267
|
-
* @param {Object} options
|
|
268
|
-
* @param {boolen} options.desync flag to get partial or whole locus object
|
|
269
|
-
* @param {String} options.syncUrl sync url to get ht elatest locus delta
|
|
270
|
-
* @returns {Promise}
|
|
271
|
-
*/
|
|
272
|
-
syncMeeting(options) {
|
|
273
|
-
/* eslint-disable no-else-return */
|
|
274
|
-
const {desync} = options;
|
|
275
|
-
let {syncUrl} = options;
|
|
276
|
-
|
|
277
|
-
/* istanbul ignore else */
|
|
278
|
-
if (desync) {
|
|
279
|
-
// check for existing URL parameters
|
|
280
|
-
syncUrl = syncUrl.concat(syncUrl.split('?')[1] ? '&' : '?').concat(`${LOCUS.SYNCDEBUG}=${desync}`);
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
return this.request({
|
|
284
|
-
method: HTTP_VERBS.GET,
|
|
285
|
-
uri: syncUrl
|
|
286
|
-
}) // TODO: Handle if delta sync failed . Get the full locus object
|
|
287
|
-
.catch((err) => {
|
|
288
|
-
LoggerProxy.logger.error(`Meeting:request#syncMeeting --> Error syncing meeting, error ${err}`);
|
|
289
|
-
|
|
290
|
-
return err;
|
|
291
|
-
});
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
/**
|
|
295
|
-
* Request to get the complete locus object
|
|
401
|
+
* Sends a requests to get the latest locus DTO, it might be a full Locus or a delta, depending on the url provided
|
|
296
402
|
* @param {Object} options
|
|
297
|
-
* @param {boolen} options.desync flag to get partial or whole locus object
|
|
298
403
|
* @param {String} options.locusUrl sync url to get ht elatest locus delta
|
|
299
404
|
* @returns {Promise}
|
|
300
405
|
*/
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
const {desync} = options;
|
|
304
|
-
|
|
305
|
-
if (locusUrl) {
|
|
306
|
-
if (desync) {
|
|
307
|
-
locusUrl += `?${LOCUS.SYNCDEBUG}=${desync}`;
|
|
308
|
-
}
|
|
406
|
+
getLocusDTO(options: {url: string}) {
|
|
407
|
+
const {url} = options;
|
|
309
408
|
|
|
409
|
+
if (url) {
|
|
410
|
+
// @ts-ignore
|
|
310
411
|
return this.request({
|
|
311
412
|
method: HTTP_VERBS.GET,
|
|
312
|
-
uri:
|
|
413
|
+
uri: url,
|
|
313
414
|
}).catch((err) => {
|
|
314
|
-
LoggerProxy.logger.error(
|
|
415
|
+
LoggerProxy.logger.error(
|
|
416
|
+
`Meeting:request#getLocusDTO --> Error getting latest locus, error ${err}`
|
|
417
|
+
);
|
|
315
418
|
|
|
316
|
-
|
|
419
|
+
throw err;
|
|
317
420
|
});
|
|
318
421
|
}
|
|
319
422
|
|
|
@@ -330,11 +433,16 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
330
433
|
* @returns {Promise}
|
|
331
434
|
* @private
|
|
332
435
|
*/
|
|
333
|
-
disconnectPhoneAudio({
|
|
436
|
+
private disconnectPhoneAudio({
|
|
334
437
|
locusUrl,
|
|
335
438
|
phoneUrl,
|
|
336
439
|
correlationId,
|
|
337
|
-
selfId
|
|
440
|
+
selfId,
|
|
441
|
+
}: {
|
|
442
|
+
locusUrl: string;
|
|
443
|
+
phoneUrl: string;
|
|
444
|
+
correlationId: string;
|
|
445
|
+
selfId: string;
|
|
338
446
|
}) {
|
|
339
447
|
LoggerProxy.logger.info(
|
|
340
448
|
`Meeting:request#disconnectPhoneAudio --> request phone ${phoneUrl} to leave`,
|
|
@@ -345,15 +453,16 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
345
453
|
const body = {
|
|
346
454
|
device: {
|
|
347
455
|
deviceType: deviceType.PROVISIONAL,
|
|
348
|
-
url: phoneUrl
|
|
456
|
+
url: phoneUrl,
|
|
349
457
|
},
|
|
350
|
-
correlationId
|
|
458
|
+
correlationId,
|
|
351
459
|
};
|
|
352
460
|
|
|
353
|
-
|
|
461
|
+
// @ts-ignore
|
|
462
|
+
return this.locusDeltaRequest({
|
|
354
463
|
method: HTTP_VERBS.PUT,
|
|
355
464
|
uri,
|
|
356
|
-
body
|
|
465
|
+
body,
|
|
357
466
|
}).catch((err) => {
|
|
358
467
|
LoggerProxy.logger.error(
|
|
359
468
|
`Meeting:request#disconnectPhoneAudio --> Error when requesting phone ${phoneUrl} to leave, error ${err}`
|
|
@@ -364,105 +473,137 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
364
473
|
}
|
|
365
474
|
|
|
366
475
|
/**
|
|
367
|
-
*
|
|
476
|
+
* Prepares request options to to leave a meeting
|
|
368
477
|
* @param {Object} options
|
|
369
478
|
* @param {Url} options.locusUrl
|
|
370
479
|
* @param {String} options.selfId
|
|
371
480
|
* @param {Url} options.deviceUrl
|
|
372
481
|
* @param {String} options.resourceId,
|
|
373
482
|
* @param {String} options.correlationId
|
|
374
|
-
* @returns {
|
|
483
|
+
* @returns {Object} request options
|
|
375
484
|
*/
|
|
376
|
-
|
|
485
|
+
prepareLeaveMeetingRequestOptions({
|
|
377
486
|
locusUrl,
|
|
378
487
|
selfId,
|
|
379
488
|
deviceUrl: url,
|
|
380
489
|
resourceId,
|
|
381
|
-
correlationId
|
|
490
|
+
correlationId,
|
|
491
|
+
}: {
|
|
492
|
+
locusUrl: string;
|
|
493
|
+
selfId: string;
|
|
494
|
+
deviceUrl: string;
|
|
495
|
+
resourceId: string;
|
|
496
|
+
correlationId: string;
|
|
382
497
|
}) {
|
|
383
|
-
LoggerProxy.logger.info(
|
|
384
|
-
'Meeting:request#leaveMeeting --> Leaving a meeting',
|
|
385
|
-
correlationId
|
|
386
|
-
);
|
|
387
|
-
|
|
388
498
|
const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;
|
|
389
499
|
const body = {
|
|
390
500
|
device: {
|
|
501
|
+
// @ts-ignore
|
|
391
502
|
deviceType: this.config.meetings.deviceType,
|
|
392
|
-
url
|
|
503
|
+
url,
|
|
393
504
|
},
|
|
394
505
|
usingResource: resourceId || null,
|
|
395
|
-
correlationId
|
|
506
|
+
correlationId,
|
|
396
507
|
};
|
|
397
508
|
|
|
398
|
-
return
|
|
509
|
+
return {
|
|
399
510
|
method: HTTP_VERBS.PUT,
|
|
400
511
|
uri,
|
|
401
|
-
body
|
|
402
|
-
}
|
|
512
|
+
body,
|
|
513
|
+
};
|
|
403
514
|
}
|
|
404
515
|
|
|
405
516
|
/**
|
|
406
|
-
* Make a network request to
|
|
517
|
+
* Make a network request to leave a meeting
|
|
407
518
|
* @param {Object} options
|
|
408
|
-
* @param {String} options.locusUrl
|
|
409
|
-
* @param {String} options.deviceUrl
|
|
410
|
-
* @param {String} options.correlationId
|
|
411
519
|
* @returns {Promise}
|
|
412
520
|
*/
|
|
413
|
-
|
|
414
|
-
|
|
521
|
+
leaveMeeting({
|
|
522
|
+
locusUrl,
|
|
523
|
+
selfId,
|
|
524
|
+
deviceUrl: url,
|
|
525
|
+
resourceId,
|
|
526
|
+
correlationId,
|
|
527
|
+
}: {
|
|
528
|
+
locusUrl: string;
|
|
529
|
+
selfId: string;
|
|
530
|
+
deviceUrl: string;
|
|
531
|
+
resourceId: string;
|
|
532
|
+
correlationId: string;
|
|
533
|
+
}) {
|
|
534
|
+
LoggerProxy.logger.info('Meeting:request#leaveMeeting --> Leaving a meeting', correlationId);
|
|
535
|
+
|
|
536
|
+
const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;
|
|
415
537
|
const body = {
|
|
416
538
|
device: {
|
|
539
|
+
// @ts-ignore
|
|
417
540
|
deviceType: this.config.meetings.deviceType,
|
|
418
|
-
url
|
|
541
|
+
url,
|
|
419
542
|
},
|
|
420
|
-
|
|
543
|
+
usingResource: resourceId || null,
|
|
544
|
+
correlationId,
|
|
421
545
|
};
|
|
422
546
|
|
|
423
|
-
return this.
|
|
547
|
+
return this.locusDeltaRequest({
|
|
424
548
|
method: HTTP_VERBS.PUT,
|
|
425
549
|
uri,
|
|
426
|
-
body
|
|
550
|
+
body,
|
|
427
551
|
});
|
|
428
552
|
}
|
|
429
553
|
|
|
554
|
+
/**
|
|
555
|
+
* Builds request options to leave a meeting
|
|
556
|
+
* @param {Object} options
|
|
557
|
+
* @returns {Object} request options
|
|
558
|
+
*/
|
|
559
|
+
buildLeaveMeetingRequestOptions(options: any) {
|
|
560
|
+
return this.buildLocusDeltaRequestOptions(this.prepareLeaveMeetingRequestOptions(options));
|
|
561
|
+
}
|
|
562
|
+
|
|
430
563
|
/**
|
|
431
564
|
* Make a network request to acknowledge a meeting
|
|
432
565
|
* @param {Object} options
|
|
433
566
|
* @param {String} options.locusUrl
|
|
434
567
|
* @param {String} options.deviceUrl
|
|
435
|
-
* @param {String} options.
|
|
568
|
+
* @param {String} options.correlationId
|
|
436
569
|
* @returns {Promise}
|
|
437
570
|
*/
|
|
438
|
-
|
|
439
|
-
const uri = `${options.locusUrl}/${
|
|
571
|
+
acknowledgeMeeting(options: {locusUrl: string; deviceUrl: string; correlationId: string}) {
|
|
572
|
+
const uri = `${options.locusUrl}/${PARTICIPANT}/${ALERT}`;
|
|
440
573
|
const body = {
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
574
|
+
device: {
|
|
575
|
+
// @ts-ignore
|
|
576
|
+
deviceType: this.config.meetings.deviceType,
|
|
577
|
+
url: options.deviceUrl,
|
|
578
|
+
},
|
|
579
|
+
correlationId: options.correlationId,
|
|
445
580
|
};
|
|
446
581
|
|
|
447
|
-
return this.
|
|
448
|
-
method: HTTP_VERBS.
|
|
582
|
+
return this.locusDeltaRequest({
|
|
583
|
+
method: HTTP_VERBS.PUT,
|
|
449
584
|
uri,
|
|
450
|
-
body
|
|
585
|
+
body,
|
|
451
586
|
});
|
|
452
587
|
}
|
|
453
588
|
|
|
589
|
+
/**
|
|
590
|
+
* Makes a network request to lock the meeting
|
|
591
|
+
* @param {Object} options
|
|
592
|
+
* @param {Boolean} options.lock Whether it is locked or not
|
|
593
|
+
* @returns {Promise}
|
|
594
|
+
*/
|
|
454
595
|
lockMeeting(options) {
|
|
455
596
|
const uri = `${options.locusUrl}/${CONTROLS}`;
|
|
456
597
|
const body = {
|
|
457
598
|
lock: {
|
|
458
|
-
locked: options.lock
|
|
459
|
-
}
|
|
599
|
+
locked: options.lock,
|
|
600
|
+
},
|
|
460
601
|
};
|
|
461
602
|
|
|
462
|
-
return this.
|
|
603
|
+
return this.locusDeltaRequest({
|
|
463
604
|
method: HTTP_VERBS.PATCH,
|
|
464
605
|
uri,
|
|
465
|
-
body
|
|
606
|
+
body,
|
|
466
607
|
});
|
|
467
608
|
}
|
|
468
609
|
|
|
@@ -474,54 +615,21 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
474
615
|
* @param {String} options.reason
|
|
475
616
|
* @returns {Promise}
|
|
476
617
|
*/
|
|
477
|
-
declineMeeting(options) {
|
|
618
|
+
declineMeeting(options: {locusUrl: string; deviceUrl: string; reason: string}) {
|
|
478
619
|
const uri = `${options.locusUrl}/${PARTICIPANT}/${DECLINE}`;
|
|
479
620
|
const body = {
|
|
480
621
|
device: {
|
|
622
|
+
// @ts-ignore
|
|
481
623
|
deviceType: this.config.meetings.deviceType,
|
|
482
|
-
url: options.deviceUrl
|
|
624
|
+
url: options.deviceUrl,
|
|
483
625
|
},
|
|
484
|
-
...(options.reason && {reason: options.reason})
|
|
626
|
+
...(options.reason && {reason: options.reason}),
|
|
485
627
|
};
|
|
486
628
|
|
|
487
|
-
return this.
|
|
629
|
+
return this.locusDeltaRequest({
|
|
488
630
|
method: HTTP_VERBS.PUT,
|
|
489
631
|
uri,
|
|
490
|
-
body
|
|
491
|
-
});
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
/**
|
|
495
|
-
* Toggle remote audio and/or video
|
|
496
|
-
* @param {Object} options options for toggling
|
|
497
|
-
* @param {String} options.selfId Locus self id??
|
|
498
|
-
* @param {String} options.locusUrl Locus url
|
|
499
|
-
* @param {String} options.deviceUrl Url of a device
|
|
500
|
-
* @param {String} options.resourceId Populated if you are paired to a device
|
|
501
|
-
* @param {String} options.localMedias local sdps
|
|
502
|
-
* @param {Boolean} options.preferTranscoding false for multistream (Homer), true for transcoded media (Edonus)
|
|
503
|
-
* @returns {Promise}
|
|
504
|
-
*/
|
|
505
|
-
remoteAudioVideoToggle(options) {
|
|
506
|
-
const uri = `${options.locusUrl}/${PARTICIPANT}/${options.selfId}/${MEDIA}`;
|
|
507
|
-
const body = {
|
|
508
|
-
device: {
|
|
509
|
-
deviceType: this.config.meetings.deviceType,
|
|
510
|
-
url: options.deviceUrl
|
|
511
|
-
},
|
|
512
|
-
usingResource: options.resourceId || null,
|
|
513
|
-
correlationId: options.correlationId,
|
|
514
|
-
respOnlySdp: true,
|
|
515
|
-
localMedias: options.localMedias,
|
|
516
|
-
clientMediaPreferences: {
|
|
517
|
-
preferTranscoding: options.preferTranscoding ?? true
|
|
518
|
-
}
|
|
519
|
-
};
|
|
520
|
-
|
|
521
|
-
return this.request({
|
|
522
|
-
method: HTTP_VERBS.PUT,
|
|
523
|
-
uri,
|
|
524
|
-
body
|
|
632
|
+
body,
|
|
525
633
|
});
|
|
526
634
|
}
|
|
527
635
|
|
|
@@ -535,8 +643,19 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
535
643
|
* @param {String} options.uri floor grant uri
|
|
536
644
|
* @returns {Promise}
|
|
537
645
|
*/
|
|
538
|
-
changeMeetingFloor(
|
|
539
|
-
|
|
646
|
+
changeMeetingFloor(
|
|
647
|
+
options:
|
|
648
|
+
| {
|
|
649
|
+
disposition: string;
|
|
650
|
+
personUrl: string;
|
|
651
|
+
deviceUrl: string;
|
|
652
|
+
resourceId: string;
|
|
653
|
+
uri: string;
|
|
654
|
+
annotationInfo: AnnotationInfo;
|
|
655
|
+
}
|
|
656
|
+
| any
|
|
657
|
+
) {
|
|
658
|
+
let floorReq: any = {disposition: options.disposition};
|
|
540
659
|
|
|
541
660
|
/* istanbul ignore else */
|
|
542
661
|
if (options.disposition === FLOOR_ACTION.GRANTED) {
|
|
@@ -545,31 +664,36 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
545
664
|
url: options.personUrl,
|
|
546
665
|
devices: [
|
|
547
666
|
{
|
|
667
|
+
// @ts-ignore
|
|
548
668
|
deviceType: this.config.meetings.deviceType,
|
|
549
|
-
url: options.deviceUrl
|
|
550
|
-
}
|
|
551
|
-
]
|
|
669
|
+
url: options.deviceUrl,
|
|
670
|
+
},
|
|
671
|
+
],
|
|
552
672
|
},
|
|
553
673
|
disposition: options.disposition,
|
|
554
674
|
requester: {
|
|
555
|
-
url: options.personUrl
|
|
556
|
-
}
|
|
675
|
+
url: options.personUrl,
|
|
676
|
+
},
|
|
557
677
|
};
|
|
558
678
|
}
|
|
559
679
|
|
|
560
|
-
const body = {
|
|
680
|
+
const body: any = {
|
|
561
681
|
floor: floorReq,
|
|
562
|
-
resourceUrl: options.resourceUrl
|
|
682
|
+
resourceUrl: options.resourceUrl,
|
|
563
683
|
};
|
|
564
684
|
|
|
565
685
|
if (options?.resourceToken) {
|
|
566
686
|
body.resourceToken = options?.resourceToken;
|
|
567
687
|
}
|
|
688
|
+
if (options?.annotationInfo) {
|
|
689
|
+
body.annotation = options?.annotationInfo;
|
|
690
|
+
}
|
|
568
691
|
|
|
692
|
+
// @ts-ignore
|
|
569
693
|
return this.request({
|
|
570
694
|
uri: options.uri,
|
|
571
695
|
method: HTTP_VERBS.PUT,
|
|
572
|
-
body
|
|
696
|
+
body,
|
|
573
697
|
});
|
|
574
698
|
}
|
|
575
699
|
|
|
@@ -581,17 +705,18 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
581
705
|
* @param {String} options.tones a string of one or more DTMF tones to send
|
|
582
706
|
* @returns {Promise}
|
|
583
707
|
*/
|
|
584
|
-
sendDTMF({locusUrl, deviceUrl, tones}) {
|
|
585
|
-
|
|
708
|
+
sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {
|
|
709
|
+
// @ts-ignore
|
|
710
|
+
return this.locusDeltaRequest({
|
|
586
711
|
method: HTTP_VERBS.POST,
|
|
587
712
|
uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,
|
|
588
713
|
body: {
|
|
589
714
|
deviceUrl,
|
|
590
715
|
dtmf: {
|
|
591
716
|
correlationId: uuid.v4(),
|
|
592
|
-
tones
|
|
593
|
-
}
|
|
594
|
-
}
|
|
717
|
+
tones,
|
|
718
|
+
},
|
|
719
|
+
},
|
|
595
720
|
});
|
|
596
721
|
}
|
|
597
722
|
|
|
@@ -614,39 +739,65 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
614
739
|
deviceUrl,
|
|
615
740
|
layoutType,
|
|
616
741
|
main,
|
|
617
|
-
content
|
|
742
|
+
content,
|
|
743
|
+
}: {
|
|
744
|
+
locusUrl: string;
|
|
745
|
+
deviceUrl: string;
|
|
746
|
+
layoutType: string;
|
|
747
|
+
main: {
|
|
748
|
+
width: number;
|
|
749
|
+
height: number;
|
|
750
|
+
};
|
|
751
|
+
content: {
|
|
752
|
+
width: number;
|
|
753
|
+
height: number;
|
|
754
|
+
};
|
|
618
755
|
}) {
|
|
619
756
|
// send main/content renderInfo only if both width and height are specified
|
|
620
757
|
if (main && (!main.width || !main.height)) {
|
|
621
|
-
return Promise.reject(
|
|
758
|
+
return Promise.reject(
|
|
759
|
+
new Error(
|
|
760
|
+
`Both width and height must be specified. One of them is missing for main: ${JSON.stringify(
|
|
761
|
+
main
|
|
762
|
+
)}`
|
|
763
|
+
)
|
|
764
|
+
);
|
|
622
765
|
}
|
|
623
766
|
|
|
624
767
|
if (content && (!content.width || !content.height)) {
|
|
625
|
-
return Promise.reject(
|
|
768
|
+
return Promise.reject(
|
|
769
|
+
new Error(
|
|
770
|
+
`Both width and height must be specified. One of them is missing for content: ${JSON.stringify(
|
|
771
|
+
content
|
|
772
|
+
)}`
|
|
773
|
+
)
|
|
774
|
+
);
|
|
626
775
|
}
|
|
627
776
|
|
|
628
|
-
const renderInfoMain =
|
|
629
|
-
const renderInfoContent =
|
|
630
|
-
|
|
631
|
-
const layoutParams =
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
777
|
+
const renderInfoMain = main ? {width: main.width, height: main.height} : undefined;
|
|
778
|
+
const renderInfoContent = content ? {width: content.width, height: content.height} : undefined;
|
|
779
|
+
|
|
780
|
+
const layoutParams =
|
|
781
|
+
renderInfoMain || renderInfoContent
|
|
782
|
+
? {
|
|
783
|
+
renderInfo: {
|
|
784
|
+
main: renderInfoMain,
|
|
785
|
+
content: renderInfoContent,
|
|
786
|
+
},
|
|
787
|
+
}
|
|
788
|
+
: undefined;
|
|
789
|
+
|
|
790
|
+
// @ts-ignore
|
|
791
|
+
return this.locusDeltaRequest({
|
|
641
792
|
method: HTTP_VERBS.PUT,
|
|
642
793
|
uri: `${locusUrl}/${CONTROLS}`,
|
|
643
794
|
body: {
|
|
644
795
|
layout: {
|
|
645
796
|
deviceUrl,
|
|
646
797
|
type: layoutType,
|
|
647
|
-
layoutParams
|
|
648
|
-
}
|
|
649
|
-
}
|
|
798
|
+
layoutParams,
|
|
799
|
+
},
|
|
800
|
+
},
|
|
650
801
|
});
|
|
651
802
|
}
|
|
652
803
|
|
|
@@ -656,14 +807,13 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
656
807
|
* @param {Url} options.locusUrl
|
|
657
808
|
* @returns {Promise}
|
|
658
809
|
*/
|
|
659
|
-
endMeetingForAll({
|
|
660
|
-
locusUrl,
|
|
661
|
-
}) {
|
|
810
|
+
endMeetingForAll({locusUrl}: {locusUrl: string}) {
|
|
662
811
|
const uri = `${locusUrl}/${END}`;
|
|
663
812
|
|
|
664
|
-
|
|
813
|
+
// @ts-ignore
|
|
814
|
+
return this.locusDeltaRequest({
|
|
665
815
|
method: HTTP_VERBS.POST,
|
|
666
|
-
uri
|
|
816
|
+
uri,
|
|
667
817
|
});
|
|
668
818
|
}
|
|
669
819
|
|
|
@@ -673,12 +823,63 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
673
823
|
* @param {Url} options.keepAliveUrl
|
|
674
824
|
* @returns {Promise}
|
|
675
825
|
*/
|
|
676
|
-
keepAlive({
|
|
677
|
-
|
|
678
|
-
|
|
826
|
+
keepAlive({keepAliveUrl}: {keepAliveUrl: string}) {
|
|
827
|
+
// @ts-ignore
|
|
828
|
+
return this.request({
|
|
829
|
+
method: HTTP_VERBS.GET,
|
|
830
|
+
uri: keepAliveUrl,
|
|
831
|
+
});
|
|
832
|
+
}
|
|
833
|
+
|
|
834
|
+
/**
|
|
835
|
+
* Make a network request to send a reaction.
|
|
836
|
+
* @param {Object} options
|
|
837
|
+
* @param {Url} options.reactionChannelUrl
|
|
838
|
+
* @param {Reaction} options.reaction
|
|
839
|
+
* @param {string} options.senderID
|
|
840
|
+
* @returns {Promise}
|
|
841
|
+
*/
|
|
842
|
+
sendReaction({reactionChannelUrl, reaction, participantId}: SendReactionOptions) {
|
|
843
|
+
const uri = reactionChannelUrl;
|
|
844
|
+
|
|
845
|
+
// @ts-ignore
|
|
846
|
+
return this.request({
|
|
847
|
+
method: HTTP_VERBS.POST,
|
|
848
|
+
uri,
|
|
849
|
+
body: {
|
|
850
|
+
sender: {participantId},
|
|
851
|
+
reaction,
|
|
852
|
+
},
|
|
853
|
+
});
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
/**
|
|
857
|
+
* Make a network request to enable or disable reactions.
|
|
858
|
+
* @param {boolean} options.enable - determines if we need to enable or disable.
|
|
859
|
+
* @param {locusUrl} options.locusUrl
|
|
860
|
+
* @returns {Promise}
|
|
861
|
+
*/
|
|
862
|
+
toggleReactions({enable, locusUrl, requestingParticipantId}: ToggleReactionsOptions) {
|
|
863
|
+
const uri = `${locusUrl}/${CONTROLS}`;
|
|
864
|
+
|
|
865
|
+
// @ts-ignore
|
|
866
|
+
return this.locusDeltaRequest({
|
|
867
|
+
method: HTTP_VERBS.PUT,
|
|
868
|
+
uri,
|
|
869
|
+
body: {
|
|
870
|
+
reactions: {
|
|
871
|
+
enabled: enable,
|
|
872
|
+
},
|
|
873
|
+
requestingParticipantId,
|
|
874
|
+
},
|
|
875
|
+
});
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
getLocusStatusByUrl(locusUrl: string) {
|
|
879
|
+
// @ts-ignore
|
|
679
880
|
return this.request({
|
|
680
881
|
method: HTTP_VERBS.GET,
|
|
681
|
-
uri:
|
|
882
|
+
uri: locusUrl,
|
|
682
883
|
});
|
|
683
884
|
}
|
|
684
885
|
}
|