@webex/plugin-meetings 3.12.0-next.64 → 3.12.0-next.66
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/dist/aiEnableRequest/index.js +1 -1
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/constants.js +17 -3
- package/dist/constants.js.map +1 -1
- package/dist/interceptors/dataChannelAuthToken.js +75 -15
- package/dist/interceptors/dataChannelAuthToken.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/meeting/index.js +738 -679
- package/dist/meeting/index.js.map +1 -1
- package/dist/types/constants.d.ts +1 -1
- package/dist/types/meeting/index.d.ts +2 -2
- package/dist/webinar/index.js +247 -152
- package/dist/webinar/index.js.map +1 -1
- package/package.json +3 -3
- package/src/constants.ts +2 -1
- package/src/interceptors/dataChannelAuthToken.ts +88 -12
- package/src/meeting/index.ts +111 -49
- package/src/webinar/index.ts +140 -29
- package/test/unit/spec/interceptors/dataChannelAuthToken.ts +196 -0
- package/test/unit/spec/meeting/index.js +139 -23
- package/test/unit/spec/webinar/index.ts +257 -21
package/dist/webinar/index.js
CHANGED
|
@@ -13,7 +13,6 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/
|
|
|
13
13
|
var _webexCore = require("@webex/webex-core");
|
|
14
14
|
var _uuid = _interopRequireDefault(require("uuid"));
|
|
15
15
|
var _lodash = require("lodash");
|
|
16
|
-
var _internalPluginLlm = require("@webex/internal-plugin-llm");
|
|
17
16
|
var _constants = require("../constants");
|
|
18
17
|
var _collection = _interopRequireDefault(require("./collection"));
|
|
19
18
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
@@ -23,6 +22,16 @@ var _utils = require("./utils");
|
|
|
23
22
|
* Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
|
|
24
23
|
*/
|
|
25
24
|
|
|
25
|
+
var PS_LLM_EVENTS = [{
|
|
26
|
+
event: "event:relay.event:".concat(_constants.LLM_PRACTICE_SESSION),
|
|
27
|
+
listenerKey: 'relay',
|
|
28
|
+
handlerKey: 'processRelayEvent'
|
|
29
|
+
}, {
|
|
30
|
+
event: "".concat(_constants.LOCUS_LLM_EVENT, ":").concat(_constants.LLM_PRACTICE_SESSION),
|
|
31
|
+
listenerKey: 'locusLLM',
|
|
32
|
+
handlerKey: 'processLocusLLMEvent'
|
|
33
|
+
}];
|
|
34
|
+
|
|
26
35
|
/**
|
|
27
36
|
* @class Webinar
|
|
28
37
|
*/
|
|
@@ -160,32 +169,61 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
160
169
|
cleanupPSDataChannel: function cleanupPSDataChannel() {
|
|
161
170
|
var _this = this;
|
|
162
171
|
return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
172
|
+
var _this$webex$internal$, isOwner, disconnected, _this$webex$internal$2, _this$webex$internal$3, _i, _PS_LLM_EVENTS, _PS_LLM_EVENTS$_i, event, listenerKey, _t;
|
|
163
173
|
return _regenerator.default.wrap(function (_context) {
|
|
164
174
|
while (1) switch (_context.prev = _context.next) {
|
|
165
175
|
case 0:
|
|
176
|
+
_this$webex$internal$ = _this.webex.internal.llm.resolveSessionOwnership(_this.meetingId, _constants.LLM_PRACTICE_SESSION), isOwner = _this$webex$internal$.isOwner;
|
|
177
|
+
_this.llmListeners = _this.llmListeners || {};
|
|
166
178
|
if (_this._pendingOnlineListener) {
|
|
167
179
|
// @ts-ignore - Fix type
|
|
168
180
|
_this.webex.internal.llm.off('online', _this._pendingOnlineListener);
|
|
169
181
|
_this._pendingOnlineListener = null;
|
|
170
182
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
_context.next = 1;
|
|
183
|
+
_context.prev = 1;
|
|
184
|
+
_context.next = 2;
|
|
174
185
|
return _this.webex.internal.llm.disconnectLLM({
|
|
175
186
|
code: 3050,
|
|
176
187
|
reason: 'done (permanent)'
|
|
177
|
-
}, _constants.LLM_PRACTICE_SESSION);
|
|
178
|
-
case
|
|
188
|
+
}, _constants.LLM_PRACTICE_SESSION, _this.meetingId);
|
|
189
|
+
case 2:
|
|
190
|
+
disconnected = _context.sent;
|
|
191
|
+
if (!disconnected) {
|
|
192
|
+
_loggerProxy.default.logger.info("Webinar:index#cleanupPSDataChannel --> skipping disconnect; practice-session LLM is not owned by meeting ".concat(_this.meetingId));
|
|
193
|
+
}
|
|
194
|
+
_context.next = 4;
|
|
195
|
+
break;
|
|
196
|
+
case 3:
|
|
197
|
+
_context.prev = 3;
|
|
198
|
+
_t = _context["catch"](1);
|
|
199
|
+
// disconnectLLM clears ownership only on success; release a stale owner
|
|
200
|
+
// tag here so other meeting instances can reclaim practice-session LLM.
|
|
201
|
+
if (isOwner) {
|
|
202
|
+
// @ts-ignore - Fix type
|
|
203
|
+
(_this$webex$internal$2 = (_this$webex$internal$3 = _this.webex.internal.llm).setOwnerMeetingId) === null || _this$webex$internal$2 === void 0 ? void 0 : _this$webex$internal$2.call(_this$webex$internal$3, undefined, _constants.LLM_PRACTICE_SESSION);
|
|
204
|
+
}
|
|
205
|
+
throw _t;
|
|
206
|
+
case 4:
|
|
207
|
+
_context.prev = 4;
|
|
179
208
|
if (_this._practiceSessionRelayListener) {
|
|
180
209
|
// @ts-ignore - Fix type
|
|
181
210
|
_this.webex.internal.llm.off("event:relay.event:".concat(_constants.LLM_PRACTICE_SESSION), _this._practiceSessionRelayListener);
|
|
182
|
-
_this._practiceSessionRelayListener = null;
|
|
183
211
|
}
|
|
184
|
-
|
|
212
|
+
_this._practiceSessionRelayListener = null;
|
|
213
|
+
for (_i = 0, _PS_LLM_EVENTS = PS_LLM_EVENTS; _i < _PS_LLM_EVENTS.length; _i++) {
|
|
214
|
+
_PS_LLM_EVENTS$_i = _PS_LLM_EVENTS[_i], event = _PS_LLM_EVENTS$_i.event, listenerKey = _PS_LLM_EVENTS$_i.listenerKey;
|
|
215
|
+
if (_this.llmListeners[listenerKey]) {
|
|
216
|
+
// @ts-ignore - Fix type
|
|
217
|
+
_this.webex.internal.llm.off(event, _this.llmListeners[listenerKey]);
|
|
218
|
+
_this.llmListeners[listenerKey] = null;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return _context.finish(4);
|
|
222
|
+
case 5:
|
|
185
223
|
case "end":
|
|
186
224
|
return _context.stop();
|
|
187
225
|
}
|
|
188
|
-
}, _callee);
|
|
226
|
+
}, _callee, null, [[1, 3, 4, 5]]);
|
|
189
227
|
}))();
|
|
190
228
|
},
|
|
191
229
|
/**
|
|
@@ -198,7 +236,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
198
236
|
ensurePracticeSessionDatachannelToken: function ensurePracticeSessionDatachannelToken(meeting) {
|
|
199
237
|
var _this2 = this;
|
|
200
238
|
return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
201
|
-
var isDataChannelTokenEnabled, cachedToken, _refreshResponse$body, refreshResponse, _ref2, datachannelToken, dataChannelTokenType,
|
|
239
|
+
var isDataChannelTokenEnabled, cachedToken, _refreshResponse$body, refreshResponse, _ref2, datachannelToken, dataChannelTokenType, _t2;
|
|
202
240
|
return _regenerator.default.wrap(function (_context2) {
|
|
203
241
|
while (1) switch (_context2.prev = _context2.next) {
|
|
204
242
|
case 0:
|
|
@@ -213,7 +251,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
213
251
|
return _context2.abrupt("return", undefined);
|
|
214
252
|
case 2:
|
|
215
253
|
// @ts-ignore
|
|
216
|
-
cachedToken = _this2.webex.internal.llm.getDatachannelToken(
|
|
254
|
+
cachedToken = _this2.webex.internal.llm.getDatachannelToken(_constants.LLM_PRACTICE_SESSION, _this2.meetingId);
|
|
217
255
|
if (!cachedToken) {
|
|
218
256
|
_context2.next = 3;
|
|
219
257
|
break;
|
|
@@ -233,12 +271,12 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
233
271
|
return _context2.abrupt("return", undefined);
|
|
234
272
|
case 5:
|
|
235
273
|
// @ts-ignore
|
|
236
|
-
_this2.webex.internal.llm.setDatachannelToken(datachannelToken, dataChannelTokenType ||
|
|
274
|
+
_this2.webex.internal.llm.setDatachannelToken(datachannelToken, dataChannelTokenType || _constants.LLM_PRACTICE_SESSION, _this2.meetingId);
|
|
237
275
|
return _context2.abrupt("return", datachannelToken);
|
|
238
276
|
case 6:
|
|
239
277
|
_context2.prev = 6;
|
|
240
|
-
|
|
241
|
-
_loggerProxy.default.logger.warn("Webinar:index#ensurePracticeSessionDatachannelToken --> failed to proactively refresh practice-session token: ".concat((
|
|
278
|
+
_t2 = _context2["catch"](3);
|
|
279
|
+
_loggerProxy.default.logger.warn("Webinar:index#ensurePracticeSessionDatachannelToken --> failed to proactively refresh practice-session token: ".concat((_t2 === null || _t2 === void 0 ? void 0 : _t2.message) || String(_t2)));
|
|
242
280
|
return _context2.abrupt("return", undefined);
|
|
243
281
|
case 7:
|
|
244
282
|
case "end":
|
|
@@ -255,14 +293,17 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
255
293
|
updatePSDataChannel: function updatePSDataChannel() {
|
|
256
294
|
var _this3 = this;
|
|
257
295
|
return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3() {
|
|
258
|
-
var
|
|
296
|
+
var _this3$webex$internal3, _this3$webex$internal4;
|
|
297
|
+
var invocationSequence, meeting, isPracticeSession, _this3$webex$internal, currentOwner, isOwner, _ref3, _ref3$url, url, _ref3$info, _ref3$info2, _ref3$info2$practiceS, practiceSessionDatachannelUrl, practiceSessionDatachannelToken, isCaptionBoxOn, _onDefaultSessionConnected, refreshedPracticeSessionToken, latestPracticeSessionDatachannelUrl, isStillPracticeSession, _this3$webex$internal2, currentOwnerBeforeConnect, isOwnerBeforeConnect;
|
|
259
298
|
return _regenerator.default.wrap(function (_context3) {
|
|
260
299
|
while (1) switch (_context3.prev = _context3.next) {
|
|
261
300
|
case 0:
|
|
301
|
+
_this3.llmListeners = _this3.llmListeners || {};
|
|
262
302
|
_this3._updatePSDataChannelSequence = (_this3._updatePSDataChannelSequence || 0) + 1;
|
|
263
303
|
invocationSequence = _this3._updatePSDataChannelSequence;
|
|
264
304
|
meeting = _this3.getValidatedWebinarMeeting();
|
|
265
305
|
isPracticeSession = (meeting === null || meeting === void 0 ? void 0 : meeting.isJoined()) && _this3.isJoinPracticeSessionDataChannel();
|
|
306
|
+
_this3$webex$internal = _this3.webex.internal.llm.resolveSessionOwnership(_this3.meetingId, _constants.LLM_PRACTICE_SESSION), currentOwner = _this3$webex$internal.currentOwner, isOwner = _this3$webex$internal.isOwner;
|
|
266
307
|
if (isPracticeSession) {
|
|
267
308
|
_context3.next = 2;
|
|
268
309
|
break;
|
|
@@ -272,18 +313,25 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
272
313
|
case 1:
|
|
273
314
|
return _context3.abrupt("return", undefined);
|
|
274
315
|
case 2:
|
|
316
|
+
if (isOwner) {
|
|
317
|
+
_context3.next = 3;
|
|
318
|
+
break;
|
|
319
|
+
}
|
|
320
|
+
_loggerProxy.default.logger.info("Webinar:index#updatePSDataChannel --> skipping; practice-session LLM owned by meeting ".concat(currentOwner, ", not ").concat(_this3.meetingId));
|
|
321
|
+
return _context3.abrupt("return", undefined);
|
|
322
|
+
case 3:
|
|
275
323
|
// @ts-ignore - Fix type
|
|
276
324
|
_ref3 = (meeting === null || meeting === void 0 ? void 0 : meeting.locusInfo) || {}, _ref3$url = _ref3.url, url = _ref3$url === void 0 ? undefined : _ref3$url, _ref3$info = _ref3.info, _ref3$info2 = _ref3$info === void 0 ? {} : _ref3$info, _ref3$info2$practiceS = _ref3$info2.practiceSessionDatachannelUrl, practiceSessionDatachannelUrl = _ref3$info2$practiceS === void 0 ? undefined : _ref3$info2$practiceS; // @ts-ignore
|
|
277
|
-
practiceSessionDatachannelToken = _this3.webex.internal.llm.getDatachannelToken(
|
|
325
|
+
practiceSessionDatachannelToken = _this3.webex.internal.llm.getDatachannelToken(_constants.LLM_PRACTICE_SESSION, _this3.meetingId);
|
|
278
326
|
isCaptionBoxOn = _this3.webex.internal.voicea.getIsCaptionBoxOn();
|
|
279
327
|
if (practiceSessionDatachannelUrl) {
|
|
280
|
-
_context3.next =
|
|
328
|
+
_context3.next = 4;
|
|
281
329
|
break;
|
|
282
330
|
}
|
|
283
331
|
return _context3.abrupt("return", undefined);
|
|
284
|
-
case
|
|
332
|
+
case 4:
|
|
285
333
|
if (!_this3.webex.internal.llm.isConnected(_constants.LLM_PRACTICE_SESSION)) {
|
|
286
|
-
_context3.next =
|
|
334
|
+
_context3.next = 6;
|
|
287
335
|
break;
|
|
288
336
|
}
|
|
289
337
|
if (!(
|
|
@@ -291,14 +339,14 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
291
339
|
url === _this3.webex.internal.llm.getLocusUrl(_constants.LLM_PRACTICE_SESSION) &&
|
|
292
340
|
// @ts-ignore - Fix type
|
|
293
341
|
practiceSessionDatachannelUrl === _this3.webex.internal.llm.getDatachannelUrl(_constants.LLM_PRACTICE_SESSION))) {
|
|
294
|
-
_context3.next =
|
|
342
|
+
_context3.next = 5;
|
|
295
343
|
break;
|
|
296
344
|
}
|
|
297
345
|
return _context3.abrupt("return", undefined);
|
|
298
|
-
case 4:
|
|
299
|
-
_context3.next = 5;
|
|
300
|
-
return _this3.cleanupPSDataChannel();
|
|
301
346
|
case 5:
|
|
347
|
+
_context3.next = 6;
|
|
348
|
+
return _this3.cleanupPSDataChannel();
|
|
349
|
+
case 6:
|
|
302
350
|
// Ensure the default session data channel is connected before connecting the practice session.
|
|
303
351
|
// Subscribe before checking isConnected() to avoid a race where the 'online' event fires
|
|
304
352
|
// between the check and the subscription — Mercury does not replay missed events.
|
|
@@ -316,50 +364,85 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
316
364
|
|
|
317
365
|
// @ts-ignore - Fix type
|
|
318
366
|
if (_this3.webex.internal.llm.isConnected()) {
|
|
319
|
-
_context3.next =
|
|
367
|
+
_context3.next = 7;
|
|
320
368
|
break;
|
|
321
369
|
}
|
|
322
370
|
_loggerProxy.default.logger.info('Webinar:index#updatePSDataChannel --> default session not yet connected, deferring practice session connect.');
|
|
323
371
|
return _context3.abrupt("return", undefined);
|
|
324
|
-
case
|
|
372
|
+
case 7:
|
|
325
373
|
// Default session is already connected — cancel the pending listener and proceed
|
|
326
374
|
if (_this3._pendingOnlineListener) {
|
|
327
375
|
// @ts-ignore - Fix type
|
|
328
376
|
_this3.webex.internal.llm.off('online', _this3._pendingOnlineListener);
|
|
329
377
|
_this3._pendingOnlineListener = null;
|
|
330
378
|
}
|
|
331
|
-
_context3.next =
|
|
379
|
+
_context3.next = 8;
|
|
332
380
|
return _this3.ensurePracticeSessionDatachannelToken(meeting);
|
|
333
|
-
case
|
|
381
|
+
case 8:
|
|
334
382
|
refreshedPracticeSessionToken = _context3.sent;
|
|
335
383
|
latestPracticeSessionDatachannelUrl = (0, _lodash.get)(meeting, 'locusInfo.info.practiceSessionDatachannelUrl');
|
|
336
384
|
isStillPracticeSession = (meeting === null || meeting === void 0 ? void 0 : meeting.isJoined()) && _this3.isJoinPracticeSessionDataChannel(); // Skip stale invocations after async refresh to avoid reconnecting a session
|
|
337
385
|
// that was already updated/cleaned by a newer state transition.
|
|
338
386
|
if (!(invocationSequence !== _this3._updatePSDataChannelSequence || !isStillPracticeSession || !latestPracticeSessionDatachannelUrl || latestPracticeSessionDatachannelUrl !== practiceSessionDatachannelUrl)) {
|
|
339
|
-
_context3.next =
|
|
387
|
+
_context3.next = 9;
|
|
340
388
|
break;
|
|
341
389
|
}
|
|
342
390
|
return _context3.abrupt("return", undefined);
|
|
343
|
-
case
|
|
391
|
+
case 9:
|
|
344
392
|
if (refreshedPracticeSessionToken) {
|
|
345
393
|
practiceSessionDatachannelToken = refreshedPracticeSessionToken;
|
|
346
394
|
}
|
|
395
|
+
_this3$webex$internal2 = _this3.webex.internal.llm.resolveSessionOwnership(_this3.meetingId, _constants.LLM_PRACTICE_SESSION), currentOwnerBeforeConnect = _this3$webex$internal2.currentOwner, isOwnerBeforeConnect = _this3$webex$internal2.isOwner;
|
|
396
|
+
if (isOwnerBeforeConnect) {
|
|
397
|
+
_context3.next = 10;
|
|
398
|
+
break;
|
|
399
|
+
}
|
|
400
|
+
_loggerProxy.default.logger.info("Webinar:index#updatePSDataChannel --> skipping pre-connect owner write; practice-session LLM owned by meeting ".concat(currentOwnerBeforeConnect, ", not ").concat(_this3.meetingId));
|
|
401
|
+
return _context3.abrupt("return", undefined);
|
|
402
|
+
case 10:
|
|
403
|
+
// Ensure refresh for practice datachannel requests is routed to this
|
|
404
|
+
// meeting only when we are actually about to connect the practice session.
|
|
405
|
+
// This avoids claiming ownership in flows that return early (e.g. missing
|
|
406
|
+
// practiceSessionDatachannelUrl or waiting for default session online).
|
|
407
|
+
// @ts-ignore - Fix type
|
|
408
|
+
_this3.webex.internal.llm.setRefreshHandler(function () {
|
|
409
|
+
return meeting.refreshDataChannelToken();
|
|
410
|
+
}, _constants.LLM_PRACTICE_SESSION, _this3.meetingId);
|
|
411
|
+
// @ts-ignore - Fix type
|
|
412
|
+
(_this3$webex$internal3 = (_this3$webex$internal4 = _this3.webex.internal.llm).setOwnerMeetingId) === null || _this3$webex$internal3 === void 0 ? void 0 : _this3$webex$internal3.call(_this3$webex$internal4, _this3.meetingId, _constants.LLM_PRACTICE_SESSION);
|
|
347
413
|
|
|
348
414
|
// @ts-ignore - Fix type
|
|
349
415
|
return _context3.abrupt("return", _this3.webex.internal.llm.registerAndConnect(url, practiceSessionDatachannelUrl, practiceSessionDatachannelToken, _constants.LLM_PRACTICE_SESSION).then(function (registerAndConnectResult) {
|
|
350
|
-
var _this3$webex$
|
|
351
|
-
|
|
416
|
+
var _this3$webex$internal8, _this3$webex$internal9;
|
|
417
|
+
var _this3$webex$internal5 = _this3.webex.internal.llm.resolveSessionOwnership(_this3.meetingId, _constants.LLM_PRACTICE_SESSION),
|
|
418
|
+
currentOwnerAfterConnect = _this3$webex$internal5.currentOwner,
|
|
419
|
+
isOwnerAfterConnect = _this3$webex$internal5.isOwner;
|
|
420
|
+
if (_this3.meetingId && isOwnerAfterConnect) {
|
|
421
|
+
var _this3$webex$internal6, _this3$webex$internal7;
|
|
422
|
+
// @ts-ignore - Fix type
|
|
423
|
+
(_this3$webex$internal6 = (_this3$webex$internal7 = _this3.webex.internal.llm).setOwnerMeetingId) === null || _this3$webex$internal6 === void 0 ? void 0 : _this3$webex$internal6.call(_this3$webex$internal7, _this3.meetingId, _constants.LLM_PRACTICE_SESSION);
|
|
424
|
+
} else {
|
|
425
|
+
_loggerProxy.default.logger.info("Webinar:index#updatePSDataChannel --> skipping post-connect owner write; practice-session LLM owned by meeting ".concat(currentOwnerAfterConnect, ", not ").concat(_this3.meetingId));
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
// Track the exact listener references so cleanupPSDataChannel can
|
|
352
429
|
// unsubscribe deterministically, even if the meeting can no longer
|
|
353
430
|
// be resolved at cleanup time.
|
|
354
|
-
|
|
431
|
+
for (var _i2 = 0, _PS_LLM_EVENTS2 = PS_LLM_EVENTS; _i2 < _PS_LLM_EVENTS2.length; _i2++) {
|
|
432
|
+
var _PS_LLM_EVENTS2$_i = _PS_LLM_EVENTS2[_i2],
|
|
433
|
+
event = _PS_LLM_EVENTS2$_i.event,
|
|
434
|
+
listenerKey = _PS_LLM_EVENTS2$_i.listenerKey,
|
|
435
|
+
handlerKey = _PS_LLM_EVENTS2$_i.handlerKey;
|
|
436
|
+
if (_this3.llmListeners[listenerKey]) {
|
|
437
|
+
// @ts-ignore - Fix type
|
|
438
|
+
_this3.webex.internal.llm.off(event, _this3.llmListeners[listenerKey]);
|
|
439
|
+
}
|
|
440
|
+
_this3.llmListeners[listenerKey] = meeting === null || meeting === void 0 ? void 0 : meeting[handlerKey];
|
|
355
441
|
// @ts-ignore - Fix type
|
|
356
|
-
_this3.webex.internal.llm.
|
|
442
|
+
_this3.webex.internal.llm.on(event, _this3.llmListeners[listenerKey]);
|
|
357
443
|
}
|
|
358
|
-
_this3._practiceSessionRelayListener = meeting === null || meeting === void 0 ? void 0 : meeting.processRelayEvent;
|
|
359
444
|
// @ts-ignore - Fix type
|
|
360
|
-
_this3.webex.internal.
|
|
361
|
-
// @ts-ignore - Fix type
|
|
362
|
-
(_this3$webex$internal = _this3.webex.internal.voicea) === null || _this3$webex$internal === void 0 ? void 0 : (_this3$webex$internal2 = _this3$webex$internal.announce) === null || _this3$webex$internal2 === void 0 ? void 0 : _this3$webex$internal2.call(_this3$webex$internal);
|
|
445
|
+
(_this3$webex$internal8 = _this3.webex.internal.voicea) === null || _this3$webex$internal8 === void 0 ? void 0 : (_this3$webex$internal9 = _this3$webex$internal8.announce) === null || _this3$webex$internal9 === void 0 ? void 0 : _this3$webex$internal9.call(_this3$webex$internal8);
|
|
363
446
|
if (isCaptionBoxOn) {
|
|
364
447
|
_this3.webex.internal.voicea.updateSubchannelSubscriptions({
|
|
365
448
|
subscribe: ['transcription']
|
|
@@ -367,8 +450,20 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
367
450
|
}
|
|
368
451
|
_loggerProxy.default.logger.info("Webinar:index#updatePSDataChannel --> enabled to receive relay events for default session for ".concat(_constants.LLM_PRACTICE_SESSION, "!"));
|
|
369
452
|
return _promise.default.resolve(registerAndConnectResult);
|
|
453
|
+
}).catch(function (error) {
|
|
454
|
+
var _this3$webex$internal0 = _this3.webex.internal.llm.resolveSessionOwnership(_this3.meetingId, _constants.LLM_PRACTICE_SESSION),
|
|
455
|
+
currentOwnerAfterRegisterFailure = _this3$webex$internal0.currentOwner,
|
|
456
|
+
isOwnerAfterRegisterFailure = _this3$webex$internal0.isOwner;
|
|
457
|
+
if (isOwnerAfterRegisterFailure) {
|
|
458
|
+
var _this3$webex$internal1, _this3$webex$internal10;
|
|
459
|
+
// @ts-ignore - Fix type
|
|
460
|
+
(_this3$webex$internal1 = (_this3$webex$internal10 = _this3.webex.internal.llm).setOwnerMeetingId) === null || _this3$webex$internal1 === void 0 ? void 0 : _this3$webex$internal1.call(_this3$webex$internal10, undefined, _constants.LLM_PRACTICE_SESSION);
|
|
461
|
+
} else {
|
|
462
|
+
_loggerProxy.default.logger.info("Webinar:index#updatePSDataChannel --> skipping failure owner release; practice-session LLM owned by meeting ".concat(currentOwnerAfterRegisterFailure, ", not ").concat(_this3.meetingId));
|
|
463
|
+
}
|
|
464
|
+
throw error;
|
|
370
465
|
}));
|
|
371
|
-
case
|
|
466
|
+
case 11:
|
|
372
467
|
case "end":
|
|
373
468
|
return _context3.stop();
|
|
374
469
|
}
|
|
@@ -416,7 +511,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
416
511
|
startWebcast: function startWebcast(meeting, layout) {
|
|
417
512
|
var _this4 = this;
|
|
418
513
|
return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4() {
|
|
419
|
-
var
|
|
514
|
+
var _t3, _t4, _t5, _t6, _t7, _t8, _t9, _t0;
|
|
420
515
|
return _regenerator.default.wrap(function (_context4) {
|
|
421
516
|
while (1) switch (_context4.prev = _context4.next) {
|
|
422
517
|
case 0:
|
|
@@ -427,20 +522,20 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
427
522
|
_loggerProxy.default.logger.error("Meeting:webinar#startWebcast failed --> meeting parameter : ".concat(meeting));
|
|
428
523
|
throw new Error('Meeting parameter does not meet expectations');
|
|
429
524
|
case 1:
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
525
|
+
_t3 = _this4;
|
|
526
|
+
_t4 = _constants.HTTP_VERBS.PUT;
|
|
527
|
+
_t5 = "".concat(_this4.webcastInstanceUrl, "/streaming");
|
|
528
|
+
_t6 = _defineProperty2.default;
|
|
434
529
|
_context4.next = 2;
|
|
435
530
|
return _this4.webex.credentials.getUserToken();
|
|
436
531
|
case 2:
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
authorization:
|
|
441
|
-
trackingId:
|
|
532
|
+
_t7 = _context4.sent;
|
|
533
|
+
_t8 = "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString());
|
|
534
|
+
_t9 = _t6({
|
|
535
|
+
authorization: _t7,
|
|
536
|
+
trackingId: _t8
|
|
442
537
|
}, _constants.HEADERS.CONTENT_TYPE, _constants.HEADERS.CONTENT_TYPE_VALUE.APPLICATION_JSON);
|
|
443
|
-
|
|
538
|
+
_t0 = {
|
|
444
539
|
action: 'start',
|
|
445
540
|
meetingInfo: {
|
|
446
541
|
locusId: meeting.locusId,
|
|
@@ -448,11 +543,11 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
448
543
|
},
|
|
449
544
|
layout: layout
|
|
450
545
|
};
|
|
451
|
-
return _context4.abrupt("return",
|
|
452
|
-
method:
|
|
453
|
-
uri:
|
|
454
|
-
headers:
|
|
455
|
-
body:
|
|
546
|
+
return _context4.abrupt("return", _t3.request.call(_t3, {
|
|
547
|
+
method: _t4,
|
|
548
|
+
uri: _t5,
|
|
549
|
+
headers: _t9,
|
|
550
|
+
body: _t0
|
|
456
551
|
}).catch(function (error) {
|
|
457
552
|
_loggerProxy.default.logger.error('Meeting:webinar#startWebcast failed', error);
|
|
458
553
|
throw error;
|
|
@@ -471,31 +566,31 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
471
566
|
stopWebcast: function stopWebcast() {
|
|
472
567
|
var _this5 = this;
|
|
473
568
|
return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5() {
|
|
474
|
-
var
|
|
569
|
+
var _t1, _t10, _t11, _t12, _t13, _t14, _t15, _t16;
|
|
475
570
|
return _regenerator.default.wrap(function (_context5) {
|
|
476
571
|
while (1) switch (_context5.prev = _context5.next) {
|
|
477
572
|
case 0:
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
573
|
+
_t1 = _this5;
|
|
574
|
+
_t10 = _constants.HTTP_VERBS.PUT;
|
|
575
|
+
_t11 = "".concat(_this5.webcastInstanceUrl, "/streaming");
|
|
576
|
+
_t12 = _defineProperty2.default;
|
|
482
577
|
_context5.next = 1;
|
|
483
578
|
return _this5.webex.credentials.getUserToken();
|
|
484
579
|
case 1:
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
authorization:
|
|
489
|
-
trackingId:
|
|
580
|
+
_t13 = _context5.sent;
|
|
581
|
+
_t14 = "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString());
|
|
582
|
+
_t15 = _t12({
|
|
583
|
+
authorization: _t13,
|
|
584
|
+
trackingId: _t14
|
|
490
585
|
}, _constants.HEADERS.CONTENT_TYPE, _constants.HEADERS.CONTENT_TYPE_VALUE.APPLICATION_JSON);
|
|
491
|
-
|
|
586
|
+
_t16 = {
|
|
492
587
|
action: 'stop'
|
|
493
588
|
};
|
|
494
|
-
return _context5.abrupt("return",
|
|
495
|
-
method:
|
|
496
|
-
uri:
|
|
497
|
-
headers:
|
|
498
|
-
body:
|
|
589
|
+
return _context5.abrupt("return", _t1.request.call(_t1, {
|
|
590
|
+
method: _t10,
|
|
591
|
+
uri: _t11,
|
|
592
|
+
headers: _t15,
|
|
593
|
+
body: _t16
|
|
499
594
|
}).catch(function (error) {
|
|
500
595
|
_loggerProxy.default.logger.error('Meeting:webinar#stopWebcast failed', error);
|
|
501
596
|
throw error;
|
|
@@ -514,26 +609,26 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
514
609
|
queryWebcastLayout: function queryWebcastLayout() {
|
|
515
610
|
var _this6 = this;
|
|
516
611
|
return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6() {
|
|
517
|
-
var
|
|
612
|
+
var _t17, _t18, _t19, _t20, _t21, _t22;
|
|
518
613
|
return _regenerator.default.wrap(function (_context6) {
|
|
519
614
|
while (1) switch (_context6.prev = _context6.next) {
|
|
520
615
|
case 0:
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
616
|
+
_t17 = _this6;
|
|
617
|
+
_t18 = _constants.HTTP_VERBS.GET;
|
|
618
|
+
_t19 = "".concat(_this6.webcastInstanceUrl, "/layout");
|
|
524
619
|
_context6.next = 1;
|
|
525
620
|
return _this6.webex.credentials.getUserToken();
|
|
526
621
|
case 1:
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
authorization:
|
|
531
|
-
trackingId:
|
|
622
|
+
_t20 = _context6.sent;
|
|
623
|
+
_t21 = "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString());
|
|
624
|
+
_t22 = {
|
|
625
|
+
authorization: _t20,
|
|
626
|
+
trackingId: _t21
|
|
532
627
|
};
|
|
533
|
-
return _context6.abrupt("return",
|
|
534
|
-
method:
|
|
535
|
-
uri:
|
|
536
|
-
headers:
|
|
628
|
+
return _context6.abrupt("return", _t17.request.call(_t17, {
|
|
629
|
+
method: _t18,
|
|
630
|
+
uri: _t19,
|
|
631
|
+
headers: _t22
|
|
537
632
|
}).catch(function (error) {
|
|
538
633
|
_loggerProxy.default.logger.error('Meeting:webinar#queryWebcastLayout failed', error);
|
|
539
634
|
throw error;
|
|
@@ -553,34 +648,34 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
553
648
|
updateWebcastLayout: function updateWebcastLayout(layout) {
|
|
554
649
|
var _this7 = this;
|
|
555
650
|
return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7() {
|
|
556
|
-
var
|
|
651
|
+
var _t23, _t24, _t25, _t26, _t27, _t28, _t29, _t30;
|
|
557
652
|
return _regenerator.default.wrap(function (_context7) {
|
|
558
653
|
while (1) switch (_context7.prev = _context7.next) {
|
|
559
654
|
case 0:
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
655
|
+
_t23 = _this7;
|
|
656
|
+
_t24 = _constants.HTTP_VERBS.PUT;
|
|
657
|
+
_t25 = "".concat(_this7.webcastInstanceUrl, "/layout");
|
|
658
|
+
_t26 = _defineProperty2.default;
|
|
564
659
|
_context7.next = 1;
|
|
565
660
|
return _this7.webex.credentials.getUserToken();
|
|
566
661
|
case 1:
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
authorization:
|
|
571
|
-
trackingId:
|
|
662
|
+
_t27 = _context7.sent;
|
|
663
|
+
_t28 = "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString());
|
|
664
|
+
_t29 = _t26({
|
|
665
|
+
authorization: _t27,
|
|
666
|
+
trackingId: _t28
|
|
572
667
|
}, _constants.HEADERS.CONTENT_TYPE, _constants.HEADERS.CONTENT_TYPE_VALUE.APPLICATION_JSON);
|
|
573
|
-
|
|
668
|
+
_t30 = {
|
|
574
669
|
videoLayout: layout.videoLayout,
|
|
575
670
|
contentLayout: layout.contentLayout,
|
|
576
671
|
syncStageLayout: layout.syncStageLayout,
|
|
577
672
|
syncStageInMeeting: layout.syncStageInMeeting
|
|
578
673
|
};
|
|
579
|
-
return _context7.abrupt("return",
|
|
580
|
-
method:
|
|
581
|
-
uri:
|
|
582
|
-
headers:
|
|
583
|
-
body:
|
|
674
|
+
return _context7.abrupt("return", _t23.request.call(_t23, {
|
|
675
|
+
method: _t24,
|
|
676
|
+
uri: _t25,
|
|
677
|
+
headers: _t29,
|
|
678
|
+
body: _t30
|
|
584
679
|
}).catch(function (error) {
|
|
585
680
|
_loggerProxy.default.logger.error('Meeting:webinar#updateWebcastLayout failed', error);
|
|
586
681
|
throw error;
|
|
@@ -599,26 +694,26 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
599
694
|
viewAllWebcastAttendees: function viewAllWebcastAttendees() {
|
|
600
695
|
var _this8 = this;
|
|
601
696
|
return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8() {
|
|
602
|
-
var
|
|
697
|
+
var _t31, _t32, _t33, _t34, _t35, _t36;
|
|
603
698
|
return _regenerator.default.wrap(function (_context8) {
|
|
604
699
|
while (1) switch (_context8.prev = _context8.next) {
|
|
605
700
|
case 0:
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
701
|
+
_t31 = _this8;
|
|
702
|
+
_t32 = _constants.HTTP_VERBS.GET;
|
|
703
|
+
_t33 = "".concat(_this8.webcastInstanceUrl, "/attendees");
|
|
609
704
|
_context8.next = 1;
|
|
610
705
|
return _this8.webex.credentials.getUserToken();
|
|
611
706
|
case 1:
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
authorization:
|
|
616
|
-
trackingId:
|
|
707
|
+
_t34 = _context8.sent;
|
|
708
|
+
_t35 = "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString());
|
|
709
|
+
_t36 = {
|
|
710
|
+
authorization: _t34,
|
|
711
|
+
trackingId: _t35
|
|
617
712
|
};
|
|
618
|
-
return _context8.abrupt("return",
|
|
619
|
-
method:
|
|
620
|
-
uri:
|
|
621
|
-
headers:
|
|
713
|
+
return _context8.abrupt("return", _t31.request.call(_t31, {
|
|
714
|
+
method: _t32,
|
|
715
|
+
uri: _t33,
|
|
716
|
+
headers: _t36
|
|
622
717
|
}).catch(function (error) {
|
|
623
718
|
_loggerProxy.default.logger.error('Meeting:webinar#viewAllWebcastAttendees failed', error);
|
|
624
719
|
throw error;
|
|
@@ -639,27 +734,27 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
639
734
|
var _arguments = arguments,
|
|
640
735
|
_this9 = this;
|
|
641
736
|
return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee9() {
|
|
642
|
-
var queryString,
|
|
737
|
+
var queryString, _t37, _t38, _t39, _t40, _t41, _t42;
|
|
643
738
|
return _regenerator.default.wrap(function (_context9) {
|
|
644
739
|
while (1) switch (_context9.prev = _context9.next) {
|
|
645
740
|
case 0:
|
|
646
741
|
queryString = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : '';
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
742
|
+
_t37 = _this9;
|
|
743
|
+
_t38 = _constants.HTTP_VERBS.GET;
|
|
744
|
+
_t39 = "".concat(_this9.webcastInstanceUrl, "/attendees?keyword=").concat(encodeURIComponent(queryString));
|
|
650
745
|
_context9.next = 1;
|
|
651
746
|
return _this9.webex.credentials.getUserToken();
|
|
652
747
|
case 1:
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
authorization:
|
|
657
|
-
trackingId:
|
|
748
|
+
_t40 = _context9.sent;
|
|
749
|
+
_t41 = "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString());
|
|
750
|
+
_t42 = {
|
|
751
|
+
authorization: _t40,
|
|
752
|
+
trackingId: _t41
|
|
658
753
|
};
|
|
659
|
-
return _context9.abrupt("return",
|
|
660
|
-
method:
|
|
661
|
-
uri:
|
|
662
|
-
headers:
|
|
754
|
+
return _context9.abrupt("return", _t37.request.call(_t37, {
|
|
755
|
+
method: _t38,
|
|
756
|
+
uri: _t39,
|
|
757
|
+
headers: _t42
|
|
663
758
|
}).catch(function (error) {
|
|
664
759
|
_loggerProxy.default.logger.error('Meeting:webinar#searchWebcastAttendees failed', error);
|
|
665
760
|
throw error;
|
|
@@ -679,26 +774,26 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
679
774
|
expelWebcastAttendee: function expelWebcastAttendee(participantId) {
|
|
680
775
|
var _this0 = this;
|
|
681
776
|
return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee0() {
|
|
682
|
-
var
|
|
777
|
+
var _t43, _t44, _t45, _t46, _t47, _t48;
|
|
683
778
|
return _regenerator.default.wrap(function (_context0) {
|
|
684
779
|
while (1) switch (_context0.prev = _context0.next) {
|
|
685
780
|
case 0:
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
781
|
+
_t43 = _this0;
|
|
782
|
+
_t44 = _constants.HTTP_VERBS.DELETE;
|
|
783
|
+
_t45 = "".concat(_this0.webcastInstanceUrl, "/attendees/").concat(participantId);
|
|
689
784
|
_context0.next = 1;
|
|
690
785
|
return _this0.webex.credentials.getUserToken();
|
|
691
786
|
case 1:
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
authorization:
|
|
696
|
-
trackingId:
|
|
787
|
+
_t46 = _context0.sent;
|
|
788
|
+
_t47 = "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString());
|
|
789
|
+
_t48 = {
|
|
790
|
+
authorization: _t46,
|
|
791
|
+
trackingId: _t47
|
|
697
792
|
};
|
|
698
|
-
return _context0.abrupt("return",
|
|
699
|
-
method:
|
|
700
|
-
uri:
|
|
701
|
-
headers:
|
|
793
|
+
return _context0.abrupt("return", _t43.request.call(_t43, {
|
|
794
|
+
method: _t44,
|
|
795
|
+
uri: _t45,
|
|
796
|
+
headers: _t48
|
|
702
797
|
}).catch(function (error) {
|
|
703
798
|
_loggerProxy.default.logger.error('Meeting:webinar#expelWebcastAttendee failed', error);
|
|
704
799
|
throw error;
|
|
@@ -722,7 +817,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
722
817
|
var _this1 = this;
|
|
723
818
|
return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee1() {
|
|
724
819
|
var _payload$limit, _meeting$locusInfo3, _meeting$locusInfo3$l, _meeting$locusInfo3$l2, _meeting$locusInfo3$l3;
|
|
725
|
-
var meeting, rawParams, attendeeSearchUrl,
|
|
820
|
+
var meeting, rawParams, attendeeSearchUrl, _t49, _t50, _t51, _t52, _t53, _t54;
|
|
726
821
|
return _regenerator.default.wrap(function (_context1) {
|
|
727
822
|
while (1) switch (_context1.prev = _context1.next) {
|
|
728
823
|
case 0:
|
|
@@ -747,22 +842,22 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
747
842
|
_loggerProxy.default.logger.error('Meeting:webinar5k#searchLargeScaleWebinarAttendees failed --> attendee search url unavailable');
|
|
748
843
|
throw new Error('Meeting:webinar5k#Attendee search url is not available');
|
|
749
844
|
case 2:
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
845
|
+
_t49 = _this1;
|
|
846
|
+
_t50 = _constants.HTTP_VERBS.GET;
|
|
847
|
+
_t51 = "".concat(attendeeSearchUrl, "?").concat(new URLSearchParams((0, _utils.sanitizeParams)(rawParams)).toString());
|
|
753
848
|
_context1.next = 3;
|
|
754
849
|
return _this1.webex.credentials.getUserToken();
|
|
755
850
|
case 3:
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
authorization:
|
|
760
|
-
trackingId:
|
|
851
|
+
_t52 = _context1.sent;
|
|
852
|
+
_t53 = "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString());
|
|
853
|
+
_t54 = {
|
|
854
|
+
authorization: _t52,
|
|
855
|
+
trackingId: _t53
|
|
761
856
|
};
|
|
762
|
-
return _context1.abrupt("return",
|
|
763
|
-
method:
|
|
764
|
-
uri:
|
|
765
|
-
headers:
|
|
857
|
+
return _context1.abrupt("return", _t49.request.call(_t49, {
|
|
858
|
+
method: _t50,
|
|
859
|
+
uri: _t51,
|
|
860
|
+
headers: _t54
|
|
766
861
|
}).catch(function (error) {
|
|
767
862
|
_loggerProxy.default.logger.error('Meeting:webinar5k#searchLargeScaleWebinarAttendees failed', error);
|
|
768
863
|
throw error;
|
|
@@ -774,7 +869,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
774
869
|
}, _callee1);
|
|
775
870
|
}))();
|
|
776
871
|
},
|
|
777
|
-
version: "3.12.0-next.
|
|
872
|
+
version: "3.12.0-next.66"
|
|
778
873
|
});
|
|
779
874
|
var _default = exports.default = Webinar;
|
|
780
875
|
//# sourceMappingURL=index.js.map
|