@webex/calling 3.11.0-next.10 → 3.11.0-next.12
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.
|
@@ -160,7 +160,8 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
160
160
|
errorInfo,
|
|
161
161
|
errorStatus,
|
|
162
162
|
_args4 = arguments,
|
|
163
|
-
_t
|
|
163
|
+
_t,
|
|
164
|
+
_t2;
|
|
164
165
|
return _regenerator.default.wrap(function (_context4) {
|
|
165
166
|
while (1) switch (_context4.prev = _context4.next) {
|
|
166
167
|
case 0:
|
|
@@ -208,13 +209,14 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
208
209
|
});
|
|
209
210
|
}
|
|
210
211
|
}
|
|
211
|
-
// Check the calling backend
|
|
212
|
+
// Check the calling backend (BEMS01958007: non-fatal so /lines or uploadLogs failure does not drop call history)
|
|
212
213
|
if (!(callingBackend === _types.CALLING_BACKEND.UCM)) {
|
|
213
|
-
_context4.next =
|
|
214
|
+
_context4.next = 7;
|
|
214
215
|
break;
|
|
215
216
|
}
|
|
217
|
+
_context4.prev = 3;
|
|
216
218
|
if (!(this.userSessions[_constants2.USER_SESSIONS] && this.userSessions[_constants2.USER_SESSIONS].length > 0)) {
|
|
217
|
-
_context4.next =
|
|
219
|
+
_context4.next = 5;
|
|
218
220
|
break;
|
|
219
221
|
}
|
|
220
222
|
// Check if cucmDN exists and is valid in any of the userSessions
|
|
@@ -222,12 +224,13 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
222
224
|
return session.self.cucmDN && session.self.cucmDN.length > 0;
|
|
223
225
|
}); // If any user session has cucmDN, proceed to fetch line data
|
|
224
226
|
if (!hasCucmDN) {
|
|
225
|
-
_context4.next =
|
|
227
|
+
_context4.next = 5;
|
|
226
228
|
break;
|
|
227
229
|
}
|
|
228
|
-
|
|
230
|
+
_Logger.default.info('Fetching UCM lines data for call history enrichment', this.loggerContext);
|
|
231
|
+
_context4.next = 4;
|
|
229
232
|
return this.fetchUCMLinesData();
|
|
230
|
-
case
|
|
233
|
+
case 4:
|
|
231
234
|
ucmLinesResponse = _context4.sent;
|
|
232
235
|
// Check if the Lines API response was successful
|
|
233
236
|
if (ucmLinesResponse.statusCode === 200 && (_ucmLinesResponse$dat = ucmLinesResponse.data.lines) !== null && _ucmLinesResponse$dat !== void 0 && _ucmLinesResponse$dat.devices) {
|
|
@@ -244,8 +247,22 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
244
247
|
});
|
|
245
248
|
}
|
|
246
249
|
});
|
|
250
|
+
_Logger.default.log("UCM line number enrichment completed", this.loggerContext);
|
|
251
|
+
} else {
|
|
252
|
+
_Logger.default.info("UCM lines API returned statusCode ".concat(ucmLinesResponse === null || ucmLinesResponse === void 0 ? void 0 : ucmLinesResponse.statusCode, " or no devices, ") + 'returning call history without line number enrichment', this.loggerContext);
|
|
247
253
|
}
|
|
248
|
-
case
|
|
254
|
+
case 5:
|
|
255
|
+
_context4.next = 7;
|
|
256
|
+
break;
|
|
257
|
+
case 6:
|
|
258
|
+
_context4.prev = 6;
|
|
259
|
+
_t = _context4["catch"](3);
|
|
260
|
+
_Logger.default.warn("UCM lines fetch or enrich failed, returning call history without line numbers: ".concat((0, _stringify.default)(_t)), {
|
|
261
|
+
file: _constants.CALL_HISTORY_FILE,
|
|
262
|
+
method: _constants.METHODS.GET_CALL_HISTORY_DATA
|
|
263
|
+
});
|
|
264
|
+
// Continue and return userSessions without ucmLineNumber enrichment
|
|
265
|
+
case 7:
|
|
249
266
|
responseDetails = {
|
|
250
267
|
statusCode: this.userSessions[_constants2.STATUS_CODE],
|
|
251
268
|
data: {
|
|
@@ -255,24 +272,24 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
255
272
|
};
|
|
256
273
|
_Logger.default.log("Successfully retrieved call history data with ".concat(this.userSessions[_constants2.USER_SESSIONS].length, " records"), this.loggerContext);
|
|
257
274
|
return _context4.abrupt("return", responseDetails);
|
|
258
|
-
case
|
|
259
|
-
_context4.prev =
|
|
260
|
-
|
|
261
|
-
_Logger.default.error("Failed to get call history: ".concat((0, _stringify.default)(
|
|
275
|
+
case 8:
|
|
276
|
+
_context4.prev = 8;
|
|
277
|
+
_t2 = _context4["catch"](1);
|
|
278
|
+
_Logger.default.error("Failed to get call history: ".concat((0, _stringify.default)(_t2)), {
|
|
262
279
|
file: _constants.CALL_HISTORY_FILE,
|
|
263
280
|
method: _constants.METHODS.GET_CALL_HISTORY_DATA
|
|
264
281
|
});
|
|
265
|
-
_context4.next =
|
|
282
|
+
_context4.next = 9;
|
|
266
283
|
return (0, _Utils.uploadLogs)();
|
|
267
|
-
case
|
|
268
|
-
errorInfo =
|
|
284
|
+
case 9:
|
|
285
|
+
errorInfo = _t2;
|
|
269
286
|
errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, this.loggerContext);
|
|
270
287
|
return _context4.abrupt("return", errorStatus);
|
|
271
|
-
case
|
|
288
|
+
case 10:
|
|
272
289
|
case "end":
|
|
273
290
|
return _context4.stop();
|
|
274
291
|
}
|
|
275
|
-
}, _callee4, this, [[1,
|
|
292
|
+
}, _callee4, this, [[1, 8], [3, 6]]);
|
|
276
293
|
}));
|
|
277
294
|
function getCallHistoryData() {
|
|
278
295
|
return _getCallHistoryData.apply(this, arguments);
|
|
@@ -289,7 +306,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
289
306
|
key: "updateMissedCalls",
|
|
290
307
|
value: (function () {
|
|
291
308
|
var _updateMissedCalls = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5(endTimeSessionIds) {
|
|
292
|
-
var loggerContext, santizedSessionIds, requestBody, _response$headers, updateMissedCallContentUrl, response, data, responseDetails, errorInfo, errorStatus,
|
|
309
|
+
var loggerContext, santizedSessionIds, requestBody, _response$headers, updateMissedCallContentUrl, response, data, responseDetails, errorInfo, errorStatus, _t3, _t4, _t5, _t6, _t7, _t8, _t9, _t0;
|
|
293
310
|
return _regenerator.default.wrap(function (_context5) {
|
|
294
311
|
while (1) switch (_context5.prev = _context5.next) {
|
|
295
312
|
case 0:
|
|
@@ -308,21 +325,21 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
308
325
|
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with sessions: ").concat((0, _stringify.default)(santizedSessionIds)), loggerContext);
|
|
309
326
|
_context5.prev = 1;
|
|
310
327
|
updateMissedCallContentUrl = "".concat(this.janusUrl, "/").concat(_constants.HISTORY, "/").concat(_constants2.USER_SESSIONS, "/").concat(_constants.UPDATE_MISSED_CALLS_ENDPOINT); // Make a POST request to update missed calls
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
328
|
+
_t3 = fetch;
|
|
329
|
+
_t4 = updateMissedCallContentUrl;
|
|
330
|
+
_t5 = _types.HTTP_METHODS.POST;
|
|
331
|
+
_t6 = _defineProperty2.default;
|
|
332
|
+
_t7 = (0, _defineProperty2.default)({}, _constants.CONTENT_TYPE, _constants.APPLICATION_JSON);
|
|
316
333
|
_context5.next = 2;
|
|
317
334
|
return this.webex.credentials.getUserToken();
|
|
318
335
|
case 2:
|
|
319
|
-
|
|
320
|
-
|
|
336
|
+
_t8 = _t6(_t7, "Authorization", _context5.sent);
|
|
337
|
+
_t9 = (0, _stringify.default)(requestBody);
|
|
321
338
|
_context5.next = 3;
|
|
322
|
-
return
|
|
323
|
-
method:
|
|
324
|
-
headers:
|
|
325
|
-
body:
|
|
339
|
+
return _t3(_t4, {
|
|
340
|
+
method: _t5,
|
|
341
|
+
headers: _t8,
|
|
342
|
+
body: _t9
|
|
326
343
|
});
|
|
327
344
|
case 3:
|
|
328
345
|
response = _context5.sent;
|
|
@@ -349,8 +366,8 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
349
366
|
return _context5.abrupt("return", responseDetails);
|
|
350
367
|
case 6:
|
|
351
368
|
_context5.prev = 6;
|
|
352
|
-
|
|
353
|
-
_Logger.default.error("Failed to update missed calls: ".concat((0, _stringify.default)(
|
|
369
|
+
_t0 = _context5["catch"](1);
|
|
370
|
+
_Logger.default.error("Failed to update missed calls: ".concat((0, _stringify.default)(_t0)), {
|
|
354
371
|
file: _constants.CALL_HISTORY_FILE,
|
|
355
372
|
method: _constants.METHODS.UPDATE_MISSED_CALLS
|
|
356
373
|
});
|
|
@@ -359,7 +376,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
359
376
|
case 7:
|
|
360
377
|
// Catch the 401 error from try block, return the error object to user
|
|
361
378
|
errorInfo = {
|
|
362
|
-
statusCode:
|
|
379
|
+
statusCode: _t0 instanceof Error ? Number(_t0.message) : ''
|
|
363
380
|
};
|
|
364
381
|
errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
|
|
365
382
|
return _context5.abrupt("return", errorStatus);
|
|
@@ -383,7 +400,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
383
400
|
key: "fetchUCMLinesData",
|
|
384
401
|
value: (function () {
|
|
385
402
|
var _fetchUCMLinesData = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6() {
|
|
386
|
-
var loggerContext, vgEndpoint, userId, orgId, linesURIForUCM, _response$headers2, response, ucmLineDetails, errorInfo, errorStatus,
|
|
403
|
+
var loggerContext, vgEndpoint, userId, orgId, linesURIForUCM, _response$headers2, response, ucmLineDetails, errorInfo, errorStatus, _t1;
|
|
387
404
|
return _regenerator.default.wrap(function (_context6) {
|
|
388
405
|
while (1) switch (_context6.prev = _context6.next) {
|
|
389
406
|
case 0:
|
|
@@ -416,15 +433,15 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
416
433
|
return _context6.abrupt("return", ucmLineDetails);
|
|
417
434
|
case 3:
|
|
418
435
|
_context6.prev = 3;
|
|
419
|
-
|
|
420
|
-
_Logger.default.error("Failed to fetch UCM lines data: ".concat((0, _stringify.default)(
|
|
436
|
+
_t1 = _context6["catch"](1);
|
|
437
|
+
_Logger.default.error("Failed to fetch UCM lines data: ".concat((0, _stringify.default)(_t1)), {
|
|
421
438
|
file: _constants.CALL_HISTORY_FILE,
|
|
422
439
|
method: _constants.METHODS.FETCH_UCM_LINES_DATA
|
|
423
440
|
});
|
|
424
441
|
_context6.next = 4;
|
|
425
442
|
return (0, _Utils.uploadLogs)();
|
|
426
443
|
case 4:
|
|
427
|
-
errorInfo =
|
|
444
|
+
errorInfo = _t1;
|
|
428
445
|
errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
|
|
429
446
|
return _context6.abrupt("return", errorStatus);
|
|
430
447
|
case 5:
|
|
@@ -448,7 +465,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
448
465
|
key: "deleteCallHistoryRecords",
|
|
449
466
|
value: (function () {
|
|
450
467
|
var _deleteCallHistoryRecords = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7(deleteSessionIds) {
|
|
451
|
-
var loggerContext, invalidSessions, invalidSessionIds, santizedSessionIds, deleteRequestBody, _response$headers3, deleteCallHistoryRecordContentUrl, response, data, responseDetails, errorInfo, errorStatus,
|
|
468
|
+
var loggerContext, invalidSessions, invalidSessionIds, santizedSessionIds, deleteRequestBody, _response$headers3, deleteCallHistoryRecordContentUrl, response, data, responseDetails, errorInfo, errorStatus, _t10, _t11, _t12, _t13, _t14, _t15, _t16, _t17;
|
|
452
469
|
return _regenerator.default.wrap(function (_context7) {
|
|
453
470
|
while (1) switch (_context7.prev = _context7.next) {
|
|
454
471
|
case 0:
|
|
@@ -488,21 +505,21 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
488
505
|
};
|
|
489
506
|
_context7.prev = 2;
|
|
490
507
|
deleteCallHistoryRecordContentUrl = "".concat(this.janusUrl, "/").concat(_constants.HISTORY, "/").concat(_constants2.USER_SESSIONS, "/").concat(_constants.DELETE_CALL_HISTORY_RECORDS_ENDPOINT); // Make a POST request to delete call history records
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
508
|
+
_t10 = fetch;
|
|
509
|
+
_t11 = deleteCallHistoryRecordContentUrl;
|
|
510
|
+
_t12 = _types.HTTP_METHODS.POST;
|
|
511
|
+
_t13 = _defineProperty2.default;
|
|
512
|
+
_t14 = (0, _defineProperty2.default)({}, _constants.CONTENT_TYPE, _constants.APPLICATION_JSON);
|
|
496
513
|
_context7.next = 3;
|
|
497
514
|
return this.webex.credentials.getUserToken();
|
|
498
515
|
case 3:
|
|
499
|
-
|
|
500
|
-
|
|
516
|
+
_t15 = _t13(_t14, "Authorization", _context7.sent);
|
|
517
|
+
_t16 = (0, _stringify.default)(deleteRequestBody);
|
|
501
518
|
_context7.next = 4;
|
|
502
|
-
return
|
|
503
|
-
method:
|
|
504
|
-
headers:
|
|
505
|
-
body:
|
|
519
|
+
return _t10(_t11, {
|
|
520
|
+
method: _t12,
|
|
521
|
+
headers: _t15,
|
|
522
|
+
body: _t16
|
|
506
523
|
});
|
|
507
524
|
case 4:
|
|
508
525
|
response = _context7.sent;
|
|
@@ -528,8 +545,8 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
528
545
|
return _context7.abrupt("return", responseDetails);
|
|
529
546
|
case 7:
|
|
530
547
|
_context7.prev = 7;
|
|
531
|
-
|
|
532
|
-
_Logger.default.error("Failed to delete call history records: ".concat((0, _stringify.default)(
|
|
548
|
+
_t17 = _context7["catch"](2);
|
|
549
|
+
_Logger.default.error("Failed to delete call history records: ".concat((0, _stringify.default)(_t17)), {
|
|
533
550
|
file: _constants.CALL_HISTORY_FILE,
|
|
534
551
|
method: _constants.METHODS.DELETE_CALL_HISTORY_RECORDS
|
|
535
552
|
});
|
|
@@ -538,7 +555,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
538
555
|
case 8:
|
|
539
556
|
// Catch the 401 error from try block, return the error object to user
|
|
540
557
|
errorInfo = {
|
|
541
|
-
statusCode:
|
|
558
|
+
statusCode: _t17 instanceof Error ? Number(_t17.message) : ''
|
|
542
559
|
};
|
|
543
560
|
errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
|
|
544
561
|
return _context7.abrupt("return", errorStatus);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_SDKConnector","_interopRequireDefault","require","_types","_Logger","_Utils","_constants","_constants2","_types2","_impl","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","Boolean","prototype","valueOf","call","CallHistory","exports","_Eventing","webex","logger","_this$webex$internal$","_this","_classCallCheck2","file","CALL_HISTORY_FILE","method","METHODS","GET_CALL_HISTORY_DATA","_ref","_asyncToGenerator2","_regenerator","mark","_callee","event","wrap","_context","prev","next","data","userSessions","emit","COMMON_EVENT_KEYS","CALL_HISTORY_USER_SESSION_INFO","stop","_x","_ref2","_callee2","_context2","userReadSessions","CALL_HISTORY_USER_VIEWED_SESSIONS","_x2","_ref3","_callee3","_context3","deletedSessions","CALL_HISTORY_USER_SESSIONS_DELETED","_x3","sdkConnector","SDKConnector","getWebex","setWebex","janusUrl","internal","services","_serviceUrls","janus","get","_activeServices","registerSessionsListener","log","setLogger","level","_inherits2","_createClass2","key","value","_getCallHistoryData","_callee4","days","limit","sort","sortBy","date","callingBackend","sortByParam","sortParam","sharedSessionsParam","url","_janusResponse$header","janusResponse","hasCucmDN","_ucmLinesResponse$dat","ucmLinesResponse","ucmLinesData","responseDetails","errorInfo","errorStatus","_args4","_t","_context4","undefined","NUMBER_OF_DAYS","LIMIT","SORT","DEFAULT","SORT_BY","Date","getCallingBackEnd","setDate","getDate","fromDate","toISOString","_values","includes","info","concat","METHOD_START_MESSAGE","loggerContext","CALLING_BACKEND","WXC","HISTORY","USER_SESSIONS","FROM_DATE","request","uri","HTTP_METHODS","GET","service","ALLOWED_SERVICES","JANUS","sent","headers","trackingid","body","START_TIME","DESC","element","compareElement","getTime","ASC","UCM","some","session","self","cucmDN","fetchUCMLinesData","statusCode","lines","devices","device","line","dnorpattern","ucmLineNumber","index","STATUS_CODE","message","SUCCESS_MESSAGE","abrupt","error","_stringify","uploadLogs","serviceErrorCodeHandler","getCallHistoryData","_updateMissedCalls","_callee5","endTimeSessionIds","santizedSessionIds","requestBody","_response$headers","updateMissedCallContentUrl","response","_t2","_t3","_t4","_t5","_t6","_t7","_t8","_t9","_context5","UPDATE_MISSED_CALLS","map","endTime","UPDATE_MISSED_CALLS_ENDPOINT","fetch","POST","CONTENT_TYPE","APPLICATION_JSON","credentials","getUserToken","ok","Error","status","json","readStatusMessage","SET_READ_STATE_SUCCESS_MESSAGE","Number","updateMissedCalls","_x4","_fetchUCMLinesData","_callee6","vgEndpoint","userId","orgId","linesURIForUCM","_response$headers2","ucmLineDetails","_t0","_context6","FETCH_UCM_LINES_DATA","getVgActionEndpoint","VERSION_1","UNIFIED_COMMUNICATIONS","CONFIG","PEOPLE","LINES","ORG_ID","_deleteCallHistoryRecords","_callee7","deleteSessionIds","invalidSessions","invalidSessionIds","deleteRequestBody","_response$headers3","deleteCallHistoryRecordContentUrl","_t1","_t10","_t11","_t12","_t13","_t14","_t15","_t16","_context7","DELETE_CALL_HISTORY_RECORDS","_isNan","sessionId","join","deleteStatusMessage","SET_DELETE_CALL_RECORDS_INVALID_DATE_FORMAT_MESSAGE","FAILURE_MESSAGE","DELETE_CALL_HISTORY_RECORDS_ENDPOINT","SET_DELETE_CALL_RECORDS_SUCCESS_MESSAGE","deleteCallHistoryRecords","_x5","registerListener","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","handleSessionEvents","CALL_SESSION_EVENT_LEGACY","CALL_SESSION_EVENT_VIEWED","handleUserReadSessionEvents","CALL_SESSION_EVENT_DELETED","handleUserSessionsDeletedEvents","Eventing","createCallHistoryClient"],"sources":["CallHistory.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n/* eslint-disable no-underscore-dangle */\nimport SDKConnector from '../SDKConnector';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport {\n ALLOWED_SERVICES,\n HTTP_METHODS,\n WebexRequestPayload,\n SORT,\n SORT_BY,\n CALLING_BACKEND,\n} from '../common/types';\nimport {\n ICallHistory,\n JanusResponseEvent,\n LoggerInterface,\n UpdateMissedCallsResponse,\n UCMLinesResponse,\n DeleteCallHistoryRecordsResponse,\n} from './types';\nimport log from '../Logger';\nimport {\n serviceErrorCodeHandler,\n getVgActionEndpoint,\n getCallingBackEnd,\n uploadLogs,\n} from '../common/Utils';\nimport {\n APPLICATION_JSON,\n CALL_HISTORY_FILE,\n CONTENT_TYPE,\n FROM_DATE,\n HISTORY,\n LIMIT,\n NUMBER_OF_DAYS,\n UPDATE_MISSED_CALLS_ENDPOINT,\n SET_READ_STATE_SUCCESS_MESSAGE,\n VERSION_1,\n UNIFIED_COMMUNICATIONS,\n CONFIG,\n PEOPLE,\n LINES,\n ORG_ID,\n DELETE_CALL_HISTORY_RECORDS_ENDPOINT,\n SET_DELETE_CALL_RECORDS_SUCCESS_MESSAGE,\n SET_DELETE_CALL_RECORDS_INVALID_DATE_FORMAT_MESSAGE,\n METHODS,\n} from './constants';\nimport {\n FAILURE_MESSAGE,\n METHOD_START_MESSAGE,\n STATUS_CODE,\n SUCCESS_MESSAGE,\n USER_SESSIONS,\n} from '../common/constants';\nimport {\n COMMON_EVENT_KEYS,\n CallHistoryEventTypes,\n CallSessionEvent,\n MOBIUS_EVENT_KEYS,\n UserSession,\n EndTimeSessionId,\n CallSessionViewedEvent,\n SanitizedEndTimeAndSessionId,\n UCMLinesApiResponse,\n CallSessionDeletedEvent,\n} from '../Events/types';\nimport {Eventing} from '../Events/impl';\n/**\n * `CallHistory` module is designed to facilitate the retrieval of Call History Records by providing a set of APIs.\n *\n * This code snippet demonstrates how to create an instance of `CallHistory` using webex and logger.\n *\n * @example\n * ```javascript\n * const callHistory = createCallHistoryClient(webex, logger);\n * ```\n */\nexport class CallHistory extends Eventing<CallHistoryEventTypes> implements ICallHistory {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private janusUrl = '';\n\n private fromDate = '';\n\n private loggerContext = {\n file: CALL_HISTORY_FILE,\n method: METHODS.GET_CALL_HISTORY_DATA,\n };\n\n private userSessions: UserSession[] | undefined;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, logger: LoggerInterface) {\n super();\n this.sdkConnector = SDKConnector;\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n this.janusUrl =\n this.webex.internal.services._serviceUrls?.janus ||\n this.webex.internal.services.get(this.webex.internal.services._activeServices.janus);\n this.registerSessionsListener();\n log.setLogger(logger.level, CALL_HISTORY_FILE);\n }\n\n /**\n * Function to display the Janus API response.\n * @param days - Number of days to fetch the call history data.\n * @param limit - Number of records to be fetched.\n * @param sort - Sort the records in ascending or descending order.\n * @param sortBy - Sort the records by start time or end time.\n */\n public async getCallHistoryData(\n days: number = NUMBER_OF_DAYS,\n limit: number = LIMIT,\n sort: SORT = SORT.DEFAULT,\n sortBy: SORT_BY = SORT_BY.DEFAULT\n ): Promise<JanusResponseEvent> {\n /*\n 1. Mandatory field for Janus API - fromDate\n 2. Calculating the fromDate by deducting the NUMBER_OF_DAYS with the current date\n */\n const date = new Date();\n const callingBackend = getCallingBackEnd(this.webex);\n date.setDate(date.getDate() - days);\n this.fromDate = date.toISOString();\n const sortByParam = Object.values(SORT_BY).includes(sortBy) ? sortBy : SORT_BY.DEFAULT;\n const sortParam = Object.values(SORT).includes(sort) ? sort : SORT.DEFAULT;\n\n log.info(\n `${METHOD_START_MESSAGE} with days=${days}, limit=${limit}, sort=${sortParam}, sortBy=${sortByParam}`,\n this.loggerContext\n );\n\n log.info(`Janus API URL: ${this.janusUrl}`, this.loggerContext);\n log.info(`Call history from date : ${this.fromDate}`, this.loggerContext);\n\n // Add includeSharedSessions=true parameter for WXC backend to fetch calls with sessionType \"WEBEXCALLING_SHARED\"\n const sharedSessionsParam =\n callingBackend === CALLING_BACKEND.WXC ? '&includeSharedSessions=true' : '';\n log.info(\n `Fetching call history for ${callingBackend} backend${\n callingBackend === CALLING_BACKEND.WXC ? ' with shared sessions' : ''\n }`,\n this.loggerContext\n );\n const url = `${this.janusUrl}/${HISTORY}/${USER_SESSIONS}${FROM_DATE}=${this.fromDate}&limit=${limit}&includeNewSessionTypes=true&sort=${sortParam}${sharedSessionsParam}`;\n\n try {\n const janusResponse = <WebexRequestPayload>await this.webex.request({\n uri: `${url}`,\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.JANUS,\n });\n\n log.log(`Response trackingId: ${janusResponse?.headers?.trackingid}`, this.loggerContext);\n\n this.userSessions = janusResponse.body as UserSession[];\n if (sortByParam === SORT_BY.START_TIME) {\n if (sortParam === SORT.DESC) {\n this.userSessions[USER_SESSIONS].sort(\n (element: Date, compareElement: Date) =>\n new Date(compareElement[sortByParam]).getTime() -\n new Date(element[sortByParam]).getTime()\n );\n } else if (sortParam === SORT.ASC) {\n this.userSessions[USER_SESSIONS].sort(\n (element: Date, compareElement: Date) =>\n new Date(element[sortByParam]).getTime() -\n new Date(compareElement[sortByParam]).getTime()\n );\n }\n }\n // Check the calling backend\n if (callingBackend === CALLING_BACKEND.UCM) {\n // Check if userSessions exist and the length is greater than 0\n if (this.userSessions[USER_SESSIONS] && this.userSessions[USER_SESSIONS].length > 0) {\n // Check if cucmDN exists and is valid in any of the userSessions\n const hasCucmDN = this.userSessions[USER_SESSIONS].some(\n (session: UserSession) => session.self.cucmDN && session.self.cucmDN.length > 0\n );\n // If any user session has cucmDN, proceed to fetch line data\n if (hasCucmDN) {\n // Fetch the Lines data\n const ucmLinesResponse = await this.fetchUCMLinesData();\n\n // Check if the Lines API response was successful\n if (ucmLinesResponse.statusCode === 200 && ucmLinesResponse.data.lines?.devices) {\n const ucmLinesData = ucmLinesResponse.data.lines.devices;\n\n // Iterate over user sessions and match with Lines data\n this.userSessions[USER_SESSIONS].forEach((session: UserSession) => {\n const cucmDN = session.self.cucmDN;\n\n if (cucmDN) {\n ucmLinesData.forEach((device) => {\n device.lines.forEach((line) => {\n if (line.dnorpattern === cucmDN) {\n session.self.ucmLineNumber = line.index; // Assign the ucmLineNumber\n }\n });\n });\n }\n });\n }\n }\n }\n }\n\n const responseDetails = {\n statusCode: this.userSessions[STATUS_CODE],\n data: {\n userSessions: this.userSessions[USER_SESSIONS],\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log(\n `Successfully retrieved call history data with ${this.userSessions[USER_SESSIONS].length} records`,\n this.loggerContext\n );\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to get call history: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.GET_CALL_HISTORY_DATA,\n });\n await uploadLogs();\n\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, this.loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Function to update the missed call status in the call history using sessionId and time.\n * @param endTimeSessionIds - An array of objects containing endTime and sessionId of the missed call history records\n * @returns {Promise} Resolves to an object of type {@link UpdateMissedCallsResponse}.Response details with success or error status.\n */\n public async updateMissedCalls(\n endTimeSessionIds: EndTimeSessionId[]\n ): Promise<UpdateMissedCallsResponse> {\n const loggerContext = {\n file: CALL_HISTORY_FILE,\n method: METHODS.UPDATE_MISSED_CALLS,\n };\n // Convert endTime to milliseconds for each session\n const santizedSessionIds: SanitizedEndTimeAndSessionId[] = endTimeSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n const requestBody = {\n endTimeSessionIds: santizedSessionIds,\n };\n\n log.info(\n `${METHOD_START_MESSAGE} with sessions: ${JSON.stringify(santizedSessionIds)}`,\n loggerContext\n );\n try {\n const updateMissedCallContentUrl = `${this.janusUrl}/${HISTORY}/${USER_SESSIONS}/${UPDATE_MISSED_CALLS_ENDPOINT}`;\n // Make a POST request to update missed calls\n const response = await fetch(updateMissedCallContentUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await this.webex.credentials.getUserToken(),\n },\n body: JSON.stringify(requestBody),\n });\n if (!response.ok) {\n throw new Error(`${response.status}`);\n }\n\n log.log(`Response trackingId: ${response.headers?.get('trackingid')}`, loggerContext);\n\n const data: UpdateMissedCallsResponse = await response.json();\n log.log(`Missed calls are successfully read by the user`, loggerContext);\n const responseDetails: UpdateMissedCallsResponse = {\n statusCode: data.statusCode as number,\n data: {\n readStatusMessage: SET_READ_STATE_SUCCESS_MESSAGE,\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log(`Successfully updated ${santizedSessionIds?.length} missed calls`, loggerContext);\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to update missed calls: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.UPDATE_MISSED_CALLS,\n });\n await uploadLogs();\n\n // Catch the 401 error from try block, return the error object to user\n const errorInfo = {\n statusCode: err instanceof Error ? Number(err.message) : '',\n } as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Function to display the UCM Lines API response.\n * @returns {Promise} Resolves to an object of type {@link UCMLinesResponse}.Response details with success or error status.\n */\n private async fetchUCMLinesData(): Promise<UCMLinesResponse> {\n const loggerContext = {\n file: CALL_HISTORY_FILE,\n method: METHODS.FETCH_UCM_LINES_DATA,\n };\n const vgEndpoint = getVgActionEndpoint(this.webex, CALLING_BACKEND.UCM);\n const userId = this.webex.internal.device.userId;\n const orgId = this.webex.internal.device.orgId;\n const linesURIForUCM = `${vgEndpoint}/${VERSION_1}/${UNIFIED_COMMUNICATIONS}/${CONFIG}/${PEOPLE}/${userId}/${LINES}?${ORG_ID}=${orgId}`;\n\n log.info(`${METHOD_START_MESSAGE} with URL: ${linesURIForUCM}`, loggerContext);\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n uri: `${linesURIForUCM}`,\n method: HTTP_METHODS.GET,\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const ucmLineDetails: UCMLinesResponse = {\n statusCode: Number(response.statusCode),\n data: {\n lines: response.body as UCMLinesApiResponse,\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log(`Line details fetched successfully`, loggerContext);\n\n return ucmLineDetails;\n } catch (err: unknown) {\n log.error(`Failed to fetch UCM lines data: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.FETCH_UCM_LINES_DATA,\n });\n await uploadLogs();\n\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Function to delete the call history records using sessionId and endTime.\n * @param deleteSessionIds - An array of objects containing endTime and sessionId of the call history records\n * @returns {Promise} Resolves to an object of type {@link DeleteCallHistoryRecordsResponse}.Response details with success or error status.\n */\n public async deleteCallHistoryRecords(\n deleteSessionIds: EndTimeSessionId[]\n ): Promise<DeleteCallHistoryRecordsResponse> {\n const loggerContext = {\n file: CALL_HISTORY_FILE,\n method: METHODS.DELETE_CALL_HISTORY_RECORDS,\n };\n\n // Collect all sessions with invalid dates (endTime) in an array\n const invalidSessions = deleteSessionIds.filter((session) =>\n Number.isNaN(new Date(session.endTime).getTime())\n );\n\n log.info(\n `${METHOD_START_MESSAGE} with sessions: ${JSON.stringify(deleteSessionIds)}`,\n loggerContext\n );\n\n if (invalidSessions.length > 0) {\n // If there are invalid sessions, return an error with details\n const invalidSessionIds = invalidSessions.map((session) => session.sessionId).join(', ');\n log.info(\n `The provided date is malformed or invalid for session IDs: ${invalidSessionIds}`,\n loggerContext\n );\n\n return {\n statusCode: 400,\n data: {\n deleteStatusMessage: SET_DELETE_CALL_RECORDS_INVALID_DATE_FORMAT_MESSAGE,\n },\n message: FAILURE_MESSAGE,\n };\n }\n\n // Convert endTime to milliseconds for each sessionId\n const santizedSessionIds: SanitizedEndTimeAndSessionId[] = deleteSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n\n const deleteRequestBody = {\n deleteSessionIds: santizedSessionIds,\n };\n\n try {\n const deleteCallHistoryRecordContentUrl = `${this.janusUrl}/${HISTORY}/${USER_SESSIONS}/${DELETE_CALL_HISTORY_RECORDS_ENDPOINT}`;\n // Make a POST request to delete call history records\n const response = await fetch(deleteCallHistoryRecordContentUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await this.webex.credentials.getUserToken(),\n },\n body: JSON.stringify(deleteRequestBody),\n });\n if (!response.ok) {\n throw new Error(`${response.status}`);\n }\n\n log.log(`Response trackingId: ${response.headers?.get('trackingid')}`, loggerContext);\n\n const data: DeleteCallHistoryRecordsResponse = await response.json();\n log.log(\n `Successfully deleted ${santizedSessionIds?.length} call history records`,\n loggerContext\n );\n const responseDetails: DeleteCallHistoryRecordsResponse = {\n statusCode: data.statusCode as number,\n data: {\n deleteStatusMessage: SET_DELETE_CALL_RECORDS_SUCCESS_MESSAGE,\n },\n message: SUCCESS_MESSAGE,\n };\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to delete call history records: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.DELETE_CALL_HISTORY_RECORDS,\n });\n await uploadLogs();\n\n // Catch the 401 error from try block, return the error object to user\n const errorInfo = {\n statusCode: err instanceof Error ? Number(err.message) : '',\n } as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n handleSessionEvents = async (event?: CallSessionEvent) => {\n if (event && event.data.userSessions.userSessions) {\n this.emit(COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSION_INFO, event as CallSessionEvent);\n }\n };\n\n handleUserReadSessionEvents = async (event?: CallSessionViewedEvent) => {\n if (event && event.data.userReadSessions.userReadSessions) {\n this.emit(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_VIEWED_SESSIONS,\n event as CallSessionViewedEvent\n );\n }\n };\n\n handleUserSessionsDeletedEvents = async (event?: CallSessionDeletedEvent) => {\n if (event && event.data.deletedSessions) {\n this.emit(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSIONS_DELETED,\n event as CallSessionDeletedEvent\n );\n }\n };\n\n /**\n *\n */\n private registerSessionsListener() {\n this.sdkConnector.registerListener<CallSessionEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE,\n this.handleSessionEvents\n );\n this.sdkConnector.registerListener<CallSessionEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_LEGACY,\n this.handleSessionEvents\n );\n this.sdkConnector.registerListener<CallSessionViewedEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_VIEWED,\n this.handleUserReadSessionEvents\n );\n this.sdkConnector.registerListener<CallSessionDeletedEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_DELETED,\n this.handleUserSessionsDeletedEvents\n );\n }\n}\n/**\n * Creates a `CallHistory` client instance for accessing Call History APIs.\n *\n * @param {WebexSDK} webex - `Webex SDK` instance.\n * @param {LoggerInterface} logger - An instance implementing LoggerInterface used to set the log level for the module.\n */\nexport const createCallHistoryClient = (webex: WebexSDK, logger: LoggerInterface): ICallHistory =>\n new CallHistory(webex, logger);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_SDKConnector","_interopRequireDefault","require","_types","_Logger","_Utils","_constants","_constants2","_types2","_impl","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","Boolean","prototype","valueOf","call","CallHistory","exports","_Eventing","webex","logger","_this$webex$internal$","_this","_classCallCheck2","file","CALL_HISTORY_FILE","method","METHODS","GET_CALL_HISTORY_DATA","_ref","_asyncToGenerator2","_regenerator","mark","_callee","event","wrap","_context","prev","next","data","userSessions","emit","COMMON_EVENT_KEYS","CALL_HISTORY_USER_SESSION_INFO","stop","_x","_ref2","_callee2","_context2","userReadSessions","CALL_HISTORY_USER_VIEWED_SESSIONS","_x2","_ref3","_callee3","_context3","deletedSessions","CALL_HISTORY_USER_SESSIONS_DELETED","_x3","sdkConnector","SDKConnector","getWebex","setWebex","janusUrl","internal","services","_serviceUrls","janus","get","_activeServices","registerSessionsListener","log","setLogger","level","_inherits2","_createClass2","key","value","_getCallHistoryData","_callee4","days","limit","sort","sortBy","date","callingBackend","sortByParam","sortParam","sharedSessionsParam","url","_janusResponse$header","janusResponse","hasCucmDN","_ucmLinesResponse$dat","ucmLinesResponse","ucmLinesData","responseDetails","errorInfo","errorStatus","_args4","_t","_t2","_context4","undefined","NUMBER_OF_DAYS","LIMIT","SORT","DEFAULT","SORT_BY","Date","getCallingBackEnd","setDate","getDate","fromDate","toISOString","_values","includes","info","concat","METHOD_START_MESSAGE","loggerContext","CALLING_BACKEND","WXC","HISTORY","USER_SESSIONS","FROM_DATE","request","uri","HTTP_METHODS","GET","service","ALLOWED_SERVICES","JANUS","sent","headers","trackingid","body","START_TIME","DESC","element","compareElement","getTime","ASC","UCM","some","session","self","cucmDN","fetchUCMLinesData","statusCode","lines","devices","device","line","dnorpattern","ucmLineNumber","index","warn","_stringify","STATUS_CODE","message","SUCCESS_MESSAGE","abrupt","error","uploadLogs","serviceErrorCodeHandler","getCallHistoryData","_updateMissedCalls","_callee5","endTimeSessionIds","santizedSessionIds","requestBody","_response$headers","updateMissedCallContentUrl","response","_t3","_t4","_t5","_t6","_t7","_t8","_t9","_t0","_context5","UPDATE_MISSED_CALLS","map","endTime","UPDATE_MISSED_CALLS_ENDPOINT","fetch","POST","CONTENT_TYPE","APPLICATION_JSON","credentials","getUserToken","ok","Error","status","json","readStatusMessage","SET_READ_STATE_SUCCESS_MESSAGE","Number","updateMissedCalls","_x4","_fetchUCMLinesData","_callee6","vgEndpoint","userId","orgId","linesURIForUCM","_response$headers2","ucmLineDetails","_t1","_context6","FETCH_UCM_LINES_DATA","getVgActionEndpoint","VERSION_1","UNIFIED_COMMUNICATIONS","CONFIG","PEOPLE","LINES","ORG_ID","_deleteCallHistoryRecords","_callee7","deleteSessionIds","invalidSessions","invalidSessionIds","deleteRequestBody","_response$headers3","deleteCallHistoryRecordContentUrl","_t10","_t11","_t12","_t13","_t14","_t15","_t16","_t17","_context7","DELETE_CALL_HISTORY_RECORDS","_isNan","sessionId","join","deleteStatusMessage","SET_DELETE_CALL_RECORDS_INVALID_DATE_FORMAT_MESSAGE","FAILURE_MESSAGE","DELETE_CALL_HISTORY_RECORDS_ENDPOINT","SET_DELETE_CALL_RECORDS_SUCCESS_MESSAGE","deleteCallHistoryRecords","_x5","registerListener","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","handleSessionEvents","CALL_SESSION_EVENT_LEGACY","CALL_SESSION_EVENT_VIEWED","handleUserReadSessionEvents","CALL_SESSION_EVENT_DELETED","handleUserSessionsDeletedEvents","Eventing","createCallHistoryClient"],"sources":["CallHistory.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n/* eslint-disable no-underscore-dangle */\nimport SDKConnector from '../SDKConnector';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport {\n ALLOWED_SERVICES,\n HTTP_METHODS,\n WebexRequestPayload,\n SORT,\n SORT_BY,\n CALLING_BACKEND,\n} from '../common/types';\nimport {\n ICallHistory,\n JanusResponseEvent,\n LoggerInterface,\n UpdateMissedCallsResponse,\n UCMLinesResponse,\n DeleteCallHistoryRecordsResponse,\n} from './types';\nimport log from '../Logger';\nimport {\n serviceErrorCodeHandler,\n getVgActionEndpoint,\n getCallingBackEnd,\n uploadLogs,\n} from '../common/Utils';\nimport {\n APPLICATION_JSON,\n CALL_HISTORY_FILE,\n CONTENT_TYPE,\n FROM_DATE,\n HISTORY,\n LIMIT,\n NUMBER_OF_DAYS,\n UPDATE_MISSED_CALLS_ENDPOINT,\n SET_READ_STATE_SUCCESS_MESSAGE,\n VERSION_1,\n UNIFIED_COMMUNICATIONS,\n CONFIG,\n PEOPLE,\n LINES,\n ORG_ID,\n DELETE_CALL_HISTORY_RECORDS_ENDPOINT,\n SET_DELETE_CALL_RECORDS_SUCCESS_MESSAGE,\n SET_DELETE_CALL_RECORDS_INVALID_DATE_FORMAT_MESSAGE,\n METHODS,\n} from './constants';\nimport {\n FAILURE_MESSAGE,\n METHOD_START_MESSAGE,\n STATUS_CODE,\n SUCCESS_MESSAGE,\n USER_SESSIONS,\n} from '../common/constants';\nimport {\n COMMON_EVENT_KEYS,\n CallHistoryEventTypes,\n CallSessionEvent,\n MOBIUS_EVENT_KEYS,\n UserSession,\n EndTimeSessionId,\n CallSessionViewedEvent,\n SanitizedEndTimeAndSessionId,\n UCMLinesApiResponse,\n CallSessionDeletedEvent,\n} from '../Events/types';\nimport {Eventing} from '../Events/impl';\n/**\n * `CallHistory` module is designed to facilitate the retrieval of Call History Records by providing a set of APIs.\n *\n * This code snippet demonstrates how to create an instance of `CallHistory` using webex and logger.\n *\n * @example\n * ```javascript\n * const callHistory = createCallHistoryClient(webex, logger);\n * ```\n */\nexport class CallHistory extends Eventing<CallHistoryEventTypes> implements ICallHistory {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private janusUrl = '';\n\n private fromDate = '';\n\n private loggerContext = {\n file: CALL_HISTORY_FILE,\n method: METHODS.GET_CALL_HISTORY_DATA,\n };\n\n private userSessions: UserSession[] | undefined;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, logger: LoggerInterface) {\n super();\n this.sdkConnector = SDKConnector;\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n this.janusUrl =\n this.webex.internal.services._serviceUrls?.janus ||\n this.webex.internal.services.get(this.webex.internal.services._activeServices.janus);\n this.registerSessionsListener();\n log.setLogger(logger.level, CALL_HISTORY_FILE);\n }\n\n /**\n * Function to display the Janus API response.\n * @param days - Number of days to fetch the call history data.\n * @param limit - Number of records to be fetched.\n * @param sort - Sort the records in ascending or descending order.\n * @param sortBy - Sort the records by start time or end time.\n */\n public async getCallHistoryData(\n days: number = NUMBER_OF_DAYS,\n limit: number = LIMIT,\n sort: SORT = SORT.DEFAULT,\n sortBy: SORT_BY = SORT_BY.DEFAULT\n ): Promise<JanusResponseEvent> {\n /*\n 1. Mandatory field for Janus API - fromDate\n 2. Calculating the fromDate by deducting the NUMBER_OF_DAYS with the current date\n */\n const date = new Date();\n const callingBackend = getCallingBackEnd(this.webex);\n date.setDate(date.getDate() - days);\n this.fromDate = date.toISOString();\n const sortByParam = Object.values(SORT_BY).includes(sortBy) ? sortBy : SORT_BY.DEFAULT;\n const sortParam = Object.values(SORT).includes(sort) ? sort : SORT.DEFAULT;\n\n log.info(\n `${METHOD_START_MESSAGE} with days=${days}, limit=${limit}, sort=${sortParam}, sortBy=${sortByParam}`,\n this.loggerContext\n );\n\n log.info(`Janus API URL: ${this.janusUrl}`, this.loggerContext);\n log.info(`Call history from date : ${this.fromDate}`, this.loggerContext);\n\n // Add includeSharedSessions=true parameter for WXC backend to fetch calls with sessionType \"WEBEXCALLING_SHARED\"\n const sharedSessionsParam =\n callingBackend === CALLING_BACKEND.WXC ? '&includeSharedSessions=true' : '';\n log.info(\n `Fetching call history for ${callingBackend} backend${\n callingBackend === CALLING_BACKEND.WXC ? ' with shared sessions' : ''\n }`,\n this.loggerContext\n );\n const url = `${this.janusUrl}/${HISTORY}/${USER_SESSIONS}${FROM_DATE}=${this.fromDate}&limit=${limit}&includeNewSessionTypes=true&sort=${sortParam}${sharedSessionsParam}`;\n\n try {\n const janusResponse = <WebexRequestPayload>await this.webex.request({\n uri: `${url}`,\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.JANUS,\n });\n\n log.log(`Response trackingId: ${janusResponse?.headers?.trackingid}`, this.loggerContext);\n\n this.userSessions = janusResponse.body as UserSession[];\n if (sortByParam === SORT_BY.START_TIME) {\n if (sortParam === SORT.DESC) {\n this.userSessions[USER_SESSIONS].sort(\n (element: Date, compareElement: Date) =>\n new Date(compareElement[sortByParam]).getTime() -\n new Date(element[sortByParam]).getTime()\n );\n } else if (sortParam === SORT.ASC) {\n this.userSessions[USER_SESSIONS].sort(\n (element: Date, compareElement: Date) =>\n new Date(element[sortByParam]).getTime() -\n new Date(compareElement[sortByParam]).getTime()\n );\n }\n }\n // Check the calling backend (BEMS01958007: non-fatal so /lines or uploadLogs failure does not drop call history)\n if (callingBackend === CALLING_BACKEND.UCM) {\n try {\n // Check if userSessions exist and the length is greater than 0\n if (this.userSessions[USER_SESSIONS] && this.userSessions[USER_SESSIONS].length > 0) {\n // Check if cucmDN exists and is valid in any of the userSessions\n const hasCucmDN = this.userSessions[USER_SESSIONS].some(\n (session: UserSession) => session.self.cucmDN && session.self.cucmDN.length > 0\n );\n // If any user session has cucmDN, proceed to fetch line data\n if (hasCucmDN) {\n log.info('Fetching UCM lines data for call history enrichment', this.loggerContext);\n const ucmLinesResponse = await this.fetchUCMLinesData();\n\n // Check if the Lines API response was successful\n if (ucmLinesResponse.statusCode === 200 && ucmLinesResponse.data.lines?.devices) {\n const ucmLinesData = ucmLinesResponse.data.lines.devices;\n\n // Iterate over user sessions and match with Lines data\n this.userSessions[USER_SESSIONS].forEach((session: UserSession) => {\n const cucmDN = session.self.cucmDN;\n\n if (cucmDN) {\n ucmLinesData.forEach((device) => {\n device.lines.forEach((line) => {\n if (line.dnorpattern === cucmDN) {\n session.self.ucmLineNumber = line.index; // Assign the ucmLineNumber\n }\n });\n });\n }\n });\n log.log(`UCM line number enrichment completed`, this.loggerContext);\n } else {\n log.info(\n `UCM lines API returned statusCode ${ucmLinesResponse?.statusCode} or no devices, ` +\n 'returning call history without line number enrichment',\n this.loggerContext\n );\n }\n }\n }\n } catch (ucmErr: unknown) {\n log.warn(\n `UCM lines fetch or enrich failed, returning call history without line numbers: ${JSON.stringify(\n ucmErr\n )}`,\n {file: CALL_HISTORY_FILE, method: METHODS.GET_CALL_HISTORY_DATA}\n );\n // Continue and return userSessions without ucmLineNumber enrichment\n }\n }\n\n const responseDetails = {\n statusCode: this.userSessions[STATUS_CODE],\n data: {\n userSessions: this.userSessions[USER_SESSIONS],\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log(\n `Successfully retrieved call history data with ${this.userSessions[USER_SESSIONS].length} records`,\n this.loggerContext\n );\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to get call history: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.GET_CALL_HISTORY_DATA,\n });\n await uploadLogs();\n\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, this.loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Function to update the missed call status in the call history using sessionId and time.\n * @param endTimeSessionIds - An array of objects containing endTime and sessionId of the missed call history records\n * @returns {Promise} Resolves to an object of type {@link UpdateMissedCallsResponse}.Response details with success or error status.\n */\n public async updateMissedCalls(\n endTimeSessionIds: EndTimeSessionId[]\n ): Promise<UpdateMissedCallsResponse> {\n const loggerContext = {\n file: CALL_HISTORY_FILE,\n method: METHODS.UPDATE_MISSED_CALLS,\n };\n // Convert endTime to milliseconds for each session\n const santizedSessionIds: SanitizedEndTimeAndSessionId[] = endTimeSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n const requestBody = {\n endTimeSessionIds: santizedSessionIds,\n };\n\n log.info(\n `${METHOD_START_MESSAGE} with sessions: ${JSON.stringify(santizedSessionIds)}`,\n loggerContext\n );\n try {\n const updateMissedCallContentUrl = `${this.janusUrl}/${HISTORY}/${USER_SESSIONS}/${UPDATE_MISSED_CALLS_ENDPOINT}`;\n // Make a POST request to update missed calls\n const response = await fetch(updateMissedCallContentUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await this.webex.credentials.getUserToken(),\n },\n body: JSON.stringify(requestBody),\n });\n if (!response.ok) {\n throw new Error(`${response.status}`);\n }\n\n log.log(`Response trackingId: ${response.headers?.get('trackingid')}`, loggerContext);\n\n const data: UpdateMissedCallsResponse = await response.json();\n log.log(`Missed calls are successfully read by the user`, loggerContext);\n const responseDetails: UpdateMissedCallsResponse = {\n statusCode: data.statusCode as number,\n data: {\n readStatusMessage: SET_READ_STATE_SUCCESS_MESSAGE,\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log(`Successfully updated ${santizedSessionIds?.length} missed calls`, loggerContext);\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to update missed calls: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.UPDATE_MISSED_CALLS,\n });\n await uploadLogs();\n\n // Catch the 401 error from try block, return the error object to user\n const errorInfo = {\n statusCode: err instanceof Error ? Number(err.message) : '',\n } as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Function to display the UCM Lines API response.\n * @returns {Promise} Resolves to an object of type {@link UCMLinesResponse}.Response details with success or error status.\n */\n private async fetchUCMLinesData(): Promise<UCMLinesResponse> {\n const loggerContext = {\n file: CALL_HISTORY_FILE,\n method: METHODS.FETCH_UCM_LINES_DATA,\n };\n const vgEndpoint = getVgActionEndpoint(this.webex, CALLING_BACKEND.UCM);\n const userId = this.webex.internal.device.userId;\n const orgId = this.webex.internal.device.orgId;\n const linesURIForUCM = `${vgEndpoint}/${VERSION_1}/${UNIFIED_COMMUNICATIONS}/${CONFIG}/${PEOPLE}/${userId}/${LINES}?${ORG_ID}=${orgId}`;\n\n log.info(`${METHOD_START_MESSAGE} with URL: ${linesURIForUCM}`, loggerContext);\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n uri: `${linesURIForUCM}`,\n method: HTTP_METHODS.GET,\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const ucmLineDetails: UCMLinesResponse = {\n statusCode: Number(response.statusCode),\n data: {\n lines: response.body as UCMLinesApiResponse,\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log(`Line details fetched successfully`, loggerContext);\n\n return ucmLineDetails;\n } catch (err: unknown) {\n log.error(`Failed to fetch UCM lines data: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.FETCH_UCM_LINES_DATA,\n });\n await uploadLogs();\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Function to delete the call history records using sessionId and endTime.\n * @param deleteSessionIds - An array of objects containing endTime and sessionId of the call history records\n * @returns {Promise} Resolves to an object of type {@link DeleteCallHistoryRecordsResponse}.Response details with success or error status.\n */\n public async deleteCallHistoryRecords(\n deleteSessionIds: EndTimeSessionId[]\n ): Promise<DeleteCallHistoryRecordsResponse> {\n const loggerContext = {\n file: CALL_HISTORY_FILE,\n method: METHODS.DELETE_CALL_HISTORY_RECORDS,\n };\n\n // Collect all sessions with invalid dates (endTime) in an array\n const invalidSessions = deleteSessionIds.filter((session) =>\n Number.isNaN(new Date(session.endTime).getTime())\n );\n\n log.info(\n `${METHOD_START_MESSAGE} with sessions: ${JSON.stringify(deleteSessionIds)}`,\n loggerContext\n );\n\n if (invalidSessions.length > 0) {\n // If there are invalid sessions, return an error with details\n const invalidSessionIds = invalidSessions.map((session) => session.sessionId).join(', ');\n log.info(\n `The provided date is malformed or invalid for session IDs: ${invalidSessionIds}`,\n loggerContext\n );\n\n return {\n statusCode: 400,\n data: {\n deleteStatusMessage: SET_DELETE_CALL_RECORDS_INVALID_DATE_FORMAT_MESSAGE,\n },\n message: FAILURE_MESSAGE,\n };\n }\n\n // Convert endTime to milliseconds for each sessionId\n const santizedSessionIds: SanitizedEndTimeAndSessionId[] = deleteSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n\n const deleteRequestBody = {\n deleteSessionIds: santizedSessionIds,\n };\n\n try {\n const deleteCallHistoryRecordContentUrl = `${this.janusUrl}/${HISTORY}/${USER_SESSIONS}/${DELETE_CALL_HISTORY_RECORDS_ENDPOINT}`;\n // Make a POST request to delete call history records\n const response = await fetch(deleteCallHistoryRecordContentUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await this.webex.credentials.getUserToken(),\n },\n body: JSON.stringify(deleteRequestBody),\n });\n if (!response.ok) {\n throw new Error(`${response.status}`);\n }\n\n log.log(`Response trackingId: ${response.headers?.get('trackingid')}`, loggerContext);\n\n const data: DeleteCallHistoryRecordsResponse = await response.json();\n log.log(\n `Successfully deleted ${santizedSessionIds?.length} call history records`,\n loggerContext\n );\n const responseDetails: DeleteCallHistoryRecordsResponse = {\n statusCode: data.statusCode as number,\n data: {\n deleteStatusMessage: SET_DELETE_CALL_RECORDS_SUCCESS_MESSAGE,\n },\n message: SUCCESS_MESSAGE,\n };\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to delete call history records: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.DELETE_CALL_HISTORY_RECORDS,\n });\n await uploadLogs();\n\n // Catch the 401 error from try block, return the error object to user\n const errorInfo = {\n statusCode: err instanceof Error ? Number(err.message) : '',\n } as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n handleSessionEvents = async (event?: CallSessionEvent) => {\n if (event && event.data.userSessions.userSessions) {\n this.emit(COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSION_INFO, event as CallSessionEvent);\n }\n };\n\n handleUserReadSessionEvents = async (event?: CallSessionViewedEvent) => {\n if (event && event.data.userReadSessions.userReadSessions) {\n this.emit(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_VIEWED_SESSIONS,\n event as CallSessionViewedEvent\n );\n }\n };\n\n handleUserSessionsDeletedEvents = async (event?: CallSessionDeletedEvent) => {\n if (event && event.data.deletedSessions) {\n this.emit(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSIONS_DELETED,\n event as CallSessionDeletedEvent\n );\n }\n };\n\n /**\n *\n */\n private registerSessionsListener() {\n this.sdkConnector.registerListener<CallSessionEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE,\n this.handleSessionEvents\n );\n this.sdkConnector.registerListener<CallSessionEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_LEGACY,\n this.handleSessionEvents\n );\n this.sdkConnector.registerListener<CallSessionViewedEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_VIEWED,\n this.handleUserReadSessionEvents\n );\n this.sdkConnector.registerListener<CallSessionDeletedEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_DELETED,\n this.handleUserSessionsDeletedEvents\n );\n }\n}\n/**\n * Creates a `CallHistory` client instance for accessing Call History APIs.\n *\n * @param {WebexSDK} webex - `Webex SDK` instance.\n * @param {LoggerInterface} logger - An instance implementing LoggerInterface used to set the log level for the module.\n */\nexport const createCallHistoryClient = (webex: WebexSDK, logger: LoggerInterface): ICallHistory =>\n new CallHistory(webex, logger);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -61,27 +61,38 @@ export class CallHistory extends Eventing {
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
if (callingBackend === CALLING_BACKEND.UCM) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
64
|
+
try {
|
|
65
|
+
if (this.userSessions[USER_SESSIONS] && this.userSessions[USER_SESSIONS].length > 0) {
|
|
66
|
+
const hasCucmDN = this.userSessions[USER_SESSIONS].some((session) => session.self.cucmDN && session.self.cucmDN.length > 0);
|
|
67
|
+
if (hasCucmDN) {
|
|
68
|
+
log.info('Fetching UCM lines data for call history enrichment', this.loggerContext);
|
|
69
|
+
const ucmLinesResponse = await this.fetchUCMLinesData();
|
|
70
|
+
if (ucmLinesResponse.statusCode === 200 && ucmLinesResponse.data.lines?.devices) {
|
|
71
|
+
const ucmLinesData = ucmLinesResponse.data.lines.devices;
|
|
72
|
+
this.userSessions[USER_SESSIONS].forEach((session) => {
|
|
73
|
+
const cucmDN = session.self.cucmDN;
|
|
74
|
+
if (cucmDN) {
|
|
75
|
+
ucmLinesData.forEach((device) => {
|
|
76
|
+
device.lines.forEach((line) => {
|
|
77
|
+
if (line.dnorpattern === cucmDN) {
|
|
78
|
+
session.self.ucmLineNumber = line.index;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
78
81
|
});
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
log.log(`UCM line number enrichment completed`, this.loggerContext);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
log.info(`UCM lines API returned statusCode ${ucmLinesResponse?.statusCode} or no devices, ` +
|
|
88
|
+
'returning call history without line number enrichment', this.loggerContext);
|
|
89
|
+
}
|
|
82
90
|
}
|
|
83
91
|
}
|
|
84
92
|
}
|
|
93
|
+
catch (ucmErr) {
|
|
94
|
+
log.warn(`UCM lines fetch or enrich failed, returning call history without line numbers: ${JSON.stringify(ucmErr)}`, { file: CALL_HISTORY_FILE, method: METHODS.GET_CALL_HISTORY_DATA });
|
|
95
|
+
}
|
|
85
96
|
}
|
|
86
97
|
const responseDetails = {
|
|
87
98
|
statusCode: this.userSessions[STATUS_CODE],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CallHistory.d.ts","sourceRoot":"","sources":["../../../src/CallHistory/CallHistory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAIL,IAAI,EACJ,OAAO,EAER,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EAEzB,gCAAgC,EACjC,MAAM,SAAS,CAAC;AAoCjB,OAAO,EAEL,qBAAqB,EACrB,gBAAgB,EAGhB,gBAAgB,EAChB,sBAAsB,EAGtB,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAWxC,qBAAa,WAAY,SAAQ,QAAQ,CAAC,qBAAqB,CAAE,YAAW,YAAY;IACtF,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,QAAQ,CAAM;IAEtB,OAAO,CAAC,QAAQ,CAAM;IAEtB,OAAO,CAAC,aAAa,CAGnB;IAEF,OAAO,CAAC,YAAY,CAA4B;gBAKpC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe;IAqBvC,kBAAkB,CAC7B,IAAI,GAAE,MAAuB,EAC7B,KAAK,GAAE,MAAc,EACrB,IAAI,GAAE,IAAmB,EACzB,MAAM,GAAE,OAAyB,GAChC,OAAO,CAAC,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"CallHistory.d.ts","sourceRoot":"","sources":["../../../src/CallHistory/CallHistory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAIL,IAAI,EACJ,OAAO,EAER,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EAEzB,gCAAgC,EACjC,MAAM,SAAS,CAAC;AAoCjB,OAAO,EAEL,qBAAqB,EACrB,gBAAgB,EAGhB,gBAAgB,EAChB,sBAAsB,EAGtB,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAWxC,qBAAa,WAAY,SAAQ,QAAQ,CAAC,qBAAqB,CAAE,YAAW,YAAY;IACtF,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,QAAQ,CAAM;IAEtB,OAAO,CAAC,QAAQ,CAAM;IAEtB,OAAO,CAAC,aAAa,CAGnB;IAEF,OAAO,CAAC,YAAY,CAA4B;gBAKpC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe;IAqBvC,kBAAkB,CAC7B,IAAI,GAAE,MAAuB,EAC7B,KAAK,GAAE,MAAc,EACrB,IAAI,GAAE,IAAmB,EACzB,MAAM,GAAE,OAAyB,GAChC,OAAO,CAAC,kBAAkB,CAAC;IA8IjB,iBAAiB,CAC5B,iBAAiB,EAAE,gBAAgB,EAAE,GACpC,OAAO,CAAC,yBAAyB,CAAC;YAqEvB,iBAAiB;IAgDlB,wBAAwB,CACnC,gBAAgB,EAAE,gBAAgB,EAAE,GACnC,OAAO,CAAC,gCAAgC,CAAC;IA2F5C,mBAAmB,WAAkB,gBAAgB,mBAInD;IAEF,2BAA2B,WAAkB,sBAAsB,mBAOjE;IAEF,+BAA+B,WAAkB,uBAAuB,mBAOtE;IAKF,OAAO,CAAC,wBAAwB;CAkBjC;AAOD,eAAO,MAAM,uBAAuB,UAAW,QAAQ,UAAU,eAAe,KAAG,YACnD,CAAC"}
|
package/package.json
CHANGED
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@types/platform": "1.3.4",
|
|
40
40
|
"@webex/internal-media-core": "2.22.1",
|
|
41
|
-
"@webex/internal-plugin-metrics": "3.11.0-next.
|
|
41
|
+
"@webex/internal-plugin-metrics": "3.11.0-next.6",
|
|
42
42
|
"@webex/media-helpers": "3.11.0-next.3",
|
|
43
43
|
"async-mutex": "0.4.0",
|
|
44
44
|
"buffer": "6.0.3",
|
|
@@ -132,5 +132,5 @@
|
|
|
132
132
|
"staticpath": "docs",
|
|
133
133
|
"noprompt": true
|
|
134
134
|
},
|
|
135
|
-
"version": "3.11.0-next.
|
|
135
|
+
"version": "3.11.0-next.12"
|
|
136
136
|
}
|