@webex/calling 3.10.0 → 3.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module/CallHistory/CallHistory.js +20 -11
- package/dist/module/CallSettings/UcmBackendConnector.js +21 -8
- package/dist/module/CallSettings/WxCallBackendConnector.js +10 -15
- package/dist/module/CallingClient/CallingClient.js +83 -123
- package/dist/module/CallingClient/calling/call.js +73 -58
- package/dist/module/CallingClient/calling/callManager.js +7 -0
- package/dist/module/CallingClient/constants.js +3 -0
- package/dist/module/CallingClient/registration/register.js +85 -5
- package/dist/module/CallingClient/registration/webWorker.js +2 -2
- package/dist/module/CallingClient/registration/webWorkerStr.js +2 -2
- package/dist/module/Contacts/ContactsClient.js +19 -25
- package/dist/module/Events/impl/index.js +1 -1
- package/dist/module/Logger/index.js +2 -2
- package/dist/module/Voicemail/BroadworksBackendConnector.js +10 -18
- package/dist/module/Voicemail/UcmBackendConnector.js +7 -11
- package/dist/module/Voicemail/Voicemail.js +42 -68
- package/dist/module/Voicemail/WxCallBackendConnector.js +14 -28
- package/dist/module/common/Utils.js +31 -5
- package/dist/module/common/constants.js +2 -0
- package/dist/module/common/testUtil.js +1 -0
- package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
- package/dist/types/CallSettings/UcmBackendConnector.d.ts +1 -0
- package/dist/types/CallSettings/UcmBackendConnector.d.ts.map +1 -1
- package/dist/types/CallSettings/WxCallBackendConnector.d.ts.map +1 -1
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/call.d.ts +4 -0
- 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 +3 -0
- package/dist/types/CallingClient/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts +4 -0
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/types.d.ts +6 -0
- package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
- package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
- package/dist/types/Contacts/ContactsClient.d.ts +1 -0
- package/dist/types/Contacts/ContactsClient.d.ts.map +1 -1
- package/dist/types/Logger/index.d.ts +1 -2
- package/dist/types/Logger/index.d.ts.map +1 -1
- package/dist/types/SDKConnector/types.d.ts +16 -0
- package/dist/types/SDKConnector/types.d.ts.map +1 -1
- package/dist/types/Voicemail/BroadworksBackendConnector.d.ts.map +1 -1
- package/dist/types/Voicemail/UcmBackendConnector.d.ts.map +1 -1
- package/dist/types/Voicemail/Voicemail.d.ts.map +1 -1
- package/dist/types/Voicemail/WxCallBackendConnector.d.ts.map +1 -1
- package/dist/types/common/Utils.d.ts +1 -1
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/dist/types/common/constants.d.ts +2 -0
- package/dist/types/common/constants.d.ts.map +1 -1
- package/dist/types/common/testUtil.d.ts +1 -0
- package/dist/types/common/testUtil.d.ts.map +1 -1
- package/package.json +4 -4
- package/dist/CallHistory/CallHistory.js +0 -584
- package/dist/CallHistory/CallHistory.js.map +0 -1
- package/dist/CallHistory/CallHistory.test.js +0 -813
- package/dist/CallHistory/CallHistory.test.js.map +0 -1
- package/dist/CallHistory/callHistoryFixtures.js +0 -650
- package/dist/CallHistory/callHistoryFixtures.js.map +0 -1
- package/dist/CallHistory/constants.js +0 -38
- package/dist/CallHistory/constants.js.map +0 -1
- package/dist/CallHistory/types.js +0 -7
- package/dist/CallHistory/types.js.map +0 -1
- package/dist/CallSettings/CallSettings.js +0 -312
- package/dist/CallSettings/CallSettings.js.map +0 -1
- package/dist/CallSettings/CallSettings.test.js +0 -122
- package/dist/CallSettings/CallSettings.test.js.map +0 -1
- package/dist/CallSettings/UcmBackendConnector.js +0 -261
- package/dist/CallSettings/UcmBackendConnector.js.map +0 -1
- package/dist/CallSettings/UcmBackendConnector.test.js +0 -321
- package/dist/CallSettings/UcmBackendConnector.test.js.map +0 -1
- package/dist/CallSettings/WxCallBackendConnector.js +0 -604
- package/dist/CallSettings/WxCallBackendConnector.js.map +0 -1
- package/dist/CallSettings/WxCallBackendConnector.test.js +0 -905
- package/dist/CallSettings/WxCallBackendConnector.test.js.map +0 -1
- package/dist/CallSettings/constants.js +0 -31
- package/dist/CallSettings/constants.js.map +0 -1
- package/dist/CallSettings/testFixtures.js +0 -68
- package/dist/CallSettings/testFixtures.js.map +0 -1
- package/dist/CallSettings/types.js +0 -7
- package/dist/CallSettings/types.js.map +0 -1
- package/dist/CallingClient/CallingClient.js +0 -1071
- package/dist/CallingClient/CallingClient.js.map +0 -1
- package/dist/CallingClient/CallingClient.test.js +0 -1289
- package/dist/CallingClient/CallingClient.test.js.map +0 -1
- package/dist/CallingClient/callRecordFixtures.js +0 -101
- package/dist/CallingClient/callRecordFixtures.js.map +0 -1
- package/dist/CallingClient/calling/CallerId/index.js +0 -276
- package/dist/CallingClient/calling/CallerId/index.js.map +0 -1
- package/dist/CallingClient/calling/CallerId/index.test.js +0 -275
- package/dist/CallingClient/calling/CallerId/index.test.js.map +0 -1
- package/dist/CallingClient/calling/CallerId/types.js +0 -7
- package/dist/CallingClient/calling/CallerId/types.js.map +0 -1
- package/dist/CallingClient/calling/call.js +0 -3444
- package/dist/CallingClient/calling/call.js.map +0 -1
- package/dist/CallingClient/calling/call.test.js +0 -3260
- package/dist/CallingClient/calling/call.test.js.map +0 -1
- package/dist/CallingClient/calling/callManager.js +0 -456
- package/dist/CallingClient/calling/callManager.js.map +0 -1
- package/dist/CallingClient/calling/callManager.test.js +0 -741
- package/dist/CallingClient/calling/callManager.test.js.map +0 -1
- package/dist/CallingClient/calling/index.js +0 -30
- package/dist/CallingClient/calling/index.js.map +0 -1
- package/dist/CallingClient/calling/types.js +0 -74
- package/dist/CallingClient/calling/types.js.map +0 -1
- package/dist/CallingClient/callingClientFixtures.js +0 -143
- package/dist/CallingClient/callingClientFixtures.js.map +0 -1
- package/dist/CallingClient/constants.js +0 -237
- package/dist/CallingClient/constants.js.map +0 -1
- package/dist/CallingClient/line/index.js +0 -349
- package/dist/CallingClient/line/index.js.map +0 -1
- package/dist/CallingClient/line/line.test.js +0 -327
- package/dist/CallingClient/line/line.test.js.map +0 -1
- package/dist/CallingClient/line/types.js +0 -21
- package/dist/CallingClient/line/types.js.map +0 -1
- package/dist/CallingClient/registration/index.js +0 -19
- package/dist/CallingClient/registration/index.js.map +0 -1
- package/dist/CallingClient/registration/register.js +0 -1538
- package/dist/CallingClient/registration/register.js.map +0 -1
- package/dist/CallingClient/registration/register.test.js +0 -1537
- package/dist/CallingClient/registration/register.test.js.map +0 -1
- package/dist/CallingClient/registration/registerFixtures.js +0 -36
- package/dist/CallingClient/registration/registerFixtures.js.map +0 -1
- package/dist/CallingClient/registration/types.js +0 -7
- package/dist/CallingClient/registration/types.js.map +0 -1
- package/dist/CallingClient/registration/webWorker.js +0 -130
- package/dist/CallingClient/registration/webWorker.js.map +0 -1
- package/dist/CallingClient/registration/webWorker.test.js +0 -303
- package/dist/CallingClient/registration/webWorker.test.js.map +0 -1
- package/dist/CallingClient/registration/webWorkerStr.js +0 -15
- package/dist/CallingClient/registration/webWorkerStr.js.map +0 -1
- package/dist/CallingClient/types.js +0 -7
- package/dist/CallingClient/types.js.map +0 -1
- package/dist/CallingClient/windowsChromiumIceWarmupUtils.js +0 -142
- package/dist/CallingClient/windowsChromiumIceWarmupUtils.js.map +0 -1
- package/dist/Contacts/ContactsClient.js +0 -1215
- package/dist/Contacts/ContactsClient.js.map +0 -1
- package/dist/Contacts/ContactsClient.test.js +0 -1003
- package/dist/Contacts/ContactsClient.test.js.map +0 -1
- package/dist/Contacts/constants.js +0 -40
- package/dist/Contacts/constants.js.map +0 -1
- package/dist/Contacts/contactFixtures.js +0 -430
- package/dist/Contacts/contactFixtures.js.map +0 -1
- package/dist/Contacts/types.js +0 -43
- package/dist/Contacts/types.js.map +0 -1
- package/dist/Errors/catalog/CallError.js +0 -92
- package/dist/Errors/catalog/CallError.js.map +0 -1
- package/dist/Errors/catalog/CallingDeviceError.js +0 -86
- package/dist/Errors/catalog/CallingDeviceError.js.map +0 -1
- package/dist/Errors/catalog/ExtendedError.js +0 -44
- package/dist/Errors/catalog/ExtendedError.js.map +0 -1
- package/dist/Errors/catalog/LineError.js +0 -88
- package/dist/Errors/catalog/LineError.js.map +0 -1
- package/dist/Errors/index.js +0 -28
- package/dist/Errors/index.js.map +0 -1
- package/dist/Errors/types.js +0 -59
- package/dist/Errors/types.js.map +0 -1
- package/dist/Events/impl/index.js +0 -81
- package/dist/Events/impl/index.js.map +0 -1
- package/dist/Events/types.js +0 -107
- package/dist/Events/types.js.map +0 -1
- package/dist/Logger/index.js +0 -228
- package/dist/Logger/index.js.map +0 -1
- package/dist/Logger/index.test.js +0 -87
- package/dist/Logger/index.test.js.map +0 -1
- package/dist/Logger/types.js +0 -34
- package/dist/Logger/types.js.map +0 -1
- package/dist/Metrics/index.js +0 -535
- package/dist/Metrics/index.js.map +0 -1
- package/dist/Metrics/index.test.js +0 -463
- package/dist/Metrics/index.test.js.map +0 -1
- package/dist/Metrics/types.js +0 -64
- package/dist/Metrics/types.js.map +0 -1
- package/dist/SDKConnector/index.js +0 -103
- package/dist/SDKConnector/index.js.map +0 -1
- package/dist/SDKConnector/index.test.js +0 -9
- package/dist/SDKConnector/index.test.js.map +0 -1
- package/dist/SDKConnector/types.js +0 -7
- package/dist/SDKConnector/types.js.map +0 -1
- package/dist/SDKConnector/utils.js +0 -39
- package/dist/SDKConnector/utils.js.map +0 -1
- package/dist/SDKConnector/utils.test.js +0 -9
- package/dist/SDKConnector/utils.test.js.map +0 -1
- package/dist/Voicemail/BroadworksBackendConnector.js +0 -707
- package/dist/Voicemail/BroadworksBackendConnector.js.map +0 -1
- package/dist/Voicemail/BroadworksBackendConnector.test.js +0 -812
- package/dist/Voicemail/BroadworksBackendConnector.test.js.map +0 -1
- package/dist/Voicemail/UcmBackendConnector.js +0 -632
- package/dist/Voicemail/UcmBackendConnector.js.map +0 -1
- package/dist/Voicemail/UcmBackendConnector.test.js +0 -738
- package/dist/Voicemail/UcmBackendConnector.test.js.map +0 -1
- package/dist/Voicemail/Voicemail.js +0 -500
- package/dist/Voicemail/Voicemail.js.map +0 -1
- package/dist/Voicemail/Voicemail.test.js +0 -391
- package/dist/Voicemail/Voicemail.test.js.map +0 -1
- package/dist/Voicemail/WxCallBackendConnector.js +0 -671
- package/dist/Voicemail/WxCallBackendConnector.js.map +0 -1
- package/dist/Voicemail/WxCallBackendConnector.test.js +0 -1199
- package/dist/Voicemail/WxCallBackendConnector.test.js.map +0 -1
- package/dist/Voicemail/constants.js +0 -61
- package/dist/Voicemail/constants.js.map +0 -1
- package/dist/Voicemail/types.js +0 -7
- package/dist/Voicemail/types.js.map +0 -1
- package/dist/Voicemail/voicemailFixture.js +0 -524
- package/dist/Voicemail/voicemailFixture.js.map +0 -1
- package/dist/api.js +0 -157
- package/dist/api.js.map +0 -1
- package/dist/common/Utils.js +0 -1451
- package/dist/common/Utils.js.map +0 -1
- package/dist/common/Utils.test.js +0 -1744
- package/dist/common/Utils.test.js.map +0 -1
- package/dist/common/constants.js +0 -60
- package/dist/common/constants.js.map +0 -1
- package/dist/common/index.js +0 -19
- package/dist/common/index.js.map +0 -1
- package/dist/common/testUtil.js +0 -982
- package/dist/common/testUtil.js.map +0 -1
- package/dist/common/types.js +0 -75
- package/dist/common/types.js.map +0 -1
- package/dist/index.js +0 -321
- package/dist/index.js.map +0 -1
package/dist/common/Utils.js
DELETED
|
@@ -1,1451 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _typeof = require("@babel/runtime-corejs2/helpers/typeof");
|
|
4
|
-
var _Array$from = require("@babel/runtime-corejs2/core-js/array/from");
|
|
5
|
-
var _Symbol = require("@babel/runtime-corejs2/core-js/symbol");
|
|
6
|
-
var _Symbol$iterator = require("@babel/runtime-corejs2/core-js/symbol/iterator");
|
|
7
|
-
var _Array$isArray = require("@babel/runtime-corejs2/core-js/array/is-array");
|
|
8
|
-
var _Object$keys2 = require("@babel/runtime-corejs2/core-js/object/keys");
|
|
9
|
-
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
|
|
10
|
-
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
|
|
11
|
-
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
|
|
12
|
-
var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
|
|
13
|
-
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
14
|
-
var _WeakMap = require("@babel/runtime-corejs2/core-js/weak-map");
|
|
15
|
-
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
16
|
-
_Object$defineProperty(exports, "__esModule", {
|
|
17
|
-
value: true
|
|
18
|
-
});
|
|
19
|
-
exports.emitFinalFailure = emitFinalFailure;
|
|
20
|
-
exports.fetchVoicemailList = fetchVoicemailList;
|
|
21
|
-
exports.filterMobiusUris = filterMobiusUris;
|
|
22
|
-
exports.getCallingBackEnd = getCallingBackEnd;
|
|
23
|
-
exports.getSortedVoicemailList = getSortedVoicemailList;
|
|
24
|
-
exports.getVgActionEndpoint = getVgActionEndpoint;
|
|
25
|
-
exports.getXsiActionEndpoint = getXsiActionEndpoint;
|
|
26
|
-
exports.handleCallErrors = handleCallErrors;
|
|
27
|
-
exports.handleCallingClientErrors = handleCallingClientErrors;
|
|
28
|
-
exports.handleRegistrationErrors = handleRegistrationErrors;
|
|
29
|
-
exports.inferIdFromUuid = inferIdFromUuid;
|
|
30
|
-
exports.modifySdpForIPv4 = modifySdpForIPv4;
|
|
31
|
-
exports.parseMediaQualityStatistics = parseMediaQualityStatistics;
|
|
32
|
-
exports.resolveCallerIdByName = resolveCallerIdByName;
|
|
33
|
-
exports.resolveCallerIdDisplay = resolveCallerIdDisplay;
|
|
34
|
-
exports.resolveContact = resolveContact;
|
|
35
|
-
exports.scimQuery = scimQuery;
|
|
36
|
-
exports.serviceErrorCodeHandler = serviceErrorCodeHandler;
|
|
37
|
-
exports.storeVoicemailList = storeVoicemailList;
|
|
38
|
-
exports.uploadLogs = uploadLogs;
|
|
39
|
-
exports.validateServiceData = validateServiceData;
|
|
40
|
-
exports.waitForMsecs = void 0;
|
|
41
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
|
42
|
-
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
|
|
43
|
-
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
|
44
|
-
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
45
|
-
var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
|
|
46
|
-
var _parseInt2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/parse-int"));
|
|
47
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
48
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
49
|
-
var platform = _interopRequireWildcard(require("platform"));
|
|
50
|
-
var _uuid = require("uuid");
|
|
51
|
-
var _types = require("../Metrics/types");
|
|
52
|
-
var _Metrics = require("../Metrics");
|
|
53
|
-
var _CallError = require("../Errors/catalog/CallError");
|
|
54
|
-
var _types2 = require("../Errors/types");
|
|
55
|
-
var _types3 = require("./types");
|
|
56
|
-
var _Logger = _interopRequireDefault(require("../Logger"));
|
|
57
|
-
var _CallingDeviceError = require("../Errors/catalog/CallingDeviceError");
|
|
58
|
-
var _constants = require("../CallingClient/constants");
|
|
59
|
-
var _constants2 = require("./constants");
|
|
60
|
-
var _SDKConnector = _interopRequireDefault(require("../SDKConnector"));
|
|
61
|
-
var _LineError = require("../Errors/catalog/LineError");
|
|
62
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
63
|
-
function ownKeys(e, r) { var t = _Object$keys2(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
64
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
65
|
-
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof _Symbol && r[_Symbol$iterator] || r["@@iterator"]; if (!t) { if (_Array$isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
66
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? _Array$from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
67
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } /* eslint-disable no-fallthrough */ /* eslint-disable no-underscore-dangle */ /* eslint-disable @typescript-eslint/no-shadow */
|
|
68
|
-
function filterMobiusUris(mobiusServers, defaultMobiusUrl) {
|
|
69
|
-
var _mobiusServers$primar, _mobiusServers$backup;
|
|
70
|
-
var logContext = {
|
|
71
|
-
file: _constants.UTILS_FILE,
|
|
72
|
-
method: 'filterMobiusUris'
|
|
73
|
-
};
|
|
74
|
-
var urisArrayPrimary = [];
|
|
75
|
-
var urisArrayBackup = [];
|
|
76
|
-
if (mobiusServers !== null && mobiusServers !== void 0 && (_mobiusServers$primar = mobiusServers.primary) !== null && _mobiusServers$primar !== void 0 && _mobiusServers$primar.uris) {
|
|
77
|
-
_Logger.default.info('Adding Primary uris', logContext);
|
|
78
|
-
var _iterator = _createForOfIteratorHelper(mobiusServers.primary.uris),
|
|
79
|
-
_step;
|
|
80
|
-
try {
|
|
81
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
82
|
-
var uri = _step.value;
|
|
83
|
-
urisArrayPrimary.push("".concat(uri).concat(_constants.URL_ENDPOINT));
|
|
84
|
-
}
|
|
85
|
-
} catch (err) {
|
|
86
|
-
_iterator.e(err);
|
|
87
|
-
} finally {
|
|
88
|
-
_iterator.f();
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
if (mobiusServers !== null && mobiusServers !== void 0 && (_mobiusServers$backup = mobiusServers.backup) !== null && _mobiusServers$backup !== void 0 && _mobiusServers$backup.uris) {
|
|
92
|
-
_Logger.default.info('Adding Backup uris', logContext);
|
|
93
|
-
var _iterator2 = _createForOfIteratorHelper(mobiusServers.backup.uris),
|
|
94
|
-
_step2;
|
|
95
|
-
try {
|
|
96
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
97
|
-
var _uri = _step2.value;
|
|
98
|
-
urisArrayBackup.push("".concat(_uri).concat(_constants.URL_ENDPOINT));
|
|
99
|
-
}
|
|
100
|
-
} catch (err) {
|
|
101
|
-
_iterator2.e(err);
|
|
102
|
-
} finally {
|
|
103
|
-
_iterator2.f();
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/*
|
|
108
|
-
* If there are no entries in both primary and backup arrays then add the default
|
|
109
|
-
* uri in primary array, otherwise in backup.
|
|
110
|
-
*/
|
|
111
|
-
_Logger.default.info('Adding Default uri', logContext);
|
|
112
|
-
if (!urisArrayPrimary.length && !urisArrayBackup.length) {
|
|
113
|
-
urisArrayPrimary.push("".concat(defaultMobiusUrl).concat(_constants.URL_ENDPOINT));
|
|
114
|
-
} else {
|
|
115
|
-
urisArrayBackup.push("".concat(defaultMobiusUrl).concat(_constants.URL_ENDPOINT));
|
|
116
|
-
}
|
|
117
|
-
var primaryUris = [];
|
|
118
|
-
var backupUris = [];
|
|
119
|
-
|
|
120
|
-
/* Remove duplicates from primary by keeping the order intact */
|
|
121
|
-
for (var i = 0; i < urisArrayPrimary.length; i += 1) {
|
|
122
|
-
if (primaryUris.indexOf(urisArrayPrimary[i]) === -1) {
|
|
123
|
-
primaryUris.push(urisArrayPrimary[i]);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/* Remove duplicates from backup by keeping the order intact */
|
|
128
|
-
for (var _i = 0; _i < urisArrayBackup.length; _i += 1) {
|
|
129
|
-
if (backupUris.indexOf(urisArrayBackup[_i]) === -1) {
|
|
130
|
-
backupUris.push(urisArrayBackup[_i]);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
return {
|
|
134
|
-
primary: primaryUris,
|
|
135
|
-
backup: backupUris
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Updates the error context for a particular calling client instance.
|
|
141
|
-
*
|
|
142
|
-
* @param errContext - Error Context as generated by the caller.
|
|
143
|
-
* @param type - Error type based on status code.
|
|
144
|
-
* @param message - Custom message for user.
|
|
145
|
-
* @param correlationId - Unique identifier for a call.
|
|
146
|
-
* @param callError - Call error instance.
|
|
147
|
-
*/
|
|
148
|
-
function updateCallErrorContext(errContext, type, message, correlationId, callError) {
|
|
149
|
-
var errObj = {};
|
|
150
|
-
errObj.context = errContext;
|
|
151
|
-
errObj.type = type;
|
|
152
|
-
errObj.message = message;
|
|
153
|
-
errObj.correlationId = correlationId;
|
|
154
|
-
callError.setCallError(errObj);
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* Updates the error context for a particular line instance.
|
|
159
|
-
*
|
|
160
|
-
* @param errContext - Error Context.
|
|
161
|
-
* @param type - Error type based on status code.
|
|
162
|
-
* @param message - Custom message for user.
|
|
163
|
-
* @param status - Status of line.
|
|
164
|
-
* @param lineError - Line error instance.
|
|
165
|
-
*/
|
|
166
|
-
function updateLineErrorContext(errContext, type, message, status, lineError) {
|
|
167
|
-
var errObj = {};
|
|
168
|
-
errObj.context = errContext;
|
|
169
|
-
errObj.type = type;
|
|
170
|
-
errObj.message = message;
|
|
171
|
-
errObj.status = status;
|
|
172
|
-
lineError.setError(errObj);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
/**
|
|
176
|
-
* Updates the error context for a particular calling client instance.
|
|
177
|
-
*
|
|
178
|
-
* @param errContext - Error Context as generated by the caller.
|
|
179
|
-
* @param type - Error type based on status code.
|
|
180
|
-
* @param message - Custom message for user.
|
|
181
|
-
* @param clientError - Client Error.
|
|
182
|
-
*/
|
|
183
|
-
function updateErrorContext(errContext, type, message, clientError) {
|
|
184
|
-
var errObj = {};
|
|
185
|
-
errObj.context = errContext;
|
|
186
|
-
errObj.type = type;
|
|
187
|
-
errObj.message = message;
|
|
188
|
-
clientError.setError(errObj);
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
* Emits final failure to the client after it gives up
|
|
193
|
-
* retrying registration and records error metric.
|
|
194
|
-
*
|
|
195
|
-
* @param line - Instance of line.
|
|
196
|
-
* @param caller - Method which called this handler.
|
|
197
|
-
* @param file - File name from where error got reported.
|
|
198
|
-
*/
|
|
199
|
-
function emitFinalFailure(emitterCb, loggerContext) {
|
|
200
|
-
var clientError = (0, _LineError.createLineError)('', {}, _types2.ERROR_TYPE.DEFAULT, _types3.RegistrationStatus.INACTIVE);
|
|
201
|
-
updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.SERVICE_UNAVAILABLE, 'An unknown error occurred. Wait a moment and try again. Please contact the administrator if the problem persists.', _types3.RegistrationStatus.INACTIVE, clientError);
|
|
202
|
-
emitterCb(clientError);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
/**
|
|
206
|
-
* Handle various Registration related Error flows here. Decide whether to emit event or retry.
|
|
207
|
-
* @param err - Error body.
|
|
208
|
-
* @param emitterCb - LineErrorEmitterCallback
|
|
209
|
-
* @param loggerContext - Logging context that has method and file name
|
|
210
|
-
* @param restoreRegCb - Callback which will try restoring resgistration in case of 403
|
|
211
|
-
*
|
|
212
|
-
* In emitterCb,
|
|
213
|
-
* For non final error scenarios in registration flow,
|
|
214
|
-
* send Unregistered event only without any error message
|
|
215
|
-
* in order to have the web client update only the UI
|
|
216
|
-
* state to disconnected and not show any error dialog
|
|
217
|
-
* to the end user as in those scenarios a retry will
|
|
218
|
-
* be scheduled to attempt registration again.
|
|
219
|
-
*
|
|
220
|
-
*/
|
|
221
|
-
function handleRegistrationErrors(_x, _x2, _x3, _x4, _x5) {
|
|
222
|
-
return _handleRegistrationErrors.apply(this, arguments);
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* Handle various Error flows related to calling client here. Decide whether to emit event or retry.
|
|
226
|
-
* @param err - Error body.
|
|
227
|
-
* @param emitterCb - CallingClientErrorEmitter
|
|
228
|
-
* @param loggerContext - Logging context that has method and file name
|
|
229
|
-
* @param restoreRegCb - Callback which will try restoring resgistration in case of 403
|
|
230
|
-
*/
|
|
231
|
-
function _handleRegistrationErrors() {
|
|
232
|
-
_handleRegistrationErrors = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(err, emitterCb, loggerContext, retry429Cb, restoreRegCb) {
|
|
233
|
-
var lineError, errorCode, finalError, caller, retryAfter, errorBody, code, errorMessage, _caller, _errorMessage, _errorMessage2, _errorMessage3;
|
|
234
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
235
|
-
while (1) switch (_context.prev = _context.next) {
|
|
236
|
-
case 0:
|
|
237
|
-
lineError = (0, _LineError.createLineError)('', {}, _types2.ERROR_TYPE.DEFAULT, _types3.RegistrationStatus.INACTIVE);
|
|
238
|
-
errorCode = Number(err.statusCode);
|
|
239
|
-
finalError = false;
|
|
240
|
-
_Logger.default.warn("Status code: -> ".concat(errorCode), loggerContext);
|
|
241
|
-
_context.t0 = errorCode;
|
|
242
|
-
_context.next = _context.t0 === _types2.ERROR_CODE.BAD_REQUEST ? 7 : _context.t0 === _types2.ERROR_CODE.UNAUTHORIZED ? 12 : _context.t0 === _types2.ERROR_CODE.DEVICE_NOT_FOUND ? 17 : _context.t0 === _types2.ERROR_CODE.TOO_MANY_REQUESTS ? 22 : _context.t0 === _types2.ERROR_CODE.INTERNAL_SERVER_ERROR ? 27 : _context.t0 === _types2.ERROR_CODE.SERVICE_UNAVAILABLE ? 31 : _context.t0 === _types2.ERROR_CODE.FORBIDDEN ? 35 : 70;
|
|
243
|
-
break;
|
|
244
|
-
case 7:
|
|
245
|
-
finalError = true;
|
|
246
|
-
_Logger.default.warn("400 Bad Request", loggerContext);
|
|
247
|
-
updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.BAD_REQUEST, 'Invalid input. Please verify the required parameters, sign out and then sign back in with the valid data', _types3.RegistrationStatus.INACTIVE, lineError);
|
|
248
|
-
emitterCb(lineError, finalError);
|
|
249
|
-
return _context.abrupt("break", 73);
|
|
250
|
-
case 12:
|
|
251
|
-
// Return it to the Caller
|
|
252
|
-
finalError = true;
|
|
253
|
-
_Logger.default.warn("401 Unauthorized", loggerContext);
|
|
254
|
-
updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.TOKEN_ERROR, 'User is unauthorized due to an expired token. Sign out, then sign back in.', _types3.RegistrationStatus.INACTIVE, lineError);
|
|
255
|
-
emitterCb(lineError, finalError);
|
|
256
|
-
return _context.abrupt("break", 73);
|
|
257
|
-
case 17:
|
|
258
|
-
finalError = true;
|
|
259
|
-
_Logger.default.warn("404 Device Not Found", loggerContext);
|
|
260
|
-
updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.NOT_FOUND, 'Webex Calling is unable to find your device. Sign out, then sign back in', _types3.RegistrationStatus.INACTIVE, lineError);
|
|
261
|
-
emitterCb(lineError, finalError);
|
|
262
|
-
return _context.abrupt("break", 73);
|
|
263
|
-
case 22:
|
|
264
|
-
_Logger.default.warn("429 Too Many Requests", loggerContext);
|
|
265
|
-
updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.TOO_MANY_REQUESTS, 'Server is handling too many request at the time. Wait a moment and try again', _types3.RegistrationStatus.INACTIVE, lineError);
|
|
266
|
-
caller = loggerContext.method || 'handleErrors';
|
|
267
|
-
if (retry429Cb && err.headers) {
|
|
268
|
-
retryAfter = Number(err.headers['retry-after']);
|
|
269
|
-
retry429Cb(retryAfter, caller);
|
|
270
|
-
}
|
|
271
|
-
return _context.abrupt("break", 73);
|
|
272
|
-
case 27:
|
|
273
|
-
_Logger.default.warn("500 Internal Server Error", loggerContext);
|
|
274
|
-
updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.SERVER_ERROR, 'An unknown error occurred while placing the request. Wait a moment and try again.', _types3.RegistrationStatus.INACTIVE, lineError);
|
|
275
|
-
emitterCb(lineError, finalError);
|
|
276
|
-
return _context.abrupt("break", 73);
|
|
277
|
-
case 31:
|
|
278
|
-
_Logger.default.warn("503 Service Unavailable", loggerContext);
|
|
279
|
-
updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.SERVICE_UNAVAILABLE, 'An error occurred on the server while processing the request. Wait a moment and try again.', _types3.RegistrationStatus.INACTIVE, lineError);
|
|
280
|
-
emitterCb(lineError, finalError);
|
|
281
|
-
return _context.abrupt("break", 73);
|
|
282
|
-
case 35:
|
|
283
|
-
_Logger.default.warn("403 Forbidden", loggerContext);
|
|
284
|
-
errorBody = err.body;
|
|
285
|
-
if (errorBody) {
|
|
286
|
-
_context.next = 42;
|
|
287
|
-
break;
|
|
288
|
-
}
|
|
289
|
-
_Logger.default.warn('Error response has no body, throwing default error', loggerContext);
|
|
290
|
-
updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.FORBIDDEN_ERROR, 'An unauthorized action has been received. This action has been blocked. Please contact the administrator if this persists.', _types3.RegistrationStatus.INACTIVE, lineError);
|
|
291
|
-
emitterCb(lineError, finalError);
|
|
292
|
-
return _context.abrupt("return", finalError);
|
|
293
|
-
case 42:
|
|
294
|
-
code = Number(errorBody.errorCode);
|
|
295
|
-
_Logger.default.warn("Error code found : ".concat(code), loggerContext);
|
|
296
|
-
_context.t1 = code;
|
|
297
|
-
_context.next = _context.t1 === _types2.DEVICE_ERROR_CODE.DEVICE_LIMIT_EXCEEDED ? 47 : _context.t1 === _types2.DEVICE_ERROR_CODE.DEVICE_CREATION_DISABLED ? 54 : _context.t1 === _types2.DEVICE_ERROR_CODE.DEVICE_CREATION_FAILED ? 60 : 65;
|
|
298
|
-
break;
|
|
299
|
-
case 47:
|
|
300
|
-
errorMessage = 'User device limit exceeded';
|
|
301
|
-
_Logger.default.warn(errorMessage, loggerContext);
|
|
302
|
-
if (!restoreRegCb) {
|
|
303
|
-
_context.next = 53;
|
|
304
|
-
break;
|
|
305
|
-
}
|
|
306
|
-
_caller = loggerContext.method || 'handleErrors';
|
|
307
|
-
_context.next = 53;
|
|
308
|
-
return restoreRegCb(errorBody, _caller);
|
|
309
|
-
case 53:
|
|
310
|
-
return _context.abrupt("break", 69);
|
|
311
|
-
case 54:
|
|
312
|
-
_errorMessage = 'User is not configured for WebRTC calling. Please contact the administrator to resolve this issue.';
|
|
313
|
-
finalError = true;
|
|
314
|
-
updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.FORBIDDEN_ERROR, _errorMessage, _types3.RegistrationStatus.INACTIVE, lineError);
|
|
315
|
-
_Logger.default.warn(_errorMessage, loggerContext);
|
|
316
|
-
emitterCb(lineError, true);
|
|
317
|
-
return _context.abrupt("break", 69);
|
|
318
|
-
case 60:
|
|
319
|
-
_errorMessage2 = 'An unknown error occurred while provisioning the device. Wait a moment and try again.';
|
|
320
|
-
updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.FORBIDDEN_ERROR, _errorMessage2, _types3.RegistrationStatus.INACTIVE, lineError);
|
|
321
|
-
_Logger.default.warn(_errorMessage2, loggerContext);
|
|
322
|
-
emitterCb(lineError, finalError);
|
|
323
|
-
return _context.abrupt("break", 69);
|
|
324
|
-
case 65:
|
|
325
|
-
_errorMessage3 = 'An unknown error occurred. Wait a moment and try again. Please contact the administrator if the problem persists.';
|
|
326
|
-
updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.FORBIDDEN_ERROR, _errorMessage3, _types3.RegistrationStatus.INACTIVE, lineError);
|
|
327
|
-
_Logger.default.warn(_errorMessage3, loggerContext);
|
|
328
|
-
emitterCb(lineError, finalError);
|
|
329
|
-
case 69:
|
|
330
|
-
return _context.abrupt("break", 73);
|
|
331
|
-
case 70:
|
|
332
|
-
updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.DEFAULT, 'Unknown error', _types3.RegistrationStatus.INACTIVE, lineError);
|
|
333
|
-
_Logger.default.warn("Unknown Error", loggerContext);
|
|
334
|
-
emitterCb(lineError, finalError);
|
|
335
|
-
case 73:
|
|
336
|
-
return _context.abrupt("return", finalError);
|
|
337
|
-
case 74:
|
|
338
|
-
case "end":
|
|
339
|
-
return _context.stop();
|
|
340
|
-
}
|
|
341
|
-
}, _callee);
|
|
342
|
-
}));
|
|
343
|
-
return _handleRegistrationErrors.apply(this, arguments);
|
|
344
|
-
}
|
|
345
|
-
function handleCallingClientErrors(_x6, _x7, _x8) {
|
|
346
|
-
return _handleCallingClientErrors.apply(this, arguments);
|
|
347
|
-
}
|
|
348
|
-
/**
|
|
349
|
-
* Handler for call related errors.
|
|
350
|
-
*
|
|
351
|
-
* @param emitterCb - Event emitter function.
|
|
352
|
-
* @param errorType - Type of error experienced.
|
|
353
|
-
* @param errorLayer - Call control or media layer.
|
|
354
|
-
* @param retryCb - Failure retry function.
|
|
355
|
-
* @param correlationId - CorrelationId of the call.
|
|
356
|
-
* @param err - Error Response.
|
|
357
|
-
* @param caller - Caller function.
|
|
358
|
-
* @param file - File name.
|
|
359
|
-
*/
|
|
360
|
-
function _handleCallingClientErrors() {
|
|
361
|
-
_handleCallingClientErrors = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2(err, emitterCb, loggerContext) {
|
|
362
|
-
var clientError, errorCode, finalError;
|
|
363
|
-
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
364
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
365
|
-
case 0:
|
|
366
|
-
clientError = (0, _CallingDeviceError.createClientError)('', {}, _types2.ERROR_TYPE.DEFAULT, _types3.RegistrationStatus.INACTIVE);
|
|
367
|
-
errorCode = Number(err.statusCode);
|
|
368
|
-
finalError = false;
|
|
369
|
-
_Logger.default.warn("Status code: -> ".concat(errorCode), loggerContext);
|
|
370
|
-
_context2.t0 = errorCode;
|
|
371
|
-
_context2.next = _context2.t0 === _types2.ERROR_CODE.UNAUTHORIZED ? 7 : _context2.t0 === _types2.ERROR_CODE.INTERNAL_SERVER_ERROR ? 12 : 16;
|
|
372
|
-
break;
|
|
373
|
-
case 7:
|
|
374
|
-
finalError = true;
|
|
375
|
-
_Logger.default.warn("401 Unauthorized", loggerContext);
|
|
376
|
-
updateErrorContext(loggerContext, _types2.ERROR_TYPE.TOKEN_ERROR, 'User is unauthorized due to an expired token.', clientError);
|
|
377
|
-
emitterCb(clientError, finalError);
|
|
378
|
-
return _context2.abrupt("break", 19);
|
|
379
|
-
case 12:
|
|
380
|
-
_Logger.default.warn("500 Internal Server Error", loggerContext);
|
|
381
|
-
updateErrorContext(loggerContext, _types2.ERROR_TYPE.SERVER_ERROR, 'An unknown error occurred while placing the request. Wait a moment and try again.', clientError);
|
|
382
|
-
emitterCb(clientError, finalError);
|
|
383
|
-
return _context2.abrupt("break", 19);
|
|
384
|
-
case 16:
|
|
385
|
-
updateErrorContext(loggerContext, _types2.ERROR_TYPE.DEFAULT, 'Unknown error', clientError);
|
|
386
|
-
_Logger.default.warn("Unknown Error", loggerContext);
|
|
387
|
-
emitterCb(clientError, finalError);
|
|
388
|
-
case 19:
|
|
389
|
-
_context2.next = 21;
|
|
390
|
-
return uploadLogs();
|
|
391
|
-
case 21:
|
|
392
|
-
return _context2.abrupt("return", finalError);
|
|
393
|
-
case 22:
|
|
394
|
-
case "end":
|
|
395
|
-
return _context2.stop();
|
|
396
|
-
}
|
|
397
|
-
}, _callee2);
|
|
398
|
-
}));
|
|
399
|
-
return _handleCallingClientErrors.apply(this, arguments);
|
|
400
|
-
}
|
|
401
|
-
function handleCallErrors(_x9, _x0, _x1, _x10, _x11, _x12, _x13) {
|
|
402
|
-
return _handleCallErrors.apply(this, arguments);
|
|
403
|
-
}
|
|
404
|
-
/**
|
|
405
|
-
*Function to return error details.
|
|
406
|
-
*
|
|
407
|
-
* @param errorCode - WebexRequestPayload // Error status code for failed cases.
|
|
408
|
-
* @param err -.
|
|
409
|
-
* @param loggerContext -.
|
|
410
|
-
* @returns Error response (status code and error message).
|
|
411
|
-
*/
|
|
412
|
-
function _handleCallErrors() {
|
|
413
|
-
_handleCallErrors = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3(emitterCb, errorLayer, retryCb, correlationId, err, caller, file) {
|
|
414
|
-
var loggerContext, callError, errorCode, errorBody, retryInterval, code, message;
|
|
415
|
-
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
416
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
417
|
-
case 0:
|
|
418
|
-
loggerContext = {
|
|
419
|
-
file: file,
|
|
420
|
-
method: caller
|
|
421
|
-
};
|
|
422
|
-
callError = (0, _CallError.createCallError)('', loggerContext, _types2.ERROR_TYPE.DEFAULT, '', errorLayer);
|
|
423
|
-
errorCode = Number(err.statusCode);
|
|
424
|
-
_Logger.default.warn("Status code: ->".concat(errorCode), loggerContext);
|
|
425
|
-
_context3.t0 = errorCode;
|
|
426
|
-
_context3.next = _context3.t0 === _types2.ERROR_CODE.UNAUTHORIZED ? 7 : _context3.t0 === _types2.ERROR_CODE.FORBIDDEN ? 11 : _context3.t0 === _types2.ERROR_CODE.SERVICE_UNAVAILABLE ? 11 : _context3.t0 === _types2.ERROR_CODE.DEVICE_NOT_FOUND ? 48 : _context3.t0 === _types2.ERROR_CODE.INTERNAL_SERVER_ERROR ? 52 : 56;
|
|
427
|
-
break;
|
|
428
|
-
case 7:
|
|
429
|
-
_Logger.default.warn("401 Unauthorized", loggerContext);
|
|
430
|
-
updateCallErrorContext(loggerContext, _types2.ERROR_TYPE.TOKEN_ERROR, 'User is unauthorized due to an expired token. Sign out, then sign back in.', correlationId, callError);
|
|
431
|
-
emitterCb(callError);
|
|
432
|
-
return _context3.abrupt("break", 57);
|
|
433
|
-
case 11:
|
|
434
|
-
errorBody = err.body;
|
|
435
|
-
if (errorBody) {
|
|
436
|
-
_context3.next = 17;
|
|
437
|
-
break;
|
|
438
|
-
}
|
|
439
|
-
_Logger.default.warn('Error response has no body, throwing default error', loggerContext);
|
|
440
|
-
updateCallErrorContext(loggerContext, err.statusCode === 403 ? _types2.ERROR_TYPE.FORBIDDEN_ERROR : _types2.ERROR_TYPE.SERVICE_UNAVAILABLE, err.statusCode === 403 ? 'An unauthorized action has been received. This action has been blocked. Please contact the administrator if this persists.' : 'An error occurred on the server while processing the request. Wait a moment and try again.', correlationId, callError);
|
|
441
|
-
emitterCb(callError);
|
|
442
|
-
return _context3.abrupt("return");
|
|
443
|
-
case 17:
|
|
444
|
-
if (!(err.headers && 'retry-after' in err.headers && retryCb)) {
|
|
445
|
-
_context3.next = 22;
|
|
446
|
-
break;
|
|
447
|
-
}
|
|
448
|
-
retryInterval = Number(err.headers['retry-after']);
|
|
449
|
-
_Logger.default.warn("Retry Interval received: ".concat(retryInterval), loggerContext);
|
|
450
|
-
retryCb(retryInterval);
|
|
451
|
-
return _context3.abrupt("return");
|
|
452
|
-
case 22:
|
|
453
|
-
/* Handling various Error codes */
|
|
454
|
-
code = Number(errorBody.errorCode);
|
|
455
|
-
_context3.t1 = code;
|
|
456
|
-
_context3.next = _context3.t1 === _types2.CALL_ERROR_CODE.INVALID_STATUS_UPDATE ? 26 : _context3.t1 === _types2.CALL_ERROR_CODE.DEVICE_NOT_REGISTERED ? 28 : _context3.t1 === _types2.CALL_ERROR_CODE.CALL_NOT_FOUND ? 30 : _context3.t1 === _types2.CALL_ERROR_CODE.ERROR_PROCESSING ? 32 : _context3.t1 === _types2.CALL_ERROR_CODE.USER_BUSY ? 34 : _context3.t1 === _types2.CALL_ERROR_CODE.PARSING_ERROR ? 36 : _context3.t1 === _types2.CALL_ERROR_CODE.NOT_ACCEPTABLE ? 38 : _context3.t1 === _types2.CALL_ERROR_CODE.CALL_REJECTED ? 40 : _context3.t1 === _types2.CALL_ERROR_CODE.NOT_AVAILABLE ? 42 : 44;
|
|
457
|
-
break;
|
|
458
|
-
case 26:
|
|
459
|
-
message = 'An invalid status update has been received for the call. Wait a moment and try again.';
|
|
460
|
-
return _context3.abrupt("break", 45);
|
|
461
|
-
case 28:
|
|
462
|
-
message = 'The client has unregistered. Please wait for the client to register before attempting the call. If error persists, sign out, sign back in and attempt the call.';
|
|
463
|
-
return _context3.abrupt("break", 45);
|
|
464
|
-
case 30:
|
|
465
|
-
message = 'Call is not found on the server. Wait a moment and try again.';
|
|
466
|
-
return _context3.abrupt("break", 45);
|
|
467
|
-
case 32:
|
|
468
|
-
message = 'An error occurred while processing the call on the server. Wait a moment and try again.';
|
|
469
|
-
return _context3.abrupt("break", 45);
|
|
470
|
-
case 34:
|
|
471
|
-
message = 'Called user is busy.';
|
|
472
|
-
return _context3.abrupt("break", 45);
|
|
473
|
-
case 36:
|
|
474
|
-
message = 'An error occurred while parsing the provided information. Wait a moment and try again.';
|
|
475
|
-
return _context3.abrupt("break", 45);
|
|
476
|
-
case 38:
|
|
477
|
-
message = 'An error occurred on the server while accepting the call. Wait a moment and try again. Please contact the administrator if this persists.';
|
|
478
|
-
return _context3.abrupt("break", 45);
|
|
479
|
-
case 40:
|
|
480
|
-
message = 'Call rejected by the server. Wait a moment and try again. Please contact the administrator if this persists.';
|
|
481
|
-
return _context3.abrupt("break", 45);
|
|
482
|
-
case 42:
|
|
483
|
-
message = 'Calling services not available. Wait a moment and try again. Please contact the administrator if this persists.';
|
|
484
|
-
return _context3.abrupt("break", 45);
|
|
485
|
-
case 44:
|
|
486
|
-
message = 'An unknown error occurred. Wait a moment and try again.';
|
|
487
|
-
case 45:
|
|
488
|
-
/* We just emit the errors to the app */
|
|
489
|
-
|
|
490
|
-
updateCallErrorContext(loggerContext, err.statusCode === 403 ? _types2.ERROR_TYPE.FORBIDDEN_ERROR : _types2.ERROR_TYPE.SERVICE_UNAVAILABLE, message, correlationId, callError);
|
|
491
|
-
emitterCb(callError);
|
|
492
|
-
return _context3.abrupt("break", 57);
|
|
493
|
-
case 48:
|
|
494
|
-
_Logger.default.warn("404 Call Not Found", loggerContext);
|
|
495
|
-
updateCallErrorContext(loggerContext, _types2.ERROR_TYPE.NOT_FOUND, 'Call is no longer active. Wait a moment and try again.', correlationId, callError);
|
|
496
|
-
emitterCb(callError);
|
|
497
|
-
return _context3.abrupt("break", 57);
|
|
498
|
-
case 52:
|
|
499
|
-
_Logger.default.warn("500 Internal Server Error", loggerContext);
|
|
500
|
-
updateCallErrorContext(loggerContext, _types2.ERROR_TYPE.SERVER_ERROR, 'An unknown error occurred in the call. Wait a moment and try again.', correlationId, callError);
|
|
501
|
-
emitterCb(callError);
|
|
502
|
-
return _context3.abrupt("break", 57);
|
|
503
|
-
case 56:
|
|
504
|
-
_Logger.default.warn("Unknown Error", loggerContext);
|
|
505
|
-
case 57:
|
|
506
|
-
case "end":
|
|
507
|
-
return _context3.stop();
|
|
508
|
-
}
|
|
509
|
-
}, _callee3);
|
|
510
|
-
}));
|
|
511
|
-
return _handleCallErrors.apply(this, arguments);
|
|
512
|
-
}
|
|
513
|
-
function serviceErrorCodeHandler(_x14, _x15) {
|
|
514
|
-
return _serviceErrorCodeHandler.apply(this, arguments);
|
|
515
|
-
}
|
|
516
|
-
/**
|
|
517
|
-
* @param stats - RTC peer connection stats.
|
|
518
|
-
* @returns CallRtpStats.
|
|
519
|
-
*/
|
|
520
|
-
function _serviceErrorCodeHandler() {
|
|
521
|
-
_serviceErrorCodeHandler = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4(err, loggerContext) {
|
|
522
|
-
var errorCode, failureMessage, errorDetails, _errorDetails, _errorDetails2, _errorDetails3, _errorDetails4, _errorDetails5, _errorDetails6, _errorDetails7, _errorDetails8;
|
|
523
|
-
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
524
|
-
while (1) switch (_context4.prev = _context4.next) {
|
|
525
|
-
case 0:
|
|
526
|
-
errorCode = Number(err.statusCode);
|
|
527
|
-
failureMessage = 'FAILURE';
|
|
528
|
-
_context4.t0 = errorCode;
|
|
529
|
-
_context4.next = _context4.t0 === _types2.ERROR_CODE.BAD_REQUEST ? 5 : _context4.t0 === _types2.ERROR_CODE.UNAUTHORIZED ? 8 : _context4.t0 === _types2.ERROR_CODE.FORBIDDEN ? 11 : _context4.t0 === _types2.ERROR_CODE.DEVICE_NOT_FOUND ? 14 : _context4.t0 === _types2.ERROR_CODE.REQUEST_TIMEOUT ? 17 : _context4.t0 === _types2.ERROR_CODE.NOT_IMPLEMENTED ? 20 : _context4.t0 === _types2.ERROR_CODE.INTERNAL_SERVER_ERROR ? 23 : _context4.t0 === _types2.ERROR_CODE.SERVICE_UNAVAILABLE ? 26 : 29;
|
|
530
|
-
break;
|
|
531
|
-
case 5:
|
|
532
|
-
_Logger.default.warn("400 Bad request", loggerContext);
|
|
533
|
-
errorDetails = {
|
|
534
|
-
statusCode: 400,
|
|
535
|
-
data: {
|
|
536
|
-
error: '400 Bad request'
|
|
537
|
-
},
|
|
538
|
-
message: failureMessage
|
|
539
|
-
};
|
|
540
|
-
return _context4.abrupt("return", errorDetails);
|
|
541
|
-
case 8:
|
|
542
|
-
_Logger.default.warn("401 User is unauthorised, possible token expiry", loggerContext);
|
|
543
|
-
_errorDetails = {
|
|
544
|
-
statusCode: 401,
|
|
545
|
-
data: {
|
|
546
|
-
error: 'User is unauthorised, possible token expiry'
|
|
547
|
-
},
|
|
548
|
-
message: failureMessage
|
|
549
|
-
};
|
|
550
|
-
return _context4.abrupt("return", _errorDetails);
|
|
551
|
-
case 11:
|
|
552
|
-
_Logger.default.warn("403 User request is forbidden", loggerContext);
|
|
553
|
-
_errorDetails2 = {
|
|
554
|
-
statusCode: 403,
|
|
555
|
-
data: {
|
|
556
|
-
error: 'User request is forbidden'
|
|
557
|
-
},
|
|
558
|
-
message: failureMessage
|
|
559
|
-
};
|
|
560
|
-
return _context4.abrupt("return", _errorDetails2);
|
|
561
|
-
case 14:
|
|
562
|
-
_Logger.default.warn("404 User info not found", loggerContext);
|
|
563
|
-
_errorDetails3 = {
|
|
564
|
-
statusCode: 404,
|
|
565
|
-
data: {
|
|
566
|
-
error: 'User info not found'
|
|
567
|
-
},
|
|
568
|
-
message: failureMessage
|
|
569
|
-
};
|
|
570
|
-
return _context4.abrupt("return", _errorDetails3);
|
|
571
|
-
case 17:
|
|
572
|
-
_Logger.default.warn("408 Request to the server timedout", loggerContext);
|
|
573
|
-
_errorDetails4 = {
|
|
574
|
-
statusCode: 408,
|
|
575
|
-
data: {
|
|
576
|
-
error: 'Request to the server timedout'
|
|
577
|
-
},
|
|
578
|
-
message: failureMessage
|
|
579
|
-
};
|
|
580
|
-
return _context4.abrupt("return", _errorDetails4);
|
|
581
|
-
case 20:
|
|
582
|
-
_Logger.default.warn("501 Not Implemented error occurred", loggerContext);
|
|
583
|
-
_errorDetails5 = {
|
|
584
|
-
statusCode: 501,
|
|
585
|
-
data: {
|
|
586
|
-
error: 'Method is not implemented at the backend'
|
|
587
|
-
},
|
|
588
|
-
message: failureMessage
|
|
589
|
-
};
|
|
590
|
-
return _context4.abrupt("return", _errorDetails5);
|
|
591
|
-
case 23:
|
|
592
|
-
_Logger.default.warn("500 Internal server error occurred", loggerContext);
|
|
593
|
-
_errorDetails6 = {
|
|
594
|
-
statusCode: 500,
|
|
595
|
-
data: {
|
|
596
|
-
error: 'Internal server error occurred'
|
|
597
|
-
},
|
|
598
|
-
message: failureMessage
|
|
599
|
-
};
|
|
600
|
-
return _context4.abrupt("return", _errorDetails6);
|
|
601
|
-
case 26:
|
|
602
|
-
_Logger.default.warn("503 Unable to establish a connection with the server", loggerContext);
|
|
603
|
-
_errorDetails7 = {
|
|
604
|
-
statusCode: 503,
|
|
605
|
-
data: {
|
|
606
|
-
error: 'Unable to establish a connection with the server'
|
|
607
|
-
},
|
|
608
|
-
message: failureMessage
|
|
609
|
-
};
|
|
610
|
-
return _context4.abrupt("return", _errorDetails7);
|
|
611
|
-
case 29:
|
|
612
|
-
_Logger.default.warn("".concat(errorCode || 422, " Exception has occurred"), loggerContext);
|
|
613
|
-
_errorDetails8 = {
|
|
614
|
-
statusCode: errorCode || 422,
|
|
615
|
-
data: {
|
|
616
|
-
error: "".concat(errorCode || 422, " Exception has occurred")
|
|
617
|
-
},
|
|
618
|
-
message: failureMessage
|
|
619
|
-
};
|
|
620
|
-
return _context4.abrupt("return", _errorDetails8);
|
|
621
|
-
case 32:
|
|
622
|
-
case "end":
|
|
623
|
-
return _context4.stop();
|
|
624
|
-
}
|
|
625
|
-
}, _callee4);
|
|
626
|
-
}));
|
|
627
|
-
return _serviceErrorCodeHandler.apply(this, arguments);
|
|
628
|
-
}
|
|
629
|
-
function parseMediaQualityStatistics(stats) {
|
|
630
|
-
if (!stats || navigator.userAgent.indexOf('Firefox') !== -1) {
|
|
631
|
-
_Logger.default.info('RTCStatsReport is null, adding dummy stats', {
|
|
632
|
-
file: _constants.UTILS_FILE,
|
|
633
|
-
method: 'parseMediaQualityStatistics'
|
|
634
|
-
});
|
|
635
|
-
return _constants.DUMMY_METRICS;
|
|
636
|
-
}
|
|
637
|
-
try {
|
|
638
|
-
var type;
|
|
639
|
-
var id;
|
|
640
|
-
var inboundCodec;
|
|
641
|
-
var outboundCodec;
|
|
642
|
-
var localCandidates = {};
|
|
643
|
-
var candidatePairs = {};
|
|
644
|
-
var codecList = {};
|
|
645
|
-
var rxStat = {};
|
|
646
|
-
var txStat = {};
|
|
647
|
-
var vqPayload = {};
|
|
648
|
-
var jitterBufferDelay = 0;
|
|
649
|
-
var jitterBufferEmittedCount = 0;
|
|
650
|
-
var totalRoundTripTime = 0;
|
|
651
|
-
var roundTripTimeMeasurements = 0;
|
|
652
|
-
var selectedPair = '';
|
|
653
|
-
var bitRate = 0;
|
|
654
|
-
|
|
655
|
-
/* Set defaults */
|
|
656
|
-
vqPayload.maxJitter = 0;
|
|
657
|
-
vqPayload.VoPktSizeMs = 20;
|
|
658
|
-
|
|
659
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
660
|
-
stats.forEach(function (report) {
|
|
661
|
-
(0, _keys.default)(report).forEach(function (statName) {
|
|
662
|
-
if (statName !== _constants.TIMESTAMP) {
|
|
663
|
-
if (!type || statName === _constants.TYPE) {
|
|
664
|
-
type = report[statName];
|
|
665
|
-
} else if (!id || statName === _constants.MEDIA_ID) {
|
|
666
|
-
id = report[statName];
|
|
667
|
-
} else if (id && id.indexOf(_constants.RTC_ICE_CANDIDATE_PAIR) !== -1) {
|
|
668
|
-
if (statName === _constants.LOCAL_CANDIDATE_ID) {
|
|
669
|
-
candidatePairs[id] = report[statName];
|
|
670
|
-
}
|
|
671
|
-
} else if (id && id.indexOf(_constants.RTC_ICE_CANDIDATE) !== -1) {
|
|
672
|
-
if (statName === _constants.NETWORK_TYPE) {
|
|
673
|
-
localCandidates[id] = report[statName];
|
|
674
|
-
}
|
|
675
|
-
} else if (id && (id.indexOf(_constants.INBOUND_CODEC_MATCH) !== -1 || id.indexOf(_constants.OUTBOUND_CODEC_MATCH) !== -1 || id.indexOf(_constants.RTC_CODEC) !== -1)) {
|
|
676
|
-
if (statName === _constants.MIME_TYPE) {
|
|
677
|
-
codecList[id] = report[statName];
|
|
678
|
-
}
|
|
679
|
-
} else if (type && type === _constants.REMOTE_INBOUND_RTP) {
|
|
680
|
-
switch (statName) {
|
|
681
|
-
case _constants.TOTAL_ROUND_TRIP_TIME:
|
|
682
|
-
{
|
|
683
|
-
totalRoundTripTime = report[statName];
|
|
684
|
-
break;
|
|
685
|
-
}
|
|
686
|
-
case _constants.ROUND_TRIP_TIME_MEASUREMENTS:
|
|
687
|
-
{
|
|
688
|
-
roundTripTimeMeasurements = report[statName];
|
|
689
|
-
break;
|
|
690
|
-
}
|
|
691
|
-
default:
|
|
692
|
-
{
|
|
693
|
-
// We don't care about the other stats
|
|
694
|
-
}
|
|
695
|
-
}
|
|
696
|
-
} else if (type && type === _constants.INBOUND_RTP) {
|
|
697
|
-
switch (statName) {
|
|
698
|
-
case _constants.CODEC_ID:
|
|
699
|
-
{
|
|
700
|
-
inboundCodec = report[statName];
|
|
701
|
-
break;
|
|
702
|
-
}
|
|
703
|
-
case _constants.PACKETS_RECEIVED:
|
|
704
|
-
{
|
|
705
|
-
rxStat.Pkt = report[statName];
|
|
706
|
-
break;
|
|
707
|
-
}
|
|
708
|
-
case _constants.BYTES_RECEIVED:
|
|
709
|
-
{
|
|
710
|
-
rxStat.Oct = report[statName];
|
|
711
|
-
break;
|
|
712
|
-
}
|
|
713
|
-
case _constants.PACKETS_DISCARDED:
|
|
714
|
-
{
|
|
715
|
-
rxStat.LatePkt = report[statName];
|
|
716
|
-
break;
|
|
717
|
-
}
|
|
718
|
-
case _constants.PACKETS_LOST:
|
|
719
|
-
{
|
|
720
|
-
rxStat.LostPkt = report[statName];
|
|
721
|
-
break;
|
|
722
|
-
}
|
|
723
|
-
case _constants.JITTER_BUFFER_DELAY:
|
|
724
|
-
{
|
|
725
|
-
jitterBufferDelay = report[statName];
|
|
726
|
-
break;
|
|
727
|
-
}
|
|
728
|
-
case _constants.JITTER_BUFFER_EMITTED_COUNT:
|
|
729
|
-
{
|
|
730
|
-
jitterBufferEmittedCount = report[statName];
|
|
731
|
-
break;
|
|
732
|
-
}
|
|
733
|
-
default:
|
|
734
|
-
{
|
|
735
|
-
// We don't care about the other stats
|
|
736
|
-
}
|
|
737
|
-
}
|
|
738
|
-
} else if (type && type === _constants.TRANSPORT) {
|
|
739
|
-
switch (statName) {
|
|
740
|
-
case _constants.SELECTED_CANDIDATE_PAIR_ID:
|
|
741
|
-
{
|
|
742
|
-
selectedPair = report[statName];
|
|
743
|
-
break;
|
|
744
|
-
}
|
|
745
|
-
default:
|
|
746
|
-
{
|
|
747
|
-
// We don't care about the other stats
|
|
748
|
-
}
|
|
749
|
-
}
|
|
750
|
-
} else if (type && type === _constants.OUTBOUND_RTP) {
|
|
751
|
-
switch (statName) {
|
|
752
|
-
case _constants.CODEC_ID:
|
|
753
|
-
{
|
|
754
|
-
outboundCodec = report[statName];
|
|
755
|
-
break;
|
|
756
|
-
}
|
|
757
|
-
case _constants.PACKETS_SENT:
|
|
758
|
-
{
|
|
759
|
-
txStat.Pkt = report[statName];
|
|
760
|
-
break;
|
|
761
|
-
}
|
|
762
|
-
case _constants.BYTES_SENT:
|
|
763
|
-
{
|
|
764
|
-
txStat.Oct = report[statName];
|
|
765
|
-
break;
|
|
766
|
-
}
|
|
767
|
-
case _constants.TARGET_BIT_RATE:
|
|
768
|
-
{
|
|
769
|
-
bitRate = report[statName];
|
|
770
|
-
break;
|
|
771
|
-
}
|
|
772
|
-
default:
|
|
773
|
-
{
|
|
774
|
-
// We don't care about the other stats
|
|
775
|
-
}
|
|
776
|
-
}
|
|
777
|
-
} else if (type && type === _constants.MEDIA_SOURCE) {
|
|
778
|
-
switch (statName) {
|
|
779
|
-
case _constants.TOTAL_SAMPLES_DURATION:
|
|
780
|
-
{
|
|
781
|
-
rxStat.Dur = report[statName];
|
|
782
|
-
txStat.Dur = report[statName];
|
|
783
|
-
break;
|
|
784
|
-
}
|
|
785
|
-
default:
|
|
786
|
-
{
|
|
787
|
-
// We don't care about the other stats
|
|
788
|
-
}
|
|
789
|
-
}
|
|
790
|
-
}
|
|
791
|
-
}
|
|
792
|
-
});
|
|
793
|
-
});
|
|
794
|
-
|
|
795
|
-
/* One way Delay */
|
|
796
|
-
if (roundTripTimeMeasurements !== 0) {
|
|
797
|
-
vqPayload.VoOneWayDelayMs = totalRoundTripTime / (2 * roundTripTimeMeasurements);
|
|
798
|
-
} else {
|
|
799
|
-
vqPayload.VoOneWayDelayMs = 0;
|
|
800
|
-
}
|
|
801
|
-
/* Application type */
|
|
802
|
-
vqPayload.hwType = "".concat(platform.os, "/").concat(platform.name, "-").concat(platform.version);
|
|
803
|
-
|
|
804
|
-
/* Network type */
|
|
805
|
-
vqPayload.networkType = localCandidates[candidatePairs[selectedPair]];
|
|
806
|
-
|
|
807
|
-
/* Average Jitter */
|
|
808
|
-
rxStat.AvgJit = jitterBufferDelay / jitterBufferEmittedCount;
|
|
809
|
-
|
|
810
|
-
/* Update codec */
|
|
811
|
-
// eslint-disable-next-line prefer-destructuring
|
|
812
|
-
vqPayload.VoRxCodec = codecList[inboundCodec].split('/')[1];
|
|
813
|
-
var txVqPayload = {};
|
|
814
|
-
|
|
815
|
-
// eslint-disable-next-line prefer-destructuring
|
|
816
|
-
txVqPayload.VoTxCodec = codecList[outboundCodec].split('/')[1];
|
|
817
|
-
txVqPayload.rtpBitRate = bitRate;
|
|
818
|
-
var byeStats = {};
|
|
819
|
-
rxStat.VQMetrics = vqPayload;
|
|
820
|
-
txStat.VQMetrics = txVqPayload;
|
|
821
|
-
byeStats[_constants.RTP_RX_STAT] = rxStat;
|
|
822
|
-
byeStats[_constants.RTP_TX_STAT] = txStat;
|
|
823
|
-
_Logger.default.log((0, _stringify.default)(byeStats), {
|
|
824
|
-
file: _constants.UTILS_FILE,
|
|
825
|
-
method: 'parseMediaQualityStatistics'
|
|
826
|
-
});
|
|
827
|
-
return byeStats;
|
|
828
|
-
} catch (err) {
|
|
829
|
-
_Logger.default.warn("Caught error while parsing RTP stats, ".concat(err), {
|
|
830
|
-
file: _constants.UTILS_FILE,
|
|
831
|
-
method: 'parseMediaQualityStatistics'
|
|
832
|
-
});
|
|
833
|
-
return _constants.DUMMY_METRICS;
|
|
834
|
-
}
|
|
835
|
-
}
|
|
836
|
-
|
|
837
|
-
/**
|
|
838
|
-
* To simulate delays.
|
|
839
|
-
*
|
|
840
|
-
* @param msec - Amount of delay.
|
|
841
|
-
* @returns - Promise.
|
|
842
|
-
*/
|
|
843
|
-
var waitForMsecs = exports.waitForMsecs = function waitForMsecs(msec) {
|
|
844
|
-
return new _promise.default(function (resolve) {
|
|
845
|
-
setTimeout(resolve, msec);
|
|
846
|
-
});
|
|
847
|
-
};
|
|
848
|
-
|
|
849
|
-
/**
|
|
850
|
-
* Register calling backend.
|
|
851
|
-
*
|
|
852
|
-
* @param webex -.
|
|
853
|
-
* @returns CallingBackEnd.
|
|
854
|
-
*/
|
|
855
|
-
function getCallingBackEnd(webex) {
|
|
856
|
-
var entModels = webex.internal.device.features.entitlement.models;
|
|
857
|
-
var callingBackend;
|
|
858
|
-
if (webex.internal.device.callingBehavior === _constants2.NATIVE_WEBEX_TEAMS_CALLING) {
|
|
859
|
-
for (var i = 0; i < entModels.length; i += 1) {
|
|
860
|
-
if (entModels[i][_constants2.VALUES][_constants2.KEY] === _constants2.ENTITLEMENT_BASIC || entModels[i][_constants2.VALUES][_constants2.KEY] === _constants2.ENTITLEMENT_STANDARD) {
|
|
861
|
-
callingBackend = _types3.CALLING_BACKEND.WXC;
|
|
862
|
-
break;
|
|
863
|
-
} else if (entModels[i][_constants2.VALUES][_constants2.KEY] === _constants2.ENTITLEMENT_BROADWORKS_CONN) {
|
|
864
|
-
callingBackend = _types3.CALLING_BACKEND.BWRKS;
|
|
865
|
-
break;
|
|
866
|
-
}
|
|
867
|
-
}
|
|
868
|
-
} else if (webex.internal.device.callingBehavior === _constants2.NATIVE_SIP_CALL_TO_UCM) {
|
|
869
|
-
callingBackend = _types3.CALLING_BACKEND.UCM;
|
|
870
|
-
} else {
|
|
871
|
-
callingBackend = _types3.CALLING_BACKEND.INVALID;
|
|
872
|
-
}
|
|
873
|
-
return callingBackend;
|
|
874
|
-
}
|
|
875
|
-
|
|
876
|
-
/**
|
|
877
|
-
* Register XSI endpoint based on calling backend.
|
|
878
|
-
*
|
|
879
|
-
* @param webex -.
|
|
880
|
-
* @param loggerContext -.
|
|
881
|
-
* @param callingBackend -.
|
|
882
|
-
* @returns Promise.
|
|
883
|
-
*/
|
|
884
|
-
function getXsiActionEndpoint(_x16, _x17, _x18) {
|
|
885
|
-
return _getXsiActionEndpoint.apply(this, arguments);
|
|
886
|
-
}
|
|
887
|
-
/**
|
|
888
|
-
* Get sorted VoicemailList based on sort order passed.
|
|
889
|
-
*
|
|
890
|
-
* @param webex - Webex object to get service urls.
|
|
891
|
-
* @param callingBackend - CallingBackend will have info like UCM.
|
|
892
|
-
* @returns VGEndpointUrl.
|
|
893
|
-
*/
|
|
894
|
-
function _getXsiActionEndpoint() {
|
|
895
|
-
_getXsiActionEndpoint = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5(webex, loggerContext, callingBackend) {
|
|
896
|
-
var _userIdResponse$heade, userIdResponse, response, xsiEndpoint, _bwTokenResponse$head, bwTokenResponse, _response, _xsiEndpoint, xsiUrl, errorInfo;
|
|
897
|
-
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
898
|
-
while (1) switch (_context5.prev = _context5.next) {
|
|
899
|
-
case 0:
|
|
900
|
-
_context5.prev = 0;
|
|
901
|
-
_context5.t0 = callingBackend;
|
|
902
|
-
_context5.next = _context5.t0 === _types3.CALLING_BACKEND.WXC ? 4 : _context5.t0 === _types3.CALLING_BACKEND.BWRKS ? 11 : 20;
|
|
903
|
-
break;
|
|
904
|
-
case 4:
|
|
905
|
-
_context5.next = 6;
|
|
906
|
-
return webex.request({
|
|
907
|
-
uri: "".concat(webex.internal.services._serviceUrls.hydra, "/").concat(_constants2.XSI_ACTION_ENDPOINT_ORG_URL_PARAM),
|
|
908
|
-
method: _types3.HTTP_METHODS.GET
|
|
909
|
-
});
|
|
910
|
-
case 6:
|
|
911
|
-
userIdResponse = _context5.sent;
|
|
912
|
-
_Logger.default.log("Response code: ".concat(userIdResponse.statusCode, ", Response trackingid: ").concat(userIdResponse === null || userIdResponse === void 0 ? void 0 : (_userIdResponse$heade = userIdResponse.headers) === null || _userIdResponse$heade === void 0 ? void 0 : _userIdResponse$heade.trackingid), {
|
|
913
|
-
file: _constants.UTILS_FILE,
|
|
914
|
-
method: 'getXsiActionEndpoint'
|
|
915
|
-
});
|
|
916
|
-
response = userIdResponse.body;
|
|
917
|
-
xsiEndpoint = response[_constants2.ITEMS][0][_constants2.XSI_ACTION_ENDPOINT];
|
|
918
|
-
return _context5.abrupt("return", xsiEndpoint);
|
|
919
|
-
case 11:
|
|
920
|
-
_context5.next = 13;
|
|
921
|
-
return webex.request({
|
|
922
|
-
uri: "".concat(webex.internal.services._serviceUrls.wdm, "/").concat(_constants2.DEVICES),
|
|
923
|
-
method: _types3.HTTP_METHODS.GET
|
|
924
|
-
});
|
|
925
|
-
case 13:
|
|
926
|
-
bwTokenResponse = _context5.sent;
|
|
927
|
-
_Logger.default.log("Response code: ".concat(bwTokenResponse.statusCode, ", Response trackingid: ").concat(bwTokenResponse === null || bwTokenResponse === void 0 ? void 0 : (_bwTokenResponse$head = bwTokenResponse.headers) === null || _bwTokenResponse$head === void 0 ? void 0 : _bwTokenResponse$head.trackingid), {
|
|
928
|
-
file: _constants.UTILS_FILE,
|
|
929
|
-
method: 'getXsiActionEndpoint'
|
|
930
|
-
});
|
|
931
|
-
_response = bwTokenResponse.body;
|
|
932
|
-
_xsiEndpoint = _response[_constants2.DEVICES][0][_constants2.SETTINGS][_constants2.BW_XSI_URL];
|
|
933
|
-
xsiUrl = _response[_constants2.DEVICES][0][_constants2.SETTINGS][_constants2.BW_XSI_URL]; // Check if it ends with specific version and slice accordingly
|
|
934
|
-
if (xsiUrl.endsWith(_constants2.BW_XSI_ENDPOINT_VERSION)) {
|
|
935
|
-
_xsiEndpoint = xsiUrl.slice(0, -5); // Remove 'v2.0'
|
|
936
|
-
} else if (xsiUrl.endsWith(_constants2.BW_XSI_ENDPOINT_VERSION_WITH_SLASH)) {
|
|
937
|
-
_xsiEndpoint = xsiUrl.slice(0, -6); // Remove 'v2.0/'
|
|
938
|
-
}
|
|
939
|
-
return _context5.abrupt("return", _xsiEndpoint);
|
|
940
|
-
case 20:
|
|
941
|
-
throw new Error('Calling backend is not identified, exiting....');
|
|
942
|
-
case 21:
|
|
943
|
-
_context5.next = 28;
|
|
944
|
-
break;
|
|
945
|
-
case 23:
|
|
946
|
-
_context5.prev = 23;
|
|
947
|
-
_context5.t1 = _context5["catch"](0);
|
|
948
|
-
errorInfo = _context5.t1;
|
|
949
|
-
serviceErrorCodeHandler(errorInfo, loggerContext);
|
|
950
|
-
return _context5.abrupt("return", errorInfo);
|
|
951
|
-
case 28:
|
|
952
|
-
case "end":
|
|
953
|
-
return _context5.stop();
|
|
954
|
-
}
|
|
955
|
-
}, _callee5, null, [[0, 23]]);
|
|
956
|
-
}));
|
|
957
|
-
return _getXsiActionEndpoint.apply(this, arguments);
|
|
958
|
-
}
|
|
959
|
-
function getVgActionEndpoint(webex, callingBackend) {
|
|
960
|
-
try {
|
|
961
|
-
if (callingBackend && callingBackend === _types3.CALLING_BACKEND.UCM) {
|
|
962
|
-
return webex.internal.services._serviceUrls['ucmgmt-gateway'];
|
|
963
|
-
}
|
|
964
|
-
throw new Error('Calling backend is not identified, exiting....');
|
|
965
|
-
} catch (err) {
|
|
966
|
-
var errorInfo = err;
|
|
967
|
-
return errorInfo;
|
|
968
|
-
}
|
|
969
|
-
}
|
|
970
|
-
|
|
971
|
-
/**
|
|
972
|
-
* Get sorted VoiceMailList based on sort order passed.
|
|
973
|
-
*
|
|
974
|
-
* @param voiceMessageList - List of voicemessage.
|
|
975
|
-
* @param sortOrder - Type of sort either ascending or descending.
|
|
976
|
-
* @returns Sorted voicemessageList .
|
|
977
|
-
*/
|
|
978
|
-
function getSortedVoicemailList(voiceMessageList, sortOrder) {
|
|
979
|
-
/* istanbul ignore else */
|
|
980
|
-
if (sortOrder === _types3.SORT.DESC) {
|
|
981
|
-
voiceMessageList.sort(function (voiceMail, nextVoiceMail) {
|
|
982
|
-
return nextVoiceMail[_constants2.TIME][_constants2.PLACEHOLDER_KEY] - voiceMail[_constants2.TIME][_constants2.PLACEHOLDER_KEY];
|
|
983
|
-
});
|
|
984
|
-
} else if (sortOrder === _types3.SORT.ASC) {
|
|
985
|
-
voiceMessageList.sort(function (voiceMail, nextVoiceMail) {
|
|
986
|
-
return voiceMail[_constants2.TIME][_constants2.PLACEHOLDER_KEY] - nextVoiceMail[_constants2.TIME][_constants2.PLACEHOLDER_KEY];
|
|
987
|
-
});
|
|
988
|
-
}
|
|
989
|
-
return voiceMessageList;
|
|
990
|
-
}
|
|
991
|
-
|
|
992
|
-
/**
|
|
993
|
-
* Handler to perform a SCIM Query.
|
|
994
|
-
*
|
|
995
|
-
* @param filter - A filter for the query.
|
|
996
|
-
* @returns - Promise.
|
|
997
|
-
*/
|
|
998
|
-
function scimQuery(_x19) {
|
|
999
|
-
return _scimQuery.apply(this, arguments);
|
|
1000
|
-
}
|
|
1001
|
-
/**
|
|
1002
|
-
* Resolve Caller Id display information using SCIM query.
|
|
1003
|
-
*
|
|
1004
|
-
* @param filter - CI userId.
|
|
1005
|
-
*/
|
|
1006
|
-
function _scimQuery() {
|
|
1007
|
-
_scimQuery = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6(filter) {
|
|
1008
|
-
var _response$headers;
|
|
1009
|
-
var sdkConnector, webex, isProd, webexHost, scimUrl, query, response;
|
|
1010
|
-
return _regenerator.default.wrap(function _callee6$(_context6) {
|
|
1011
|
-
while (1) switch (_context6.prev = _context6.next) {
|
|
1012
|
-
case 0:
|
|
1013
|
-
_Logger.default.info("Starting resolution for filter:- ".concat(filter), {
|
|
1014
|
-
file: _constants.UTILS_FILE,
|
|
1015
|
-
method: 'scimQuery'
|
|
1016
|
-
});
|
|
1017
|
-
sdkConnector = _SDKConnector.default;
|
|
1018
|
-
webex = sdkConnector.getWebex();
|
|
1019
|
-
isProd = !webex.internal.device.url.includes('-int');
|
|
1020
|
-
webexHost = isProd ? _constants2.WEBEX_API_PROD : _constants2.WEBEX_API_BTS;
|
|
1021
|
-
scimUrl = "".concat(webexHost, "/").concat(_constants2.IDENTITY_ENDPOINT_RESOURCE, "/").concat(_constants2.SCIM_ENDPOINT_RESOURCE, "/").concat(webex.internal.device.orgId, "/").concat(_constants2.SCIM_USER_FILTER);
|
|
1022
|
-
query = scimUrl + encodeURIComponent(filter);
|
|
1023
|
-
_context6.next = 9;
|
|
1024
|
-
return webex.request({
|
|
1025
|
-
uri: query,
|
|
1026
|
-
method: _types3.HTTP_METHODS.GET,
|
|
1027
|
-
headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants.CISCO_DEVICE_URL, webex.internal.device.url), _constants.SPARK_USER_AGENT, _constants.CALLING_USER_AGENT)
|
|
1028
|
-
});
|
|
1029
|
-
case 9:
|
|
1030
|
-
response = _context6.sent;
|
|
1031
|
-
_Logger.default.log("Response code: ".concat(response.statusCode, ", Response trackingid: ").concat(response === null || response === void 0 ? void 0 : (_response$headers = response.headers) === null || _response$headers === void 0 ? void 0 : _response$headers.trackingid), {
|
|
1032
|
-
file: _constants.UTILS_FILE,
|
|
1033
|
-
method: 'scimQuery'
|
|
1034
|
-
});
|
|
1035
|
-
return _context6.abrupt("return", response);
|
|
1036
|
-
case 12:
|
|
1037
|
-
case "end":
|
|
1038
|
-
return _context6.stop();
|
|
1039
|
-
}
|
|
1040
|
-
}, _callee6);
|
|
1041
|
-
}));
|
|
1042
|
-
return _scimQuery.apply(this, arguments);
|
|
1043
|
-
}
|
|
1044
|
-
function resolveCallerIdDisplay(_x20) {
|
|
1045
|
-
return _resolveCallerIdDisplay.apply(this, arguments);
|
|
1046
|
-
}
|
|
1047
|
-
/**
|
|
1048
|
-
* Resolve contact info from display name, using people search API.
|
|
1049
|
-
*
|
|
1050
|
-
* @param name - Display name.
|
|
1051
|
-
*/
|
|
1052
|
-
function _resolveCallerIdDisplay() {
|
|
1053
|
-
_resolveCallerIdDisplay = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7(filter) {
|
|
1054
|
-
var _resolution;
|
|
1055
|
-
var resolution, displayResult, response, res, _scimResource$phoneNu, _scimResource$phoneNu2, _scimResource$photos, scimResource, numberObj, photo;
|
|
1056
|
-
return _regenerator.default.wrap(function _callee7$(_context7) {
|
|
1057
|
-
while (1) switch (_context7.prev = _context7.next) {
|
|
1058
|
-
case 0:
|
|
1059
|
-
displayResult = {};
|
|
1060
|
-
_context7.prev = 1;
|
|
1061
|
-
_context7.next = 4;
|
|
1062
|
-
return scimQuery(filter);
|
|
1063
|
-
case 4:
|
|
1064
|
-
response = _context7.sent;
|
|
1065
|
-
resolution = response.body;
|
|
1066
|
-
_Logger.default.info("Number of records found for this user :- ".concat(resolution.totalResults), {
|
|
1067
|
-
file: _constants.UTILS_FILE,
|
|
1068
|
-
method: 'resolveCallerIdDisplay'
|
|
1069
|
-
});
|
|
1070
|
-
_context7.next = 13;
|
|
1071
|
-
break;
|
|
1072
|
-
case 9:
|
|
1073
|
-
_context7.prev = 9;
|
|
1074
|
-
_context7.t0 = _context7["catch"](1);
|
|
1075
|
-
res = _context7.t0;
|
|
1076
|
-
_Logger.default.warn("Error response: - ".concat(res.statusCode), {
|
|
1077
|
-
file: _constants.UTILS_FILE,
|
|
1078
|
-
method: 'resolveCallerIdDisplay'
|
|
1079
|
-
});
|
|
1080
|
-
case 13:
|
|
1081
|
-
if ((_resolution = resolution) !== null && _resolution !== void 0 && _resolution.totalResults && resolution.totalResults > 0) {
|
|
1082
|
-
/* Every user has single resource from what we have discussed. May need to revisit this later
|
|
1083
|
-
* for shared-line use-cases.
|
|
1084
|
-
*/
|
|
1085
|
-
scimResource = resolution.Resources[0];
|
|
1086
|
-
displayResult.name = scimResource.displayName;
|
|
1087
|
-
|
|
1088
|
-
/* Pick only the primary number OR 2nd preference Work */
|
|
1089
|
-
numberObj = ((_scimResource$phoneNu = scimResource.phoneNumbers) === null || _scimResource$phoneNu === void 0 ? void 0 : _scimResource$phoneNu.find(function (num) {
|
|
1090
|
-
return num.primary;
|
|
1091
|
-
})) || ((_scimResource$phoneNu2 = scimResource.phoneNumbers) === null || _scimResource$phoneNu2 === void 0 ? void 0 : _scimResource$phoneNu2.find(function (num) {
|
|
1092
|
-
return num.type.toLowerCase() === 'work';
|
|
1093
|
-
}));
|
|
1094
|
-
if (numberObj) {
|
|
1095
|
-
displayResult.num = numberObj.value;
|
|
1096
|
-
} else if (scimResource.phoneNumbers && scimResource.phoneNumbers.length > 0) {
|
|
1097
|
-
/* When no primary number exists OR PA-ID/From failed to populate, we take the first number */
|
|
1098
|
-
_Logger.default.info('Failure to resolve caller information. Setting number as caller ID', {
|
|
1099
|
-
file: _constants.UTILS_FILE,
|
|
1100
|
-
method: 'resolveCallerIdDisplay'
|
|
1101
|
-
});
|
|
1102
|
-
displayResult.num = scimResource.phoneNumbers[0].value;
|
|
1103
|
-
}
|
|
1104
|
-
|
|
1105
|
-
/* For Webapp, we are only picking thumbnail photo */
|
|
1106
|
-
photo = (_scimResource$photos = scimResource.photos) === null || _scimResource$photos === void 0 ? void 0 : _scimResource$photos.find(function (photo) {
|
|
1107
|
-
return photo.type === 'thumbnail';
|
|
1108
|
-
});
|
|
1109
|
-
displayResult.avatarSrc = photo ? photo.value : 'unknown';
|
|
1110
|
-
displayResult.id = scimResource.id;
|
|
1111
|
-
}
|
|
1112
|
-
return _context7.abrupt("return", displayResult);
|
|
1113
|
-
case 15:
|
|
1114
|
-
case "end":
|
|
1115
|
-
return _context7.stop();
|
|
1116
|
-
}
|
|
1117
|
-
}, _callee7, null, [[1, 9]]);
|
|
1118
|
-
}));
|
|
1119
|
-
return _resolveCallerIdDisplay.apply(this, arguments);
|
|
1120
|
-
}
|
|
1121
|
-
function resolveCallerIdByName(_x21) {
|
|
1122
|
-
return _resolveCallerIdByName.apply(this, arguments);
|
|
1123
|
-
}
|
|
1124
|
-
/**
|
|
1125
|
-
* Resolve the contact information.
|
|
1126
|
-
*
|
|
1127
|
-
* @param callingPartyInfo - Calling Party Info.
|
|
1128
|
-
*/
|
|
1129
|
-
function _resolveCallerIdByName() {
|
|
1130
|
-
_resolveCallerIdByName = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8(name) {
|
|
1131
|
-
var displayResult, sdkConnector, webex, searchDirectory;
|
|
1132
|
-
return _regenerator.default.wrap(function _callee8$(_context8) {
|
|
1133
|
-
while (1) switch (_context8.prev = _context8.next) {
|
|
1134
|
-
case 0:
|
|
1135
|
-
displayResult = {};
|
|
1136
|
-
sdkConnector = _SDKConnector.default;
|
|
1137
|
-
webex = sdkConnector.getWebex();
|
|
1138
|
-
/**
|
|
1139
|
-
* @param query - Display name.
|
|
1140
|
-
*/
|
|
1141
|
-
searchDirectory = function searchDirectory(query) {
|
|
1142
|
-
return webex.people.list({
|
|
1143
|
-
displayName: query
|
|
1144
|
-
});
|
|
1145
|
-
};
|
|
1146
|
-
_context8.next = 6;
|
|
1147
|
-
return searchDirectory(name).then(function (results) {
|
|
1148
|
-
_Logger.default.info("DS Result: ".concat(results), {
|
|
1149
|
-
file: _constants.UTILS_FILE,
|
|
1150
|
-
method: 'resolveCallerIdByName'
|
|
1151
|
-
});
|
|
1152
|
-
if (results && results.items && results.items.length > 0) {
|
|
1153
|
-
var resolution = results.items[0];
|
|
1154
|
-
displayResult.name = resolution.displayName;
|
|
1155
|
-
|
|
1156
|
-
/* id is like cisco spark://us/PEOPLE/b853bbd1-1136-4d25-938d-0c37541b1234
|
|
1157
|
-
* We need to extract UUID portion. */
|
|
1158
|
-
var id = Buffer.from(resolution.id, 'base64').toString('binary');
|
|
1159
|
-
displayResult.id = id.split('/').pop();
|
|
1160
|
-
var numObj = resolution.phoneNumbers.find(function (num) {
|
|
1161
|
-
return num.type === 'work';
|
|
1162
|
-
});
|
|
1163
|
-
if (numObj) {
|
|
1164
|
-
displayResult.num = numObj.value;
|
|
1165
|
-
} else if (resolution.phoneNumbers.length > 0) {
|
|
1166
|
-
displayResult.num = resolution.phoneNumbers[0].value;
|
|
1167
|
-
}
|
|
1168
|
-
displayResult.avatarSrc = resolution.avatar;
|
|
1169
|
-
_Logger.default.info("Extracted details:- name: ".concat(displayResult.name, " , number: ").concat(displayResult.num, ", photo: ").concat(displayResult.avatarSrc, ", id: ").concat(displayResult.id), {
|
|
1170
|
-
file: _constants.UTILS_FILE,
|
|
1171
|
-
method: 'resolveCallerIdByName'
|
|
1172
|
-
});
|
|
1173
|
-
}
|
|
1174
|
-
});
|
|
1175
|
-
case 6:
|
|
1176
|
-
return _context8.abrupt("return", displayResult);
|
|
1177
|
-
case 7:
|
|
1178
|
-
case "end":
|
|
1179
|
-
return _context8.stop();
|
|
1180
|
-
}
|
|
1181
|
-
}, _callee8);
|
|
1182
|
-
}));
|
|
1183
|
-
return _resolveCallerIdByName.apply(this, arguments);
|
|
1184
|
-
}
|
|
1185
|
-
function resolveContact(_x22) {
|
|
1186
|
-
return _resolveContact.apply(this, arguments);
|
|
1187
|
-
}
|
|
1188
|
-
/**
|
|
1189
|
-
* Store encrypted voicemailList in SessionStorage.
|
|
1190
|
-
*
|
|
1191
|
-
* @param context - Context for storage.
|
|
1192
|
-
* @param voiceMessageList - List of voicemessage.
|
|
1193
|
-
*/
|
|
1194
|
-
function _resolveContact() {
|
|
1195
|
-
_resolveContact = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee9(callingPartyInfo) {
|
|
1196
|
-
return _regenerator.default.wrap(function _callee9$(_context9) {
|
|
1197
|
-
while (1) switch (_context9.prev = _context9.next) {
|
|
1198
|
-
case 0:
|
|
1199
|
-
if (!(callingPartyInfo.userExternalId && callingPartyInfo.userExternalId.$)) {
|
|
1200
|
-
_context9.next = 2;
|
|
1201
|
-
break;
|
|
1202
|
-
}
|
|
1203
|
-
return _context9.abrupt("return", resolveCallerIdDisplay("id eq \"".concat(callingPartyInfo.userExternalId.$, "\"")));
|
|
1204
|
-
case 2:
|
|
1205
|
-
if (!(callingPartyInfo.name && callingPartyInfo.name.$)) {
|
|
1206
|
-
_context9.next = 4;
|
|
1207
|
-
break;
|
|
1208
|
-
}
|
|
1209
|
-
return _context9.abrupt("return", resolveCallerIdByName(callingPartyInfo.name.$));
|
|
1210
|
-
case 4:
|
|
1211
|
-
return _context9.abrupt("return", null);
|
|
1212
|
-
case 5:
|
|
1213
|
-
case "end":
|
|
1214
|
-
return _context9.stop();
|
|
1215
|
-
}
|
|
1216
|
-
}, _callee9);
|
|
1217
|
-
}));
|
|
1218
|
-
return _resolveContact.apply(this, arguments);
|
|
1219
|
-
}
|
|
1220
|
-
function storeVoicemailList(context, voiceMessageList) {
|
|
1221
|
-
var vmEncodedList = Buffer.from((0, _stringify.default)(voiceMessageList), 'utf8').toString('base64');
|
|
1222
|
-
sessionStorage.setItem(context, vmEncodedList.toString());
|
|
1223
|
-
}
|
|
1224
|
-
|
|
1225
|
-
/**
|
|
1226
|
-
* Fetch decrypted voicemailList from SessionStorage.
|
|
1227
|
-
*
|
|
1228
|
-
* @param context - Context for the storage.
|
|
1229
|
-
* @param offset - Number of voicemail records to skip.
|
|
1230
|
-
* @param offsetLimit - Number of voicemail list to fetch from the offset.
|
|
1231
|
-
* @param loggerContext - File, method name object.
|
|
1232
|
-
* @returns - Array containing voicemails and flag to indicate availability of more voicemails.
|
|
1233
|
-
*/
|
|
1234
|
-
function fetchVoicemailList(context, offset, offsetLimit, loggerContext) {
|
|
1235
|
-
var moreVoicemails = false;
|
|
1236
|
-
var requiredVoicemailList = [];
|
|
1237
|
-
try {
|
|
1238
|
-
var voicemailList = JSON.parse(Buffer.from(sessionStorage.getItem(context), 'base64').toString('utf8'));
|
|
1239
|
-
_Logger.default.info("Length of voicemail list: ".concat(voicemailList.length), loggerContext);
|
|
1240
|
-
if (voicemailList.length > offset + offsetLimit) {
|
|
1241
|
-
moreVoicemails = true;
|
|
1242
|
-
}
|
|
1243
|
-
requiredVoicemailList = voicemailList.slice(offset, offset + offsetLimit);
|
|
1244
|
-
} catch (err) {
|
|
1245
|
-
_Logger.default.warn("Caught exception while fetching voicemail from storage. ".concat(err), loggerContext);
|
|
1246
|
-
var errorInfo = err;
|
|
1247
|
-
serviceErrorCodeHandler(errorInfo, {});
|
|
1248
|
-
}
|
|
1249
|
-
return {
|
|
1250
|
-
messages: requiredVoicemailList,
|
|
1251
|
-
moreVMAvailable: moreVoicemails
|
|
1252
|
-
};
|
|
1253
|
-
}
|
|
1254
|
-
|
|
1255
|
-
/**
|
|
1256
|
-
* Converts a uuid to a hydra id without a network dip.
|
|
1257
|
-
*
|
|
1258
|
-
* @param id - ID to be encoded to base64.
|
|
1259
|
-
* @param decodeType - DecodeType.
|
|
1260
|
-
* @returns - Encoded string value.
|
|
1261
|
-
*/
|
|
1262
|
-
function inferIdFromUuid(id, decodeType) {
|
|
1263
|
-
return Buffer.from("".concat(_constants2.INFER_ID_CONSTANT, "/").concat(decodeType, "/").concat(id), 'binary').toString('base64');
|
|
1264
|
-
}
|
|
1265
|
-
|
|
1266
|
-
/**
|
|
1267
|
-
* Validates service indicator.
|
|
1268
|
-
*
|
|
1269
|
-
* @param indicator - Must match with one of the values in ServiceIndicator enum.
|
|
1270
|
-
* @returns True if validation is successful else false.
|
|
1271
|
-
*/
|
|
1272
|
-
function isValidServiceIndicator(indicator) {
|
|
1273
|
-
return (0, _values.default)(_types3.ServiceIndicator).some(function (v) {
|
|
1274
|
-
return v === indicator;
|
|
1275
|
-
});
|
|
1276
|
-
}
|
|
1277
|
-
|
|
1278
|
-
/**
|
|
1279
|
-
* Validates domain field in input service data object.
|
|
1280
|
-
* Domain value must be in valid domain format for service
|
|
1281
|
-
* type contactcenter.
|
|
1282
|
-
* But for service type calling it's allowed to be empty or
|
|
1283
|
-
* undefined however if it's not empty/undefined for service
|
|
1284
|
-
* type calling then even that will be validated to see if it
|
|
1285
|
-
* is in valid domain format.
|
|
1286
|
-
*
|
|
1287
|
-
* @param serviceData - .
|
|
1288
|
-
* @returns True if validation is successful else false.
|
|
1289
|
-
*/
|
|
1290
|
-
function isValidServiceDomain(serviceData) {
|
|
1291
|
-
var regexp = /^[a-z0-9]+([-.]{1}[a-z0-9]+)*\.[a-z]{2,6}$/i;
|
|
1292
|
-
var domain = serviceData.domain;
|
|
1293
|
-
if (!domain) {
|
|
1294
|
-
return serviceData.indicator === _types3.ServiceIndicator.CALLING || serviceData.indicator === _types3.ServiceIndicator.GUEST_CALLING;
|
|
1295
|
-
}
|
|
1296
|
-
return regexp.test(domain);
|
|
1297
|
-
}
|
|
1298
|
-
|
|
1299
|
-
/**
|
|
1300
|
-
* Validates service data object(indicator & domain) and throws
|
|
1301
|
-
* exception with a message indicating the reason for validation
|
|
1302
|
-
* failure.
|
|
1303
|
-
*
|
|
1304
|
-
* @param serviceData - Input service data to be validated.
|
|
1305
|
-
*/
|
|
1306
|
-
function validateServiceData(serviceData) {
|
|
1307
|
-
var allowedValues = (0, _values.default)(_types3.ServiceIndicator);
|
|
1308
|
-
var formattedValues = allowedValues.join(', ').replace(/,([^,]*)$/, ' and$1');
|
|
1309
|
-
if (!isValidServiceIndicator(serviceData.indicator)) {
|
|
1310
|
-
throw new Error("Invalid service indicator, Allowed values are: ".concat(formattedValues));
|
|
1311
|
-
}
|
|
1312
|
-
if (!isValidServiceDomain(serviceData)) {
|
|
1313
|
-
throw new Error('Invalid service domain.');
|
|
1314
|
-
}
|
|
1315
|
-
}
|
|
1316
|
-
|
|
1317
|
-
/**
|
|
1318
|
-
* Modifies SDP to replace IPv6 "c=" lines with IPv4.And adds an IPv4 candidate if none exists.
|
|
1319
|
-
*
|
|
1320
|
-
* @param sdp - Session Description Protocol string.
|
|
1321
|
-
* @returns Modified SDP string.
|
|
1322
|
-
*/
|
|
1323
|
-
function modifySdpForIPv4(sdp) {
|
|
1324
|
-
try {
|
|
1325
|
-
// Normalize line endings to avoid issues
|
|
1326
|
-
sdp = sdp.replace(/\r\n|\r/g, '\n');
|
|
1327
|
-
|
|
1328
|
-
// Ensure consistent spacing without removing intentional indentation
|
|
1329
|
-
sdp = sdp.replace(/^[ \t]+/gm, '');
|
|
1330
|
-
|
|
1331
|
-
// Check if at least one IPv6 "c=" line is present
|
|
1332
|
-
var ipv6CLineMatches = sdp.match(/c=IN IP6 [\da-f:.]+/gi) || [];
|
|
1333
|
-
var hasIPv6CLine = ipv6CLineMatches.length > 0;
|
|
1334
|
-
if (hasIPv6CLine) {
|
|
1335
|
-
_Logger.default.info('Modifying SDP for IPv4 compatibility', {
|
|
1336
|
-
file: _constants.UTILS_FILE,
|
|
1337
|
-
method: 'modifySdpForIPv4'
|
|
1338
|
-
});
|
|
1339
|
-
|
|
1340
|
-
// Extract an existing IPv4 candidate's IP, if available
|
|
1341
|
-
var ipv4CandidateMatch = sdp.match(/a=candidate:\d+ \d+ \w+ \d+ ([\d.]+) \d+ typ \w+/);
|
|
1342
|
-
var ipv4Address = (ipv4CandidateMatch === null || ipv4CandidateMatch === void 0 ? void 0 : ipv4CandidateMatch[1]) || '192.1.1.1'; // Default fallback
|
|
1343
|
-
|
|
1344
|
-
// Replace all IPv6 "c=" lines with IPv4 using the extracted IP (or default)
|
|
1345
|
-
sdp = sdp.replace(/c=IN IP6 [\da-f:.]+/gi, "c=IN IP4 ".concat(ipv4Address));
|
|
1346
|
-
|
|
1347
|
-
// Ensure newline separation between candidate lines
|
|
1348
|
-
if (!ipv4CandidateMatch) {
|
|
1349
|
-
var ipv4CandidateAdded = false;
|
|
1350
|
-
sdp = sdp.replace(/(a=candidate:(\d+) (\d+) (\w+) (\d+) ([\da-f:.]+) (\d+) typ (\w+)[^\n]*)/g, function (match, full, foundation, componentId, transport, priority, connectionAddress, port, candidateType) {
|
|
1351
|
-
if (!ipv4CandidateAdded && connectionAddress.includes(':')) {
|
|
1352
|
-
// Ensure it's IPv6 and only add once
|
|
1353
|
-
ipv4CandidateAdded = true;
|
|
1354
|
-
var newFoundation = ((0, _parseInt2.default)(foundation, 10) + 1).toString();
|
|
1355
|
-
return "".concat(full, "\n") + "a=candidate:".concat(newFoundation, " ").concat(componentId, " ").concat(transport, " ").concat(priority, " ").concat(ipv4Address, " ").concat(port, " typ ").concat(candidateType, " generation 0 network-id 1 network-cost 10");
|
|
1356
|
-
}
|
|
1357
|
-
return match;
|
|
1358
|
-
});
|
|
1359
|
-
}
|
|
1360
|
-
}
|
|
1361
|
-
return sdp;
|
|
1362
|
-
} catch (error) {
|
|
1363
|
-
_Logger.default.warn("Error modifying SDP for IPv4 compatibility: ".concat(error), {
|
|
1364
|
-
file: _constants.UTILS_FILE,
|
|
1365
|
-
method: 'modifySdpForIPv4'
|
|
1366
|
-
});
|
|
1367
|
-
return sdp; // Return original SDP in case of an error
|
|
1368
|
-
}
|
|
1369
|
-
}
|
|
1370
|
-
|
|
1371
|
-
/**
|
|
1372
|
-
* Uploads logs to backend.
|
|
1373
|
-
*
|
|
1374
|
-
* @param metaData - Metadata to be uploaded.
|
|
1375
|
-
* @param throwError - Whether to throw exception on failure (default: false).
|
|
1376
|
-
* @returns Promise containing upload response if successful.
|
|
1377
|
-
*/
|
|
1378
|
-
function uploadLogs() {
|
|
1379
|
-
return _uploadLogs.apply(this, arguments);
|
|
1380
|
-
}
|
|
1381
|
-
function _uploadLogs() {
|
|
1382
|
-
_uploadLogs = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee0() {
|
|
1383
|
-
var metaData,
|
|
1384
|
-
throwError,
|
|
1385
|
-
webex,
|
|
1386
|
-
feedbackId,
|
|
1387
|
-
response,
|
|
1388
|
-
errorLog,
|
|
1389
|
-
_args0 = arguments;
|
|
1390
|
-
return _regenerator.default.wrap(function _callee0$(_context0) {
|
|
1391
|
-
while (1) switch (_context0.prev = _context0.next) {
|
|
1392
|
-
case 0:
|
|
1393
|
-
metaData = _args0.length > 0 && _args0[0] !== undefined ? _args0[0] : {};
|
|
1394
|
-
throwError = _args0.length > 1 && _args0[1] !== undefined ? _args0[1] : false;
|
|
1395
|
-
webex = _SDKConnector.default.getWebex(); // const feedbackId = crypto.randomUUID();
|
|
1396
|
-
feedbackId = (0, _uuid.v4)();
|
|
1397
|
-
_context0.prev = 4;
|
|
1398
|
-
_context0.next = 7;
|
|
1399
|
-
return webex.internal.support.submitLogs(_objectSpread(_objectSpread({}, metaData), {}, {
|
|
1400
|
-
feedbackId: feedbackId
|
|
1401
|
-
}), undefined,
|
|
1402
|
-
// we dont send logs but take from webex logger
|
|
1403
|
-
{
|
|
1404
|
-
type: 'diff'
|
|
1405
|
-
} // this is to take the diff logs from previous upload
|
|
1406
|
-
);
|
|
1407
|
-
case 7:
|
|
1408
|
-
response = _context0.sent;
|
|
1409
|
-
_Logger.default.info("Logs uploaded successfully with feedbackId: ".concat(feedbackId), {
|
|
1410
|
-
file: _constants.UTILS_FILE,
|
|
1411
|
-
method: 'uploadLogs'
|
|
1412
|
-
});
|
|
1413
|
-
(0, _Metrics.getMetricManager)().submitUploadLogsMetric(_types.METRIC_EVENT.UPLOAD_LOGS_SUCCESS, _types.UPLOAD_LOGS_ACTION, _types.METRIC_TYPE.BEHAVIORAL, response === null || response === void 0 ? void 0 : response.trackingid, feedbackId, metaData === null || metaData === void 0 ? void 0 : metaData.correlationId, undefined, metaData === null || metaData === void 0 ? void 0 : metaData.callId, metaData === null || metaData === void 0 ? void 0 : metaData.broadworksCorrelationInfo);
|
|
1414
|
-
return _context0.abrupt("return", _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
1415
|
-
trackingid: response.trackingid
|
|
1416
|
-
}, response.url ? {
|
|
1417
|
-
url: response.url
|
|
1418
|
-
} : {}), response.userId ? {
|
|
1419
|
-
userId: response.userId
|
|
1420
|
-
} : {}), response.correlationId ? {
|
|
1421
|
-
correlationId: response.correlationId
|
|
1422
|
-
} : {}), metaData !== null && metaData !== void 0 && metaData.broadworksCorrelationInfo ? {
|
|
1423
|
-
broadworksCorrelationInfo: metaData === null || metaData === void 0 ? void 0 : metaData.broadworksCorrelationInfo
|
|
1424
|
-
} : {}), {}, {
|
|
1425
|
-
feedbackId: feedbackId
|
|
1426
|
-
}));
|
|
1427
|
-
case 13:
|
|
1428
|
-
_context0.prev = 13;
|
|
1429
|
-
_context0.t0 = _context0["catch"](4);
|
|
1430
|
-
errorLog = new Error("Failed to upload Logs ".concat(_context0.t0));
|
|
1431
|
-
_Logger.default.error(errorLog, {
|
|
1432
|
-
file: _constants.UTILS_FILE,
|
|
1433
|
-
method: 'uploadLogs'
|
|
1434
|
-
});
|
|
1435
|
-
(0, _Metrics.getMetricManager)().submitUploadLogsMetric(_types.METRIC_EVENT.UPLOAD_LOGS_FAILED, _types.UPLOAD_LOGS_ACTION, _types.METRIC_TYPE.BEHAVIORAL, undefined, feedbackId, metaData === null || metaData === void 0 ? void 0 : metaData.correlationId, errorLog.message, metaData === null || metaData === void 0 ? void 0 : metaData.callId, metaData === null || metaData === void 0 ? void 0 : metaData.broadworksCorrelationInfo);
|
|
1436
|
-
if (!throwError) {
|
|
1437
|
-
_context0.next = 20;
|
|
1438
|
-
break;
|
|
1439
|
-
}
|
|
1440
|
-
throw _context0.t0;
|
|
1441
|
-
case 20:
|
|
1442
|
-
return _context0.abrupt("return", undefined);
|
|
1443
|
-
case 21:
|
|
1444
|
-
case "end":
|
|
1445
|
-
return _context0.stop();
|
|
1446
|
-
}
|
|
1447
|
-
}, _callee0, null, [[4, 13]]);
|
|
1448
|
-
}));
|
|
1449
|
-
return _uploadLogs.apply(this, arguments);
|
|
1450
|
-
}
|
|
1451
|
-
//# sourceMappingURL=Utils.js.map
|