@webex/calling 3.6.0-wxcc.1 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/dist/CallHistory/CallHistory.js +195 -67
  2. package/dist/CallHistory/CallHistory.js.map +1 -1
  3. package/dist/CallHistory/CallHistory.test.js +331 -108
  4. package/dist/CallHistory/CallHistory.test.js.map +1 -1
  5. package/dist/CallHistory/callHistoryFixtures.js +25 -1
  6. package/dist/CallHistory/callHistoryFixtures.js.map +1 -1
  7. package/dist/CallHistory/constants.js +4 -1
  8. package/dist/CallHistory/constants.js.map +1 -1
  9. package/dist/CallHistory/types.js.map +1 -1
  10. package/dist/CallingClient/CallingClient.js +2 -2
  11. package/dist/CallingClient/CallingClient.js.map +1 -1
  12. package/dist/CallingClient/CallingClient.test.js +2 -2
  13. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  14. package/dist/CallingClient/calling/CallerId/index.js +14 -5
  15. package/dist/CallingClient/calling/CallerId/index.js.map +1 -1
  16. package/dist/CallingClient/calling/CallerId/index.test.js +6 -6
  17. package/dist/CallingClient/calling/CallerId/index.test.js.map +1 -1
  18. package/dist/CallingClient/calling/call.js +434 -348
  19. package/dist/CallingClient/calling/call.js.map +1 -1
  20. package/dist/CallingClient/calling/call.test.js +516 -386
  21. package/dist/CallingClient/calling/call.test.js.map +1 -1
  22. package/dist/CallingClient/calling/callManager.js +6 -6
  23. package/dist/CallingClient/calling/callManager.js.map +1 -1
  24. package/dist/CallingClient/calling/callManager.test.js +3 -3
  25. package/dist/CallingClient/calling/callManager.test.js.map +1 -1
  26. package/dist/CallingClient/calling/types.js +6 -1
  27. package/dist/CallingClient/calling/types.js.map +1 -1
  28. package/dist/CallingClient/constants.js +2 -3
  29. package/dist/CallingClient/constants.js.map +1 -1
  30. package/dist/CallingClient/line/index.js +14 -7
  31. package/dist/CallingClient/line/index.js.map +1 -1
  32. package/dist/CallingClient/line/line.test.js +84 -22
  33. package/dist/CallingClient/line/line.test.js.map +1 -1
  34. package/dist/CallingClient/line/types.js.map +1 -1
  35. package/dist/CallingClient/registration/register.js +79 -59
  36. package/dist/CallingClient/registration/register.js.map +1 -1
  37. package/dist/CallingClient/registration/register.test.js +1 -1
  38. package/dist/CallingClient/registration/register.test.js.map +1 -1
  39. package/dist/CallingClient/types.js.map +1 -1
  40. package/dist/Contacts/ContactsClient.js +14 -14
  41. package/dist/Contacts/ContactsClient.js.map +1 -1
  42. package/dist/Events/types.js +2 -0
  43. package/dist/Events/types.js.map +1 -1
  44. package/dist/common/Utils.js +18 -13
  45. package/dist/common/Utils.js.map +1 -1
  46. package/dist/common/Utils.test.js +97 -0
  47. package/dist/common/Utils.test.js.map +1 -1
  48. package/dist/common/constants.js +4 -3
  49. package/dist/common/constants.js.map +1 -1
  50. package/dist/common/types.js +1 -0
  51. package/dist/common/types.js.map +1 -1
  52. package/dist/index.js +0 -6
  53. package/dist/index.js.map +1 -1
  54. package/dist/module/CallHistory/CallHistory.js +64 -2
  55. package/dist/module/CallHistory/callHistoryFixtures.js +24 -0
  56. package/dist/module/CallHistory/constants.js +3 -0
  57. package/dist/module/CallingClient/CallingClient.js +1 -1
  58. package/dist/module/CallingClient/calling/CallerId/index.js +6 -6
  59. package/dist/module/CallingClient/calling/call.js +66 -22
  60. package/dist/module/CallingClient/calling/callManager.js +5 -5
  61. package/dist/module/CallingClient/calling/types.js +5 -0
  62. package/dist/module/CallingClient/constants.js +1 -2
  63. package/dist/module/CallingClient/line/index.js +14 -8
  64. package/dist/module/CallingClient/registration/register.js +12 -4
  65. package/dist/module/Contacts/ContactsClient.js +2 -2
  66. package/dist/module/Events/types.js +2 -0
  67. package/dist/module/common/Utils.js +12 -5
  68. package/dist/module/common/constants.js +3 -2
  69. package/dist/module/common/types.js +1 -0
  70. package/dist/types/CallHistory/CallHistory.d.ts +4 -2
  71. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  72. package/dist/types/CallHistory/callHistoryFixtures.d.ts +6 -2
  73. package/dist/types/CallHistory/callHistoryFixtures.d.ts.map +1 -1
  74. package/dist/types/CallHistory/constants.d.ts +3 -0
  75. package/dist/types/CallHistory/constants.d.ts.map +1 -1
  76. package/dist/types/CallHistory/types.d.ts +9 -0
  77. package/dist/types/CallHistory/types.d.ts.map +1 -1
  78. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  79. package/dist/types/CallingClient/calling/CallerId/index.d.ts.map +1 -1
  80. package/dist/types/CallingClient/calling/call.d.ts +7 -5
  81. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  82. package/dist/types/CallingClient/calling/callManager.d.ts +1 -1
  83. package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
  84. package/dist/types/CallingClient/calling/types.d.ts +6 -2
  85. package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
  86. package/dist/types/CallingClient/constants.d.ts +1 -2
  87. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  88. package/dist/types/CallingClient/line/index.d.ts +3 -2
  89. package/dist/types/CallingClient/line/index.d.ts.map +1 -1
  90. package/dist/types/CallingClient/line/types.d.ts +1 -1
  91. package/dist/types/CallingClient/line/types.d.ts.map +1 -1
  92. package/dist/types/CallingClient/registration/register.d.ts +4 -2
  93. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  94. package/dist/types/CallingClient/types.d.ts +1 -0
  95. package/dist/types/CallingClient/types.d.ts.map +1 -1
  96. package/dist/types/Contacts/ContactsClient.d.ts +1 -1
  97. package/dist/types/Contacts/ContactsClient.d.ts.map +1 -1
  98. package/dist/types/Events/types.d.ts +15 -2
  99. package/dist/types/Events/types.d.ts.map +1 -1
  100. package/dist/types/Voicemail/UcmBackendConnector.d.ts +1 -1
  101. package/dist/types/Voicemail/WxCallBackendConnector.d.ts +1 -1
  102. package/dist/types/common/Utils.d.ts +2 -2
  103. package/dist/types/common/Utils.d.ts.map +1 -1
  104. package/dist/types/common/constants.d.ts +1 -0
  105. package/dist/types/common/constants.d.ts.map +1 -1
  106. package/dist/types/common/types.d.ts +2 -1
  107. package/dist/types/common/types.d.ts.map +1 -1
  108. package/dist/types/index.d.ts +0 -1
  109. package/dist/types/index.d.ts.map +1 -1
  110. package/package.json +3 -3
