@webex/plugin-meetings 3.0.0-stream-classes.5 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +6 -0
- package/README.md +12 -0
- package/babel.config.js +3 -0
- package/dist/annotation/constants.js +12 -20
- package/dist/annotation/constants.js.map +1 -1
- package/dist/annotation/index.js +25 -10
- package/dist/annotation/index.js.map +1 -1
- package/dist/breakouts/breakout.js +2 -3
- package/dist/breakouts/breakout.js.map +1 -1
- package/dist/breakouts/collection.js +1 -2
- package/dist/breakouts/collection.js.map +1 -1
- package/dist/breakouts/edit-lock-error.js +1 -2
- package/dist/breakouts/edit-lock-error.js.map +1 -1
- package/dist/breakouts/events.js +1 -2
- package/dist/breakouts/events.js.map +1 -1
- package/dist/breakouts/index.js +13 -14
- package/dist/breakouts/index.js.map +1 -1
- package/dist/breakouts/request.js +1 -2
- package/dist/breakouts/request.js.map +1 -1
- package/dist/breakouts/utils.js +3 -6
- package/dist/breakouts/utils.js.map +1 -1
- package/dist/common/browser-detection.js +2 -3
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +3 -4
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +1 -2
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +1 -2
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +1 -2
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +1 -2
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +1 -2
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/no-meeting-info.d.ts +14 -0
- package/dist/common/errors/no-meeting-info.js +50 -0
- package/dist/common/errors/no-meeting-info.js.map +1 -0
- package/dist/common/errors/parameter.js +3 -4
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +1 -2
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +1 -2
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reclaim-host-role-errors.d.ts +60 -0
- package/dist/common/errors/reclaim-host-role-errors.js +154 -0
- package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
- package/dist/common/errors/reconnection-in-progress.js +1 -2
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +1 -2
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +1 -2
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/{types/common → common}/errors/webex-errors.d.ts +13 -1
- package/dist/common/errors/webex-errors.js +35 -16
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +1 -2
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +1 -2
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +1 -2
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +1 -2
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +1 -2
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +1 -2
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -2
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/{types/common → common}/logs/request.d.ts +3 -1
- package/dist/common/logs/request.js +8 -5
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +2 -4
- package/dist/common/queue.js.map +1 -1
- package/dist/{types/config.d.ts → config.d.ts} +1 -1
- package/dist/config.js +3 -3
- package/dist/config.js.map +1 -1
- package/dist/{types/constants.d.ts → constants.d.ts} +71 -15
- package/dist/constants.js +252 -371
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +3 -6
- package/dist/controls-options-manager/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +7 -10
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.js +27 -32
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/util.js +1 -2
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/index.js +8 -5
- package/dist/index.js.map +1 -1
- package/dist/interceptors/index.d.ts +2 -0
- package/dist/interceptors/index.js +15 -0
- package/dist/interceptors/index.js.map +1 -0
- package/dist/interceptors/locusRetry.d.ts +27 -0
- package/dist/interceptors/locusRetry.js +94 -0
- package/dist/interceptors/locusRetry.js.map +1 -0
- package/dist/interpretation/collection.js +1 -2
- package/dist/interpretation/collection.js.map +1 -1
- package/dist/interpretation/index.js +2 -3
- package/dist/interpretation/index.js.map +1 -1
- package/dist/interpretation/siLanguage.js +2 -3
- package/dist/interpretation/siLanguage.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +12 -13
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -4
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +1 -2
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +1 -2
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/{types/locus-info → locus-info}/index.d.ts +1 -1
- package/dist/locus-info/index.js +38 -37
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +3 -4
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +16 -3
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/{types/locus-info → locus-info}/parser.d.ts +3 -2
- package/dist/locus-info/parser.js +43 -31
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +7 -6
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +15 -10
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +16 -7
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +1 -2
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.d.ts +241 -0
- package/dist/mediaQualityMetrics/config.js +135 -339
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/{types/meeting → meeting}/in-meeting-actions.d.ts +4 -0
- package/dist/meeting/in-meeting-actions.js +18 -2
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/{types/meeting → meeting}/index.d.ts +318 -45
- package/dist/meeting/index.js +2620 -1405
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +4 -5
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/meeting/muteState.js +2 -4
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/{types/meeting → meeting}/request.d.ts +2 -0
- package/dist/meeting/request.js +46 -31
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/state.js +1 -2
- package/dist/meeting/state.js.map +1 -1
- package/dist/{types/meeting → meeting}/util.d.ts +17 -0
- package/dist/meeting/util.js +83 -10
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting/voicea-meeting.d.ts +16 -0
- package/dist/meeting/voicea-meeting.js +169 -0
- package/dist/meeting/voicea-meeting.js.map +1 -0
- package/dist/meeting-info/collection.js +3 -4
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/{types/meeting-info → meeting-info}/index.d.ts +7 -0
- package/dist/meeting-info/index.js +53 -27
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/{types/meeting-info → meeting-info}/meeting-info-v2.d.ts +1 -0
- package/dist/meeting-info/meeting-info-v2.js +52 -33
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +1 -2
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +8 -8
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +12 -9
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/{types/meetings → meetings}/collection.d.ts +9 -0
- package/dist/meetings/collection.js +21 -5
- package/dist/meetings/collection.js.map +1 -1
- package/dist/{types/meetings → meetings}/index.d.ts +45 -16
- package/dist/meetings/index.js +166 -74
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +2 -3
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +3 -10
- package/dist/meetings/util.js.map +1 -1
- package/dist/{types/member → member}/index.d.ts +1 -0
- package/dist/member/index.js +10 -3
- package/dist/member/index.js.map +1 -1
- package/dist/member/member.types.d.ts +11 -0
- package/dist/member/member.types.js +17 -0
- package/dist/member/member.types.js.map +1 -0
- package/dist/member/types.js +6 -8
- package/dist/member/types.js.map +1 -1
- package/dist/member/util.js +12 -2
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +1 -2
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +25 -8
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +2 -3
- package/dist/members/request.js.map +1 -1
- package/dist/{types/members → members}/types.d.ts +1 -0
- package/dist/members/types.js +3 -4
- package/dist/members/types.js.map +1 -1
- package/dist/{types/members → members}/util.d.ts +6 -1
- package/dist/members/util.js +18 -8
- package/dist/members/util.js.map +1 -1
- package/dist/{types/metrics → metrics}/constants.d.ts +12 -0
- package/dist/metrics/constants.js +14 -3
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +3 -2
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +9 -11
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +3 -5
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +7 -9
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +3 -5
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +7 -6
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +28 -27
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +9 -6
- package/dist/multistream/sendSlotManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +1 -2
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +2 -3
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +2 -3
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +1 -2
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/clusterReachability.d.ts +109 -0
- package/dist/reachability/clusterReachability.js +357 -0
- package/dist/reachability/clusterReachability.js.map +1 -0
- package/dist/reachability/index.d.ts +105 -0
- package/dist/reachability/index.js +279 -436
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +14 -11
- package/dist/reachability/request.js.map +1 -1
- package/dist/reachability/util.d.ts +8 -0
- package/dist/reachability/util.js +29 -0
- package/dist/reachability/util.js.map +1 -0
- package/dist/reactions/constants.js +1 -2
- package/dist/reactions/constants.js.map +1 -1
- package/dist/reactions/reactions.js +2 -4
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.js +6 -8
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/{types/reconnection-manager → reconnection-manager}/index.d.ts +10 -0
- package/dist/reconnection-manager/index.js +129 -106
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +4 -5
- package/dist/recording-controller/enums.js.map +1 -1
- package/dist/recording-controller/index.js +43 -51
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.js +1 -2
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/{types/roap → roap}/index.d.ts +2 -1
- package/dist/roap/index.js +59 -28
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +14 -22
- package/dist/roap/request.js.map +1 -1
- package/dist/{types/roap → roap}/turnDiscovery.d.ts +21 -4
- package/dist/roap/turnDiscovery.js +182 -89
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/rtcMetrics/constants.js +1 -2
- package/dist/rtcMetrics/constants.js.map +1 -1
- package/dist/{types/rtcMetrics → rtcMetrics}/index.d.ts +15 -1
- package/dist/rtcMetrics/index.js +72 -12
- package/dist/rtcMetrics/index.js.map +1 -1
- package/dist/statsAnalyzer/global.js +1 -2
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/{types/statsAnalyzer → statsAnalyzer}/index.d.ts +28 -11
- package/dist/statsAnalyzer/index.js +371 -318
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.d.ts +48 -0
- package/dist/statsAnalyzer/mqaUtil.js +295 -162
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +1 -2
- package/dist/transcription/index.js.map +1 -1
- package/dist/webinar/collection.d.ts +16 -0
- package/dist/webinar/collection.js +43 -0
- package/dist/webinar/collection.js.map +1 -0
- package/dist/webinar/index.d.ts +5 -0
- package/dist/webinar/index.js +68 -0
- package/dist/webinar/index.js.map +1 -0
- package/jest.config.js +3 -0
- package/package.json +44 -24
- package/process +1 -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 +19 -2
- package/src/common/logs/request.ts +5 -1
- package/src/config.ts +3 -5
- package/src/constants.ts +77 -8
- package/src/index.ts +4 -0
- package/src/interceptors/index.ts +3 -0
- package/src/interceptors/locusRetry.ts +67 -0
- package/src/locus-info/index.ts +19 -14
- package/src/locus-info/mediaSharesUtils.ts +16 -0
- package/src/locus-info/parser.ts +40 -21
- package/src/media/index.ts +8 -6
- package/src/media/properties.ts +17 -2
- package/src/mediaQualityMetrics/config.ts +103 -238
- package/src/meeting/in-meeting-actions.ts +8 -0
- package/src/meeting/index.ts +1664 -642
- package/src/meeting/request.ts +18 -0
- package/src/meeting/util.ts +102 -1
- package/src/meeting/voicea-meeting.ts +122 -0
- package/src/meeting-info/index.ts +47 -20
- package/src/meeting-info/meeting-info-v2.ts +32 -16
- package/src/meeting-info/util.ts +12 -9
- package/src/meeting-info/utilv2.ts +25 -15
- package/src/meetings/collection.ts +13 -0
- package/src/meetings/index.ts +112 -31
- package/src/meetings/util.ts +2 -8
- package/src/member/index.ts +9 -1
- package/src/member/member.types.ts +13 -0
- package/src/member/util.ts +14 -0
- package/src/members/index.ts +29 -2
- package/src/members/types.ts +1 -0
- package/src/members/util.ts +15 -1
- package/src/metrics/constants.ts +12 -0
- package/src/reachability/clusterReachability.ts +320 -0
- package/src/reachability/index.ts +221 -382
- package/src/reachability/request.ts +1 -1
- package/src/reachability/util.ts +24 -0
- package/src/reconnection-manager/index.ts +87 -83
- package/src/roap/index.ts +60 -24
- package/src/roap/request.ts +4 -17
- package/src/roap/turnDiscovery.ts +112 -39
- package/src/rtcMetrics/index.ts +71 -5
- package/src/statsAnalyzer/index.ts +430 -427
- package/src/statsAnalyzer/mqaUtil.ts +317 -168
- package/src/webinar/collection.ts +31 -0
- package/src/webinar/index.ts +62 -0
- package/test/integration/spec/journey.js +12 -12
- package/test/integration/spec/space-meeting.js +1 -1
- package/test/unit/spec/breakouts/breakout.ts +2 -1
- package/test/unit/spec/breakouts/index.ts +7 -4
- package/test/unit/spec/interceptors/locusRetry.ts +131 -0
- package/test/unit/spec/locus-info/index.js +88 -12
- package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +10 -0
- package/test/unit/spec/locus-info/parser.js +54 -13
- package/test/unit/spec/locus-info/selfUtils.js +1 -1
- package/test/unit/spec/media/index.ts +25 -4
- package/test/unit/spec/media/properties.ts +2 -2
- package/test/unit/spec/meeting/in-meeting-actions.ts +4 -0
- package/test/unit/spec/meeting/index.js +4388 -1382
- package/test/unit/spec/meeting/request.js +63 -12
- package/test/unit/spec/meeting/utils.js +145 -10
- package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
- package/test/unit/spec/meeting-info/index.js +180 -61
- package/test/unit/spec/meeting-info/meetinginfov2.js +216 -68
- package/test/unit/spec/meetings/collection.js +12 -0
- package/test/unit/spec/meetings/index.js +674 -193
- package/test/unit/spec/meetings/utils.js +35 -12
- package/test/unit/spec/member/index.js +8 -7
- package/test/unit/spec/member/util.js +32 -0
- package/test/unit/spec/members/index.js +130 -17
- package/test/unit/spec/members/utils.js +26 -0
- package/test/unit/spec/metrics/index.js +1 -2
- package/test/unit/spec/multistream/mediaRequestManager.ts +1 -0
- package/test/unit/spec/reachability/clusterReachability.ts +279 -0
- package/test/unit/spec/reachability/index.ts +505 -135
- package/test/unit/spec/reachability/util.ts +40 -0
- package/test/unit/spec/reconnection-manager/index.js +74 -17
- package/test/unit/spec/recording-controller/index.js +0 -1
- package/test/unit/spec/roap/index.ts +181 -61
- package/test/unit/spec/roap/request.ts +27 -3
- package/test/unit/spec/roap/turnDiscovery.ts +363 -102
- package/test/unit/spec/rtcMetrics/index.ts +57 -3
- package/test/unit/spec/stats-analyzer/index.js +1225 -12
- package/test/unit/spec/webinar/collection.ts +13 -0
- package/test/unit/spec/webinar/index.ts +60 -0
- package/test/utils/webex-test-users.js +12 -4
- package/dist/types/mediaQualityMetrics/config.d.ts +0 -365
- package/dist/types/reachability/index.d.ts +0 -152
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -24
- /package/dist/{types/annotation → annotation}/annotation.types.d.ts +0 -0
- /package/dist/{types/annotation → annotation}/constants.d.ts +0 -0
- /package/dist/{types/annotation → annotation}/index.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/breakout.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/collection.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/edit-lock-error.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/events.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/index.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/request.d.ts +0 -0
- /package/dist/{types/breakouts → breakouts}/utils.d.ts +0 -0
- /package/dist/{types/common → common}/browser-detection.d.ts +0 -0
- /package/dist/{types/common → common}/collection.d.ts +0 -0
- /package/dist/{types/common → common}/config.d.ts +0 -0
- /package/dist/{types/common → common}/errors/captcha-error.d.ts +0 -0
- /package/dist/{types/common → common}/errors/intent-to-join.d.ts +0 -0
- /package/dist/{types/common → common}/errors/join-meeting.d.ts +0 -0
- /package/dist/{types/common → common}/errors/media.d.ts +0 -0
- /package/dist/{types/common → common}/errors/parameter.d.ts +0 -0
- /package/dist/{types/common → common}/errors/password-error.d.ts +0 -0
- /package/dist/{types/common → common}/errors/permission.d.ts +0 -0
- /package/dist/{types/common → common}/errors/reconnection-in-progress.d.ts +0 -0
- /package/dist/{types/common → common}/errors/reconnection.d.ts +0 -0
- /package/dist/{types/common → common}/errors/stats.d.ts +0 -0
- /package/dist/{types/common → common}/errors/webex-meetings-error.d.ts +0 -0
- /package/dist/{types/common → common}/events/events-scope.d.ts +0 -0
- /package/dist/{types/common → common}/events/events.d.ts +0 -0
- /package/dist/{types/common → common}/events/trigger-proxy.d.ts +0 -0
- /package/dist/{types/common → common}/events/util.d.ts +0 -0
- /package/dist/{types/common → common}/logs/logger-config.d.ts +0 -0
- /package/dist/{types/common → common}/logs/logger-proxy.d.ts +0 -0
- /package/dist/{types/common → common}/queue.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/constants.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/enums.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/index.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/types.d.ts +0 -0
- /package/dist/{types/controls-options-manager → controls-options-manager}/util.d.ts +0 -0
- /package/dist/{types/index.d.ts → index.d.ts} +0 -0
- /package/dist/{types/interpretation → interpretation}/collection.d.ts +0 -0
- /package/dist/{types/interpretation → interpretation}/index.d.ts +0 -0
- /package/dist/{types/interpretation → interpretation}/siLanguage.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/controlsUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/embeddedAppsUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/fullState.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/hostUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/infoUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/mediaSharesUtils.d.ts +0 -0
- /package/dist/{types/locus-info → locus-info}/selfUtils.d.ts +0 -0
- /package/dist/{types/media → media}/index.d.ts +0 -0
- /package/dist/{types/media → media}/properties.d.ts +0 -0
- /package/dist/{types/media → media}/util.d.ts +0 -0
- /package/dist/{types/meeting → meeting}/locusMediaRequest.d.ts +0 -0
- /package/dist/{types/meeting → meeting}/muteState.d.ts +0 -0
- /package/dist/{types/meeting → meeting}/request.type.d.ts +0 -0
- /package/dist/{types/meeting → meeting}/state.d.ts +0 -0
- /package/dist/{types/meeting-info → meeting-info}/collection.d.ts +0 -0
- /package/dist/{types/meeting-info → meeting-info}/request.d.ts +0 -0
- /package/dist/{types/meeting-info → meeting-info}/util.d.ts +0 -0
- /package/dist/{types/meeting-info → meeting-info}/utilv2.d.ts +0 -0
- /package/dist/{types/meetings → meetings}/meetings.types.d.ts +0 -0
- /package/dist/{types/meetings → meetings}/request.d.ts +0 -0
- /package/dist/{types/meetings → meetings}/util.d.ts +0 -0
- /package/dist/{types/member → member}/types.d.ts +0 -0
- /package/dist/{types/member → member}/util.d.ts +0 -0
- /package/dist/{types/members → members}/collection.d.ts +0 -0
- /package/dist/{types/members → members}/index.d.ts +0 -0
- /package/dist/{types/members → members}/request.d.ts +0 -0
- /package/dist/{types/metrics → metrics}/index.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/mediaRequestManager.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/receiveSlot.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/receiveSlotManager.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/remoteMedia.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/remoteMediaGroup.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/remoteMediaManager.d.ts +0 -0
- /package/dist/{types/multistream → multistream}/sendSlotManager.d.ts +0 -0
- /package/dist/{types/networkQualityMonitor → networkQualityMonitor}/index.d.ts +0 -0
- /package/dist/{types/personal-meeting-room → personal-meeting-room}/index.d.ts +0 -0
- /package/dist/{types/personal-meeting-room → personal-meeting-room}/request.d.ts +0 -0
- /package/dist/{types/personal-meeting-room → personal-meeting-room}/util.d.ts +0 -0
- /package/dist/{types/reachability → reachability}/request.d.ts +0 -0
- /package/dist/{types/reactions → reactions}/constants.d.ts +0 -0
- /package/dist/{types/reactions → reactions}/reactions.d.ts +0 -0
- /package/dist/{types/reactions → reactions}/reactions.type.d.ts +0 -0
- /package/dist/{types/recording-controller → recording-controller}/enums.d.ts +0 -0
- /package/dist/{types/recording-controller → recording-controller}/index.d.ts +0 -0
- /package/dist/{types/recording-controller → recording-controller}/util.d.ts +0 -0
- /package/dist/{types/roap → roap}/request.d.ts +0 -0
- /package/dist/{types/rtcMetrics → rtcMetrics}/constants.d.ts +0 -0
- /package/dist/{types/statsAnalyzer → statsAnalyzer}/global.d.ts +0 -0
- /package/dist/{types/transcription → transcription}/index.d.ts +0 -0
- /package/test/unit/spec/locus-info/{selfConstant.js → lib/selfConstant.js} +0 -0
|
@@ -56,7 +56,7 @@ export default class TurnDiscovery {
|
|
|
56
56
|
* @private
|
|
57
57
|
* @memberof Roap
|
|
58
58
|
*/
|
|
59
|
-
private waitForTurnDiscoveryResponse() {
|
|
59
|
+
private waitForTurnDiscoveryResponse(): Promise<{isOkRequired: boolean}> {
|
|
60
60
|
if (!this.defer) {
|
|
61
61
|
LoggerProxy.logger.warn(
|
|
62
62
|
'Roap:turnDiscovery#waitForTurnDiscoveryResponse --> TURN discovery is not in progress'
|
|
@@ -88,22 +88,32 @@ export default class TurnDiscovery {
|
|
|
88
88
|
* handles TURN_DISCOVERY_RESPONSE roap message
|
|
89
89
|
*
|
|
90
90
|
* @param {Object} roapMessage
|
|
91
|
+
* @param {string} from string to indicate how we got the response (used just for logging)
|
|
91
92
|
* @returns {void}
|
|
92
93
|
* @public
|
|
93
94
|
* @memberof Roap
|
|
94
95
|
*/
|
|
95
|
-
public handleTurnDiscoveryResponse(roapMessage:
|
|
96
|
-
// @ts-ignore - Fix missing type
|
|
96
|
+
public handleTurnDiscoveryResponse(roapMessage: any, from: string) {
|
|
97
97
|
const {headers} = roapMessage;
|
|
98
98
|
|
|
99
99
|
if (!this.defer) {
|
|
100
100
|
LoggerProxy.logger.warn(
|
|
101
|
-
|
|
101
|
+
`Roap:turnDiscovery#handleTurnDiscoveryResponse --> unexpected TURN discovery response ${from}`
|
|
102
102
|
);
|
|
103
103
|
|
|
104
104
|
return;
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
+
if (roapMessage.messageType !== ROAP.ROAP_TYPES.TURN_DISCOVERY_RESPONSE) {
|
|
108
|
+
this.defer.reject(
|
|
109
|
+
new Error(
|
|
110
|
+
`TURN_DISCOVERY_RESPONSE ${from} has unexpected messageType: ${JSON.stringify(
|
|
111
|
+
roapMessage
|
|
112
|
+
)}`
|
|
113
|
+
)
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
|
|
107
117
|
const expectedHeaders = [
|
|
108
118
|
{headerName: 'x-cisco-turn-url', field: 'url'},
|
|
109
119
|
{headerName: 'x-cisco-turn-username', field: 'username'},
|
|
@@ -129,21 +139,39 @@ export default class TurnDiscovery {
|
|
|
129
139
|
|
|
130
140
|
if (foundHeaders !== expectedHeaders.length) {
|
|
131
141
|
LoggerProxy.logger.warn(
|
|
132
|
-
`Roap:turnDiscovery#handleTurnDiscoveryResponse --> missing some headers, received: ${JSON.stringify(
|
|
142
|
+
`Roap:turnDiscovery#handleTurnDiscoveryResponse --> missing some headers, received ${from}: ${JSON.stringify(
|
|
133
143
|
headers
|
|
134
144
|
)}`
|
|
135
145
|
);
|
|
136
146
|
this.defer.reject(
|
|
137
|
-
new Error(
|
|
147
|
+
new Error(
|
|
148
|
+
`TURN_DISCOVERY_RESPONSE ${from} missing some headers: ${JSON.stringify(headers)}`
|
|
149
|
+
)
|
|
138
150
|
);
|
|
139
151
|
} else {
|
|
140
152
|
LoggerProxy.logger.info(
|
|
141
|
-
`Roap:turnDiscovery#handleTurnDiscoveryResponse --> received a valid response, url=${this.turnInfo.url}`
|
|
153
|
+
`Roap:turnDiscovery#handleTurnDiscoveryResponse --> received a valid response ${from}, url=${this.turnInfo.url}`
|
|
142
154
|
);
|
|
143
|
-
|
|
155
|
+
|
|
156
|
+
this.defer.resolve({isOkRequired: !headers?.includes('noOkInTransaction')});
|
|
144
157
|
}
|
|
145
158
|
}
|
|
146
159
|
|
|
160
|
+
/**
|
|
161
|
+
* handles TURN_DISCOVERY_RESPONSE roap message that came in http response
|
|
162
|
+
*
|
|
163
|
+
* @param {Object} roapMessage
|
|
164
|
+
* @returns {Promise}
|
|
165
|
+
* @memberof Roap
|
|
166
|
+
*/
|
|
167
|
+
private async handleTurnDiscoveryResponseInHttpResponse(
|
|
168
|
+
roapMessage: object
|
|
169
|
+
): Promise<{isOkRequired: boolean}> {
|
|
170
|
+
this.handleTurnDiscoveryResponse(roapMessage, 'in http response');
|
|
171
|
+
|
|
172
|
+
return this.defer.promise;
|
|
173
|
+
}
|
|
174
|
+
|
|
147
175
|
/**
|
|
148
176
|
* sends the TURN_DISCOVERY_REQUEST roap request
|
|
149
177
|
*
|
|
@@ -168,6 +196,7 @@ export default class TurnDiscovery {
|
|
|
168
196
|
messageType: ROAP.ROAP_TYPES.TURN_DISCOVERY_REQUEST,
|
|
169
197
|
version: ROAP.ROAP_VERSION,
|
|
170
198
|
seq: TURN_DISCOVERY_SEQ,
|
|
199
|
+
headers: ['includeAnswerInHttpResponse', 'noOkInTransaction'],
|
|
171
200
|
};
|
|
172
201
|
|
|
173
202
|
LoggerProxy.logger.info(
|
|
@@ -186,10 +215,41 @@ export default class TurnDiscovery {
|
|
|
186
215
|
// @ts-ignore - because of meeting.webex
|
|
187
216
|
ipVersion: MeetingUtil.getIpVersion(meeting.webex),
|
|
188
217
|
})
|
|
189
|
-
.then((
|
|
218
|
+
.then((response) => {
|
|
219
|
+
const {mediaConnections} = response;
|
|
220
|
+
|
|
221
|
+
let turnDiscoveryResponse;
|
|
222
|
+
|
|
190
223
|
if (mediaConnections) {
|
|
191
224
|
meeting.updateMediaConnections(mediaConnections);
|
|
225
|
+
|
|
226
|
+
if (mediaConnections[0]?.remoteSdp) {
|
|
227
|
+
const remoteSdp = JSON.parse(mediaConnections[0].remoteSdp);
|
|
228
|
+
|
|
229
|
+
if (remoteSdp.roapMessage) {
|
|
230
|
+
// yes, it's misleading that remoteSdp actually contains a TURN discovery response, but that's how the backend works...
|
|
231
|
+
const {seq, messageType, errorType, errorCause, headers} = remoteSdp.roapMessage;
|
|
232
|
+
|
|
233
|
+
turnDiscoveryResponse = {
|
|
234
|
+
seq,
|
|
235
|
+
messageType,
|
|
236
|
+
errorType,
|
|
237
|
+
errorCause,
|
|
238
|
+
headers,
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
if (!turnDiscoveryResponse) {
|
|
245
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ROAP_HTTP_RESPONSE_MISSING, {
|
|
246
|
+
correlationId: meeting.correlationId,
|
|
247
|
+
messageType: 'TURN_DISCOVERY_RESPONSE',
|
|
248
|
+
isMultistream: meeting.isMultistream,
|
|
249
|
+
});
|
|
192
250
|
}
|
|
251
|
+
|
|
252
|
+
return turnDiscoveryResponse;
|
|
193
253
|
});
|
|
194
254
|
}
|
|
195
255
|
|
|
@@ -225,10 +285,11 @@ export default class TurnDiscovery {
|
|
|
225
285
|
* @returns {Promise<string>} Promise with empty string if reachability is not skipped or a reason if it is skipped
|
|
226
286
|
*/
|
|
227
287
|
private async getSkipReason(meeting: Meeting): Promise<string> {
|
|
228
|
-
|
|
229
|
-
|
|
288
|
+
const isAnyPublicClusterReachable =
|
|
289
|
+
// @ts-ignore - fix type
|
|
290
|
+
await meeting.webex.meetings.reachability.isAnyPublicClusterReachable();
|
|
230
291
|
|
|
231
|
-
if (
|
|
292
|
+
if (isAnyPublicClusterReachable) {
|
|
232
293
|
LoggerProxy.logger.info(
|
|
233
294
|
'Roap:turnDiscovery#getSkipReason --> reachability has not failed, skipping TURN discovery'
|
|
234
295
|
);
|
|
@@ -236,15 +297,6 @@ export default class TurnDiscovery {
|
|
|
236
297
|
return 'reachability';
|
|
237
298
|
}
|
|
238
299
|
|
|
239
|
-
// @ts-ignore - fix type
|
|
240
|
-
if (!meeting.config.experimental.enableTurnDiscovery) {
|
|
241
|
-
LoggerProxy.logger.info(
|
|
242
|
-
'Roap:turnDiscovery#getSkipReason --> TURN discovery disabled in config, skipping it'
|
|
243
|
-
);
|
|
244
|
-
|
|
245
|
-
return 'config';
|
|
246
|
-
}
|
|
247
|
-
|
|
248
300
|
return '';
|
|
249
301
|
}
|
|
250
302
|
|
|
@@ -273,12 +325,17 @@ export default class TurnDiscovery {
|
|
|
273
325
|
* so it works fine no matter if TURN discovery is done or not.
|
|
274
326
|
*
|
|
275
327
|
* @param {Meeting} meeting
|
|
276
|
-
* @param {Boolean} isReconnecting should be set to true if this is a new
|
|
328
|
+
* @param {Boolean} [isReconnecting] should be set to true if this is a new
|
|
277
329
|
* media connection just after a reconnection
|
|
330
|
+
* @param {Boolean} [isForced]
|
|
278
331
|
* @returns {Promise}
|
|
279
332
|
*/
|
|
280
|
-
async doTurnDiscovery(meeting: Meeting, isReconnecting?: boolean) {
|
|
281
|
-
|
|
333
|
+
async doTurnDiscovery(meeting: Meeting, isReconnecting?: boolean, isForced?: boolean) {
|
|
334
|
+
let turnDiscoverySkippedReason: string;
|
|
335
|
+
|
|
336
|
+
if (!isForced) {
|
|
337
|
+
turnDiscoverySkippedReason = await this.getSkipReason(meeting);
|
|
338
|
+
}
|
|
282
339
|
|
|
283
340
|
if (turnDiscoverySkippedReason) {
|
|
284
341
|
return {
|
|
@@ -287,30 +344,46 @@ export default class TurnDiscovery {
|
|
|
287
344
|
};
|
|
288
345
|
}
|
|
289
346
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
.then(() => this.sendRoapOK(meeting))
|
|
293
|
-
.then(() => {
|
|
294
|
-
this.defer = undefined;
|
|
347
|
+
try {
|
|
348
|
+
const httpResponse = await this.sendRoapTurnDiscoveryRequest(meeting, isReconnecting);
|
|
295
349
|
|
|
296
|
-
|
|
350
|
+
// if we haven't got the response over http, we need to wait for it to come over the websocket via Mercury
|
|
351
|
+
const {isOkRequired} = httpResponse
|
|
352
|
+
? await this.handleTurnDiscoveryResponseInHttpResponse(httpResponse)
|
|
353
|
+
: await this.waitForTurnDiscoveryResponse();
|
|
354
|
+
|
|
355
|
+
if (isOkRequired) {
|
|
356
|
+
await this.sendRoapOK(meeting);
|
|
297
357
|
|
|
298
|
-
return {turnServerInfo: this.turnInfo, turnDiscoverySkippedReason: undefined};
|
|
299
|
-
})
|
|
300
|
-
.catch((e) => {
|
|
301
|
-
// we catch any errors and resolve with no turn information so that the normal call join flow can continue without TURN
|
|
302
358
|
LoggerProxy.logger.info(
|
|
303
|
-
|
|
359
|
+
'Roap:turnDiscovery#doTurnDiscovery --> TURN discovery response requires OK'
|
|
304
360
|
);
|
|
305
361
|
|
|
306
|
-
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.
|
|
362
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.TURN_DISCOVERY_REQUIRES_OK, {
|
|
307
363
|
correlation_id: meeting.correlationId,
|
|
308
364
|
locus_id: meeting.locusUrl.split('/').pop(),
|
|
309
|
-
reason: e.message,
|
|
310
|
-
stack: e.stack,
|
|
311
365
|
});
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
this.defer = undefined;
|
|
312
369
|
|
|
313
|
-
|
|
370
|
+
LoggerProxy.logger.info('Roap:turnDiscovery#doTurnDiscovery --> TURN discovery completed');
|
|
371
|
+
|
|
372
|
+
return {turnServerInfo: this.turnInfo, turnDiscoverySkippedReason: undefined};
|
|
373
|
+
} catch (e) {
|
|
374
|
+
// we catch any errors and resolve with no turn information so that the normal call join flow can continue without TURN
|
|
375
|
+
LoggerProxy.logger.info(
|
|
376
|
+
`Roap:turnDiscovery#doTurnDiscovery --> TURN discovery failed, continuing without TURN: ${e}`
|
|
377
|
+
);
|
|
378
|
+
|
|
379
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.TURN_DISCOVERY_FAILURE, {
|
|
380
|
+
correlation_id: meeting.correlationId,
|
|
381
|
+
locus_id: meeting.locusUrl.split('/').pop(),
|
|
382
|
+
reason: e.message,
|
|
383
|
+
stack: e.stack,
|
|
314
384
|
});
|
|
385
|
+
|
|
386
|
+
return {turnServerInfo: undefined, turnDiscoverySkippedReason: undefined};
|
|
387
|
+
}
|
|
315
388
|
}
|
|
316
389
|
}
|
package/src/rtcMetrics/index.ts
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
|
+
/* eslint-disable class-methods-use-this */
|
|
2
|
+
import {CallDiagnosticUtils} from '@webex/internal-plugin-metrics';
|
|
3
|
+
import uuid from 'uuid';
|
|
1
4
|
import RTC_METRICS from './constants';
|
|
2
5
|
|
|
6
|
+
const parseJsonPayload = (payload: any[]): any | null => {
|
|
7
|
+
try {
|
|
8
|
+
if (payload && payload[0]) {
|
|
9
|
+
return JSON.parse(payload[0]);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
return null;
|
|
13
|
+
} catch (_) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
|
|
3
18
|
/**
|
|
4
19
|
* Rtc Metrics
|
|
5
20
|
*/
|
|
@@ -17,6 +32,8 @@ export default class RtcMetrics {
|
|
|
17
32
|
|
|
18
33
|
correlationId: string;
|
|
19
34
|
|
|
35
|
+
connectionId: string;
|
|
36
|
+
|
|
20
37
|
/**
|
|
21
38
|
* Initialize the interval.
|
|
22
39
|
*
|
|
@@ -26,12 +43,13 @@ export default class RtcMetrics {
|
|
|
26
43
|
*/
|
|
27
44
|
constructor(webex, meetingId, correlationId) {
|
|
28
45
|
// `window` is used to prevent typescript from returning a NodeJS.Timer.
|
|
29
|
-
this.intervalId = window.setInterval(this.
|
|
46
|
+
this.intervalId = window.setInterval(this.sendMetricsInQueue.bind(this), 30 * 1000);
|
|
30
47
|
this.meetingId = meetingId;
|
|
31
48
|
this.webex = webex;
|
|
32
49
|
this.correlationId = correlationId;
|
|
50
|
+
this.setNewConnectionId();
|
|
33
51
|
// Send the first set of metrics at 5 seconds in the case of a user leaving the call shortly after joining.
|
|
34
|
-
setTimeout(this.
|
|
52
|
+
setTimeout(this.sendMetricsInQueue.bind(this), 5 * 1000);
|
|
35
53
|
}
|
|
36
54
|
|
|
37
55
|
/**
|
|
@@ -39,7 +57,7 @@ export default class RtcMetrics {
|
|
|
39
57
|
*
|
|
40
58
|
* @returns {void}
|
|
41
59
|
*/
|
|
42
|
-
|
|
60
|
+
public sendMetricsInQueue() {
|
|
43
61
|
if (this.metricsQueue.length) {
|
|
44
62
|
this.sendMetrics();
|
|
45
63
|
this.metricsQueue = [];
|
|
@@ -55,7 +73,26 @@ export default class RtcMetrics {
|
|
|
55
73
|
*/
|
|
56
74
|
addMetrics(data) {
|
|
57
75
|
if (data.payload.length) {
|
|
76
|
+
if (data.name === 'stats-report') {
|
|
77
|
+
data.payload = data.payload.map(this.anonymizeIp);
|
|
78
|
+
}
|
|
79
|
+
|
|
58
80
|
this.metricsQueue.push(data);
|
|
81
|
+
|
|
82
|
+
try {
|
|
83
|
+
// If a connection fails, send the rest of the metrics in queue and get a new connection id.
|
|
84
|
+
const parsedPayload = parseJsonPayload(data.payload);
|
|
85
|
+
if (
|
|
86
|
+
data.name === 'onconnectionstatechange' &&
|
|
87
|
+
parsedPayload &&
|
|
88
|
+
parsedPayload.value === 'failed'
|
|
89
|
+
) {
|
|
90
|
+
this.sendMetricsInQueue();
|
|
91
|
+
this.setNewConnectionId();
|
|
92
|
+
}
|
|
93
|
+
} catch (e) {
|
|
94
|
+
console.error(e);
|
|
95
|
+
}
|
|
59
96
|
}
|
|
60
97
|
}
|
|
61
98
|
|
|
@@ -65,10 +102,38 @@ export default class RtcMetrics {
|
|
|
65
102
|
* @returns {void}
|
|
66
103
|
*/
|
|
67
104
|
closeMetrics() {
|
|
68
|
-
this.
|
|
105
|
+
this.sendMetricsInQueue();
|
|
69
106
|
clearInterval(this.intervalId);
|
|
70
107
|
}
|
|
71
108
|
|
|
109
|
+
/**
|
|
110
|
+
* Anonymize IP addresses.
|
|
111
|
+
*
|
|
112
|
+
* @param {array} stats - An RTCStatsReport organized into an array of strings.
|
|
113
|
+
* @returns {string}
|
|
114
|
+
*/
|
|
115
|
+
anonymizeIp(stats: string): string {
|
|
116
|
+
const data = JSON.parse(stats);
|
|
117
|
+
// on local and remote candidates, anonymize the last 4 bits.
|
|
118
|
+
if (data.type === 'local-candidate' || data.type === 'remote-candidate') {
|
|
119
|
+
data.ip = CallDiagnosticUtils.anonymizeIPAddress(data.ip) || undefined;
|
|
120
|
+
data.address = CallDiagnosticUtils.anonymizeIPAddress(data.address) || undefined;
|
|
121
|
+
data.relatedAddress =
|
|
122
|
+
CallDiagnosticUtils.anonymizeIPAddress(data.relatedAddress) || undefined;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return JSON.stringify(data);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Set a new connection id.
|
|
130
|
+
*
|
|
131
|
+
* @returns {void}
|
|
132
|
+
*/
|
|
133
|
+
private setNewConnectionId() {
|
|
134
|
+
this.connectionId = uuid.v4();
|
|
135
|
+
}
|
|
136
|
+
|
|
72
137
|
/**
|
|
73
138
|
* Send metrics to the metrics service.
|
|
74
139
|
*
|
|
@@ -87,10 +152,11 @@ export default class RtcMetrics {
|
|
|
87
152
|
metrics: [
|
|
88
153
|
{
|
|
89
154
|
type: 'webrtc',
|
|
90
|
-
version: '1.0
|
|
155
|
+
version: '1.1.0',
|
|
91
156
|
userId: this.webex.internal.device.userId,
|
|
92
157
|
meetingId: this.meetingId,
|
|
93
158
|
correlationId: this.correlationId,
|
|
159
|
+
connectionId: this.connectionId,
|
|
94
160
|
data: this.metricsQueue,
|
|
95
161
|
},
|
|
96
162
|
],
|