@webex/plugin-meetings 3.6.0-next.9 → 3.7.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/README.md +2 -1
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/config.js +2 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js +24 -2
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +1 -0
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.js +10 -3
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/types.js.map +1 -1
- package/dist/controls-options-manager/util.js +12 -0
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +28 -4
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +2 -1
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/index.js +61 -3
- package/dist/locus-info/index.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +19 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +536 -409
- package/dist/meeting/index.js.map +1 -1
- package/dist/meetings/index.js +2 -0
- package/dist/meetings/index.js.map +1 -1
- package/dist/members/index.js +3 -2
- package/dist/members/index.js.map +1 -1
- package/dist/members/util.js +9 -5
- package/dist/members/util.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +227 -0
- package/dist/networkQualityMonitor/index.js.map +1 -0
- package/dist/reachability/index.js +3 -3
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +2 -1
- package/dist/reachability/request.js.map +1 -1
- package/dist/rtcMetrics/constants.js +11 -0
- package/dist/rtcMetrics/constants.js.map +1 -0
- package/dist/rtcMetrics/index.js +197 -0
- package/dist/rtcMetrics/index.js.map +1 -0
- package/dist/types/config.d.ts +1 -0
- package/dist/types/constants.d.ts +19 -0
- package/dist/types/controls-options-manager/enums.d.ts +2 -1
- package/dist/types/controls-options-manager/index.d.ts +2 -1
- package/dist/types/controls-options-manager/types.d.ts +2 -0
- package/dist/types/locus-info/index.d.ts +9 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +18 -0
- package/dist/types/meeting/index.d.ts +12 -1
- package/dist/types/members/index.d.ts +2 -1
- package/dist/types/members/util.d.ts +3 -1
- package/dist/types/networkQualityMonitor/index.d.ts +70 -0
- package/dist/types/rtcMetrics/constants.d.ts +4 -0
- package/dist/types/rtcMetrics/index.d.ts +71 -0
- package/dist/webinar/index.js +32 -19
- package/dist/webinar/index.js.map +1 -1
- package/package.json +22 -22
- package/src/config.ts +1 -0
- package/src/constants.ts +25 -0
- package/src/controls-options-manager/enums.ts +1 -0
- package/src/controls-options-manager/index.ts +19 -2
- package/src/controls-options-manager/types.ts +2 -0
- package/src/controls-options-manager/util.ts +12 -0
- package/src/locus-info/controlsUtils.ts +46 -2
- package/src/locus-info/fullState.ts +1 -0
- package/src/locus-info/index.ts +60 -0
- package/src/meeting/in-meeting-actions.ts +37 -0
- package/src/meeting/index.ts +114 -9
- package/src/meetings/index.ts +46 -39
- package/src/members/index.ts +4 -2
- package/src/members/util.ts +3 -1
- package/src/reachability/index.ts +3 -3
- package/src/reachability/request.ts +1 -0
- package/src/webinar/index.ts +31 -17
- package/test/unit/spec/controls-options-manager/index.js +56 -32
- package/test/unit/spec/controls-options-manager/util.js +44 -0
- package/test/unit/spec/locus-info/controlsUtils.js +80 -4
- package/test/unit/spec/locus-info/index.js +59 -2
- package/test/unit/spec/meeting/in-meeting-actions.ts +18 -0
- package/test/unit/spec/meeting/index.js +222 -82
- package/test/unit/spec/meetings/index.js +16 -1
- package/test/unit/spec/members/index.js +25 -2
- package/test/unit/spec/members/request.js +37 -3
- package/test/unit/spec/members/utils.js +15 -1
- package/test/unit/spec/reachability/index.ts +1 -1
- package/test/unit/spec/reachability/request.js +13 -8
- package/test/unit/spec/webinar/index.ts +82 -16
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
5
|
+
_Object$defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
11
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
13
|
+
var _internalPluginMetrics = require("@webex/internal-plugin-metrics");
|
|
14
|
+
var _uuid = _interopRequireDefault(require("uuid"));
|
|
15
|
+
var _constants = _interopRequireDefault(require("./constants"));
|
|
16
|
+
/* eslint-disable class-methods-use-this */
|
|
17
|
+
|
|
18
|
+
var parseJsonPayload = function parseJsonPayload(payload) {
|
|
19
|
+
try {
|
|
20
|
+
if (payload && payload[0]) {
|
|
21
|
+
return JSON.parse(payload[0]);
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
} catch (_) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Rtc Metrics
|
|
31
|
+
*/
|
|
32
|
+
var RtcMetrics = exports.default = /*#__PURE__*/function () {
|
|
33
|
+
/**
|
|
34
|
+
* Initialize the interval.
|
|
35
|
+
*
|
|
36
|
+
* @param {object} webex - The main `webex` object.
|
|
37
|
+
* @param {string} meetingId - The meeting id.
|
|
38
|
+
* @param {string} correlationId - The correlation id.
|
|
39
|
+
*/
|
|
40
|
+
function RtcMetrics(webex, meetingId, correlationId) {
|
|
41
|
+
(0, _classCallCheck2.default)(this, RtcMetrics);
|
|
42
|
+
/**
|
|
43
|
+
* Array of MetricData items to be sent to the metrics service.
|
|
44
|
+
*/
|
|
45
|
+
(0, _defineProperty2.default)(this, "metricsQueue", []);
|
|
46
|
+
(0, _defineProperty2.default)(this, "intervalId", void 0);
|
|
47
|
+
(0, _defineProperty2.default)(this, "webex", void 0);
|
|
48
|
+
(0, _defineProperty2.default)(this, "meetingId", void 0);
|
|
49
|
+
(0, _defineProperty2.default)(this, "correlationId", void 0);
|
|
50
|
+
(0, _defineProperty2.default)(this, "connectionId", void 0);
|
|
51
|
+
(0, _defineProperty2.default)(this, "shouldSendMetricsOnNextStatsReport", void 0);
|
|
52
|
+
// `window` is used to prevent typescript from returning a NodeJS.Timer.
|
|
53
|
+
this.intervalId = window.setInterval(this.sendMetricsInQueue.bind(this), 30 * 1000);
|
|
54
|
+
this.meetingId = meetingId;
|
|
55
|
+
this.webex = webex;
|
|
56
|
+
this.correlationId = correlationId;
|
|
57
|
+
this.resetConnection();
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Check to see if the metrics queue has any items.
|
|
62
|
+
*
|
|
63
|
+
* @returns {void}
|
|
64
|
+
*/
|
|
65
|
+
(0, _createClass2.default)(RtcMetrics, [{
|
|
66
|
+
key: "sendMetricsInQueue",
|
|
67
|
+
value: function sendMetricsInQueue() {
|
|
68
|
+
if (this.metricsQueue.length) {
|
|
69
|
+
this.sendMetrics();
|
|
70
|
+
this.metricsQueue = [];
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Forces sending metrics when we get the next stats-report
|
|
76
|
+
*
|
|
77
|
+
* This is useful for cases when something important happens that affects the media connection,
|
|
78
|
+
* for example when we move from lobby into the meeting.
|
|
79
|
+
*
|
|
80
|
+
* @returns {void}
|
|
81
|
+
*/
|
|
82
|
+
}, {
|
|
83
|
+
key: "sendNextMetrics",
|
|
84
|
+
value: function sendNextMetrics() {
|
|
85
|
+
this.shouldSendMetricsOnNextStatsReport = true;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Add metrics items to the metrics queue.
|
|
90
|
+
*
|
|
91
|
+
* @param {object} data - An object with a payload array of metrics items.
|
|
92
|
+
*
|
|
93
|
+
* @returns {void}
|
|
94
|
+
*/
|
|
95
|
+
}, {
|
|
96
|
+
key: "addMetrics",
|
|
97
|
+
value: function addMetrics(data) {
|
|
98
|
+
if (data.payload.length) {
|
|
99
|
+
if (data.name === 'stats-report') {
|
|
100
|
+
data.payload = data.payload.map(this.anonymizeIp);
|
|
101
|
+
}
|
|
102
|
+
this.metricsQueue.push(data);
|
|
103
|
+
if (this.shouldSendMetricsOnNextStatsReport && data.name === 'stats-report') {
|
|
104
|
+
// this is the first useful set of data (WCME gives it to us after 5s), send it out immediately
|
|
105
|
+
// in case the user is unhappy and closes the browser early
|
|
106
|
+
this.sendMetricsInQueue();
|
|
107
|
+
this.shouldSendMetricsOnNextStatsReport = false;
|
|
108
|
+
}
|
|
109
|
+
try {
|
|
110
|
+
// If a connection fails, send the rest of the metrics in queue and get a new connection id.
|
|
111
|
+
var parsedPayload = parseJsonPayload(data.payload);
|
|
112
|
+
if (data.name === 'onconnectionstatechange' && parsedPayload && parsedPayload.value === 'failed') {
|
|
113
|
+
this.sendMetricsInQueue();
|
|
114
|
+
this.resetConnection();
|
|
115
|
+
}
|
|
116
|
+
} catch (e) {
|
|
117
|
+
console.error(e);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Clear the metrics interval.
|
|
124
|
+
*
|
|
125
|
+
* @returns {void}
|
|
126
|
+
*/
|
|
127
|
+
}, {
|
|
128
|
+
key: "closeMetrics",
|
|
129
|
+
value: function closeMetrics() {
|
|
130
|
+
this.sendMetricsInQueue();
|
|
131
|
+
clearInterval(this.intervalId);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Anonymize IP addresses.
|
|
136
|
+
*
|
|
137
|
+
* @param {array} stats - An RTCStatsReport organized into an array of strings.
|
|
138
|
+
* @returns {string}
|
|
139
|
+
*/
|
|
140
|
+
}, {
|
|
141
|
+
key: "anonymizeIp",
|
|
142
|
+
value: function anonymizeIp(stats) {
|
|
143
|
+
var data = JSON.parse(stats);
|
|
144
|
+
// on local and remote candidates, anonymize the last 4 bits.
|
|
145
|
+
if (data.type === 'local-candidate' || data.type === 'remote-candidate') {
|
|
146
|
+
data.ip = _internalPluginMetrics.CallDiagnosticUtils.anonymizeIPAddress(data.ip) || undefined;
|
|
147
|
+
data.address = _internalPluginMetrics.CallDiagnosticUtils.anonymizeIPAddress(data.address) || undefined;
|
|
148
|
+
data.relatedAddress = _internalPluginMetrics.CallDiagnosticUtils.anonymizeIPAddress(data.relatedAddress) || undefined;
|
|
149
|
+
}
|
|
150
|
+
return (0, _stringify.default)(data);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Set a new connection id.
|
|
155
|
+
*
|
|
156
|
+
* @returns {void}
|
|
157
|
+
*/
|
|
158
|
+
}, {
|
|
159
|
+
key: "resetConnection",
|
|
160
|
+
value: function resetConnection() {
|
|
161
|
+
this.connectionId = _uuid.default.v4();
|
|
162
|
+
this.shouldSendMetricsOnNextStatsReport = true;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Send metrics to the metrics service.
|
|
167
|
+
*
|
|
168
|
+
* @returns {void}
|
|
169
|
+
*/
|
|
170
|
+
}, {
|
|
171
|
+
key: "sendMetrics",
|
|
172
|
+
value: function sendMetrics() {
|
|
173
|
+
this.webex.request({
|
|
174
|
+
method: 'POST',
|
|
175
|
+
service: 'unifiedTelemetry',
|
|
176
|
+
resource: 'metric/v2',
|
|
177
|
+
headers: {
|
|
178
|
+
type: 'webrtcMedia',
|
|
179
|
+
appId: _constants.default.APP_ID
|
|
180
|
+
},
|
|
181
|
+
body: {
|
|
182
|
+
metrics: [{
|
|
183
|
+
type: 'webrtc',
|
|
184
|
+
version: '1.1.0',
|
|
185
|
+
userId: this.webex.internal.device.userId,
|
|
186
|
+
meetingId: this.meetingId,
|
|
187
|
+
correlationId: this.correlationId,
|
|
188
|
+
connectionId: this.connectionId,
|
|
189
|
+
data: this.metricsQueue
|
|
190
|
+
}]
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
}]);
|
|
195
|
+
return RtcMetrics;
|
|
196
|
+
}();
|
|
197
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_internalPluginMetrics","require","_uuid","_interopRequireDefault","_constants","parseJsonPayload","payload","JSON","parse","_","RtcMetrics","exports","default","webex","meetingId","correlationId","_classCallCheck2","_defineProperty2","intervalId","window","setInterval","sendMetricsInQueue","bind","resetConnection","_createClass2","key","value","metricsQueue","length","sendMetrics","sendNextMetrics","shouldSendMetricsOnNextStatsReport","addMetrics","data","name","map","anonymizeIp","push","parsedPayload","e","console","error","closeMetrics","clearInterval","stats","type","ip","CallDiagnosticUtils","anonymizeIPAddress","undefined","address","relatedAddress","_stringify","connectionId","uuid","v4","request","method","service","resource","headers","appId","RTC_METRICS","APP_ID","body","metrics","version","userId","internal","device"],"sources":["index.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\nimport {CallDiagnosticUtils} from '@webex/internal-plugin-metrics';\nimport uuid from 'uuid';\nimport RTC_METRICS from './constants';\n\nconst parseJsonPayload = (payload: any[]): any | null => {\n try {\n if (payload && payload[0]) {\n return JSON.parse(payload[0]);\n }\n\n return null;\n } catch (_) {\n return null;\n }\n};\n\n/**\n * Rtc Metrics\n */\nexport default class RtcMetrics {\n /**\n * Array of MetricData items to be sent to the metrics service.\n */\n metricsQueue = [];\n\n intervalId: number;\n\n webex: any;\n\n meetingId: string;\n\n correlationId: string;\n\n connectionId: string;\n\n shouldSendMetricsOnNextStatsReport: boolean;\n\n /**\n * Initialize the interval.\n *\n * @param {object} webex - The main `webex` object.\n * @param {string} meetingId - The meeting id.\n * @param {string} correlationId - The correlation id.\n */\n constructor(webex, meetingId, correlationId) {\n // `window` is used to prevent typescript from returning a NodeJS.Timer.\n this.intervalId = window.setInterval(this.sendMetricsInQueue.bind(this), 30 * 1000);\n this.meetingId = meetingId;\n this.webex = webex;\n this.correlationId = correlationId;\n this.resetConnection();\n }\n\n /**\n * Check to see if the metrics queue has any items.\n *\n * @returns {void}\n */\n public sendMetricsInQueue() {\n if (this.metricsQueue.length) {\n this.sendMetrics();\n this.metricsQueue = [];\n }\n }\n\n /**\n * Forces sending metrics when we get the next stats-report\n *\n * This is useful for cases when something important happens that affects the media connection,\n * for example when we move from lobby into the meeting.\n *\n * @returns {void}\n */\n public sendNextMetrics() {\n this.shouldSendMetricsOnNextStatsReport = true;\n }\n\n /**\n * Add metrics items to the metrics queue.\n *\n * @param {object} data - An object with a payload array of metrics items.\n *\n * @returns {void}\n */\n addMetrics(data) {\n if (data.payload.length) {\n if (data.name === 'stats-report') {\n data.payload = data.payload.map(this.anonymizeIp);\n }\n\n this.metricsQueue.push(data);\n\n if (this.shouldSendMetricsOnNextStatsReport && data.name === 'stats-report') {\n // this is the first useful set of data (WCME gives it to us after 5s), send it out immediately\n // in case the user is unhappy and closes the browser early\n this.sendMetricsInQueue();\n this.shouldSendMetricsOnNextStatsReport = false;\n }\n\n try {\n // If a connection fails, send the rest of the metrics in queue and get a new connection id.\n const parsedPayload = parseJsonPayload(data.payload);\n if (\n data.name === 'onconnectionstatechange' &&\n parsedPayload &&\n parsedPayload.value === 'failed'\n ) {\n this.sendMetricsInQueue();\n this.resetConnection();\n }\n } catch (e) {\n console.error(e);\n }\n }\n }\n\n /**\n * Clear the metrics interval.\n *\n * @returns {void}\n */\n closeMetrics() {\n this.sendMetricsInQueue();\n clearInterval(this.intervalId);\n }\n\n /**\n * Anonymize IP addresses.\n *\n * @param {array} stats - An RTCStatsReport organized into an array of strings.\n * @returns {string}\n */\n anonymizeIp(stats: string): string {\n const data = JSON.parse(stats);\n // on local and remote candidates, anonymize the last 4 bits.\n if (data.type === 'local-candidate' || data.type === 'remote-candidate') {\n data.ip = CallDiagnosticUtils.anonymizeIPAddress(data.ip) || undefined;\n data.address = CallDiagnosticUtils.anonymizeIPAddress(data.address) || undefined;\n data.relatedAddress =\n CallDiagnosticUtils.anonymizeIPAddress(data.relatedAddress) || undefined;\n }\n\n return JSON.stringify(data);\n }\n\n /**\n * Set a new connection id.\n *\n * @returns {void}\n */\n private resetConnection() {\n this.connectionId = uuid.v4();\n this.shouldSendMetricsOnNextStatsReport = true;\n }\n\n /**\n * Send metrics to the metrics service.\n *\n * @returns {void}\n */\n private sendMetrics() {\n this.webex.request({\n method: 'POST',\n service: 'unifiedTelemetry',\n resource: 'metric/v2',\n headers: {\n type: 'webrtcMedia',\n appId: RTC_METRICS.APP_ID,\n },\n body: {\n metrics: [\n {\n type: 'webrtc',\n version: '1.1.0',\n userId: this.webex.internal.device.userId,\n meetingId: this.meetingId,\n correlationId: this.correlationId,\n connectionId: this.connectionId,\n data: this.metricsQueue,\n },\n ],\n },\n });\n }\n}\n"],"mappings":"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"}
|
package/dist/types/config.d.ts
CHANGED
|
@@ -264,6 +264,10 @@ export declare const EVENT_TRIGGERS: {
|
|
|
264
264
|
MEETING_CONTROLS_VIEW_THE_PARTICIPANTS_LIST_UPDATED: string;
|
|
265
265
|
MEETING_CONTROLS_RAISE_HAND_UPDATED: string;
|
|
266
266
|
MEETING_CONTROLS_VIDEO_UPDATED: string;
|
|
267
|
+
MEETING_CONTROLS_STAGE_VIEW_UPDATED: string;
|
|
268
|
+
MEETING_CONTROLS_WEBCAST_UPDATED: string;
|
|
269
|
+
MEETING_CONTROLS_MEETING_FULL_UPDATED: string;
|
|
270
|
+
MEETING_CONTROLS_PRACTICE_SESSION_STATUS_UPDATED: string;
|
|
267
271
|
MEETING_LOCUS_URL_UPDATE: string;
|
|
268
272
|
MEETING_STREAM_PUBLISH_STATE_CHANGED: string;
|
|
269
273
|
MEETING_TRANSCRIPTION_CONNECTED: string;
|
|
@@ -546,7 +550,11 @@ export declare const LOCUSINFO: {
|
|
|
546
550
|
CONTROLS_REACTIONS_CHANGED: string;
|
|
547
551
|
CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED: string;
|
|
548
552
|
CONTROLS_RAISE_HAND_CHANGED: string;
|
|
553
|
+
CONTROLS_WEBCAST_CHANGED: string;
|
|
554
|
+
CONTROLS_MEETING_FULL_CHANGED: string;
|
|
555
|
+
CONTROLS_PRACTICE_SESSION_STATUS_UPDATED: string;
|
|
549
556
|
CONTROLS_VIDEO_CHANGED: string;
|
|
557
|
+
CONTROLS_STAGE_VIEW_UPDATED: string;
|
|
550
558
|
SELF_UNADMITTED_GUEST: string;
|
|
551
559
|
SELF_ADMITTED_GUEST: string;
|
|
552
560
|
SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: string;
|
|
@@ -572,6 +580,7 @@ export declare const LOCUSINFO: {
|
|
|
572
580
|
SELF_MEETING_INTERPRETATION_CHANGED: string;
|
|
573
581
|
MEDIA_INACTIVITY: string;
|
|
574
582
|
LINKS_SERVICES: string;
|
|
583
|
+
LINKS_RESOURCES: string;
|
|
575
584
|
};
|
|
576
585
|
};
|
|
577
586
|
export declare const LOCUSEVENT: {
|
|
@@ -775,6 +784,10 @@ export declare const DISPLAY_HINTS: {
|
|
|
775
784
|
DISABLE_LOBBY_TO_BREAKOUT: string;
|
|
776
785
|
DISABLE_VIEW_THE_PARTICIPANT_LIST: string;
|
|
777
786
|
ENABLE_VIEW_THE_PARTICIPANT_LIST: string;
|
|
787
|
+
DISABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST: string;
|
|
788
|
+
ENABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST: string;
|
|
789
|
+
DISABLE_SHOW_ATTENDEE_COUNT: string;
|
|
790
|
+
ENABLE_SHOW_ATTENDEE_COUNT: string;
|
|
778
791
|
DISABLE_RAISE_HAND: string;
|
|
779
792
|
ENABLE_RAISE_HAND: string;
|
|
780
793
|
DISABLE_VIDEO: string;
|
|
@@ -786,6 +799,12 @@ export declare const DISPLAY_HINTS: {
|
|
|
786
799
|
SHARE_CONTENT: string;
|
|
787
800
|
SHARE_WHITEBOARD: string;
|
|
788
801
|
VOIP_IS_ENABLED: string;
|
|
802
|
+
WEBCAST_CONTROL_START: string;
|
|
803
|
+
WEBCAST_CONTROL_STOP: string;
|
|
804
|
+
STAGE_VIEW_ACTIVE: string;
|
|
805
|
+
STAGE_VIEW_INACTIVE: string;
|
|
806
|
+
ENABLE_STAGE_VIEW: string;
|
|
807
|
+
DISABLE_STAGE_VIEW: string;
|
|
789
808
|
};
|
|
790
809
|
export declare const INTERSTITIAL_DISPLAY_HINTS: string[];
|
|
791
810
|
export declare const SELF_ROLES: {
|
|
@@ -129,8 +129,9 @@ export default class ControlsOptionsManager {
|
|
|
129
129
|
* @param {boolean} mutedEnabled
|
|
130
130
|
* @param {boolean} disallowUnmuteEnabled
|
|
131
131
|
* @param {boolean} muteOnEntryEnabled
|
|
132
|
+
* @param {array} roles which should be muted
|
|
132
133
|
* @memberof ControlsOptionsManager
|
|
133
134
|
* @returns {Promise}
|
|
134
135
|
*/
|
|
135
|
-
setMuteAll(mutedEnabled: boolean, disallowUnmuteEnabled: boolean, muteOnEntryEnabled: boolean): Promise<any>;
|
|
136
|
+
setMuteAll(mutedEnabled: boolean, disallowUnmuteEnabled: boolean, muteOnEntryEnabled: boolean, roles: Array<string>): Promise<any>;
|
|
136
137
|
}
|
|
@@ -29,6 +29,8 @@ export interface VideoProperties {
|
|
|
29
29
|
}
|
|
30
30
|
export interface ViewTheParticipantListProperties {
|
|
31
31
|
enabled?: boolean;
|
|
32
|
+
panelistEnabled?: boolean;
|
|
33
|
+
attendeeCount?: boolean;
|
|
32
34
|
}
|
|
33
35
|
export type Properties = AudioProperties | RaiseHandProperties | ReactionsProperties | ShareControlProperties | VideoProperties | ViewTheParticipantListProperties;
|
|
34
36
|
export interface ControlConfig<Props = Properties> {
|
|
@@ -35,6 +35,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
35
35
|
replace: any;
|
|
36
36
|
url: any;
|
|
37
37
|
services: any;
|
|
38
|
+
resources: any;
|
|
38
39
|
mainSessionLocusCache: any;
|
|
39
40
|
/**
|
|
40
41
|
* Constructor
|
|
@@ -190,6 +191,14 @@ export default class LocusInfo extends EventsScope {
|
|
|
190
191
|
updateServices(services: Record<'breakout' | 'record', {
|
|
191
192
|
url: string;
|
|
192
193
|
}>): void;
|
|
194
|
+
/**
|
|
195
|
+
* @param {Object} resources
|
|
196
|
+
* @returns {undefined}
|
|
197
|
+
* @memberof LocusInfo
|
|
198
|
+
*/
|
|
199
|
+
updateResources(resources: Record<'webcastInstance', {
|
|
200
|
+
url: string;
|
|
201
|
+
}>): void;
|
|
193
202
|
/**
|
|
194
203
|
* @param {Object} fullState
|
|
195
204
|
* @returns {undefined}
|
|
@@ -61,6 +61,10 @@ interface IInMeetingActions {
|
|
|
61
61
|
canUpdateShareControl?: boolean;
|
|
62
62
|
canEnableViewTheParticipantsList?: boolean;
|
|
63
63
|
canDisableViewTheParticipantsList?: boolean;
|
|
64
|
+
canEnableViewTheParticipantsListPanelist?: boolean;
|
|
65
|
+
canDisableViewTheParticipantsListPanelist?: boolean;
|
|
66
|
+
canEnableShowAttendeeCount?: boolean;
|
|
67
|
+
canDisableShowAttendeeCount?: boolean;
|
|
64
68
|
canEnableRaiseHand?: boolean;
|
|
65
69
|
canDisableRaiseHand?: boolean;
|
|
66
70
|
canEnableVideo?: boolean;
|
|
@@ -80,6 +84,11 @@ interface IInMeetingActions {
|
|
|
80
84
|
canShareWhiteBoard?: boolean;
|
|
81
85
|
enforceVirtualBackground?: boolean;
|
|
82
86
|
canPollingAndQA?: boolean;
|
|
87
|
+
canStartWebcast?: boolean;
|
|
88
|
+
canStopWebcast?: boolean;
|
|
89
|
+
canShowStageView?: boolean;
|
|
90
|
+
canEnableStageView?: boolean;
|
|
91
|
+
canDisableStageView?: boolean;
|
|
83
92
|
}
|
|
84
93
|
/**
|
|
85
94
|
* @class InMeetingActions
|
|
@@ -141,6 +150,10 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
141
150
|
canUpdateShareControl: any;
|
|
142
151
|
canEnableViewTheParticipantsList: any;
|
|
143
152
|
canDisableViewTheParticipantsList: any;
|
|
153
|
+
canEnableViewTheParticipantsListPanelist: any;
|
|
154
|
+
canDisableViewTheParticipantsListPanelist: any;
|
|
155
|
+
canEnableShowAttendeeCount: any;
|
|
156
|
+
canDisableShowAttendeeCount: any;
|
|
144
157
|
canEnableRaiseHand: any;
|
|
145
158
|
canDisableRaiseHand: any;
|
|
146
159
|
canEnableVideo: any;
|
|
@@ -160,6 +173,11 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
160
173
|
supportHDV: any;
|
|
161
174
|
canShareWhiteBoard: any;
|
|
162
175
|
canPollingAndQA: any;
|
|
176
|
+
canStartWebcast: any;
|
|
177
|
+
canStopWebcast: any;
|
|
178
|
+
canShowStageView: any;
|
|
179
|
+
canEnableStageView: any;
|
|
180
|
+
canDisableStageView: any;
|
|
163
181
|
/**
|
|
164
182
|
* Returns all meeting action options
|
|
165
183
|
* @returns {Object}
|
|
@@ -737,6 +737,15 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
737
737
|
* @memberof Meeting
|
|
738
738
|
*/
|
|
739
739
|
private setUpLocusServicesListener;
|
|
740
|
+
/**
|
|
741
|
+
* Set up the locus info resources link listener
|
|
742
|
+
* update the locusInfo for webcast instance url
|
|
743
|
+
* @param {Object} payload - The event payload
|
|
744
|
+
* @returns {undefined}
|
|
745
|
+
* @private
|
|
746
|
+
* @memberof Meeting
|
|
747
|
+
*/
|
|
748
|
+
private setUpLocusResourcesListener;
|
|
740
749
|
/**
|
|
741
750
|
* Set up the locus info meeting info listener
|
|
742
751
|
* @returns {undefined}
|
|
@@ -1391,6 +1400,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1391
1400
|
* @returns {Promise<void>}
|
|
1392
1401
|
*/
|
|
1393
1402
|
private cleanUpBeforeRetryWithTurnServer;
|
|
1403
|
+
private cleanUpBeforeReconnection;
|
|
1394
1404
|
/**
|
|
1395
1405
|
* Creates an instance of LocusMediaRequest for this meeting - it is needed for doing any calls
|
|
1396
1406
|
* to Locus /media API (these are used for sending Roap messages and updating audio/video mute status).
|
|
@@ -1605,10 +1615,11 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1605
1615
|
* @param {boolean} mutedEnabled
|
|
1606
1616
|
* @param {boolean} disallowUnmuteEnabled
|
|
1607
1617
|
* @param {boolean} muteOnEntryEnabled
|
|
1618
|
+
* @param {array} roles
|
|
1608
1619
|
* @public
|
|
1609
1620
|
* @memberof Meeting
|
|
1610
1621
|
*/
|
|
1611
|
-
setMuteAll(mutedEnabled: boolean, disallowUnmuteEnabled: boolean, muteOnEntryEnabled: boolean): Promise<any>;
|
|
1622
|
+
setMuteAll(mutedEnabled: boolean, disallowUnmuteEnabled: boolean, muteOnEntryEnabled: boolean, roles: Array<string>): Promise<any>;
|
|
1612
1623
|
/**
|
|
1613
1624
|
* End the recording of this meeting
|
|
1614
1625
|
* @returns {Promise}
|
|
@@ -302,11 +302,12 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
302
302
|
/**
|
|
303
303
|
* Lower all hands of members in a meeting
|
|
304
304
|
* @param {String} requestingMemberId - id of the participant which requested the lower all hands
|
|
305
|
+
* @param {array} roles which should be lowered
|
|
305
306
|
* @returns {Promise}
|
|
306
307
|
* @public
|
|
307
308
|
* @memberof Members
|
|
308
309
|
*/
|
|
309
|
-
lowerAllHands(requestingMemberId: string): any;
|
|
310
|
+
lowerAllHands(requestingMemberId: string, roles: Array<string>): any;
|
|
310
311
|
/**
|
|
311
312
|
* Transfers the host to another member
|
|
312
313
|
* @param {String} memberId
|
|
@@ -95,7 +95,8 @@ declare const MembersUtil: {
|
|
|
95
95
|
* @returns {RoleAssignmentOptions}
|
|
96
96
|
*/
|
|
97
97
|
generateRoleAssignmentMemberOptions: (memberId: string, roles: Array<ServerRoleShape>, locusUrl: string) => RoleAssignmentOptions;
|
|
98
|
-
generateLowerAllHandsMemberOptions: (requestingParticipantId: any, locusUrl: any) => {
|
|
98
|
+
generateLowerAllHandsMemberOptions: (requestingParticipantId: any, locusUrl: any, roles: any) => {
|
|
99
|
+
roles: any;
|
|
99
100
|
requestingParticipantId: any;
|
|
100
101
|
locusUrl: any;
|
|
101
102
|
};
|
|
@@ -145,6 +146,7 @@ declare const MembersUtil: {
|
|
|
145
146
|
uri: string;
|
|
146
147
|
body: {
|
|
147
148
|
hand: {
|
|
149
|
+
roles: any;
|
|
148
150
|
raised: boolean;
|
|
149
151
|
};
|
|
150
152
|
requestingParticipantId: any;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import EventsScope from '../common/events/events-scope';
|
|
2
|
+
/**
|
|
3
|
+
* Meeting - network quality event
|
|
4
|
+
* Emitted on each interval of retrieving stats Analyzer data
|
|
5
|
+
* @event network:quality
|
|
6
|
+
* @type {Object}
|
|
7
|
+
* @property {string} mediaType {video|audio}
|
|
8
|
+
* @property {number} networkQualityScore - value determined in determineUplinkNetworkQuality
|
|
9
|
+
* @memberof NetworkQualityMonitor
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* NetworkQualityMonitor class that will emit events based on detected quality
|
|
13
|
+
*
|
|
14
|
+
* @class NetworkQualityMonitor
|
|
15
|
+
* @extends {EventsScope}
|
|
16
|
+
*/
|
|
17
|
+
export default class NetworkQualityMonitor extends EventsScope {
|
|
18
|
+
config: any;
|
|
19
|
+
frequencyTypes: any;
|
|
20
|
+
indicatorTypes: any;
|
|
21
|
+
mediaType: any;
|
|
22
|
+
networkQualityScore: any;
|
|
23
|
+
networkQualityStatus: any;
|
|
24
|
+
/**
|
|
25
|
+
* Creates a new instance of NetworkQualityMonitor
|
|
26
|
+
* @constructor
|
|
27
|
+
* @public
|
|
28
|
+
* @param {Object} config
|
|
29
|
+
* @property {Object} indicatorTypes - network properties used to evaluate network quality used as constants
|
|
30
|
+
* @property {Object} frequencyTypes - frequency properties used as constants {uplink|send} {downlink|receive}
|
|
31
|
+
* @property {number} networkQualityScore - 0|1 1 is acceptable 0 is bad/unknown
|
|
32
|
+
* @property {Object} networkQualityStatus - hash object based on indicatorTypes and frequencyTypes
|
|
33
|
+
* @property {string} mediaType - audio|video
|
|
34
|
+
*/
|
|
35
|
+
constructor(config: any);
|
|
36
|
+
/**
|
|
37
|
+
* emits NETWORK_QUALITY event on meeting with payload of media type and uplinkNetworkQuality score
|
|
38
|
+
*
|
|
39
|
+
* @memberof NetworkQualityMonitor
|
|
40
|
+
* @returns {void}
|
|
41
|
+
*/
|
|
42
|
+
emitNetworkQuality(): void;
|
|
43
|
+
/**
|
|
44
|
+
* invokes emitNetworkQuality method resets values back to default
|
|
45
|
+
* @returns {void}
|
|
46
|
+
* @memberof NetworkQualityMonitor
|
|
47
|
+
*/
|
|
48
|
+
updateNetworkQualityStatus(): void;
|
|
49
|
+
/**
|
|
50
|
+
* filter data to determine uplink network quality, invoked on same interval as stats analyzer remote-inbout-rtp
|
|
51
|
+
* @param {Object} configObj
|
|
52
|
+
* @param {string} configObj.mediaType {audio|video}
|
|
53
|
+
* @param {RTCStats} configObj.remoteRtpResults RTC stats remote obj
|
|
54
|
+
* @param {Object} configObj.statsAnalyzerCurrentStats statsResults
|
|
55
|
+
* @returns {void}
|
|
56
|
+
* @public
|
|
57
|
+
* @memberof NetworkQualityMonitor
|
|
58
|
+
*/
|
|
59
|
+
determineUplinkNetworkQuality({ mediaType, remoteRtpResults, statsAnalyzerCurrentStats, }: {
|
|
60
|
+
mediaType: string;
|
|
61
|
+
remoteRtpResults: any;
|
|
62
|
+
statsAnalyzerCurrentStats: object;
|
|
63
|
+
}): void;
|
|
64
|
+
/**
|
|
65
|
+
* Get the current status of network quaility object - networkQualityStatus
|
|
66
|
+
* @returns {Object}
|
|
67
|
+
* @public
|
|
68
|
+
*/
|
|
69
|
+
get networkQualityStats(): any;
|
|
70
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rtc Metrics
|
|
3
|
+
*/
|
|
4
|
+
export default class RtcMetrics {
|
|
5
|
+
/**
|
|
6
|
+
* Array of MetricData items to be sent to the metrics service.
|
|
7
|
+
*/
|
|
8
|
+
metricsQueue: any[];
|
|
9
|
+
intervalId: number;
|
|
10
|
+
webex: any;
|
|
11
|
+
meetingId: string;
|
|
12
|
+
correlationId: string;
|
|
13
|
+
connectionId: string;
|
|
14
|
+
shouldSendMetricsOnNextStatsReport: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Initialize the interval.
|
|
17
|
+
*
|
|
18
|
+
* @param {object} webex - The main `webex` object.
|
|
19
|
+
* @param {string} meetingId - The meeting id.
|
|
20
|
+
* @param {string} correlationId - The correlation id.
|
|
21
|
+
*/
|
|
22
|
+
constructor(webex: any, meetingId: any, correlationId: any);
|
|
23
|
+
/**
|
|
24
|
+
* Check to see if the metrics queue has any items.
|
|
25
|
+
*
|
|
26
|
+
* @returns {void}
|
|
27
|
+
*/
|
|
28
|
+
sendMetricsInQueue(): void;
|
|
29
|
+
/**
|
|
30
|
+
* Forces sending metrics when we get the next stats-report
|
|
31
|
+
*
|
|
32
|
+
* This is useful for cases when something important happens that affects the media connection,
|
|
33
|
+
* for example when we move from lobby into the meeting.
|
|
34
|
+
*
|
|
35
|
+
* @returns {void}
|
|
36
|
+
*/
|
|
37
|
+
sendNextMetrics(): void;
|
|
38
|
+
/**
|
|
39
|
+
* Add metrics items to the metrics queue.
|
|
40
|
+
*
|
|
41
|
+
* @param {object} data - An object with a payload array of metrics items.
|
|
42
|
+
*
|
|
43
|
+
* @returns {void}
|
|
44
|
+
*/
|
|
45
|
+
addMetrics(data: any): void;
|
|
46
|
+
/**
|
|
47
|
+
* Clear the metrics interval.
|
|
48
|
+
*
|
|
49
|
+
* @returns {void}
|
|
50
|
+
*/
|
|
51
|
+
closeMetrics(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Anonymize IP addresses.
|
|
54
|
+
*
|
|
55
|
+
* @param {array} stats - An RTCStatsReport organized into an array of strings.
|
|
56
|
+
* @returns {string}
|
|
57
|
+
*/
|
|
58
|
+
anonymizeIp(stats: string): string;
|
|
59
|
+
/**
|
|
60
|
+
* Set a new connection id.
|
|
61
|
+
*
|
|
62
|
+
* @returns {void}
|
|
63
|
+
*/
|
|
64
|
+
private resetConnection;
|
|
65
|
+
/**
|
|
66
|
+
* Send metrics to the metrics service.
|
|
67
|
+
*
|
|
68
|
+
* @returns {void}
|
|
69
|
+
*/
|
|
70
|
+
private sendMetrics;
|
|
71
|
+
}
|