@webex/calling 3.12.0-next.9 → 3.12.0-task-refactor.1
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/CallHistory/CallHistory.js +51 -68
- package/dist/CallHistory/CallHistory.js.map +1 -1
- package/dist/CallingClient/CallingClient.js +18 -115
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +6 -121
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/calling/call.js +9 -10
- package/dist/CallingClient/calling/call.js.map +1 -1
- package/dist/CallingClient/calling/call.test.js +379 -520
- package/dist/CallingClient/calling/call.test.js.map +1 -1
- package/dist/CallingClient/calling/callManager.js +0 -7
- package/dist/CallingClient/calling/callManager.js.map +1 -1
- package/dist/CallingClient/constants.js +2 -4
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/CallingClient/registration/register.js +0 -16
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/types.js.map +1 -1
- package/dist/CallingClient/types.js.map +1 -1
- package/dist/Events/types.js +11 -1
- package/dist/Events/types.js.map +1 -1
- package/dist/common/Utils.js +0 -2
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/Utils.test.js +2 -2
- package/dist/common/Utils.test.js.map +1 -1
- package/dist/common/types.js.map +1 -1
- package/dist/module/CallHistory/CallHistory.js +17 -28
- package/dist/module/CallingClient/CallingClient.js +1 -43
- package/dist/module/CallingClient/calling/call.js +3 -4
- package/dist/module/CallingClient/calling/callManager.js +0 -7
- package/dist/module/CallingClient/constants.js +0 -2
- package/dist/module/CallingClient/registration/register.js +0 -8
- package/dist/module/Events/types.js +10 -0
- package/dist/module/common/Utils.js +0 -2
- package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
- package/dist/types/CallingClient/CallingClient.d.ts +1 -2
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
- package/dist/types/CallingClient/constants.d.ts +0 -2
- package/dist/types/CallingClient/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts +1 -2
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/types.d.ts +1 -2
- package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
- package/dist/types/CallingClient/types.d.ts +1 -2
- package/dist/types/CallingClient/types.d.ts.map +1 -1
- package/dist/types/Events/types.d.ts +10 -0
- package/dist/types/Events/types.d.ts.map +1 -1
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/dist/types/common/types.d.ts +0 -4
- package/dist/types/common/types.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -160,8 +160,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
160
160
|
errorInfo,
|
|
161
161
|
errorStatus,
|
|
162
162
|
_args4 = arguments,
|
|
163
|
-
_t
|
|
164
|
-
_t2;
|
|
163
|
+
_t;
|
|
165
164
|
return _regenerator.default.wrap(function (_context4) {
|
|
166
165
|
while (1) switch (_context4.prev = _context4.next) {
|
|
167
166
|
case 0:
|
|
@@ -209,14 +208,13 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
209
208
|
});
|
|
210
209
|
}
|
|
211
210
|
}
|
|
212
|
-
// Check the calling backend
|
|
211
|
+
// Check the calling backend
|
|
213
212
|
if (!(callingBackend === _types.CALLING_BACKEND.UCM)) {
|
|
214
|
-
_context4.next =
|
|
213
|
+
_context4.next = 4;
|
|
215
214
|
break;
|
|
216
215
|
}
|
|
217
|
-
_context4.prev = 3;
|
|
218
216
|
if (!(this.userSessions[_constants2.USER_SESSIONS] && this.userSessions[_constants2.USER_SESSIONS].length > 0)) {
|
|
219
|
-
_context4.next =
|
|
217
|
+
_context4.next = 4;
|
|
220
218
|
break;
|
|
221
219
|
}
|
|
222
220
|
// Check if cucmDN exists and is valid in any of the userSessions
|
|
@@ -224,13 +222,12 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
224
222
|
return session.self.cucmDN && session.self.cucmDN.length > 0;
|
|
225
223
|
}); // If any user session has cucmDN, proceed to fetch line data
|
|
226
224
|
if (!hasCucmDN) {
|
|
227
|
-
_context4.next =
|
|
225
|
+
_context4.next = 4;
|
|
228
226
|
break;
|
|
229
227
|
}
|
|
230
|
-
|
|
231
|
-
_context4.next = 4;
|
|
228
|
+
_context4.next = 3;
|
|
232
229
|
return this.fetchUCMLinesData();
|
|
233
|
-
case
|
|
230
|
+
case 3:
|
|
234
231
|
ucmLinesResponse = _context4.sent;
|
|
235
232
|
// Check if the Lines API response was successful
|
|
236
233
|
if (ucmLinesResponse.statusCode === 200 && (_ucmLinesResponse$dat = ucmLinesResponse.data.lines) !== null && _ucmLinesResponse$dat !== void 0 && _ucmLinesResponse$dat.devices) {
|
|
@@ -247,22 +244,8 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
247
244
|
});
|
|
248
245
|
}
|
|
249
246
|
});
|
|
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);
|
|
253
247
|
}
|
|
254
|
-
case
|
|
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:
|
|
248
|
+
case 4:
|
|
266
249
|
responseDetails = {
|
|
267
250
|
statusCode: this.userSessions[_constants2.STATUS_CODE],
|
|
268
251
|
data: {
|
|
@@ -272,24 +255,24 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
272
255
|
};
|
|
273
256
|
_Logger.default.log("Successfully retrieved call history data with ".concat(this.userSessions[_constants2.USER_SESSIONS].length, " records"), this.loggerContext);
|
|
274
257
|
return _context4.abrupt("return", responseDetails);
|
|
275
|
-
case
|
|
276
|
-
_context4.prev =
|
|
277
|
-
|
|
278
|
-
_Logger.default.error("Failed to get call history: ".concat((0, _stringify.default)(
|
|
258
|
+
case 5:
|
|
259
|
+
_context4.prev = 5;
|
|
260
|
+
_t = _context4["catch"](1);
|
|
261
|
+
_Logger.default.error("Failed to get call history: ".concat((0, _stringify.default)(_t)), {
|
|
279
262
|
file: _constants.CALL_HISTORY_FILE,
|
|
280
263
|
method: _constants.METHODS.GET_CALL_HISTORY_DATA
|
|
281
264
|
});
|
|
282
|
-
_context4.next =
|
|
265
|
+
_context4.next = 6;
|
|
283
266
|
return (0, _Utils.uploadLogs)();
|
|
284
|
-
case
|
|
285
|
-
errorInfo =
|
|
267
|
+
case 6:
|
|
268
|
+
errorInfo = _t;
|
|
286
269
|
errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, this.loggerContext);
|
|
287
270
|
return _context4.abrupt("return", errorStatus);
|
|
288
|
-
case
|
|
271
|
+
case 7:
|
|
289
272
|
case "end":
|
|
290
273
|
return _context4.stop();
|
|
291
274
|
}
|
|
292
|
-
}, _callee4, this, [[1,
|
|
275
|
+
}, _callee4, this, [[1, 5]]);
|
|
293
276
|
}));
|
|
294
277
|
function getCallHistoryData() {
|
|
295
278
|
return _getCallHistoryData.apply(this, arguments);
|
|
@@ -306,7 +289,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
306
289
|
key: "updateMissedCalls",
|
|
307
290
|
value: (function () {
|
|
308
291
|
var _updateMissedCalls = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5(endTimeSessionIds) {
|
|
309
|
-
var loggerContext, santizedSessionIds, requestBody, _response$headers, updateMissedCallContentUrl, response, data, responseDetails, errorInfo, errorStatus, _t3, _t4, _t5, _t6, _t7, _t8, _t9
|
|
292
|
+
var loggerContext, santizedSessionIds, requestBody, _response$headers, updateMissedCallContentUrl, response, data, responseDetails, errorInfo, errorStatus, _t2, _t3, _t4, _t5, _t6, _t7, _t8, _t9;
|
|
310
293
|
return _regenerator.default.wrap(function (_context5) {
|
|
311
294
|
while (1) switch (_context5.prev = _context5.next) {
|
|
312
295
|
case 0:
|
|
@@ -325,21 +308,21 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
325
308
|
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with sessions: ").concat((0, _stringify.default)(santizedSessionIds)), loggerContext);
|
|
326
309
|
_context5.prev = 1;
|
|
327
310
|
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
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
311
|
+
_t2 = fetch;
|
|
312
|
+
_t3 = updateMissedCallContentUrl;
|
|
313
|
+
_t4 = _types.HTTP_METHODS.POST;
|
|
314
|
+
_t5 = _defineProperty2.default;
|
|
315
|
+
_t6 = (0, _defineProperty2.default)({}, _constants.CONTENT_TYPE, _constants.APPLICATION_JSON);
|
|
333
316
|
_context5.next = 2;
|
|
334
317
|
return this.webex.credentials.getUserToken();
|
|
335
318
|
case 2:
|
|
336
|
-
|
|
337
|
-
|
|
319
|
+
_t7 = _t5(_t6, "Authorization", _context5.sent);
|
|
320
|
+
_t8 = (0, _stringify.default)(requestBody);
|
|
338
321
|
_context5.next = 3;
|
|
339
|
-
return _t3
|
|
340
|
-
method:
|
|
341
|
-
headers:
|
|
342
|
-
body:
|
|
322
|
+
return _t2(_t3, {
|
|
323
|
+
method: _t4,
|
|
324
|
+
headers: _t7,
|
|
325
|
+
body: _t8
|
|
343
326
|
});
|
|
344
327
|
case 3:
|
|
345
328
|
response = _context5.sent;
|
|
@@ -366,8 +349,8 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
366
349
|
return _context5.abrupt("return", responseDetails);
|
|
367
350
|
case 6:
|
|
368
351
|
_context5.prev = 6;
|
|
369
|
-
|
|
370
|
-
_Logger.default.error("Failed to update missed calls: ".concat((0, _stringify.default)(
|
|
352
|
+
_t9 = _context5["catch"](1);
|
|
353
|
+
_Logger.default.error("Failed to update missed calls: ".concat((0, _stringify.default)(_t9)), {
|
|
371
354
|
file: _constants.CALL_HISTORY_FILE,
|
|
372
355
|
method: _constants.METHODS.UPDATE_MISSED_CALLS
|
|
373
356
|
});
|
|
@@ -376,7 +359,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
376
359
|
case 7:
|
|
377
360
|
// Catch the 401 error from try block, return the error object to user
|
|
378
361
|
errorInfo = {
|
|
379
|
-
statusCode:
|
|
362
|
+
statusCode: _t9 instanceof Error ? Number(_t9.message) : ''
|
|
380
363
|
};
|
|
381
364
|
errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
|
|
382
365
|
return _context5.abrupt("return", errorStatus);
|
|
@@ -400,7 +383,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
400
383
|
key: "fetchUCMLinesData",
|
|
401
384
|
value: (function () {
|
|
402
385
|
var _fetchUCMLinesData = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6() {
|
|
403
|
-
var loggerContext, vgEndpoint, userId, orgId, linesURIForUCM, _response$headers2, response, ucmLineDetails, errorInfo, errorStatus,
|
|
386
|
+
var loggerContext, vgEndpoint, userId, orgId, linesURIForUCM, _response$headers2, response, ucmLineDetails, errorInfo, errorStatus, _t0;
|
|
404
387
|
return _regenerator.default.wrap(function (_context6) {
|
|
405
388
|
while (1) switch (_context6.prev = _context6.next) {
|
|
406
389
|
case 0:
|
|
@@ -433,15 +416,15 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
433
416
|
return _context6.abrupt("return", ucmLineDetails);
|
|
434
417
|
case 3:
|
|
435
418
|
_context6.prev = 3;
|
|
436
|
-
|
|
437
|
-
_Logger.default.error("Failed to fetch UCM lines data: ".concat((0, _stringify.default)(
|
|
419
|
+
_t0 = _context6["catch"](1);
|
|
420
|
+
_Logger.default.error("Failed to fetch UCM lines data: ".concat((0, _stringify.default)(_t0)), {
|
|
438
421
|
file: _constants.CALL_HISTORY_FILE,
|
|
439
422
|
method: _constants.METHODS.FETCH_UCM_LINES_DATA
|
|
440
423
|
});
|
|
441
424
|
_context6.next = 4;
|
|
442
425
|
return (0, _Utils.uploadLogs)();
|
|
443
426
|
case 4:
|
|
444
|
-
errorInfo =
|
|
427
|
+
errorInfo = _t0;
|
|
445
428
|
errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
|
|
446
429
|
return _context6.abrupt("return", errorStatus);
|
|
447
430
|
case 5:
|
|
@@ -465,7 +448,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
465
448
|
key: "deleteCallHistoryRecords",
|
|
466
449
|
value: (function () {
|
|
467
450
|
var _deleteCallHistoryRecords = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7(deleteSessionIds) {
|
|
468
|
-
var loggerContext, invalidSessions, invalidSessionIds, santizedSessionIds, deleteRequestBody, _response$headers3, deleteCallHistoryRecordContentUrl, response, data, responseDetails, errorInfo, errorStatus, _t10, _t11, _t12, _t13, _t14, _t15, _t16
|
|
451
|
+
var loggerContext, invalidSessions, invalidSessionIds, santizedSessionIds, deleteRequestBody, _response$headers3, deleteCallHistoryRecordContentUrl, response, data, responseDetails, errorInfo, errorStatus, _t1, _t10, _t11, _t12, _t13, _t14, _t15, _t16;
|
|
469
452
|
return _regenerator.default.wrap(function (_context7) {
|
|
470
453
|
while (1) switch (_context7.prev = _context7.next) {
|
|
471
454
|
case 0:
|
|
@@ -505,21 +488,21 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
505
488
|
};
|
|
506
489
|
_context7.prev = 2;
|
|
507
490
|
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
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
491
|
+
_t1 = fetch;
|
|
492
|
+
_t10 = deleteCallHistoryRecordContentUrl;
|
|
493
|
+
_t11 = _types.HTTP_METHODS.POST;
|
|
494
|
+
_t12 = _defineProperty2.default;
|
|
495
|
+
_t13 = (0, _defineProperty2.default)({}, _constants.CONTENT_TYPE, _constants.APPLICATION_JSON);
|
|
513
496
|
_context7.next = 3;
|
|
514
497
|
return this.webex.credentials.getUserToken();
|
|
515
498
|
case 3:
|
|
516
|
-
|
|
517
|
-
|
|
499
|
+
_t14 = _t12(_t13, "Authorization", _context7.sent);
|
|
500
|
+
_t15 = (0, _stringify.default)(deleteRequestBody);
|
|
518
501
|
_context7.next = 4;
|
|
519
|
-
return _t10
|
|
520
|
-
method:
|
|
521
|
-
headers:
|
|
522
|
-
body:
|
|
502
|
+
return _t1(_t10, {
|
|
503
|
+
method: _t11,
|
|
504
|
+
headers: _t14,
|
|
505
|
+
body: _t15
|
|
523
506
|
});
|
|
524
507
|
case 4:
|
|
525
508
|
response = _context7.sent;
|
|
@@ -545,8 +528,8 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
545
528
|
return _context7.abrupt("return", responseDetails);
|
|
546
529
|
case 7:
|
|
547
530
|
_context7.prev = 7;
|
|
548
|
-
|
|
549
|
-
_Logger.default.error("Failed to delete call history records: ".concat((0, _stringify.default)(
|
|
531
|
+
_t16 = _context7["catch"](2);
|
|
532
|
+
_Logger.default.error("Failed to delete call history records: ".concat((0, _stringify.default)(_t16)), {
|
|
550
533
|
file: _constants.CALL_HISTORY_FILE,
|
|
551
534
|
method: _constants.METHODS.DELETE_CALL_HISTORY_RECORDS
|
|
552
535
|
});
|
|
@@ -555,7 +538,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
555
538
|
case 8:
|
|
556
539
|
// Catch the 401 error from try block, return the error object to user
|
|
557
540
|
errorInfo = {
|
|
558
|
-
statusCode:
|
|
541
|
+
statusCode: _t16 instanceof Error ? Number(_t16.message) : ''
|
|
559
542
|
};
|
|
560
543
|
errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
|
|
561
544
|
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","_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":[]}
|
|
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":[]}
|