@@ -14,6 +14,7 @@ _Object$defineProperty(exports, "__esModule", {
14
14
  exports.createCallHistoryClient = exports.CallHistory = void 0;
15
15
  var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
16
16
  var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
17
+ var _isNan = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/number/is-nan"));
17
18
  var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
18
19
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
19
20
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
@@ -100,6 +101,24 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
100
101
  return _ref2.apply(this, arguments);
101
102
  };
102
103
  }());
104
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleUserSessionsDeletedEvents", /*#__PURE__*/function () {
105
+ var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(event) {
106
+ return _regenerator.default.wrap(function _callee3$(_context3) {
107
+ while (1) switch (_context3.prev = _context3.next) {
108
+ case 0:
109
+ if (event && event.data.deletedSessions) {
110
+ _this.emit(_types2.COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSIONS_DELETED, event);
111
+ }
112
+ case 1:
113
+ case "end":
114
+ return _context3.stop();
115
+ }
116
+ }, _callee3);
117
+ }));
118
+ return function (_x3) {
119
+ return _ref3.apply(this, arguments);
120
+ };
121
+ }());
103
122
  _this.sdkConnector = _SDKConnector.default;
104
123
  if (!_this.sdkConnector.getWebex()) {
105
124
  _SDKConnector.default.setWebex(webex);
@@ -121,7 +140,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
121
140
  (0, _createClass2.default)(CallHistory, [{
122
141
  key: "getCallHistoryData",
123
142
  value: (function () {
124
- var _getCallHistoryData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
143
+ var _getCallHistoryData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
125
144
  var days,
126
145
  limit,
127
146
  sort,
@@ -139,14 +158,14 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
139
158
  responseDetails,
140
159
  errorInfo,
141
160
  errorStatus,
142
- _args3 = arguments;
143
- return _regenerator.default.wrap(function _callee3$(_context3) {
144
- while (1) switch (_context3.prev = _context3.next) {
161
+ _args4 = arguments;
162
+ return _regenerator.default.wrap(function _callee4$(_context4) {
163
+ while (1) switch (_context4.prev = _context4.next) {
145
164
  case 0:
146
- days = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : _constants.NUMBER_OF_DAYS;
147
- limit = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : _constants.LIMIT;
148
- sort = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : _types.SORT.DEFAULT;
149
- sortBy = _args3.length > 3 && _args3[3] !== undefined ? _args3[3] : _types.SORT_BY.DEFAULT;
165
+ days = _args4.length > 0 && _args4[0] !== undefined ? _args4[0] : _constants.NUMBER_OF_DAYS;
166
+ limit = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : _constants.LIMIT;
167
+ sort = _args4.length > 2 && _args4[2] !== undefined ? _args4[2] : _types.SORT.DEFAULT;
168
+ sortBy = _args4.length > 3 && _args4[3] !== undefined ? _args4[3] : _types.SORT_BY.DEFAULT;
150
169
  /*
151
170
  1. Mandatory field for Janus API - fromDate
152
171
  2. Calculating the fromDate by deducting the NUMBER_OF_DAYS with the current date
@@ -161,15 +180,15 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
161
180
  _Logger.default.info("Call history sort type : ".concat(sortParam), this.loggerContext);
162
181
  _Logger.default.info("Call history sortby type : ".concat(sortByParam), this.loggerContext);
163
182
  url = "".concat(this.janusUrl, "/").concat(_constants.HISTORY, "/").concat(_constants2.USER_SESSIONS).concat(_constants.FROM_DATE, "=").concat(this.fromDate, "&limit=").concat(limit, "&includeNewSessionTypes=true&sort=").concat(sortParam);
164
- _context3.prev = 14;
165
- _context3.next = 17;
183
+ _context4.prev = 14;
184
+ _context4.next = 17;
166
185
  return this.webex.request({
167
186
  uri: "".concat(url),
168
187
  method: _types.HTTP_METHODS.GET,
169
188
  service: _types.ALLOWED_SERVICES.JANUS
170
189
  });
171
190
  case 17:
172
- janusResponse = _context3.sent;
191
+ janusResponse = _context4.sent;
173
192
  this.userSessions = janusResponse.body;
174
193
  if (sortByParam === _types.SORT_BY.START_TIME) {
175
194
  if (sortParam === _types.SORT.DESC) {
@@ -185,11 +204,11 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
185
204
  // Check the calling backend
186
205
  callingBackend = (0, _Utils.getCallingBackEnd)(this.webex);
187
206
  if (!(callingBackend === _types.CALLING_BACKEND.UCM)) {
188
- _context3.next = 29;
207
+ _context4.next = 29;
189
208
  break;
190
209
  }
191
210
  if (!(this.userSessions[_constants2.USER_SESSIONS] && this.userSessions[_constants2.USER_SESSIONS].length > 0)) {
192
- _context3.next = 29;
211
+ _context4.next = 29;
193
212
  break;
194
213
  }
195
214
  // Check if cucmDN exists and is valid in any of the userSessions
@@ -197,13 +216,13 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
197
216
  return session.self.cucmDN && session.self.cucmDN.length > 0;
198
217
  }); // If any user session has cucmDN, proceed to fetch line data
199
218
  if (!hasCucmDN) {
200
- _context3.next = 29;
219
+ _context4.next = 29;
201
220
  break;
202
221
  }
203
- _context3.next = 27;
222
+ _context4.next = 27;
204
223
  return this.fetchUCMLinesData();
205
224
  case 27:
206
- ucmLinesResponse = _context3.sent;
225
+ ucmLinesResponse = _context4.sent;
207
226
  // Check if the Lines API response was successful
208
227
  if (ucmLinesResponse.statusCode === 200 && (_ucmLinesResponse$dat = ucmLinesResponse.data.lines) !== null && _ucmLinesResponse$dat !== void 0 && _ucmLinesResponse$dat.devices) {
209
228
  ucmLinesData = ucmLinesResponse.data.lines.devices; // Iterate over user sessions and match with Lines data
@@ -228,18 +247,18 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
228
247
  },
229
248
  message: _constants2.SUCCESS_MESSAGE
230
249
  };
231
- return _context3.abrupt("return", responseDetails);
250
+ return _context4.abrupt("return", responseDetails);
232
251
  case 33:
233
- _context3.prev = 33;
234
- _context3.t0 = _context3["catch"](14);
235
- errorInfo = _context3.t0;
252
+ _context4.prev = 33;
253
+ _context4.t0 = _context4["catch"](14);
254
+ errorInfo = _context4.t0;
236
255
  errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, this.loggerContext);
237
- return _context3.abrupt("return", errorStatus);
256
+ return _context4.abrupt("return", errorStatus);
238
257
  case 38:
239
258
  case "end":
240
- return _context3.stop();
259
+ return _context4.stop();
241
260
  }
242
- }, _callee3, this, [[14, 33]]);
261
+ }, _callee4, this, [[14, 33]]);
243
262
  }));
244
263
  function getCallHistoryData() {
245
264
  return _getCallHistoryData.apply(this, arguments);
@@ -255,10 +274,10 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
255
274
  }, {
256
275
  key: "updateMissedCalls",
257
276
  value: (function () {
258
- var _updateMissedCalls = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(endTimeSessionIds) {
277
+ var _updateMissedCalls = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(endTimeSessionIds) {
259
278
  var loggerContext, santizedSessionIds, requestBody, updateMissedCallContentUrl, response, data, responseDetails, errorInfo, errorStatus;
260
- return _regenerator.default.wrap(function _callee4$(_context4) {
261
- while (1) switch (_context4.prev = _context4.next) {
279
+ return _regenerator.default.wrap(function _callee5$(_context5) {
280
+ while (1) switch (_context5.prev = _context5.next) {
262
281
  case 0:
263
282
  loggerContext = {
264
283
  file: _constants.CALL_HISTORY_FILE,
@@ -272,38 +291,38 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
272
291
  requestBody = {
273
292
  endTimeSessionIds: santizedSessionIds
274
293
  };
275
- _context4.prev = 3;
294
+ _context5.prev = 3;
276
295
  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
277
- _context4.t0 = fetch;
278
- _context4.t1 = updateMissedCallContentUrl;
279
- _context4.t2 = _types.HTTP_METHODS.POST;
280
- _context4.t3 = _defineProperty2.default;
281
- _context4.t4 = (0, _defineProperty2.default)({}, _constants.CONTENT_TYPE, _constants.APPLICATION_JSON);
282
- _context4.next = 12;
296
+ _context5.t0 = fetch;
297
+ _context5.t1 = updateMissedCallContentUrl;
298
+ _context5.t2 = _types.HTTP_METHODS.POST;
299
+ _context5.t3 = _defineProperty2.default;
300
+ _context5.t4 = (0, _defineProperty2.default)({}, _constants.CONTENT_TYPE, _constants.APPLICATION_JSON);
301
+ _context5.next = 12;
283
302
  return this.webex.credentials.getUserToken();
284
303
  case 12:
285
- _context4.t5 = _context4.sent;
286
- _context4.t6 = (0, _context4.t3)(_context4.t4, "Authorization", _context4.t5);
287
- _context4.t7 = (0, _stringify.default)(requestBody);
288
- _context4.t8 = {
289
- method: _context4.t2,
290
- headers: _context4.t6,
291
- body: _context4.t7
304
+ _context5.t5 = _context5.sent;
305
+ _context5.t6 = (0, _context5.t3)(_context5.t4, "Authorization", _context5.t5);
306
+ _context5.t7 = (0, _stringify.default)(requestBody);
307
+ _context5.t8 = {
308
+ method: _context5.t2,
309
+ headers: _context5.t6,
310
+ body: _context5.t7
292
311
  };
293
- _context4.next = 18;
294
- return (0, _context4.t0)(_context4.t1, _context4.t8);
312
+ _context5.next = 18;
313
+ return (0, _context5.t0)(_context5.t1, _context5.t8);
295
314
  case 18:
296
- response = _context4.sent;
315
+ response = _context5.sent;
297
316
  if (response.ok) {
298
- _context4.next = 21;
317
+ _context5.next = 21;
299
318
  break;
300
319
  }
301
320
  throw new Error("".concat(response.status));
302
321
  case 21:
303
- _context4.next = 23;
322
+ _context5.next = 23;
304
323
  return response.json();
305
324
  case 23:
306
- data = _context4.sent;
325
+ data = _context5.sent;
307
326
  _Logger.default.info("Missed calls are succesfully read by the user", loggerContext);
308
327
  responseDetails = {
309
328
  statusCode: data.statusCode,
@@ -312,23 +331,23 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
312
331
  },
313
332
  message: _constants2.SUCCESS_MESSAGE
314
333
  };
315
- return _context4.abrupt("return", responseDetails);
334
+ return _context5.abrupt("return", responseDetails);
316
335
  case 29:
317
- _context4.prev = 29;
318
- _context4.t9 = _context4["catch"](3);
336
+ _context5.prev = 29;
337
+ _context5.t9 = _context5["catch"](3);
319
338
  // Catch the 401 error from try block, return the error object to user
320
339
  errorInfo = {
321
- statusCode: _context4.t9 instanceof Error ? Number(_context4.t9.message) : ''
340
+ statusCode: _context5.t9 instanceof Error ? Number(_context5.t9.message) : ''
322
341
  };
323
342
  errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
324
- return _context4.abrupt("return", errorStatus);
343
+ return _context5.abrupt("return", errorStatus);
325
344
  case 34:
326
345
  case "end":
327
- return _context4.stop();
346
+ return _context5.stop();
328
347
  }
329
- }, _callee4, this, [[3, 29]]);
348
+ }, _callee5, this, [[3, 29]]);
330
349
  }));
331
- function updateMissedCalls(_x3) {
350
+ function updateMissedCalls(_x4) {
332
351
  return _updateMissedCalls.apply(this, arguments);
333
352
  }
334
353
  return updateMissedCalls;
@@ -341,10 +360,10 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
341
360
  }, {
342
361
  key: "fetchUCMLinesData",
343
362
  value: (function () {
344
- var _fetchUCMLinesData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
363
+ var _fetchUCMLinesData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
345
364
  var loggerContext, vgEndpoint, userId, orgId, linesURIForUCM, response, ucmLineDetails, errorInfo, errorStatus;
346
- return _regenerator.default.wrap(function _callee5$(_context5) {
347
- while (1) switch (_context5.prev = _context5.next) {
365
+ return _regenerator.default.wrap(function _callee6$(_context6) {
366
+ while (1) switch (_context6.prev = _context6.next) {
348
367
  case 0:
349
368
  loggerContext = {
350
369
  file: _constants.CALL_HISTORY_FILE,
@@ -354,14 +373,14 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
354
373
  userId = this.webex.internal.device.userId;
355
374
  orgId = this.webex.internal.device.orgId;
356
375
  linesURIForUCM = "".concat(vgEndpoint, "/").concat(_constants.VERSION_1, "/").concat(_constants.UNIFIED_COMMUNICATIONS, "/").concat(_constants.CONFIG, "/").concat(_constants.PEOPLE, "/").concat(userId, "/").concat(_constants.LINES, "?").concat(_constants.ORG_ID, "=").concat(orgId);
357
- _context5.prev = 5;
358
- _context5.next = 8;
376
+ _context6.prev = 5;
377
+ _context6.next = 8;
359
378
  return this.webex.request({
360
379
  uri: "".concat(linesURIForUCM),
361
380
  method: _types.HTTP_METHODS.GET
362
381
  });
363
382
  case 8:
364
- response = _context5.sent;
383
+ response = _context6.sent;
365
384
  ucmLineDetails = {
366
385
  statusCode: Number(response.statusCode),
367
386
  data: {
@@ -370,23 +389,131 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
370
389
  message: _constants2.SUCCESS_MESSAGE
371
390
  };
372
391
  _Logger.default.info("Line details fetched successfully", loggerContext);
373
- return _context5.abrupt("return", ucmLineDetails);
392
+ return _context6.abrupt("return", ucmLineDetails);
374
393
  case 14:
375
- _context5.prev = 14;
376
- _context5.t0 = _context5["catch"](5);
377
- errorInfo = _context5.t0;
394
+ _context6.prev = 14;
395
+ _context6.t0 = _context6["catch"](5);
396
+ errorInfo = _context6.t0;
378
397
  errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
379
- return _context5.abrupt("return", errorStatus);
398
+ return _context6.abrupt("return", errorStatus);
380
399
  case 19:
381
400
  case "end":
382
- return _context5.stop();
401
+ return _context6.stop();
383
402
  }
384
- }, _callee5, this, [[5, 14]]);
403
+ }, _callee6, this, [[5, 14]]);
385
404
  }));
386
405
  function fetchUCMLinesData() {
387
406
  return _fetchUCMLinesData.apply(this, arguments);
388
407
  }
389
408
  return fetchUCMLinesData;
409
+ }()
410
+ /**
411
+ * Function to delete the call history records using sessionId and endTime.
412
+ * @param deleteSessionIds - An array of objects containing endTime and sessionId of the call history records
413
+ * @returns {Promise} Resolves to an object of type {@link DeleteCallHistoryRecordsResponse}.Response details with success or error status.
414
+ */
415
+ )
416
+ }, {
417
+ key: "deleteCallHistoryRecords",
418
+ value: (function () {
419
+ var _deleteCallHistoryRecords = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(deleteSessionIds) {
420
+ var loggerContext, invalidSessions, invalidSessionIds, santizedSessionIds, deleteRequestBody, deleteCallHistoryRecordContentUrl, response, data, responseDetails, errorInfo, errorStatus;
421
+ return _regenerator.default.wrap(function _callee7$(_context7) {
422
+ while (1) switch (_context7.prev = _context7.next) {
423
+ case 0:
424
+ loggerContext = {
425
+ file: _constants.CALL_HISTORY_FILE,
426
+ method: 'deleteCallHistoryRecords'
427
+ }; // Collect all sessions with invalid dates (endTime) in an array
428
+ invalidSessions = deleteSessionIds.filter(function (session) {
429
+ return (0, _isNan.default)(new Date(session.endTime).getTime());
430
+ });
431
+ if (!(invalidSessions.length > 0)) {
432
+ _context7.next = 6;
433
+ break;
434
+ }
435
+ // If there are invalid sessions, return an error with details
436
+ invalidSessionIds = invalidSessions.map(function (session) {
437
+ return session.sessionId;
438
+ }).join(', ');
439
+ _Logger.default.info("The provided date is malformed or invalid for session IDs: ".concat(invalidSessionIds), loggerContext);
440
+ return _context7.abrupt("return", {
441
+ statusCode: 400,
442
+ data: {
443
+ deleteStatusMessage: _constants.SET_DELETE_CALL_RECORDS_INVALID_DATE_FORMAT_MESSAGE
444
+ },
445
+ message: _constants2.FAILURE_MESSAGE
446
+ });
447
+ case 6:
448
+ // Convert endTime to milliseconds for each sessionId
449
+ santizedSessionIds = deleteSessionIds.map(function (session) {
450
+ return _objectSpread(_objectSpread({}, session), {}, {
451
+ endTime: new Date(session.endTime).getTime()
452
+ });
453
+ });
454
+ deleteRequestBody = {
455
+ deleteSessionIds: santizedSessionIds
456
+ };
457
+ _context7.prev = 8;
458
+ 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
459
+ _context7.t0 = fetch;
460
+ _context7.t1 = deleteCallHistoryRecordContentUrl;
461
+ _context7.t2 = _types.HTTP_METHODS.POST;
462
+ _context7.t3 = _defineProperty2.default;
463
+ _context7.t4 = (0, _defineProperty2.default)({}, _constants.CONTENT_TYPE, _constants.APPLICATION_JSON);
464
+ _context7.next = 17;
465
+ return this.webex.credentials.getUserToken();
466
+ case 17:
467
+ _context7.t5 = _context7.sent;
468
+ _context7.t6 = (0, _context7.t3)(_context7.t4, "Authorization", _context7.t5);
469
+ _context7.t7 = (0, _stringify.default)(deleteRequestBody);
470
+ _context7.t8 = {
471
+ method: _context7.t2,
472
+ headers: _context7.t6,
473
+ body: _context7.t7
474
+ };
475
+ _context7.next = 23;
476
+ return (0, _context7.t0)(_context7.t1, _context7.t8);
477
+ case 23:
478
+ response = _context7.sent;
479
+ if (response.ok) {
480
+ _context7.next = 26;
481
+ break;
482
+ }
483
+ throw new Error("".concat(response.status));
484
+ case 26:
485
+ _context7.next = 28;
486
+ return response.json();
487
+ case 28:
488
+ data = _context7.sent;
489
+ _Logger.default.info("Call history records are succesfully deleted by the user", loggerContext);
490
+ responseDetails = {
491
+ statusCode: data.statusCode,
492
+ data: {
493
+ deleteStatusMessage: _constants.SET_DELETE_CALL_RECORDS_SUCCESS_MESSAGE
494
+ },
495
+ message: _constants2.SUCCESS_MESSAGE
496
+ };
497
+ return _context7.abrupt("return", responseDetails);
498
+ case 34:
499
+ _context7.prev = 34;
500
+ _context7.t9 = _context7["catch"](8);
501
+ // Catch the 401 error from try block, return the error object to user
502
+ errorInfo = {
503
+ statusCode: _context7.t9 instanceof Error ? Number(_context7.t9.message) : ''
504
+ };
505
+ errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
506
+ return _context7.abrupt("return", errorStatus);
507
+ case 39:
508
+ case "end":
509
+ return _context7.stop();
510
+ }
511
+ }, _callee7, this, [[8, 34]]);
512
+ }));
513
+ function deleteCallHistoryRecords(_x5) {
514
+ return _deleteCallHistoryRecords.apply(this, arguments);
515
+ }
516
+ return deleteCallHistoryRecords;
390
517
  }())
391
518
  }, {
392
519
  key: "registerSessionsListener",
@@ -398,6 +525,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
398
525
  this.sdkConnector.registerListener(_types2.MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE, this.handleSessionEvents);
399
526
  this.sdkConnector.registerListener(_types2.MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_LEGACY, this.handleSessionEvents);
400
527
  this.sdkConnector.registerListener(_types2.MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_VIEWED, this.handleUserReadSessionEvents);
528
+ this.sdkConnector.registerListener(_types2.MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_DELETED, this.handleUserSessionsDeletedEvents);
401
529
  }
402
530
  }]);
403
531
  return CallHistory;
@@ -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","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","_Reflect$construct","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","CallHistory","exports","_Eventing","_inherits2","_super","webex","logger","_this","_classCallCheck2","_assertThisInitialized2","file","CALL_HISTORY_FILE","method","_ref","_asyncToGenerator2","_regenerator","mark","_callee","event","wrap","_callee$","_context","prev","next","data","userSessions","emit","COMMON_EVENT_KEYS","CALL_HISTORY_USER_SESSION_INFO","stop","_x","_ref2","_callee2","_callee2$","_context2","userReadSessions","CALL_HISTORY_USER_VIEWED_SESSIONS","_x2","sdkConnector","SDKConnector","getWebex","setWebex","janusUrl","internal","services","_serviceUrls","janus","registerSessionsListener","log","setLogger","level","_createClass2","key","value","_getCallHistoryData","_callee3","days","limit","sort","sortBy","date","sortByParam","sortParam","url","janusResponse","callingBackend","hasCucmDN","_ucmLinesResponse$dat","ucmLinesResponse","ucmLinesData","responseDetails","errorInfo","errorStatus","_args3","_callee3$","_context3","undefined","NUMBER_OF_DAYS","LIMIT","SORT","DEFAULT","SORT_BY","Date","setDate","getDate","fromDate","toISOString","_values","includes","concat","loggerContext","info","HISTORY","USER_SESSIONS","FROM_DATE","request","uri","HTTP_METHODS","GET","service","ALLOWED_SERVICES","JANUS","sent","body","START_TIME","DESC","element","compareElement","getTime","ASC","getCallingBackEnd","CALLING_BACKEND","UCM","some","session","self","cucmDN","fetchUCMLinesData","statusCode","lines","devices","device","line","dnorpattern","ucmLineNumber","index","STATUS_CODE","message","SUCCESS_MESSAGE","abrupt","t0","serviceErrorCodeHandler","getCallHistoryData","_updateMissedCalls","_callee4","endTimeSessionIds","santizedSessionIds","requestBody","updateMissedCallContentUrl","response","_callee4$","_context4","map","endTime","UPDATE_MISSED_CALLS_ENDPOINT","fetch","t1","t2","POST","t3","t4","CONTENT_TYPE","APPLICATION_JSON","credentials","getUserToken","t5","t6","t7","_stringify","t8","headers","ok","Error","status","json","readStatusMessage","SET_READ_STATE_SUCCESS_MESSAGE","t9","Number","updateMissedCalls","_x3","_fetchUCMLinesData","_callee5","vgEndpoint","userId","orgId","linesURIForUCM","ucmLineDetails","_callee5$","_context5","getVgActionEndpoint","VERSION_1","UNIFIED_COMMUNICATIONS","CONFIG","PEOPLE","LINES","ORG_ID","registerListener","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","handleSessionEvents","CALL_SESSION_EVENT_LEGACY","CALL_SESSION_EVENT_VIEWED","handleUserReadSessionEvents","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} from './types';\nimport log from '../Logger';\nimport {serviceErrorCodeHandler, getVgActionEndpoint, getCallingBackEnd} 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} from './constants';\nimport {STATUS_CODE, SUCCESS_MESSAGE, USER_SESSIONS} 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} 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: 'getCallHistoryData',\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 = this.webex.internal.services._serviceUrls.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\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.log(`Janus API URL ${this.janusUrl}`, this.loggerContext);\n log.info(`Call history from date : ${this.fromDate}`, this.loggerContext);\n log.info(`Call history sort type : ${sortParam}`, this.loggerContext);\n log.info(`Call history sortby type : ${sortByParam}`, this.loggerContext);\n const url = `${this.janusUrl}/${HISTORY}/${USER_SESSIONS}${FROM_DATE}=${this.fromDate}&limit=${limit}&includeNewSessionTypes=true&sort=${sortParam}`;\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 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 const callingBackend = getCallingBackEnd(this.webex);\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 return responseDetails;\n } catch (err: unknown) {\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: 'updateMissedCalls',\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 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 const data: UpdateMissedCallsResponse = await response.json();\n log.info(`Missed calls are succesfully 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 return responseDetails;\n } catch (err: unknown) {\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: 'fetchLinesData',\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 try {\n const response = <WebexRequestPayload>await this.webex.request({\n uri: `${linesURIForUCM}`,\n method: HTTP_METHODS.GET,\n });\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.info(`Line details fetched successfully`, loggerContext);\n\n return ucmLineDetails;\n } catch (err: unknown) {\n const errorInfo = err 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 /**\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 }\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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"}
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","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","_Reflect$construct","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","CallHistory","exports","_Eventing","_inherits2","_super","webex","logger","_this","_classCallCheck2","_assertThisInitialized2","file","CALL_HISTORY_FILE","method","_ref","_asyncToGenerator2","_regenerator","mark","_callee","event","wrap","_callee$","_context","prev","next","data","userSessions","emit","COMMON_EVENT_KEYS","CALL_HISTORY_USER_SESSION_INFO","stop","_x","_ref2","_callee2","_callee2$","_context2","userReadSessions","CALL_HISTORY_USER_VIEWED_SESSIONS","_x2","_ref3","_callee3","_callee3$","_context3","deletedSessions","CALL_HISTORY_USER_SESSIONS_DELETED","_x3","sdkConnector","SDKConnector","getWebex","setWebex","janusUrl","internal","services","_serviceUrls","janus","registerSessionsListener","log","setLogger","level","_createClass2","key","value","_getCallHistoryData","_callee4","days","limit","sort","sortBy","date","sortByParam","sortParam","url","janusResponse","callingBackend","hasCucmDN","_ucmLinesResponse$dat","ucmLinesResponse","ucmLinesData","responseDetails","errorInfo","errorStatus","_args4","_callee4$","_context4","undefined","NUMBER_OF_DAYS","LIMIT","SORT","DEFAULT","SORT_BY","Date","setDate","getDate","fromDate","toISOString","_values","includes","concat","loggerContext","info","HISTORY","USER_SESSIONS","FROM_DATE","request","uri","HTTP_METHODS","GET","service","ALLOWED_SERVICES","JANUS","sent","body","START_TIME","DESC","element","compareElement","getTime","ASC","getCallingBackEnd","CALLING_BACKEND","UCM","some","session","self","cucmDN","fetchUCMLinesData","statusCode","lines","devices","device","line","dnorpattern","ucmLineNumber","index","STATUS_CODE","message","SUCCESS_MESSAGE","abrupt","t0","serviceErrorCodeHandler","getCallHistoryData","_updateMissedCalls","_callee5","endTimeSessionIds","santizedSessionIds","requestBody","updateMissedCallContentUrl","response","_callee5$","_context5","map","endTime","UPDATE_MISSED_CALLS_ENDPOINT","fetch","t1","t2","POST","t3","t4","CONTENT_TYPE","APPLICATION_JSON","credentials","getUserToken","t5","t6","t7","_stringify","t8","headers","ok","Error","status","json","readStatusMessage","SET_READ_STATE_SUCCESS_MESSAGE","t9","Number","updateMissedCalls","_x4","_fetchUCMLinesData","_callee6","vgEndpoint","userId","orgId","linesURIForUCM","ucmLineDetails","_callee6$","_context6","getVgActionEndpoint","VERSION_1","UNIFIED_COMMUNICATIONS","CONFIG","PEOPLE","LINES","ORG_ID","_deleteCallHistoryRecords","_callee7","deleteSessionIds","invalidSessions","invalidSessionIds","deleteRequestBody","deleteCallHistoryRecordContentUrl","_callee7$","_context7","_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 {serviceErrorCodeHandler, getVgActionEndpoint, getCallingBackEnd} 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} from './constants';\nimport {FAILURE_MESSAGE, STATUS_CODE, SUCCESS_MESSAGE, USER_SESSIONS} 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: 'getCallHistoryData',\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 = this.webex.internal.services._serviceUrls.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\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.log(`Janus API URL ${this.janusUrl}`, this.loggerContext);\n log.info(`Call history from date : ${this.fromDate}`, this.loggerContext);\n log.info(`Call history sort type : ${sortParam}`, this.loggerContext);\n log.info(`Call history sortby type : ${sortByParam}`, this.loggerContext);\n const url = `${this.janusUrl}/${HISTORY}/${USER_SESSIONS}${FROM_DATE}=${this.fromDate}&limit=${limit}&includeNewSessionTypes=true&sort=${sortParam}`;\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 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 const callingBackend = getCallingBackEnd(this.webex);\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 return responseDetails;\n } catch (err: unknown) {\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: 'updateMissedCalls',\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 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 const data: UpdateMissedCallsResponse = await response.json();\n log.info(`Missed calls are succesfully 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 return responseDetails;\n } catch (err: unknown) {\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: 'fetchLinesData',\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 try {\n const response = <WebexRequestPayload>await this.webex.request({\n uri: `${linesURIForUCM}`,\n method: HTTP_METHODS.GET,\n });\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.info(`Line details fetched successfully`, loggerContext);\n\n return ucmLineDetails;\n } catch (err: unknown) {\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: 'deleteCallHistoryRecords',\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 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 const deleteRequestBody = {\n deleteSessionIds: santizedSessionIds,\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 const data: DeleteCallHistoryRecordsResponse = await response.json();\n log.info(`Call history records are succesfully deleted by the user`, loggerContext);\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 // 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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"}