@webex/calling 3.11.0 → 3.12.0-mobius-socket.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/dist/CallHistory/CallHistory.js +596 -0
  2. package/dist/CallHistory/CallHistory.js.map +1 -0
  3. package/dist/CallHistory/CallHistory.test.js +916 -0
  4. package/dist/CallHistory/CallHistory.test.js.map +1 -0
  5. package/dist/CallHistory/callHistoryFixtures.js +650 -0
  6. package/dist/CallHistory/callHistoryFixtures.js.map +1 -0
  7. package/dist/CallHistory/constants.js +38 -0
  8. package/dist/CallHistory/constants.js.map +1 -0
  9. package/dist/CallHistory/types.js +7 -0
  10. package/dist/CallHistory/types.js.map +1 -0
  11. package/dist/CallSettings/CallSettings.js +311 -0
  12. package/dist/CallSettings/CallSettings.js.map +1 -0
  13. package/dist/CallSettings/CallSettings.test.js +122 -0
  14. package/dist/CallSettings/CallSettings.test.js.map +1 -0
  15. package/dist/CallSettings/UcmBackendConnector.js +308 -0
  16. package/dist/CallSettings/UcmBackendConnector.js.map +1 -0
  17. package/dist/CallSettings/UcmBackendConnector.test.js +411 -0
  18. package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -0
  19. package/dist/CallSettings/WxCallBackendConnector.js +597 -0
  20. package/dist/CallSettings/WxCallBackendConnector.js.map +1 -0
  21. package/dist/CallSettings/WxCallBackendConnector.test.js +904 -0
  22. package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -0
  23. package/dist/CallSettings/constants.js +31 -0
  24. package/dist/CallSettings/constants.js.map +1 -0
  25. package/dist/CallSettings/testFixtures.js +68 -0
  26. package/dist/CallSettings/testFixtures.js.map +1 -0
  27. package/dist/CallSettings/types.js +7 -0
  28. package/dist/CallSettings/types.js.map +1 -0
  29. package/dist/CallingClient/CallingClient.js +1346 -0
  30. package/dist/CallingClient/CallingClient.js.map +1 -0
  31. package/dist/CallingClient/CallingClient.test.js +1352 -0
  32. package/dist/CallingClient/CallingClient.test.js.map +1 -0
  33. package/dist/CallingClient/callRecordFixtures.js +101 -0
  34. package/dist/CallingClient/callRecordFixtures.js.map +1 -0
  35. package/dist/CallingClient/calling/CallerId/index.js +275 -0
  36. package/dist/CallingClient/calling/CallerId/index.js.map +1 -0
  37. package/dist/CallingClient/calling/CallerId/index.test.js +275 -0
  38. package/dist/CallingClient/calling/CallerId/index.test.js.map +1 -0
  39. package/dist/CallingClient/calling/CallerId/types.js +7 -0
  40. package/dist/CallingClient/calling/CallerId/types.js.map +1 -0
  41. package/dist/CallingClient/calling/call.js +3489 -0
  42. package/dist/CallingClient/calling/call.js.map +1 -0
  43. package/dist/CallingClient/calling/call.test.js +3653 -0
  44. package/dist/CallingClient/calling/call.test.js.map +1 -0
  45. package/dist/CallingClient/calling/callManager.js +481 -0
  46. package/dist/CallingClient/calling/callManager.js.map +1 -0
  47. package/dist/CallingClient/calling/callManager.test.js +776 -0
  48. package/dist/CallingClient/calling/callManager.test.js.map +1 -0
  49. package/dist/CallingClient/calling/index.js +30 -0
  50. package/dist/CallingClient/calling/index.js.map +1 -0
  51. package/dist/CallingClient/calling/types.js +76 -0
  52. package/dist/CallingClient/calling/types.js.map +1 -0
  53. package/dist/CallingClient/callingClientFixtures.js +143 -0
  54. package/dist/CallingClient/callingClientFixtures.js.map +1 -0
  55. package/dist/CallingClient/constants.js +249 -0
  56. package/dist/CallingClient/constants.js.map +1 -0
  57. package/dist/CallingClient/line/index.js +332 -0
  58. package/dist/CallingClient/line/index.js.map +1 -0
  59. package/dist/CallingClient/line/line.test.js +342 -0
  60. package/dist/CallingClient/line/line.test.js.map +1 -0
  61. package/dist/CallingClient/line/types.js +21 -0
  62. package/dist/CallingClient/line/types.js.map +1 -0
  63. package/dist/CallingClient/registration/index.js +19 -0
  64. package/dist/CallingClient/registration/index.js.map +1 -0
  65. package/dist/CallingClient/registration/register.js +1713 -0
  66. package/dist/CallingClient/registration/register.js.map +1 -0
  67. package/dist/CallingClient/registration/register.test.js +1894 -0
  68. package/dist/CallingClient/registration/register.test.js.map +1 -0
  69. package/dist/CallingClient/registration/registerFixtures.js +36 -0
  70. package/dist/CallingClient/registration/registerFixtures.js.map +1 -0
  71. package/dist/CallingClient/registration/types.js +7 -0
  72. package/dist/CallingClient/registration/types.js.map +1 -0
  73. package/dist/CallingClient/registration/webWorker.js +132 -0
  74. package/dist/CallingClient/registration/webWorker.js.map +1 -0
  75. package/dist/CallingClient/registration/webWorker.test.js +303 -0
  76. package/dist/CallingClient/registration/webWorker.test.js.map +1 -0
  77. package/dist/CallingClient/registration/webWorkerStr.js +15 -0
  78. package/dist/CallingClient/registration/webWorkerStr.js.map +1 -0
  79. package/dist/CallingClient/types.js +7 -0
  80. package/dist/CallingClient/types.js.map +1 -0
  81. package/dist/CallingClient/utils/constants.js +46 -0
  82. package/dist/CallingClient/utils/constants.js.map +1 -0
  83. package/dist/CallingClient/utils/index.js +63 -0
  84. package/dist/CallingClient/utils/index.js.map +1 -0
  85. package/dist/CallingClient/utils/mobiusSocketMapper.js +106 -0
  86. package/dist/CallingClient/utils/mobiusSocketMapper.js.map +1 -0
  87. package/dist/CallingClient/utils/request.js +267 -0
  88. package/dist/CallingClient/utils/request.js.map +1 -0
  89. package/dist/CallingClient/utils/types.js +7 -0
  90. package/dist/CallingClient/utils/types.js.map +1 -0
  91. package/dist/CallingClient/utils/wsFeatureFlag.js +20 -0
  92. package/dist/CallingClient/utils/wsFeatureFlag.js.map +1 -0
  93. package/dist/CallingClient/windowsChromiumIceWarmupUtils.js +142 -0
  94. package/dist/CallingClient/windowsChromiumIceWarmupUtils.js.map +1 -0
  95. package/dist/Contacts/ContactsClient.js +1206 -0
  96. package/dist/Contacts/ContactsClient.js.map +1 -0
  97. package/dist/Contacts/ContactsClient.test.js +1004 -0
  98. package/dist/Contacts/ContactsClient.test.js.map +1 -0
  99. package/dist/Contacts/constants.js +40 -0
  100. package/dist/Contacts/constants.js.map +1 -0
  101. package/dist/Contacts/contactFixtures.js +430 -0
  102. package/dist/Contacts/contactFixtures.js.map +1 -0
  103. package/dist/Contacts/types.js +43 -0
  104. package/dist/Contacts/types.js.map +1 -0
  105. package/dist/Errors/catalog/CallError.js +89 -0
  106. package/dist/Errors/catalog/CallError.js.map +1 -0
  107. package/dist/Errors/catalog/CallingDeviceError.js +83 -0
  108. package/dist/Errors/catalog/CallingDeviceError.js.map +1 -0
  109. package/dist/Errors/catalog/ExtendedError.js +42 -0
  110. package/dist/Errors/catalog/ExtendedError.js.map +1 -0
  111. package/dist/Errors/catalog/LineError.js +85 -0
  112. package/dist/Errors/catalog/LineError.js.map +1 -0
  113. package/dist/Errors/index.js +28 -0
  114. package/dist/Errors/index.js.map +1 -0
  115. package/dist/Errors/types.js +59 -0
  116. package/dist/Errors/types.js.map +1 -0
  117. package/dist/Events/impl/index.js +79 -0
  118. package/dist/Events/impl/index.js.map +1 -0
  119. package/dist/Events/types.js +97 -0
  120. package/dist/Events/types.js.map +1 -0
  121. package/dist/Logger/index.js +228 -0
  122. package/dist/Logger/index.js.map +1 -0
  123. package/dist/Logger/index.test.js +87 -0
  124. package/dist/Logger/index.test.js.map +1 -0
  125. package/dist/Logger/types.js +34 -0
  126. package/dist/Logger/types.js.map +1 -0
  127. package/dist/Metrics/index.js +534 -0
  128. package/dist/Metrics/index.js.map +1 -0
  129. package/dist/Metrics/index.test.js +463 -0
  130. package/dist/Metrics/index.test.js.map +1 -0
  131. package/dist/Metrics/types.js +64 -0
  132. package/dist/Metrics/types.js.map +1 -0
  133. package/dist/SDKConnector/index.js +134 -0
  134. package/dist/SDKConnector/index.js.map +1 -0
  135. package/dist/SDKConnector/index.test.js +9 -0
  136. package/dist/SDKConnector/index.test.js.map +1 -0
  137. package/dist/SDKConnector/types.js +7 -0
  138. package/dist/SDKConnector/types.js.map +1 -0
  139. package/dist/SDKConnector/utils.js +39 -0
  140. package/dist/SDKConnector/utils.js.map +1 -0
  141. package/dist/SDKConnector/utils.test.js +9 -0
  142. package/dist/SDKConnector/utils.test.js.map +1 -0
  143. package/dist/Voicemail/BroadworksBackendConnector.js +699 -0
  144. package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -0
  145. package/dist/Voicemail/BroadworksBackendConnector.test.js +820 -0
  146. package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -0
  147. package/dist/Voicemail/UcmBackendConnector.js +628 -0
  148. package/dist/Voicemail/UcmBackendConnector.js.map +1 -0
  149. package/dist/Voicemail/UcmBackendConnector.test.js +738 -0
  150. package/dist/Voicemail/UcmBackendConnector.test.js.map +1 -0
  151. package/dist/Voicemail/Voicemail.js +472 -0
  152. package/dist/Voicemail/Voicemail.js.map +1 -0
  153. package/dist/Voicemail/Voicemail.test.js +391 -0
  154. package/dist/Voicemail/Voicemail.test.js.map +1 -0
  155. package/dist/Voicemail/WxCallBackendConnector.js +657 -0
  156. package/dist/Voicemail/WxCallBackendConnector.js.map +1 -0
  157. package/dist/Voicemail/WxCallBackendConnector.test.js +1225 -0
  158. package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -0
  159. package/dist/Voicemail/constants.js +61 -0
  160. package/dist/Voicemail/constants.js.map +1 -0
  161. package/dist/Voicemail/types.js +7 -0
  162. package/dist/Voicemail/types.js.map +1 -0
  163. package/dist/Voicemail/voicemailFixture.js +524 -0
  164. package/dist/Voicemail/voicemailFixture.js.map +1 -0
  165. package/dist/api.js +157 -0
  166. package/dist/api.js.map +1 -0
  167. package/dist/common/Utils.js +1542 -0
  168. package/dist/common/Utils.js.map +1 -0
  169. package/dist/common/Utils.test.js +1989 -0
  170. package/dist/common/Utils.test.js.map +1 -0
  171. package/dist/common/constants.js +62 -0
  172. package/dist/common/constants.js.map +1 -0
  173. package/dist/common/index.js +19 -0
  174. package/dist/common/index.js.map +1 -0
  175. package/dist/common/testUtil.js +988 -0
  176. package/dist/common/testUtil.js.map +1 -0
  177. package/dist/common/types.js +75 -0
  178. package/dist/common/types.js.map +1 -0
  179. package/dist/index.js +321 -0
  180. package/dist/index.js.map +1 -0
  181. package/dist/module/CallHistory/CallHistory.js +28 -17
  182. package/dist/module/CallingClient/CallingClient.js +157 -4
  183. package/dist/module/CallingClient/calling/call.js +12 -8
  184. package/dist/module/CallingClient/calling/callManager.js +29 -10
  185. package/dist/module/CallingClient/calling/types.js +2 -0
  186. package/dist/module/CallingClient/constants.js +8 -0
  187. package/dist/module/CallingClient/registration/register.js +46 -16
  188. package/dist/module/CallingClient/utils/constants.js +30 -0
  189. package/dist/module/CallingClient/utils/index.js +5 -0
  190. package/dist/module/CallingClient/utils/mobiusSocketMapper.js +56 -0
  191. package/dist/module/CallingClient/utils/request.js +112 -0
  192. package/dist/module/CallingClient/utils/types.js +1 -0
  193. package/dist/module/CallingClient/utils/wsFeatureFlag.js +5 -0
  194. package/dist/module/Events/types.js +0 -10
  195. package/dist/module/SDKConnector/index.js +17 -0
  196. package/dist/module/common/Utils.js +35 -4
  197. package/dist/module/common/testUtil.js +3 -0
  198. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  199. package/dist/types/CallingClient/CallingClient.d.ts +10 -1
  200. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  201. package/dist/types/CallingClient/calling/call.d.ts +1 -0
  202. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  203. package/dist/types/CallingClient/calling/callManager.d.ts +5 -4
  204. package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
  205. package/dist/types/CallingClient/calling/types.d.ts +21 -9
  206. package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
  207. package/dist/types/CallingClient/constants.d.ts +8 -0
  208. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  209. package/dist/types/CallingClient/registration/register.d.ts +3 -1
  210. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  211. package/dist/types/CallingClient/registration/types.d.ts +2 -1
  212. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  213. package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
  214. package/dist/types/CallingClient/types.d.ts +3 -1
  215. package/dist/types/CallingClient/types.d.ts.map +1 -1
  216. package/dist/types/CallingClient/utils/constants.d.ts +30 -0
  217. package/dist/types/CallingClient/utils/constants.d.ts.map +1 -0
  218. package/dist/types/CallingClient/utils/index.d.ts +6 -0
  219. package/dist/types/CallingClient/utils/index.d.ts.map +1 -0
  220. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts +4 -0
  221. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts.map +1 -0
  222. package/dist/types/CallingClient/utils/request.d.ts +20 -0
  223. package/dist/types/CallingClient/utils/request.d.ts.map +1 -0
  224. package/dist/types/CallingClient/utils/types.d.ts +23 -0
  225. package/dist/types/CallingClient/utils/types.d.ts.map +1 -0
  226. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts +4 -0
  227. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts.map +1 -0
  228. package/dist/types/Events/types.d.ts +0 -10
  229. package/dist/types/Events/types.d.ts.map +1 -1
  230. package/dist/types/SDKConnector/index.d.ts +2 -0
  231. package/dist/types/SDKConnector/index.d.ts.map +1 -1
  232. package/dist/types/SDKConnector/types.d.ts +11 -0
  233. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  234. package/dist/types/common/Utils.d.ts +4 -1
  235. package/dist/types/common/Utils.d.ts.map +1 -1
  236. package/dist/types/common/testUtil.d.ts +3 -0
  237. package/dist/types/common/testUtil.d.ts.map +1 -1
  238. package/dist/types/common/types.d.ts +5 -0
  239. package/dist/types/common/types.d.ts.map +1 -1
  240. package/package.json +8 -4
@@ -0,0 +1,3489 @@
1
+ "use strict";
2
+
3
+ var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
4
+ var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
5
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
6
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
7
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
8
+ var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
9
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
10
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
11
+ _Object$defineProperty(exports, "__esModule", {
12
+ value: true
13
+ });
14
+ exports.createCall = exports.Call = void 0;
15
+ var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
16
+ var _assign = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/assign"));
17
+ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
18
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
19
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
20
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
21
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
22
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
23
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
24
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
25
+ var _internalMediaCore = require("@webex/internal-media-core");
26
+ var _xstate = require("xstate");
27
+ var _uuid = require("uuid");
28
+ var _mediaHelpers = require("@webex/media-helpers");
29
+ var _internalPluginMetrics = require("@webex/internal-plugin-metrics");
30
+ var _types = require("../../Errors/types");
31
+ var _Utils = require("../../common/Utils");
32
+ var _types2 = require("../../common/types");
33
+ var _CallError = require("../../Errors/catalog/CallError");
34
+ var _constants = require("../constants");
35
+ var _SDKConnector = _interopRequireDefault(require("../../SDKConnector"));
36
+ var _impl = require("../../Events/impl");
37
+ var _types3 = require("../../Events/types");
38
+ var _types4 = require("./types");
39
+ var _Logger = _interopRequireDefault(require("../../Logger"));
40
+ var _CallerId = require("./CallerId");
41
+ var _types5 = require("../../Metrics/types");
42
+ var _Metrics = require("../../Metrics");
43
+ var _constants2 = require("../../common/constants");
44
+ var _request = require("../utils/request");
45
+ function ownKeys(e, r) { var t = _Object$keys(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; }
46
+ 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; }
47
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? _Reflect$construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
48
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /* eslint-disable tsdoc/syntax */ /* eslint-disable no-param-reassign */
49
+ /**
50
+ *
51
+ */
52
+ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
53
+ /**
54
+ * @ignore
55
+ */
56
+ function Call(activeUrl, webex, direction, deviceId, lineId, deleteCb, indicator, destination) {
57
+ var _this;
58
+ (0, _classCallCheck2.default)(this, Call);
59
+ _this = _callSuper(this, Call);
60
+ (0, _defineProperty2.default)(_this, "sdkConnector", void 0);
61
+ (0, _defineProperty2.default)(_this, "webex", void 0);
62
+ (0, _defineProperty2.default)(_this, "destination", void 0);
63
+ (0, _defineProperty2.default)(_this, "direction", void 0);
64
+ (0, _defineProperty2.default)(_this, "callId", void 0);
65
+ (0, _defineProperty2.default)(_this, "correlationId", void 0);
66
+ (0, _defineProperty2.default)(_this, "deviceId", void 0);
67
+ (0, _defineProperty2.default)(_this, "lineId", void 0);
68
+ (0, _defineProperty2.default)(_this, "disconnectReason", void 0);
69
+ (0, _defineProperty2.default)(_this, "callStateMachine", void 0);
70
+ (0, _defineProperty2.default)(_this, "mediaStateMachine", void 0);
71
+ (0, _defineProperty2.default)(_this, "seq", void 0);
72
+ // TODO: remove later
73
+ /* TODO: Need to change the type from any to RoapMediaConnection */
74
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
75
+ (0, _defineProperty2.default)(_this, "mediaConnection", void 0);
76
+ (0, _defineProperty2.default)(_this, "earlyMedia", void 0);
77
+ (0, _defineProperty2.default)(_this, "connected", void 0);
78
+ (0, _defineProperty2.default)(_this, "mediaInactivity", void 0);
79
+ (0, _defineProperty2.default)(_this, "callerInfo", void 0);
80
+ (0, _defineProperty2.default)(_this, "localRoapMessage", void 0);
81
+ // Use it for new offer
82
+ (0, _defineProperty2.default)(_this, "mobiusUrl", void 0);
83
+ (0, _defineProperty2.default)(_this, "remoteRoapMessage", void 0);
84
+ (0, _defineProperty2.default)(_this, "deleteCb", void 0);
85
+ (0, _defineProperty2.default)(_this, "callerId", void 0);
86
+ (0, _defineProperty2.default)(_this, "sessionTimer", void 0);
87
+ /* Used to wait for final responses for supplementary services */
88
+ (0, _defineProperty2.default)(_this, "supplementaryServicesTimer", void 0);
89
+ (0, _defineProperty2.default)(_this, "muted", void 0);
90
+ (0, _defineProperty2.default)(_this, "held", void 0);
91
+ (0, _defineProperty2.default)(_this, "metricManager", void 0);
92
+ (0, _defineProperty2.default)(_this, "broadworksCorrelationInfo", void 0);
93
+ // Used in WxCC calls
94
+ (0, _defineProperty2.default)(_this, "serviceIndicator", void 0);
95
+ (0, _defineProperty2.default)(_this, "mediaNegotiationCompleted", void 0);
96
+ (0, _defineProperty2.default)(_this, "receivedRoapOKSeq", void 0);
97
+ (0, _defineProperty2.default)(_this, "localAudioStream", void 0);
98
+ (0, _defineProperty2.default)(_this, "rtcMetrics", void 0);
99
+ (0, _defineProperty2.default)(_this, "callKeepaliveRetryCount", 0);
100
+ (0, _defineProperty2.default)(_this, "apiRequest", void 0);
101
+ (0, _defineProperty2.default)(_this, "callKeepaliveRetryCallback", function (interval) {
102
+ if (_this.callKeepaliveRetryCount === _constants.MAX_CALL_KEEPALIVE_RETRY_COUNT) {
103
+ _Logger.default.warn("Max keepalive retry attempts reached. Aborting call keepalive for callId: ".concat(_this.callId), {
104
+ file: _constants.CALL_FILE,
105
+ method: 'keepaliveRetryCallback'
106
+ });
107
+ return;
108
+ }
109
+ _this.callKeepaliveRetryCount += 1;
110
+ setTimeout(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
111
+ var _t;
112
+ return _regenerator.default.wrap(function (_context) {
113
+ while (1) switch (_context.prev = _context.next) {
114
+ case 0:
115
+ _context.prev = 0;
116
+ _context.next = 1;
117
+ return _this.postStatus();
118
+ case 1:
119
+ _this.scheduleCallKeepaliveInterval();
120
+ _context.next = 3;
121
+ break;
122
+ case 2:
123
+ _context.prev = 2;
124
+ _t = _context["catch"](0);
125
+ _context.next = 3;
126
+ return _this.handleCallKeepaliveError(_t);
127
+ case 3:
128
+ case "end":
129
+ return _context.stop();
130
+ }
131
+ }, _callee, null, [[0, 2]]);
132
+ })), interval * 1000);
133
+ });
134
+ (0, _defineProperty2.default)(_this, "handleCallKeepaliveError", /*#__PURE__*/function () {
135
+ var _ref2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2(err) {
136
+ var error, abort;
137
+ return _regenerator.default.wrap(function (_context2) {
138
+ while (1) switch (_context2.prev = _context2.next) {
139
+ case 0:
140
+ error = err;
141
+ /* We are clearing the timer here as all are error scenarios. Only scenario where
142
+ * timer reset won't be required is 503 with retry after. But that case will
143
+ * be handled automatically as Mobius will also reset timer when we post status
144
+ * in retry-after scenario.
145
+ */
146
+ /* istanbul ignore next */
147
+ if (_this.sessionTimer) {
148
+ clearInterval(_this.sessionTimer);
149
+ }
150
+ _context2.next = 1;
151
+ return (0, _Utils.handleCallErrors)(function (callError) {
152
+ _this.emit(_types3.CALL_EVENT_KEYS.CALL_ERROR, callError);
153
+ _this.submitCallErrorMetric(callError);
154
+ }, _types.ERROR_LAYER.CALL_CONTROL, _this.callKeepaliveRetryCallback, _this.getCorrelationId(), error, 'handleCallEstablished', _constants.CALL_FILE);
155
+ case 1:
156
+ abort = _context2.sent;
157
+ if (abort) {
158
+ _this.sendCallStateMachineEvt({
159
+ type: 'E_SEND_CALL_DISCONNECT'
160
+ });
161
+ _this.emit(_types3.CALL_EVENT_KEYS.DISCONNECT, _this.getCorrelationId());
162
+ _this.callKeepaliveRetryCount = 0;
163
+ }
164
+ _context2.next = 2;
165
+ return (0, _Utils.uploadLogs)({
166
+ correlationId: _this.correlationId,
167
+ callId: _this.callId,
168
+ broadworksCorrelationInfo: _this.broadworksCorrelationInfo
169
+ });
170
+ case 2:
171
+ case "end":
172
+ return _context2.stop();
173
+ }
174
+ }, _callee2);
175
+ }));
176
+ return function (_x) {
177
+ return _ref2.apply(this, arguments);
178
+ };
179
+ }());
180
+ (0, _defineProperty2.default)(_this, "scheduleCallKeepaliveInterval", function () {
181
+ var loggerContext = {
182
+ file: _constants.CALL_FILE,
183
+ method: 'scheduleCallKeepaliveInterval'
184
+ };
185
+ clearInterval(_this.sessionTimer);
186
+ _this.sessionTimer = setInterval(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3() {
187
+ var res, _t2;
188
+ return _regenerator.default.wrap(function (_context3) {
189
+ while (1) switch (_context3.prev = _context3.next) {
190
+ case 0:
191
+ _context3.prev = 0;
192
+ _context3.next = 1;
193
+ return _this.postStatus();
194
+ case 1:
195
+ res = _context3.sent;
196
+ _Logger.default.info("Session refresh successful", loggerContext);
197
+ _context3.next = 3;
198
+ break;
199
+ case 2:
200
+ _context3.prev = 2;
201
+ _t2 = _context3["catch"](0);
202
+ _context3.next = 3;
203
+ return _this.handleCallKeepaliveError(_t2);
204
+ case 3:
205
+ case "end":
206
+ return _context3.stop();
207
+ }
208
+ }, _callee3, null, [[0, 2]]);
209
+ })), _constants.DEFAULT_SESSION_TIMER);
210
+ });
211
+ /**
212
+ * Media failed, so collect a stats report from webrtc
213
+ * send a webrtc telemetry dump to the configured server using the internal media core check metrics configured callback
214
+ * @param {String} callFrom - the function calling this function, optional.
215
+ * @returns {Promise<void>}
216
+ */
217
+ (0, _defineProperty2.default)(_this, "forceSendStatsReport", /*#__PURE__*/function () {
218
+ var _ref5 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4(_ref4) {
219
+ var callFrom, loggerContext, errorInfo, errorStatus, _t3;
220
+ return _regenerator.default.wrap(function (_context4) {
221
+ while (1) switch (_context4.prev = _context4.next) {
222
+ case 0:
223
+ callFrom = _ref4.callFrom;
224
+ loggerContext = {
225
+ file: _constants.CALL_FILE,
226
+ method: _constants.METHODS.FORCE_SEND_STATS_REPORT
227
+ };
228
+ _context4.prev = 1;
229
+ _context4.next = 2;
230
+ return _this.mediaConnection.forceRtcMetricsSend();
231
+ case 2:
232
+ _Logger.default.info("Successfully uploaded available webrtc telemetry statistics", loggerContext);
233
+ _Logger.default.info("callFrom: ".concat(callFrom), loggerContext);
234
+ _context4.next = 5;
235
+ break;
236
+ case 3:
237
+ _context4.prev = 3;
238
+ _t3 = _context4["catch"](1);
239
+ errorInfo = _t3;
240
+ _context4.next = 4;
241
+ return (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
242
+ case 4:
243
+ errorStatus = _context4.sent;
244
+ _Logger.default.error("Failed to upload webrtc telemetry statistics. ".concat((0, _stringify.default)(errorStatus)), loggerContext);
245
+ _context4.next = 5;
246
+ return (0, _Utils.uploadLogs)({
247
+ correlationId: _this.correlationId,
248
+ callId: _this.callId,
249
+ broadworksCorrelationInfo: _this.broadworksCorrelationInfo
250
+ });
251
+ case 5:
252
+ case "end":
253
+ return _context4.stop();
254
+ }
255
+ }, _callee4, null, [[1, 3]]);
256
+ }));
257
+ return function (_x2) {
258
+ return _ref5.apply(this, arguments);
259
+ };
260
+ }());
261
+ /**
262
+ *
263
+ */
264
+ (0, _defineProperty2.default)(_this, "getDirection", function () {
265
+ return _this.direction;
266
+ });
267
+ /**
268
+ *
269
+ */
270
+ (0, _defineProperty2.default)(_this, "getCallId", function () {
271
+ return _this.callId;
272
+ });
273
+ /**
274
+ *
275
+ */
276
+ (0, _defineProperty2.default)(_this, "getCorrelationId", function () {
277
+ return _this.correlationId;
278
+ });
279
+ /**
280
+ * @param callId -.
281
+ */
282
+ (0, _defineProperty2.default)(_this, "setCallId", function (callId) {
283
+ _this.callId = callId;
284
+ _this.rtcMetrics.updateCallId(callId);
285
+ _Logger.default.info("Setting callId : ".concat(_this.callId, " for correlationId: ").concat(_this.correlationId), {
286
+ file: _constants.CALL_FILE,
287
+ method: _constants.METHODS.SET_CALL_ID
288
+ });
289
+ _this.callId = callId;
290
+ _this.rtcMetrics.updateCallId(callId);
291
+ });
292
+ /**
293
+ * Gets the disconnection reason.
294
+ *
295
+ * @returns Reason.
296
+ */
297
+ (0, _defineProperty2.default)(_this, "getDisconnectReason", function () {
298
+ return _this.disconnectReason;
299
+ });
300
+ /**
301
+ * .
302
+ *
303
+ * @param roapMessage
304
+ */
305
+ (0, _defineProperty2.default)(_this, "post", /*#__PURE__*/function () {
306
+ var _ref6 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5(roapMessage) {
307
+ var basePayload;
308
+ return _regenerator.default.wrap(function (_context5) {
309
+ while (1) switch (_context5.prev = _context5.next) {
310
+ case 0:
311
+ basePayload = {
312
+ device: {
313
+ deviceId: _this.deviceId,
314
+ correlationId: _this.correlationId
315
+ },
316
+ localMedia: {
317
+ roap: roapMessage,
318
+ mediaId: (0, _uuid.v4)()
319
+ }
320
+ };
321
+ return _context5.abrupt("return", _this.apiRequest.makeRequest({
322
+ uri: "".concat(_this.mobiusUrl).concat(_constants.DEVICES_ENDPOINT_RESOURCE, "/").concat(_this.deviceId, "/").concat(_constants.CALL_ENDPOINT_RESOURCE),
323
+ method: _types2.HTTP_METHODS.POST,
324
+ service: _types2.ALLOWED_SERVICES.MOBIUS,
325
+ headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants.CISCO_DEVICE_URL, _this.webex.internal.device.url), _constants.SPARK_USER_AGENT, _constants.CALLING_USER_AGENT),
326
+ body: _this.destination ? _objectSpread(_objectSpread({}, basePayload), {}, {
327
+ callee: {
328
+ type: _this.destination.type,
329
+ address: _this.destination.address
330
+ }
331
+ }) : basePayload
332
+ }));
333
+ case 1:
334
+ case "end":
335
+ return _context5.stop();
336
+ }
337
+ }, _callee5);
338
+ }));
339
+ return function (_x3) {
340
+ return _ref6.apply(this, arguments);
341
+ };
342
+ }());
343
+ (0, _defineProperty2.default)(_this, "onEffectEnabled", function () {
344
+ _this.metricManager.submitBNRMetric(_types5.METRIC_EVENT.BNR_ENABLED, _types5.METRIC_TYPE.BEHAVIORAL, _this.callId, _this.correlationId);
345
+ });
346
+ (0, _defineProperty2.default)(_this, "onEffectDisabled", function () {
347
+ _this.metricManager.submitBNRMetric(_types5.METRIC_EVENT.BNR_DISABLED, _types5.METRIC_TYPE.BEHAVIORAL, _this.callId, _this.correlationId);
348
+ });
349
+ (0, _defineProperty2.default)(_this, "updateTrack", function (audioTrack) {
350
+ _this.mediaConnection.updateLocalTracks({
351
+ audio: audioTrack
352
+ });
353
+ });
354
+ (0, _defineProperty2.default)(_this, "registerEffectListener", function (addedEffect) {
355
+ if (_this.localAudioStream) {
356
+ var effect = _this.localAudioStream.getEffectByKind(_constants.NOISE_REDUCTION_EFFECT);
357
+ if (effect === addedEffect) {
358
+ effect.on(_mediaHelpers.EffectEvent.Enabled, _this.onEffectEnabled);
359
+ effect.on(_mediaHelpers.EffectEvent.Disabled, _this.onEffectDisabled);
360
+ }
361
+ }
362
+ });
363
+ /**
364
+ *
365
+ */
366
+ (0, _defineProperty2.default)(_this, "getCallerInfo", function () {
367
+ return _this.callerInfo;
368
+ });
369
+ /**
370
+ *
371
+ */
372
+ (0, _defineProperty2.default)(_this, "end", function () {
373
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE), {
374
+ file: _constants.CALL_FILE,
375
+ method: _constants.METHODS.END
376
+ });
377
+ _this.sendCallStateMachineEvt({
378
+ type: 'E_SEND_CALL_DISCONNECT'
379
+ });
380
+ });
381
+ /**
382
+ *
383
+ */
384
+ (0, _defineProperty2.default)(_this, "doHoldResume", function () {
385
+ if (_this.held) {
386
+ _this.sendCallStateMachineEvt({
387
+ type: 'E_CALL_RESUME'
388
+ });
389
+ } else {
390
+ _this.sendCallStateMachineEvt({
391
+ type: 'E_CALL_HOLD'
392
+ });
393
+ }
394
+ });
395
+ /**
396
+ * Mutes/Unmutes the call.
397
+ *
398
+ * @param localAudioStream - The local audio stream to mute or unmute.
399
+ * @param muteType - Identifies if mute was triggered by system or user.
400
+ *
401
+ * @example
402
+ * ```javascript
403
+ * call.mute(localAudioStream, 'system_mute')
404
+ * ```
405
+ */
406
+ (0, _defineProperty2.default)(_this, "mute", function (localAudioStream, muteType) {
407
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(muteType || 'user mute'), {
408
+ file: _constants.CALL_FILE,
409
+ method: _constants.METHODS.MUTE
410
+ });
411
+ if (!localAudioStream) {
412
+ _Logger.default.warn("Did not find a local stream while muting the call ".concat(_this.getCorrelationId(), "."), {
413
+ file: _constants.CALL_FILE,
414
+ method: _constants.METHODS.MUTE
415
+ });
416
+ return;
417
+ }
418
+ if (muteType === _types4.MUTE_TYPE.SYSTEM) {
419
+ if (!localAudioStream.userMuted) {
420
+ _this.muted = localAudioStream.systemMuted;
421
+ } else {
422
+ _Logger.default.info("Call is muted by the user already - ".concat(_this.getCorrelationId(), "."), {
423
+ file: _constants.CALL_FILE,
424
+ method: _constants.METHODS.MUTE
425
+ });
426
+ }
427
+ } else if (!localAudioStream.systemMuted) {
428
+ localAudioStream.setUserMuted(!_this.muted);
429
+ _this.muted = !_this.muted;
430
+ } else {
431
+ _Logger.default.info("Call is muted on the system - ".concat(_this.getCorrelationId(), "."), {
432
+ file: _constants.CALL_FILE,
433
+ method: _constants.METHODS.MUTE
434
+ });
435
+ }
436
+ });
437
+ /**
438
+ * Change the audio stream of the call.
439
+ *
440
+ * @param newAudioStream - The new audio stream to be used in the call.
441
+ */
442
+ (0, _defineProperty2.default)(_this, "updateMedia", function (newAudioStream) {
443
+ var localAudioTrack = newAudioStream.outputStream.getAudioTracks()[0];
444
+ if (!localAudioTrack) {
445
+ _Logger.default.warn("Did not find a local track while updating media for call ".concat(_this.getCorrelationId(), ". Will not update media"), {
446
+ file: _constants.CALL_FILE,
447
+ method: _constants.METHODS.UPDATE_MEDIA
448
+ });
449
+ return;
450
+ }
451
+ try {
452
+ _this.mediaConnection.updateLocalTracks({
453
+ audio: localAudioTrack
454
+ });
455
+ _this.unregisterListeners();
456
+ _this.registerListeners(newAudioStream);
457
+ _this.localAudioStream = newAudioStream;
458
+ } catch (e) {
459
+ _Logger.default.warn("Unable to update media on call ".concat(_this.getCorrelationId(), ". Error: ").concat(e.message), {
460
+ file: _constants.CALL_FILE,
461
+ method: _constants.METHODS.UPDATE_MEDIA
462
+ });
463
+ }
464
+ });
465
+ _this.destination = destination;
466
+ _this.direction = direction;
467
+ _this.sdkConnector = _SDKConnector.default;
468
+ _this.deviceId = deviceId;
469
+ _this.serviceIndicator = indicator;
470
+ _this.lineId = lineId;
471
+
472
+ /* istanbul ignore else */
473
+ if (!_this.sdkConnector.getWebex()) {
474
+ _SDKConnector.default.setWebex(webex);
475
+ }
476
+ _this.webex = _this.sdkConnector.getWebex();
477
+ _this.metricManager = (0, _Metrics.getMetricManager)(_this.webex, _this.serviceIndicator);
478
+ _this.callId = "".concat(_constants.DEFAULT_LOCAL_CALL_ID, "_").concat((0, _uuid.v4)());
479
+ _this.correlationId = (0, _uuid.v4)();
480
+ _this.deleteCb = deleteCb;
481
+ _this.connected = false;
482
+ _this.mediaInactivity = false;
483
+ _this.held = false;
484
+ _this.earlyMedia = false;
485
+ _this.callerInfo = {};
486
+ _this.localRoapMessage = {};
487
+ _this.mobiusUrl = activeUrl;
488
+ _this.receivedRoapOKSeq = 0;
489
+ _this.mediaNegotiationCompleted = false;
490
+ _Logger.default.info("Webex Calling Url:- ".concat(_this.mobiusUrl), {
491
+ file: _constants.CALL_FILE,
492
+ method: _constants.METHODS.CONSTRUCTOR
493
+ });
494
+ _this.seq = _constants.INITIAL_SEQ_NUMBER;
495
+ _this.callerId = (0, _CallerId.createCallerId)(webex, function (callerInfo) {
496
+ _this.callerInfo = callerInfo;
497
+ var emitObj = {
498
+ correlationId: _this.correlationId,
499
+ callerId: _this.callerInfo
500
+ };
501
+ _this.emit(_types3.CALL_EVENT_KEYS.CALLER_ID, emitObj);
502
+ });
503
+ _this.remoteRoapMessage = null;
504
+ _this.disconnectReason = {
505
+ code: _types4.DisconnectCode.NORMAL,
506
+ cause: _types4.DisconnectCause.NORMAL
507
+ };
508
+ _this.rtcMetrics = new _internalPluginMetrics.RtcMetrics(_this.webex, {
509
+ callId: _this.callId
510
+ }, _this.correlationId);
511
+ _this.apiRequest = _request.APIRequest.getInstance({
512
+ webex: _this.webex
513
+ });
514
+ var callMachine = (0, _xstate.createMachine)({
515
+ schema: {
516
+ context: {},
517
+ // The events this machine handles
518
+ events: {}
519
+ },
520
+ id: 'call-state',
521
+ initial: 'S_IDLE',
522
+ context: {},
523
+ states: {
524
+ S_IDLE: {
525
+ on: {
526
+ E_RECV_CALL_SETUP: {
527
+ target: 'S_RECV_CALL_SETUP',
528
+ actions: ['incomingCallSetup']
529
+ },
530
+ E_SEND_CALL_SETUP: {
531
+ target: 'S_SEND_CALL_SETUP',
532
+ actions: ['outgoingCallSetup']
533
+ },
534
+ E_RECV_CALL_DISCONNECT: {
535
+ target: 'S_RECV_CALL_DISCONNECT',
536
+ actions: ['incomingCallDisconnect']
537
+ },
538
+ E_SEND_CALL_DISCONNECT: {
539
+ target: 'S_SEND_CALL_DISCONNECT',
540
+ actions: ['outgoingCallDisconnect']
541
+ },
542
+ E_UNKNOWN: {
543
+ target: 'S_UNKNOWN',
544
+ actions: ['unknownState']
545
+ }
546
+ }
547
+ },
548
+ /* CALL SETUP */
549
+ S_RECV_CALL_SETUP: {
550
+ after: {
551
+ 10000: {
552
+ target: 'S_CALL_CLEARED',
553
+ actions: ['triggerTimeout']
554
+ }
555
+ },
556
+ on: {
557
+ E_SEND_CALL_ALERTING: {
558
+ target: 'S_SEND_CALL_PROGRESS',
559
+ actions: ['outgoingCallAlerting']
560
+ },
561
+ E_RECV_CALL_DISCONNECT: {
562
+ target: 'S_RECV_CALL_DISCONNECT',
563
+ actions: ['incomingCallDisconnect']
564
+ },
565
+ E_SEND_CALL_DISCONNECT: {
566
+ target: 'S_SEND_CALL_DISCONNECT',
567
+ actions: ['outgoingCallDisconnect']
568
+ },
569
+ E_UNKNOWN: {
570
+ target: 'S_UNKNOWN',
571
+ actions: ['unknownState']
572
+ }
573
+ }
574
+ },
575
+ S_SEND_CALL_SETUP: {
576
+ after: {
577
+ 10000: {
578
+ target: 'S_CALL_CLEARED',
579
+ actions: ['triggerTimeout']
580
+ }
581
+ },
582
+ on: {
583
+ E_RECV_CALL_PROGRESS: {
584
+ target: 'S_RECV_CALL_PROGRESS',
585
+ actions: ['incomingCallProgress']
586
+ },
587
+ E_RECV_CALL_CONNECT: {
588
+ target: 'S_RECV_CALL_CONNECT',
589
+ actions: ['incomingCallConnect']
590
+ },
591
+ E_RECV_CALL_DISCONNECT: {
592
+ target: 'S_RECV_CALL_DISCONNECT',
593
+ actions: ['incomingCallDisconnect']
594
+ },
595
+ E_SEND_CALL_DISCONNECT: {
596
+ target: 'S_SEND_CALL_DISCONNECT',
597
+ actions: ['outgoingCallDisconnect']
598
+ },
599
+ E_UNKNOWN: {
600
+ target: 'S_UNKNOWN',
601
+ actions: ['unknownState']
602
+ }
603
+ }
604
+ },
605
+ /* CALL_PROGRESS */
606
+ S_RECV_CALL_PROGRESS: {
607
+ after: {
608
+ 60000: {
609
+ target: 'S_CALL_CLEARED',
610
+ actions: ['triggerTimeout']
611
+ }
612
+ },
613
+ on: {
614
+ E_RECV_CALL_CONNECT: {
615
+ target: 'S_RECV_CALL_CONNECT',
616
+ actions: ['incomingCallConnect']
617
+ },
618
+ E_RECV_CALL_DISCONNECT: {
619
+ target: 'S_RECV_CALL_DISCONNECT',
620
+ actions: ['incomingCallDisconnect']
621
+ },
622
+ E_SEND_CALL_DISCONNECT: {
623
+ target: 'S_SEND_CALL_DISCONNECT',
624
+ actions: ['outgoingCallDisconnect']
625
+ },
626
+ // Possible to have multiple E_RECV_CALL_PROGRESS events, handler should handle it
627
+ E_RECV_CALL_PROGRESS: {
628
+ target: 'S_RECV_CALL_PROGRESS',
629
+ actions: ['incomingCallProgress']
630
+ },
631
+ E_UNKNOWN: {
632
+ target: 'S_UNKNOWN',
633
+ actions: ['unknownState']
634
+ }
635
+ }
636
+ },
637
+ S_SEND_CALL_PROGRESS: {
638
+ after: {
639
+ 60000: {
640
+ target: 'S_CALL_CLEARED',
641
+ actions: ['triggerTimeout']
642
+ }
643
+ },
644
+ on: {
645
+ E_SEND_CALL_CONNECT: {
646
+ target: 'S_SEND_CALL_CONNECT',
647
+ actions: ['outgoingCallConnect']
648
+ },
649
+ E_RECV_CALL_DISCONNECT: {
650
+ target: 'S_RECV_CALL_DISCONNECT',
651
+ actions: ['incomingCallDisconnect']
652
+ },
653
+ E_SEND_CALL_DISCONNECT: {
654
+ target: 'S_SEND_CALL_DISCONNECT',
655
+ actions: ['outgoingCallDisconnect']
656
+ },
657
+ E_UNKNOWN: {
658
+ target: 'S_UNKNOWN',
659
+ actions: ['unknownState']
660
+ }
661
+ }
662
+ },
663
+ /* CALL_CONNECT */
664
+ S_RECV_CALL_CONNECT: {
665
+ after: {
666
+ 10000: {
667
+ target: 'S_CALL_CLEARED',
668
+ actions: ['triggerTimeout']
669
+ }
670
+ },
671
+ on: {
672
+ E_CALL_ESTABLISHED: {
673
+ target: 'S_CALL_ESTABLISHED',
674
+ actions: ['callEstablished']
675
+ },
676
+ E_RECV_CALL_DISCONNECT: {
677
+ target: 'S_RECV_CALL_DISCONNECT',
678
+ actions: ['incomingCallDisconnect']
679
+ },
680
+ E_SEND_CALL_DISCONNECT: {
681
+ target: 'S_SEND_CALL_DISCONNECT',
682
+ actions: ['outgoingCallDisconnect']
683
+ },
684
+ E_UNKNOWN: {
685
+ target: 'S_UNKNOWN',
686
+ actions: ['unknownState']
687
+ }
688
+ }
689
+ },
690
+ S_SEND_CALL_CONNECT: {
691
+ after: {
692
+ 10000: {
693
+ target: 'S_CALL_CLEARED',
694
+ actions: ['triggerTimeout']
695
+ }
696
+ },
697
+ on: {
698
+ E_CALL_ESTABLISHED: {
699
+ target: 'S_CALL_ESTABLISHED',
700
+ actions: ['callEstablished']
701
+ },
702
+ E_RECV_CALL_DISCONNECT: {
703
+ target: 'S_RECV_CALL_DISCONNECT',
704
+ actions: ['incomingCallDisconnect']
705
+ },
706
+ E_SEND_CALL_DISCONNECT: {
707
+ target: 'S_SEND_CALL_DISCONNECT',
708
+ actions: ['outgoingCallDisconnect']
709
+ },
710
+ E_UNKNOWN: {
711
+ target: 'S_UNKNOWN',
712
+ actions: ['unknownState']
713
+ }
714
+ }
715
+ },
716
+ S_CALL_HOLD: {
717
+ on: {
718
+ E_RECV_CALL_DISCONNECT: {
719
+ target: 'S_RECV_CALL_DISCONNECT',
720
+ actions: ['incomingCallDisconnect']
721
+ },
722
+ E_SEND_CALL_DISCONNECT: {
723
+ target: 'S_SEND_CALL_DISCONNECT',
724
+ actions: ['outgoingCallDisconnect']
725
+ },
726
+ E_CALL_ESTABLISHED: {
727
+ target: 'S_CALL_ESTABLISHED',
728
+ actions: ['callEstablished']
729
+ },
730
+ E_UNKNOWN: {
731
+ target: 'S_UNKNOWN',
732
+ actions: ['unknownState']
733
+ }
734
+ }
735
+ },
736
+ S_CALL_RESUME: {
737
+ on: {
738
+ E_RECV_CALL_DISCONNECT: {
739
+ target: 'S_RECV_CALL_DISCONNECT',
740
+ actions: ['incomingCallDisconnect']
741
+ },
742
+ E_SEND_CALL_DISCONNECT: {
743
+ target: 'S_SEND_CALL_DISCONNECT',
744
+ actions: ['outgoingCallDisconnect']
745
+ },
746
+ E_CALL_ESTABLISHED: {
747
+ target: 'S_CALL_ESTABLISHED',
748
+ actions: ['callEstablished']
749
+ },
750
+ E_UNKNOWN: {
751
+ target: 'S_UNKNOWN',
752
+ actions: ['unknownState']
753
+ }
754
+ }
755
+ },
756
+ /* CALL_ESTABLISHED */
757
+ S_CALL_ESTABLISHED: {
758
+ on: {
759
+ E_CALL_HOLD: {
760
+ target: 'S_CALL_HOLD',
761
+ actions: ['initiateCallHold']
762
+ },
763
+ E_CALL_RESUME: {
764
+ target: 'S_CALL_RESUME',
765
+ actions: ['initiateCallResume']
766
+ },
767
+ E_RECV_CALL_DISCONNECT: {
768
+ target: 'S_RECV_CALL_DISCONNECT',
769
+ actions: ['incomingCallDisconnect']
770
+ },
771
+ E_SEND_CALL_DISCONNECT: {
772
+ target: 'S_SEND_CALL_DISCONNECT',
773
+ actions: ['outgoingCallDisconnect']
774
+ },
775
+ E_CALL_ESTABLISHED: {
776
+ target: 'S_CALL_ESTABLISHED',
777
+ actions: ['callEstablished']
778
+ },
779
+ E_UNKNOWN: {
780
+ target: 'S_UNKNOWN',
781
+ actions: ['unknownState']
782
+ }
783
+ }
784
+ },
785
+ /* CALL_DISCONNECT */
786
+ S_RECV_CALL_DISCONNECT: {
787
+ on: {
788
+ E_CALL_CLEARED: 'S_CALL_CLEARED'
789
+ }
790
+ },
791
+ S_SEND_CALL_DISCONNECT: {
792
+ on: {
793
+ E_CALL_CLEARED: 'S_CALL_CLEARED'
794
+ }
795
+ },
796
+ /* UNKNOWN_EVENTS */
797
+ S_UNKNOWN: {
798
+ on: {
799
+ E_CALL_CLEARED: 'S_CALL_CLEARED'
800
+ }
801
+ },
802
+ /* ERROR_EVENTS */
803
+ S_ERROR: {
804
+ on: {
805
+ E_CALL_CLEARED: 'S_CALL_CLEARED'
806
+ }
807
+ },
808
+ /* End of our state-machine */
809
+ S_CALL_CLEARED: {
810
+ type: 'final'
811
+ }
812
+ }
813
+ }, {
814
+ actions: {
815
+ /**
816
+ * .
817
+ *
818
+ * @param context
819
+ * @param event
820
+ */
821
+ incomingCallSetup: function incomingCallSetup(context, event) {
822
+ return _this.handleIncomingCallSetup(event);
823
+ },
824
+ /**
825
+ * .
826
+ *
827
+ * @param context
828
+ * @param event
829
+ */
830
+ outgoingCallSetup: function outgoingCallSetup(context, event) {
831
+ return _this.handleOutgoingCallSetup(event);
832
+ },
833
+ /**
834
+ * .
835
+ *
836
+ * @param context
837
+ * @param event
838
+ */
839
+ incomingCallProgress: function incomingCallProgress(context, event) {
840
+ return _this.handleIncomingCallProgress(event);
841
+ },
842
+ /**
843
+ * .
844
+ *
845
+ * @param context
846
+ * @param event
847
+ */
848
+ outgoingCallAlerting: function outgoingCallAlerting(context, event) {
849
+ return _this.handleOutgoingCallAlerting(event);
850
+ },
851
+ /**
852
+ * .
853
+ *
854
+ * @param context
855
+ * @param event
856
+ */
857
+ incomingCallConnect: function incomingCallConnect(context, event) {
858
+ return _this.handleIncomingCallConnect(event);
859
+ },
860
+ /**
861
+ * .
862
+ *
863
+ * @param context
864
+ * @param event
865
+ */
866
+ outgoingCallConnect: function outgoingCallConnect(context, event) {
867
+ return _this.handleOutgoingCallConnect(event);
868
+ },
869
+ /**
870
+ * .
871
+ *
872
+ * @param context
873
+ * @param event
874
+ */
875
+ callEstablished: function callEstablished(context, event) {
876
+ return _this.handleCallEstablished(event);
877
+ },
878
+ /**
879
+ * .
880
+ *
881
+ * @param context
882
+ * @param event
883
+ */
884
+ initiateCallHold: function initiateCallHold(context, event) {
885
+ return _this.handleCallHold(event);
886
+ },
887
+ /**
888
+ * .
889
+ *
890
+ * @param context
891
+ * @param event
892
+ */
893
+ initiateCallResume: function initiateCallResume(context, event) {
894
+ return _this.handleCallResume(event);
895
+ },
896
+ /**
897
+ * .
898
+ *
899
+ * @param context
900
+ * @param event
901
+ */
902
+ incomingCallDisconnect: function incomingCallDisconnect(context, event) {
903
+ return _this.handleIncomingCallDisconnect(event);
904
+ },
905
+ /**
906
+ * .
907
+ *
908
+ * @param context
909
+ * @param event
910
+ */
911
+ outgoingCallDisconnect: function outgoingCallDisconnect(context, event) {
912
+ return _this.handleOutgoingCallDisconnect(event);
913
+ },
914
+ /**
915
+ * .
916
+ *
917
+ * @param context
918
+ * @param event
919
+ */
920
+ unknownState: function unknownState(context, event) {
921
+ return _this.handleUnknownState(event);
922
+ },
923
+ /**
924
+ *
925
+ */
926
+ triggerTimeout: function triggerTimeout() {
927
+ return _this.handleTimeout();
928
+ }
929
+ }
930
+ });
931
+ var mediaMachine = (0, _xstate.createMachine)({
932
+ schema: {
933
+ // The context (extended state) of the machine
934
+ context: {},
935
+ // The events this machine handles
936
+ events: {}
937
+ },
938
+ id: 'roap-state',
939
+ initial: 'S_ROAP_IDLE',
940
+ context: {},
941
+ states: {
942
+ S_ROAP_IDLE: {
943
+ on: {
944
+ E_RECV_ROAP_OFFER_REQUEST: {
945
+ target: 'S_RECV_ROAP_OFFER_REQUEST',
946
+ actions: ['incomingRoapOfferRequest']
947
+ },
948
+ E_RECV_ROAP_OFFER: {
949
+ target: 'S_RECV_ROAP_OFFER',
950
+ actions: ['incomingRoapOffer']
951
+ },
952
+ E_SEND_ROAP_OFFER: {
953
+ target: 'S_SEND_ROAP_OFFER',
954
+ actions: ['outgoingRoapOffer']
955
+ }
956
+ }
957
+ },
958
+ S_RECV_ROAP_OFFER_REQUEST: {
959
+ on: {
960
+ E_SEND_ROAP_OFFER: {
961
+ target: 'S_SEND_ROAP_OFFER',
962
+ actions: ['outgoingRoapOffer']
963
+ },
964
+ E_ROAP_OK: {
965
+ target: 'S_ROAP_OK',
966
+ actions: ['roapEstablished']
967
+ },
968
+ E_ROAP_ERROR: {
969
+ target: 'S_ROAP_ERROR',
970
+ actions: ['roapError']
971
+ }
972
+ }
973
+ },
974
+ S_RECV_ROAP_OFFER: {
975
+ on: {
976
+ E_SEND_ROAP_ANSWER: {
977
+ target: 'S_SEND_ROAP_ANSWER',
978
+ actions: ['outgoingRoapAnswer']
979
+ },
980
+ E_ROAP_OK: {
981
+ target: 'S_ROAP_OK',
982
+ actions: ['roapEstablished']
983
+ },
984
+ E_ROAP_ERROR: {
985
+ target: 'S_ROAP_ERROR',
986
+ actions: ['roapError']
987
+ }
988
+ }
989
+ },
990
+ S_SEND_ROAP_OFFER: {
991
+ on: {
992
+ E_RECV_ROAP_ANSWER: {
993
+ target: 'S_RECV_ROAP_ANSWER',
994
+ actions: ['incomingRoapAnswer']
995
+ },
996
+ E_SEND_ROAP_ANSWER: {
997
+ target: 'S_SEND_ROAP_ANSWER',
998
+ actions: ['outgoingRoapAnswer']
999
+ },
1000
+ E_SEND_ROAP_OFFER: {
1001
+ target: 'S_SEND_ROAP_OFFER',
1002
+ actions: ['outgoingRoapOffer']
1003
+ },
1004
+ E_ROAP_ERROR: {
1005
+ target: 'S_ROAP_ERROR',
1006
+ actions: ['roapError']
1007
+ }
1008
+ }
1009
+ },
1010
+ S_RECV_ROAP_ANSWER: {
1011
+ on: {
1012
+ E_ROAP_OK: {
1013
+ target: 'S_ROAP_OK',
1014
+ actions: ['roapEstablished']
1015
+ },
1016
+ E_ROAP_ERROR: {
1017
+ target: 'S_ROAP_ERROR',
1018
+ actions: ['roapError']
1019
+ }
1020
+ }
1021
+ },
1022
+ S_SEND_ROAP_ANSWER: {
1023
+ on: {
1024
+ E_RECV_ROAP_OFFER_REQUEST: {
1025
+ target: 'S_RECV_ROAP_OFFER_REQUEST',
1026
+ actions: ['incomingRoapOfferRequest']
1027
+ },
1028
+ E_RECV_ROAP_OFFER: {
1029
+ target: 'S_RECV_ROAP_OFFER',
1030
+ actions: ['incomingRoapOffer']
1031
+ },
1032
+ E_ROAP_OK: {
1033
+ target: 'S_ROAP_OK',
1034
+ actions: ['roapEstablished']
1035
+ },
1036
+ E_SEND_ROAP_ANSWER: {
1037
+ target: 'S_SEND_ROAP_ANSWER',
1038
+ actions: ['outgoingRoapAnswer']
1039
+ },
1040
+ E_ROAP_ERROR: {
1041
+ target: 'S_ROAP_ERROR',
1042
+ actions: ['roapError']
1043
+ }
1044
+ }
1045
+ },
1046
+ S_ROAP_OK: {
1047
+ on: {
1048
+ E_RECV_ROAP_OFFER_REQUEST: {
1049
+ target: 'S_RECV_ROAP_OFFER_REQUEST',
1050
+ actions: ['incomingRoapOfferRequest']
1051
+ },
1052
+ E_RECV_ROAP_OFFER: {
1053
+ target: 'S_RECV_ROAP_OFFER',
1054
+ actions: ['incomingRoapOffer']
1055
+ },
1056
+ E_ROAP_OK: {
1057
+ target: 'S_ROAP_OK',
1058
+ actions: ['roapEstablished']
1059
+ },
1060
+ E_SEND_ROAP_OFFER: {
1061
+ target: 'S_SEND_ROAP_OFFER',
1062
+ actions: ['outgoingRoapOffer']
1063
+ },
1064
+ E_ROAP_ERROR: {
1065
+ target: 'S_ROAP_ERROR',
1066
+ actions: ['roapError']
1067
+ },
1068
+ E_ROAP_TEARDOWN: {
1069
+ target: 'S_ROAP_TEARDOWN'
1070
+ }
1071
+ }
1072
+ },
1073
+ S_ROAP_ERROR: {
1074
+ on: {
1075
+ E_ROAP_TEARDOWN: {
1076
+ target: 'S_ROAP_TEARDOWN'
1077
+ },
1078
+ E_RECV_ROAP_OFFER_REQUEST: {
1079
+ target: 'S_RECV_ROAP_OFFER_REQUEST',
1080
+ actions: ['incomingRoapOfferRequest']
1081
+ },
1082
+ E_RECV_ROAP_OFFER: {
1083
+ target: 'S_RECV_ROAP_OFFER',
1084
+ actions: ['incomingRoapOffer']
1085
+ },
1086
+ E_RECV_ROAP_ANSWER: {
1087
+ target: 'S_RECV_ROAP_ANSWER',
1088
+ actions: ['incomingRoapAnswer']
1089
+ },
1090
+ E_ROAP_OK: {
1091
+ target: 'S_ROAP_OK',
1092
+ actions: ['roapEstablished']
1093
+ }
1094
+ }
1095
+ },
1096
+ S_ROAP_TEARDOWN: {
1097
+ type: 'final'
1098
+ }
1099
+ }
1100
+ }, {
1101
+ actions: {
1102
+ /**
1103
+ * .
1104
+ *
1105
+ * @param context -.
1106
+ * @param event -.
1107
+ */
1108
+ incomingRoapOffer: function incomingRoapOffer(context, event) {
1109
+ return _this.handleIncomingRoapOffer(context, event);
1110
+ },
1111
+ /**
1112
+ * .
1113
+ *
1114
+ * @param context -.
1115
+ * @param event -.
1116
+ */
1117
+ incomingRoapAnswer: function incomingRoapAnswer(context, event) {
1118
+ return _this.handleIncomingRoapAnswer(context, event);
1119
+ },
1120
+ /**
1121
+ * .
1122
+ *
1123
+ * @param context -.
1124
+ * @param event -.
1125
+ */
1126
+ incomingRoapOfferRequest: function incomingRoapOfferRequest(context, event) {
1127
+ return _this.handleIncomingRoapOfferRequest(context, event);
1128
+ },
1129
+ /**
1130
+ * .
1131
+ *
1132
+ * @param context -.
1133
+ * @param event -.
1134
+ */
1135
+ outgoingRoapOffer: function outgoingRoapOffer(context, event) {
1136
+ return _this.handleOutgoingRoapOffer(context, event);
1137
+ },
1138
+ /**
1139
+ * .
1140
+ *
1141
+ * @param context -.
1142
+ * @param event -.
1143
+ */
1144
+ outgoingRoapAnswer: function outgoingRoapAnswer(context, event) {
1145
+ return _this.handleOutgoingRoapAnswer(context, event);
1146
+ },
1147
+ /**
1148
+ * .
1149
+ *
1150
+ * @param context -.
1151
+ * @param event -.
1152
+ */
1153
+ roapEstablished: function roapEstablished(context, event) {
1154
+ return _this.handleRoapEstablished(context, event);
1155
+ },
1156
+ /**
1157
+ * .
1158
+ *
1159
+ * @param context -.
1160
+ * @param event -.
1161
+ */
1162
+ roapError: function roapError(context, event) {
1163
+ return _this.handleRoapError(context, event);
1164
+ }
1165
+ }
1166
+ });
1167
+ _this.callStateMachine = (0, _xstate.interpret)(callMachine).onTransition(function (state, event) {
1168
+ _Logger.default.log("Call StateMachine:- state=".concat(state.value, ", event=").concat((0, _stringify.default)(event.type)), {
1169
+ file: _constants.CALL_FILE,
1170
+ method: _constants.METHODS.CONSTRUCTOR
1171
+ });
1172
+ if (state.value !== 'S_UNKNOWN') {
1173
+ _this.metricManager.submitCallMetric(_types5.METRIC_EVENT.CALL, state.value.toString(), _types5.METRIC_TYPE.BEHAVIORAL, _this.callId, _this.correlationId, undefined);
1174
+ }
1175
+ }).start();
1176
+ _this.mediaStateMachine = (0, _xstate.interpret)(mediaMachine).onTransition(function (state, event) {
1177
+ _Logger.default.log("Media StateMachine:- state=".concat(state.value, ", event=").concat((0, _stringify.default)(event.type)), {
1178
+ file: _constants.CALL_FILE,
1179
+ method: _constants.METHODS.CONSTRUCTOR
1180
+ });
1181
+ if (state.value !== 'S_ROAP_ERROR') {
1182
+ var _this$remoteRoapMessa;
1183
+ _this.metricManager.submitMediaMetric(_types5.METRIC_EVENT.MEDIA, state.value.toString(), _types5.METRIC_TYPE.BEHAVIORAL, _this.callId, _this.correlationId, _this.localRoapMessage.sdp, (_this$remoteRoapMessa = _this.remoteRoapMessage) === null || _this$remoteRoapMessa === void 0 ? void 0 : _this$remoteRoapMessa.sdp, undefined);
1184
+ }
1185
+ }).start();
1186
+ _this.muted = false;
1187
+ return _this;
1188
+ }
1189
+
1190
+ /**
1191
+ * Handle incoming Call setups.
1192
+ *
1193
+ * @param event - Call Events.
1194
+ */
1195
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1196
+ (0, _inherits2.default)(Call, _Eventing);
1197
+ return (0, _createClass2.default)(Call, [{
1198
+ key: "isMuted",
1199
+ value:
1200
+ /**
1201
+ * Getter to check if the call is muted or not.
1202
+ *
1203
+ * @returns - Boolean.
1204
+ */
1205
+ function isMuted() {
1206
+ return this.muted;
1207
+ }
1208
+
1209
+ /**
1210
+ * Getter to check if the call is connected or not.
1211
+ *
1212
+ * @returns - Boolean.
1213
+ */
1214
+ }, {
1215
+ key: "isConnected",
1216
+ value: function isConnected() {
1217
+ return this.connected;
1218
+ }
1219
+
1220
+ /**
1221
+ * Getter to check if the call is held or not.
1222
+ *
1223
+ * @returns - Boolean.
1224
+ */
1225
+ }, {
1226
+ key: "isHeld",
1227
+ value: function isHeld() {
1228
+ return this.held;
1229
+ }
1230
+ }, {
1231
+ key: "handleIncomingCallSetup",
1232
+ value: function handleIncomingCallSetup(event) {
1233
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
1234
+ file: _constants.CALL_FILE,
1235
+ method: _constants.METHODS.HANDLE_INCOMING_CALL_SETUP
1236
+ });
1237
+ this.sendCallStateMachineEvt({
1238
+ type: 'E_SEND_CALL_ALERTING'
1239
+ });
1240
+ }
1241
+
1242
+ /**
1243
+ * Handle outgoing Call setups.
1244
+ * The handler sends a Post Message to the remote with ROAP body
1245
+ * as offer. We also set the callId here based on the response received.
1246
+ *
1247
+ * @param event - Call Events.
1248
+ */
1249
+ }, {
1250
+ key: "handleOutgoingCallSetup",
1251
+ value: (function () {
1252
+ var _handleOutgoingCallSetup = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6(event) {
1253
+ var _this2 = this;
1254
+ var message, response, errData, _t4;
1255
+ return _regenerator.default.wrap(function (_context6) {
1256
+ while (1) switch (_context6.prev = _context6.next) {
1257
+ case 0:
1258
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
1259
+ file: _constants.CALL_FILE,
1260
+ method: _constants.METHODS.HANDLE_OUTGOING_CALL_SETUP
1261
+ });
1262
+ message = event.data;
1263
+ _context6.prev = 1;
1264
+ _context6.next = 2;
1265
+ return this.post(message);
1266
+ case 2:
1267
+ response = _context6.sent;
1268
+ _Logger.default.info("Response: ".concat((0, _stringify.default)(response)), {
1269
+ file: _constants.CALL_FILE,
1270
+ method: _constants.METHODS.HANDLE_OUTGOING_CALL_SETUP
1271
+ });
1272
+ _Logger.default.info("Response code: ".concat(response.statusCode), {
1273
+ file: _constants.CALL_FILE,
1274
+ method: _constants.METHODS.HANDLE_OUTGOING_CALL_SETUP
1275
+ });
1276
+ this.setCallId(response.body.callId);
1277
+ _Logger.default.log("Call setup successful for callId: ".concat(response.body.callId), {
1278
+ file: _constants.CALL_FILE,
1279
+ method: this.handleOutgoingCallSetup.name
1280
+ });
1281
+ _context6.next = 4;
1282
+ break;
1283
+ case 3:
1284
+ _context6.prev = 3;
1285
+ _t4 = _context6["catch"](1);
1286
+ _Logger.default.error("Failed to setup the call: ".concat((0, _stringify.default)(_t4)), {
1287
+ file: _constants.CALL_FILE,
1288
+ method: _constants.METHODS.HANDLE_OUTGOING_CALL_SETUP
1289
+ });
1290
+ errData = _t4;
1291
+ (0, _Utils.handleCallErrors)(function (error) {
1292
+ _this2.emit(_types3.CALL_EVENT_KEYS.CALL_ERROR, error);
1293
+ _this2.submitCallErrorMetric(error);
1294
+ _this2.sendCallStateMachineEvt({
1295
+ type: 'E_UNKNOWN',
1296
+ data: errData
1297
+ });
1298
+ }, _types.ERROR_LAYER.CALL_CONTROL,
1299
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1300
+ /* istanbul ignore next */
1301
+ function (interval) {
1302
+ return undefined;
1303
+ }, this.getCorrelationId(), errData, _constants.METHODS.HANDLE_OUTGOING_CALL_SETUP, _constants.CALL_FILE);
1304
+ _context6.next = 4;
1305
+ return (0, _Utils.uploadLogs)({
1306
+ correlationId: this.correlationId,
1307
+ callId: this.callId,
1308
+ broadworksCorrelationInfo: this.broadworksCorrelationInfo
1309
+ });
1310
+ case 4:
1311
+ case "end":
1312
+ return _context6.stop();
1313
+ }
1314
+ }, _callee6, this, [[1, 3]]);
1315
+ }));
1316
+ function handleOutgoingCallSetup(_x4) {
1317
+ return _handleOutgoingCallSetup.apply(this, arguments);
1318
+ }
1319
+ return handleOutgoingCallSetup;
1320
+ }()
1321
+ /**
1322
+ * Handle Call Hold.
1323
+ *
1324
+ * @param event - Call Events.
1325
+ */
1326
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1327
+ )
1328
+ }, {
1329
+ key: "handleCallHold",
1330
+ value: (function () {
1331
+ var _handleCallHold = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8(event) {
1332
+ var _this3 = this;
1333
+ var response, errData, _t5;
1334
+ return _regenerator.default.wrap(function (_context8) {
1335
+ while (1) switch (_context8.prev = _context8.next) {
1336
+ case 0:
1337
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
1338
+ file: _constants.CALL_FILE,
1339
+ method: _constants.METHODS.HANDLE_CALL_HOLD
1340
+ });
1341
+ _context8.prev = 1;
1342
+ _context8.next = 2;
1343
+ return this.postSSRequest(undefined, _types3.SUPPLEMENTARY_SERVICES.HOLD);
1344
+ case 2:
1345
+ response = _context8.sent;
1346
+ _Logger.default.log("Response code: ".concat(response.statusCode), {
1347
+ file: _constants.CALL_FILE,
1348
+ method: _constants.METHODS.HANDLE_CALL_HOLD
1349
+ });
1350
+
1351
+ /*
1352
+ * Avoid setting http response timeout if held event is already
1353
+ * received from Mobius and forwarded towards calling client
1354
+ */
1355
+ if (this.isHeld() === false) {
1356
+ this.supplementaryServicesTimer = setTimeout(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7() {
1357
+ var errorContext, callError;
1358
+ return _regenerator.default.wrap(function (_context7) {
1359
+ while (1) switch (_context7.prev = _context7.next) {
1360
+ case 0:
1361
+ errorContext = {
1362
+ file: _constants.CALL_FILE,
1363
+ method: _constants.METHODS.HANDLE_CALL_HOLD
1364
+ };
1365
+ _Logger.default.warn('Hold response timed out', {
1366
+ file: _constants.CALL_FILE,
1367
+ method: _constants.METHODS.HANDLE_CALL_HOLD
1368
+ });
1369
+ callError = (0, _CallError.createCallError)('An error occurred while placing the call on hold. Wait a moment and try again.', errorContext, _types.ERROR_TYPE.TIMEOUT, _this3.getCorrelationId(), _types.ERROR_LAYER.CALL_CONTROL);
1370
+ _this3.emit(_types3.CALL_EVENT_KEYS.HOLD_ERROR, callError);
1371
+ _this3.submitCallErrorMetric(callError);
1372
+ case 1:
1373
+ case "end":
1374
+ return _context7.stop();
1375
+ }
1376
+ }, _callee7);
1377
+ })), _constants.SUPPLEMENTARY_SERVICES_TIMEOUT);
1378
+ }
1379
+ _context8.next = 4;
1380
+ break;
1381
+ case 3:
1382
+ _context8.prev = 3;
1383
+ _t5 = _context8["catch"](1);
1384
+ _Logger.default.error("Failed to put the call on hold: ".concat((0, _stringify.default)(_t5)), {
1385
+ file: _constants.CALL_FILE,
1386
+ method: _constants.METHODS.HANDLE_CALL_HOLD
1387
+ });
1388
+ errData = _t5;
1389
+ (0, _Utils.handleCallErrors)(function (error) {
1390
+ _this3.emit(_types3.CALL_EVENT_KEYS.HOLD_ERROR, error);
1391
+ _this3.submitCallErrorMetric(error);
1392
+ _this3.sendCallStateMachineEvt({
1393
+ type: 'E_CALL_ESTABLISHED',
1394
+ data: errData
1395
+ });
1396
+ }, _types.ERROR_LAYER.CALL_CONTROL,
1397
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1398
+ /* istanbul ignore next */
1399
+ function (interval) {
1400
+ return undefined;
1401
+ }, this.getCorrelationId(), errData, _constants.METHODS.HANDLE_CALL_HOLD, _constants.CALL_FILE);
1402
+ _context8.next = 4;
1403
+ return (0, _Utils.uploadLogs)({
1404
+ correlationId: this.correlationId,
1405
+ callId: this.callId,
1406
+ broadworksCorrelationInfo: this.broadworksCorrelationInfo
1407
+ });
1408
+ case 4:
1409
+ case "end":
1410
+ return _context8.stop();
1411
+ }
1412
+ }, _callee8, this, [[1, 3]]);
1413
+ }));
1414
+ function handleCallHold(_x5) {
1415
+ return _handleCallHold.apply(this, arguments);
1416
+ }
1417
+ return handleCallHold;
1418
+ }()
1419
+ /**
1420
+ * Handle Call Resume.
1421
+ *
1422
+ * @param event - Call Events.
1423
+ */
1424
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1425
+ )
1426
+ }, {
1427
+ key: "handleCallResume",
1428
+ value: (function () {
1429
+ var _handleCallResume = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee0(event) {
1430
+ var _this4 = this;
1431
+ var response, errData, _t6;
1432
+ return _regenerator.default.wrap(function (_context0) {
1433
+ while (1) switch (_context0.prev = _context0.next) {
1434
+ case 0:
1435
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
1436
+ file: _constants.CALL_FILE,
1437
+ method: _constants.METHODS.HANDLE_CALL_RESUME
1438
+ });
1439
+ _context0.prev = 1;
1440
+ _context0.next = 2;
1441
+ return this.postSSRequest(undefined, _types3.SUPPLEMENTARY_SERVICES.RESUME);
1442
+ case 2:
1443
+ response = _context0.sent;
1444
+ _Logger.default.log("Response code: ".concat(response.statusCode), {
1445
+ file: _constants.CALL_FILE,
1446
+ method: _constants.METHODS.HANDLE_CALL_RESUME
1447
+ });
1448
+
1449
+ /*
1450
+ * Avoid setting http response timeout if connected event is already
1451
+ * received from Mobius on resuming the call and forwarded towards calling client
1452
+ */
1453
+ if (this.isHeld() === true) {
1454
+ this.supplementaryServicesTimer = setTimeout(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee9() {
1455
+ var errorContext, callError;
1456
+ return _regenerator.default.wrap(function (_context9) {
1457
+ while (1) switch (_context9.prev = _context9.next) {
1458
+ case 0:
1459
+ errorContext = {
1460
+ file: _constants.CALL_FILE,
1461
+ method: _constants.METHODS.HANDLE_CALL_RESUME
1462
+ };
1463
+ _Logger.default.warn('Resume response timed out', {
1464
+ file: _constants.CALL_FILE,
1465
+ method: _constants.METHODS.HANDLE_CALL_RESUME
1466
+ });
1467
+ callError = (0, _CallError.createCallError)('An error occurred while resuming the call. Wait a moment and try again.', errorContext, _types.ERROR_TYPE.TIMEOUT, _this4.getCorrelationId(), _types.ERROR_LAYER.CALL_CONTROL);
1468
+ _this4.emit(_types3.CALL_EVENT_KEYS.RESUME_ERROR, callError);
1469
+ _this4.submitCallErrorMetric(callError);
1470
+ case 1:
1471
+ case "end":
1472
+ return _context9.stop();
1473
+ }
1474
+ }, _callee9);
1475
+ })), _constants.SUPPLEMENTARY_SERVICES_TIMEOUT);
1476
+ }
1477
+ _context0.next = 4;
1478
+ break;
1479
+ case 3:
1480
+ _context0.prev = 3;
1481
+ _t6 = _context0["catch"](1);
1482
+ _Logger.default.error("Failed to resume the call: ".concat((0, _stringify.default)(_t6)), {
1483
+ file: _constants.CALL_FILE,
1484
+ method: _constants.METHODS.HANDLE_CALL_RESUME
1485
+ });
1486
+ errData = _t6;
1487
+ (0, _Utils.handleCallErrors)(function (error) {
1488
+ _this4.emit(_types3.CALL_EVENT_KEYS.RESUME_ERROR, error);
1489
+ _this4.submitCallErrorMetric(error);
1490
+ _this4.sendCallStateMachineEvt({
1491
+ type: 'E_CALL_ESTABLISHED',
1492
+ data: errData
1493
+ });
1494
+ }, _types.ERROR_LAYER.CALL_CONTROL,
1495
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1496
+ /* istanbul ignore next */
1497
+ function (interval) {
1498
+ return undefined;
1499
+ }, this.getCorrelationId(), errData, _constants.METHODS.HANDLE_CALL_RESUME, _constants.CALL_FILE);
1500
+ _context0.next = 4;
1501
+ return (0, _Utils.uploadLogs)({
1502
+ correlationId: this.correlationId,
1503
+ callId: this.callId,
1504
+ broadworksCorrelationInfo: this.broadworksCorrelationInfo
1505
+ });
1506
+ case 4:
1507
+ case "end":
1508
+ return _context0.stop();
1509
+ }
1510
+ }, _callee0, this, [[1, 3]]);
1511
+ }));
1512
+ function handleCallResume(_x6) {
1513
+ return _handleCallResume.apply(this, arguments);
1514
+ }
1515
+ return handleCallResume;
1516
+ }()
1517
+ /**
1518
+ * Handle incoming Call Progress.
1519
+ *
1520
+ * @param event - Call Events.
1521
+ */
1522
+ )
1523
+ }, {
1524
+ key: "handleIncomingCallProgress",
1525
+ value: function handleIncomingCallProgress(event) {
1526
+ var _data$callProgressDat;
1527
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
1528
+ file: _constants.CALL_FILE,
1529
+ method: _constants.METHODS.HANDLE_INCOMING_CALL_PROGRESS
1530
+ });
1531
+ var data = event.data;
1532
+ if (data !== null && data !== void 0 && (_data$callProgressDat = data.callProgressData) !== null && _data$callProgressDat !== void 0 && _data$callProgressDat.inbandMedia) {
1533
+ _Logger.default.log('Inband media present. Setting Early Media flag', {
1534
+ file: _constants.CALL_FILE,
1535
+ method: _constants.METHODS.HANDLE_INCOMING_CALL_PROGRESS
1536
+ });
1537
+ this.earlyMedia = true;
1538
+ } else {
1539
+ _Logger.default.log('Inband media not present.', {
1540
+ file: _constants.CALL_FILE,
1541
+ method: _constants.METHODS.HANDLE_INCOMING_CALL_PROGRESS
1542
+ });
1543
+ }
1544
+ if (data !== null && data !== void 0 && data.callerId) {
1545
+ _Logger.default.info('Processing Caller-Id data', {
1546
+ file: _constants.CALL_FILE,
1547
+ method: _constants.METHODS.HANDLE_INCOMING_CALL_PROGRESS
1548
+ });
1549
+ this.startCallerIdResolution(data.callerId);
1550
+ }
1551
+ this.emit(_types3.CALL_EVENT_KEYS.PROGRESS, this.correlationId);
1552
+ }
1553
+
1554
+ /**
1555
+ * Handle incoming Call Progress.
1556
+ *
1557
+ * @param context
1558
+ * @param event - Roap Events.
1559
+ */
1560
+ }, {
1561
+ key: "handleIncomingRoapOfferRequest",
1562
+ value: function handleIncomingRoapOfferRequest(context, event) {
1563
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
1564
+ file: _constants.CALL_FILE,
1565
+ method: _constants.METHODS.HANDLE_INCOMING_ROAP_OFFER_REQUEST
1566
+ });
1567
+ var message = event.data;
1568
+ if (!this.mediaConnection) {
1569
+ _Logger.default.info('Media connection is not up, buffer the remote Offer Request for later handling', {
1570
+ file: _constants.CALL_FILE,
1571
+ method: _constants.METHODS.HANDLE_INCOMING_ROAP_OFFER_REQUEST
1572
+ });
1573
+ this.seq = message.seq;
1574
+ _Logger.default.info("Setting Sequence No: ".concat(this.seq), {
1575
+ file: _constants.CALL_FILE,
1576
+ method: _constants.METHODS.HANDLE_INCOMING_ROAP_OFFER_REQUEST
1577
+ });
1578
+ this.remoteRoapMessage = message;
1579
+ } else if (this.receivedRoapOKSeq === message.seq - 2) {
1580
+ _Logger.default.info('Waiting for Roap OK, buffer the remote Offer Request for later handling', {
1581
+ file: _constants.CALL_FILE,
1582
+ method: _constants.METHODS.HANDLE_INCOMING_ROAP_OFFER_REQUEST
1583
+ });
1584
+ this.remoteRoapMessage = message;
1585
+ } else {
1586
+ message.seq = this.seq + 1;
1587
+ this.seq = message.seq;
1588
+ this.mediaConnection.roapMessageReceived(message);
1589
+ }
1590
+ }
1591
+
1592
+ /**
1593
+ * Handle Outgoing Call Progress.
1594
+ *
1595
+ * @param event - Call Events.
1596
+ */
1597
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1598
+ }, {
1599
+ key: "handleOutgoingCallAlerting",
1600
+ value: (function () {
1601
+ var _handleOutgoingCallAlerting = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee1(event) {
1602
+ var _this5 = this;
1603
+ var res, errData, _t7;
1604
+ return _regenerator.default.wrap(function (_context1) {
1605
+ while (1) switch (_context1.prev = _context1.next) {
1606
+ case 0:
1607
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
1608
+ file: _constants.CALL_FILE,
1609
+ method: _constants.METHODS.HANDLE_OUTGOING_CALL_ALERTING
1610
+ });
1611
+ _context1.prev = 1;
1612
+ _context1.next = 2;
1613
+ return this.patch(_types4.MobiusCallState.ALERTING);
1614
+ case 2:
1615
+ res = _context1.sent;
1616
+ _Logger.default.log("PATCH response: ".concat(res.statusCode), {
1617
+ file: _constants.CALL_FILE,
1618
+ method: _constants.METHODS.HANDLE_OUTGOING_CALL_ALERTING
1619
+ });
1620
+ _context1.next = 4;
1621
+ break;
1622
+ case 3:
1623
+ _context1.prev = 3;
1624
+ _t7 = _context1["catch"](1);
1625
+ _Logger.default.error("Failed to signal call progression: ".concat((0, _stringify.default)(_t7)), {
1626
+ file: _constants.CALL_FILE,
1627
+ method: _constants.METHODS.HANDLE_OUTGOING_CALL_ALERTING
1628
+ });
1629
+ errData = _t7;
1630
+ (0, _Utils.handleCallErrors)(function (error) {
1631
+ _this5.emit(_types3.CALL_EVENT_KEYS.CALL_ERROR, error);
1632
+ _this5.submitCallErrorMetric(error);
1633
+ _this5.sendCallStateMachineEvt({
1634
+ type: 'E_UNKNOWN',
1635
+ data: errData
1636
+ });
1637
+ }, _types.ERROR_LAYER.CALL_CONTROL,
1638
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1639
+ /* istanbul ignore next */
1640
+ function (interval) {
1641
+ return undefined;
1642
+ }, this.getCorrelationId(), errData, _constants.METHODS.HANDLE_OUTGOING_CALL_ALERTING, _constants.CALL_FILE);
1643
+ _context1.next = 4;
1644
+ return (0, _Utils.uploadLogs)({
1645
+ correlationId: this.correlationId,
1646
+ callId: this.callId,
1647
+ broadworksCorrelationInfo: this.broadworksCorrelationInfo
1648
+ });
1649
+ case 4:
1650
+ case "end":
1651
+ return _context1.stop();
1652
+ }
1653
+ }, _callee1, this, [[1, 3]]);
1654
+ }));
1655
+ function handleOutgoingCallAlerting(_x7) {
1656
+ return _handleOutgoingCallAlerting.apply(this, arguments);
1657
+ }
1658
+ return handleOutgoingCallAlerting;
1659
+ }()
1660
+ /**
1661
+ * Handle incoming Call Connect.
1662
+ *
1663
+ * @param event - Call Events.
1664
+ */
1665
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1666
+ )
1667
+ }, {
1668
+ key: "handleIncomingCallConnect",
1669
+ value: function handleIncomingCallConnect(event) {
1670
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
1671
+ file: _constants.CALL_FILE,
1672
+ method: _constants.METHODS.HANDLE_INCOMING_CALL_CONNECT
1673
+ });
1674
+ this.emit(_types3.CALL_EVENT_KEYS.CONNECT, this.correlationId);
1675
+
1676
+ /* In case of Early Media , media negotiations would have already started
1677
+ * So we can directly go to call established state */
1678
+
1679
+ if (this.earlyMedia || this.mediaNegotiationCompleted) {
1680
+ this.mediaNegotiationCompleted = false;
1681
+ this.sendCallStateMachineEvt({
1682
+ type: 'E_CALL_ESTABLISHED'
1683
+ });
1684
+ }
1685
+ }
1686
+
1687
+ /**
1688
+ * Handle outgoing Call Connect.
1689
+ *
1690
+ * @param event - Call Events.
1691
+ */
1692
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1693
+ }, {
1694
+ key: "handleOutgoingCallConnect",
1695
+ value: (function () {
1696
+ var _handleOutgoingCallConnect = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee10(event) {
1697
+ var _this6 = this;
1698
+ var res, errData, _t8;
1699
+ return _regenerator.default.wrap(function (_context10) {
1700
+ while (1) switch (_context10.prev = _context10.next) {
1701
+ case 0:
1702
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
1703
+ file: _constants.CALL_FILE,
1704
+ method: _constants.METHODS.HANDLE_OUTGOING_CALL_CONNECT
1705
+ });
1706
+
1707
+ /* We should have received an Offer by now */
1708
+ if (this.remoteRoapMessage) {
1709
+ _context10.next = 1;
1710
+ break;
1711
+ }
1712
+ _Logger.default.warn('Offer not yet received from remote end... Exiting', {
1713
+ file: _constants.CALL_FILE,
1714
+ method: _constants.METHODS.HANDLE_OUTGOING_CALL_CONNECT
1715
+ });
1716
+ return _context10.abrupt("return");
1717
+ case 1:
1718
+ _context10.prev = 1;
1719
+ /* Start Offer/Answer as we might have buffered the offer by now */
1720
+ this.mediaConnection.roapMessageReceived(this.remoteRoapMessage);
1721
+
1722
+ /* send call_connect PATCH */
1723
+ _context10.next = 2;
1724
+ return this.patch(_types4.MobiusCallState.CONNECTED);
1725
+ case 2:
1726
+ res = _context10.sent;
1727
+ _Logger.default.log("PATCH response: ".concat(res.statusCode), {
1728
+ file: _constants.CALL_FILE,
1729
+ method: _constants.METHODS.HANDLE_OUTGOING_CALL_CONNECT
1730
+ });
1731
+ _context10.next = 4;
1732
+ break;
1733
+ case 3:
1734
+ _context10.prev = 3;
1735
+ _t8 = _context10["catch"](1);
1736
+ _Logger.default.error("Failed to connect the call: ".concat((0, _stringify.default)(_t8)), {
1737
+ file: _constants.CALL_FILE,
1738
+ method: _constants.METHODS.HANDLE_OUTGOING_CALL_CONNECT
1739
+ });
1740
+ errData = _t8;
1741
+ (0, _Utils.handleCallErrors)(function (error) {
1742
+ _this6.emit(_types3.CALL_EVENT_KEYS.CALL_ERROR, error);
1743
+ _this6.submitCallErrorMetric(error);
1744
+ _this6.sendCallStateMachineEvt({
1745
+ type: 'E_UNKNOWN',
1746
+ data: errData
1747
+ });
1748
+ }, _types.ERROR_LAYER.CALL_CONTROL,
1749
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1750
+ /* istanbul ignore next */
1751
+ function (interval) {
1752
+ return undefined;
1753
+ }, this.getCorrelationId(), errData, _constants.METHODS.HANDLE_OUTGOING_CALL_CONNECT, _constants.CALL_FILE);
1754
+ _context10.next = 4;
1755
+ return (0, _Utils.uploadLogs)({
1756
+ correlationId: this.correlationId,
1757
+ callId: this.callId,
1758
+ broadworksCorrelationInfo: this.broadworksCorrelationInfo
1759
+ });
1760
+ case 4:
1761
+ case "end":
1762
+ return _context10.stop();
1763
+ }
1764
+ }, _callee10, this, [[1, 3]]);
1765
+ }));
1766
+ function handleOutgoingCallConnect(_x8) {
1767
+ return _handleOutgoingCallConnect.apply(this, arguments);
1768
+ }
1769
+ return handleOutgoingCallConnect;
1770
+ }()
1771
+ /**
1772
+ * Handle incoming Call Disconnect.
1773
+ *
1774
+ * @param event - Call Events.
1775
+ */
1776
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1777
+ )
1778
+ }, {
1779
+ key: "handleIncomingCallDisconnect",
1780
+ value: (function () {
1781
+ var _handleIncomingCallDisconnect = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee11(event) {
1782
+ var response, _t9;
1783
+ return _regenerator.default.wrap(function (_context11) {
1784
+ while (1) switch (_context11.prev = _context11.next) {
1785
+ case 0:
1786
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
1787
+ file: _constants.CALL_FILE,
1788
+ method: _constants.METHODS.HANDLE_INCOMING_CALL_DISCONNECT
1789
+ });
1790
+ this.emit(_types3.CALL_EVENT_KEYS.DISCONNECT, this.correlationId);
1791
+ this.setDisconnectReason();
1792
+ _context11.prev = 1;
1793
+ _context11.next = 2;
1794
+ return this.delete();
1795
+ case 2:
1796
+ response = _context11.sent;
1797
+ _Logger.default.log("Response code: ".concat(response.statusCode), {
1798
+ file: _constants.CALL_FILE,
1799
+ method: _constants.METHODS.HANDLE_INCOMING_CALL_DISCONNECT
1800
+ });
1801
+ _context11.next = 4;
1802
+ break;
1803
+ case 3:
1804
+ _context11.prev = 3;
1805
+ _t9 = _context11["catch"](1);
1806
+ _Logger.default.warn("Failed to delete the call: ".concat((0, _stringify.default)(_t9)), {
1807
+ file: _constants.CALL_FILE,
1808
+ method: _constants.METHODS.HANDLE_INCOMING_CALL_DISCONNECT
1809
+ });
1810
+ (0, _Utils.uploadLogs)({
1811
+ correlationId: this.correlationId,
1812
+ callId: this.callId,
1813
+ broadworksCorrelationInfo: this.broadworksCorrelationInfo
1814
+ });
1815
+ case 4:
1816
+ this.deleteCb(this.correlationId);
1817
+
1818
+ /* Clear the stream listeners */
1819
+ this.unregisterListeners();
1820
+
1821
+ /* istanbul ignore else */
1822
+ if (this.sessionTimer) {
1823
+ clearInterval(this.sessionTimer);
1824
+ }
1825
+
1826
+ /* istanbul ignore else */
1827
+ if (this.mediaConnection) {
1828
+ this.mediaConnection.close();
1829
+ _Logger.default.info('Closing media channel', {
1830
+ file: _constants.CALL_FILE,
1831
+ method: _constants.METHODS.HANDLE_INCOMING_CALL_DISCONNECT
1832
+ });
1833
+ }
1834
+ this.sendMediaStateMachineEvt({
1835
+ type: 'E_ROAP_TEARDOWN'
1836
+ });
1837
+ this.sendCallStateMachineEvt({
1838
+ type: 'E_CALL_CLEARED'
1839
+ });
1840
+ case 5:
1841
+ case "end":
1842
+ return _context11.stop();
1843
+ }
1844
+ }, _callee11, this, [[1, 3]]);
1845
+ }));
1846
+ function handleIncomingCallDisconnect(_x9) {
1847
+ return _handleIncomingCallDisconnect.apply(this, arguments);
1848
+ }
1849
+ return handleIncomingCallDisconnect;
1850
+ }()
1851
+ /**
1852
+ * Handle outgoing Call Disconnect.
1853
+ *
1854
+ * @param event - Call Events.
1855
+ */
1856
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1857
+ )
1858
+ }, {
1859
+ key: "handleOutgoingCallDisconnect",
1860
+ value: (function () {
1861
+ var _handleOutgoingCallDisconnect = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee12(event) {
1862
+ var response, _t0;
1863
+ return _regenerator.default.wrap(function (_context12) {
1864
+ while (1) switch (_context12.prev = _context12.next) {
1865
+ case 0:
1866
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
1867
+ file: _constants.CALL_FILE,
1868
+ method: _constants.METHODS.HANDLE_OUTGOING_CALL_DISCONNECT
1869
+ });
1870
+ this.setDisconnectReason();
1871
+ _context12.prev = 1;
1872
+ _context12.next = 2;
1873
+ return this.delete();
1874
+ case 2:
1875
+ response = _context12.sent;
1876
+ _Logger.default.log("Response code: ".concat(response.statusCode), {
1877
+ file: _constants.CALL_FILE,
1878
+ method: _constants.METHODS.HANDLE_OUTGOING_CALL_DISCONNECT
1879
+ });
1880
+ _Logger.default.log("Call disconnected successfully: ".concat(this.correlationId), {
1881
+ file: _constants.CALL_FILE,
1882
+ method: _constants.METHODS.HANDLE_OUTGOING_CALL_DISCONNECT
1883
+ });
1884
+ _context12.next = 4;
1885
+ break;
1886
+ case 3:
1887
+ _context12.prev = 3;
1888
+ _t0 = _context12["catch"](1);
1889
+ _Logger.default.warn('Failed to delete the call', {
1890
+ file: _constants.CALL_FILE,
1891
+ method: _constants.METHODS.HANDLE_OUTGOING_CALL_DISCONNECT
1892
+ });
1893
+ (0, _Utils.uploadLogs)({
1894
+ correlationId: this.correlationId,
1895
+ callId: this.callId,
1896
+ broadworksCorrelationInfo: this.broadworksCorrelationInfo
1897
+ });
1898
+ case 4:
1899
+ this.deleteCb(this.correlationId);
1900
+
1901
+ /* Clear the stream listeners */
1902
+ this.unregisterListeners();
1903
+
1904
+ /* istanbul ignore else */
1905
+ if (this.sessionTimer) {
1906
+ clearInterval(this.sessionTimer);
1907
+ }
1908
+
1909
+ /* istanbul ignore else */
1910
+ if (this.mediaConnection) {
1911
+ this.mediaConnection.close();
1912
+ _Logger.default.info('Closing media channel', {
1913
+ file: _constants.CALL_FILE,
1914
+ method: _constants.METHODS.HANDLE_OUTGOING_CALL_DISCONNECT
1915
+ });
1916
+ }
1917
+ this.sendMediaStateMachineEvt({
1918
+ type: 'E_ROAP_TEARDOWN'
1919
+ });
1920
+ this.sendCallStateMachineEvt({
1921
+ type: 'E_CALL_CLEARED'
1922
+ });
1923
+ case 5:
1924
+ case "end":
1925
+ return _context12.stop();
1926
+ }
1927
+ }, _callee12, this, [[1, 3]]);
1928
+ }));
1929
+ function handleOutgoingCallDisconnect(_x0) {
1930
+ return _handleOutgoingCallDisconnect.apply(this, arguments);
1931
+ }
1932
+ return handleOutgoingCallDisconnect;
1933
+ }())
1934
+ }, {
1935
+ key: "handleCallEstablished",
1936
+ value:
1937
+ /**
1938
+ * Handle Call Established - Roap related negotiations.
1939
+ *
1940
+ * @param event - Call Events.
1941
+ */
1942
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1943
+ function handleCallEstablished(event) {
1944
+ var loggerContext = {
1945
+ file: _constants.CALL_FILE,
1946
+ method: _constants.METHODS.HANDLE_CALL_ESTABLISHED
1947
+ };
1948
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), loggerContext);
1949
+ this.emit(_types3.CALL_EVENT_KEYS.ESTABLISHED, this.correlationId);
1950
+
1951
+ /* Reset Early dialog parameters */
1952
+ this.earlyMedia = false;
1953
+ this.connected = true;
1954
+ this.scheduleCallKeepaliveInterval();
1955
+ }
1956
+
1957
+ /**
1958
+ * Handle Unknown events.
1959
+ *
1960
+ * @param event - Call Events.
1961
+ */
1962
+ }, {
1963
+ key: "handleUnknownState",
1964
+ value: (function () {
1965
+ var _handleUnknownState = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee13(event) {
1966
+ var eventData, response, _t1;
1967
+ return _regenerator.default.wrap(function (_context13) {
1968
+ while (1) switch (_context13.prev = _context13.next) {
1969
+ case 0:
1970
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
1971
+ file: _constants.CALL_FILE,
1972
+ method: _constants.METHODS.HANDLE_UNKNOWN_STATE
1973
+ });
1974
+
1975
+ /* We are handling errors at the source , in this state we just log and
1976
+ * clear the resources
1977
+ */
1978
+ eventData = event.data;
1979
+ if (!(eventData !== null && eventData !== void 0 && eventData.media)) {
1980
+ _Logger.default.warn('Call failed due to signalling issue', {
1981
+ file: _constants.CALL_FILE,
1982
+ method: _constants.METHODS.HANDLE_UNKNOWN_STATE
1983
+ });
1984
+ }
1985
+
1986
+ /* We need to clear the call at Mobius too. For delete failure
1987
+ * error handling is not required
1988
+ */
1989
+ _context13.prev = 1;
1990
+ this.setDisconnectReason();
1991
+ _context13.next = 2;
1992
+ return this.delete();
1993
+ case 2:
1994
+ response = _context13.sent;
1995
+ _Logger.default.log("Response code: ".concat(response.statusCode), {
1996
+ file: _constants.CALL_FILE,
1997
+ method: _constants.METHODS.HANDLE_UNKNOWN_STATE
1998
+ });
1999
+ _context13.next = 4;
2000
+ break;
2001
+ case 3:
2002
+ _context13.prev = 3;
2003
+ _t1 = _context13["catch"](1);
2004
+ _Logger.default.warn('Failed to delete the call', {
2005
+ file: _constants.CALL_FILE,
2006
+ method: _constants.METHODS.HANDLE_UNKNOWN_STATE
2007
+ });
2008
+ (0, _Utils.uploadLogs)({
2009
+ correlationId: this.correlationId,
2010
+ callId: this.callId,
2011
+ broadworksCorrelationInfo: this.broadworksCorrelationInfo
2012
+ });
2013
+ case 4:
2014
+ this.deleteCb(this.correlationId);
2015
+ if (this.sessionTimer) {
2016
+ clearInterval(this.sessionTimer);
2017
+ }
2018
+ if (this.mediaConnection) {
2019
+ this.mediaConnection.close();
2020
+ _Logger.default.info('Closing media channel', {
2021
+ file: _constants.CALL_FILE,
2022
+ method: _constants.METHODS.HANDLE_UNKNOWN_STATE
2023
+ });
2024
+ }
2025
+ this.sendMediaStateMachineEvt({
2026
+ type: 'E_ROAP_TEARDOWN'
2027
+ });
2028
+ this.sendCallStateMachineEvt({
2029
+ type: 'E_CALL_CLEARED'
2030
+ });
2031
+ case 5:
2032
+ case "end":
2033
+ return _context13.stop();
2034
+ }
2035
+ }, _callee13, this, [[1, 3]]);
2036
+ }));
2037
+ function handleUnknownState(_x1) {
2038
+ return _handleUnknownState.apply(this, arguments);
2039
+ }
2040
+ return handleUnknownState;
2041
+ }()
2042
+ /**
2043
+ * Returns an error emitter callback method for handleCallErrors which can be used during
2044
+ * midcall and call setup scenarios.
2045
+ * Emits Call errors for UI Client
2046
+ * Sends call error metrics
2047
+ * Handles further state machine changes.
2048
+ *
2049
+ * @param errData - Instance of CallError.
2050
+ */
2051
+ )
2052
+ }, {
2053
+ key: "getEmitterCallback",
2054
+ value: function getEmitterCallback(errData) {
2055
+ var _this7 = this;
2056
+ return function (error) {
2057
+ switch (_this7.callStateMachine.state.value) {
2058
+ case 'S_CALL_HOLD':
2059
+ _this7.emit(_types3.CALL_EVENT_KEYS.HOLD_ERROR, error);
2060
+ if (_this7.supplementaryServicesTimer) {
2061
+ clearTimeout(_this7.supplementaryServicesTimer);
2062
+ _this7.supplementaryServicesTimer = undefined;
2063
+ }
2064
+ _this7.submitCallErrorMetric(error);
2065
+ _this7.sendCallStateMachineEvt({
2066
+ type: 'E_CALL_ESTABLISHED',
2067
+ data: errData
2068
+ });
2069
+ return;
2070
+ case 'S_CALL_RESUME':
2071
+ _this7.emit(_types3.CALL_EVENT_KEYS.RESUME_ERROR, error);
2072
+ _this7.submitCallErrorMetric(error);
2073
+ _this7.sendCallStateMachineEvt({
2074
+ type: 'E_CALL_ESTABLISHED',
2075
+ data: errData
2076
+ });
2077
+ return;
2078
+ default:
2079
+ _this7.emit(_types3.CALL_EVENT_KEYS.CALL_ERROR, error);
2080
+ _this7.submitCallErrorMetric(error);
2081
+ /* Disconnect call if it's not a midcall case */
2082
+ /* istanbul ignore else */
2083
+ if (!_this7.connected) {
2084
+ _this7.sendMediaStateMachineEvt({
2085
+ type: 'E_ROAP_ERROR',
2086
+ data: errData
2087
+ });
2088
+ }
2089
+ }
2090
+ };
2091
+ }
2092
+
2093
+ /**
2094
+ * Handle Roap Established events.
2095
+ *
2096
+ * For outbound MediaOk , the message will be truthy as we need to send ROAP OK .
2097
+ * For inbound MediaOK , we report it to Media-SDK and transition our state.
2098
+ * Both the cases should transition to Call Established state.
2099
+ *
2100
+ * @param context -.
2101
+ * @param event - Roap Events.
2102
+ */
2103
+ }, {
2104
+ key: "handleRoapEstablished",
2105
+ value: (function () {
2106
+ var _handleRoapEstablished = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee14(context, event) {
2107
+ var _this8 = this;
2108
+ var _ref9, received, message, res, errData, _t10;
2109
+ return _regenerator.default.wrap(function (_context14) {
2110
+ while (1) switch (_context14.prev = _context14.next) {
2111
+ case 0:
2112
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
2113
+ file: _constants.CALL_FILE,
2114
+ method: _constants.METHODS.HANDLE_ROAP_ESTABLISHED
2115
+ });
2116
+ _ref9 = event.data, received = _ref9.received, message = _ref9.message;
2117
+ this.receivedRoapOKSeq = message.seq;
2118
+ if (received) {
2119
+ _context14.next = 5;
2120
+ break;
2121
+ }
2122
+ _Logger.default.info('Sending Media Ok to the remote End', {
2123
+ file: _constants.CALL_FILE,
2124
+ method: _constants.METHODS.HANDLE_ROAP_ESTABLISHED
2125
+ });
2126
+ _context14.prev = 1;
2127
+ if (this.callStateMachine.state.value === 'S_RECV_CALL_PROGRESS' || this.callStateMachine.state.value === 'S_SEND_CALL_SETUP') {
2128
+ _Logger.default.info('Media negotiation completed before call connect. Setting media negotiation completed flag.', {
2129
+ file: _constants.CALL_FILE,
2130
+ method: _constants.METHODS.HANDLE_ROAP_ESTABLISHED
2131
+ });
2132
+ this.mediaNegotiationCompleted = true;
2133
+ }
2134
+ message.seq = this.seq;
2135
+ _context14.next = 2;
2136
+ return this.postMedia(message);
2137
+ case 2:
2138
+ res = _context14.sent;
2139
+ _Logger.default.log("Response code: ".concat(res.statusCode), {
2140
+ file: _constants.CALL_FILE,
2141
+ method: _constants.METHODS.HANDLE_ROAP_ESTABLISHED
2142
+ });
2143
+ /* istanbul ignore else */
2144
+ if (!this.earlyMedia && !this.mediaNegotiationCompleted) {
2145
+ this.sendCallStateMachineEvt({
2146
+ type: 'E_CALL_ESTABLISHED'
2147
+ });
2148
+ }
2149
+ _context14.next = 4;
2150
+ break;
2151
+ case 3:
2152
+ _context14.prev = 3;
2153
+ _t10 = _context14["catch"](1);
2154
+ _Logger.default.warn('Failed to process MediaOk request', {
2155
+ file: _constants.CALL_FILE,
2156
+ method: _constants.METHODS.HANDLE_ROAP_ESTABLISHED
2157
+ });
2158
+ errData = _t10;
2159
+ (0, _Utils.handleCallErrors)(this.getEmitterCallback(errData), _types.ERROR_LAYER.MEDIA, function (interval) {
2160
+ /* Start retry if only it is a midcall case */
2161
+ /* istanbul ignore else */
2162
+ if (_this8.connected) {
2163
+ setTimeout(function () {
2164
+ _this8.sendMediaStateMachineEvt({
2165
+ type: 'E_ROAP_OK',
2166
+ data: event.data
2167
+ });
2168
+ }, interval * 1000);
2169
+ }
2170
+ }, this.getCorrelationId(), errData, this.handleRoapEstablished.name, _constants.CALL_FILE);
2171
+ _context14.next = 4;
2172
+ return (0, _Utils.uploadLogs)({
2173
+ correlationId: this.correlationId,
2174
+ callId: this.callId,
2175
+ broadworksCorrelationInfo: this.broadworksCorrelationInfo
2176
+ });
2177
+ case 4:
2178
+ _context14.next = 6;
2179
+ break;
2180
+ case 5:
2181
+ _Logger.default.info('Notifying internal-media-core about ROAP OK message', {
2182
+ file: _constants.CALL_FILE,
2183
+ method: _constants.METHODS.HANDLE_ROAP_ESTABLISHED
2184
+ });
2185
+ message.seq = this.seq;
2186
+
2187
+ /* istanbul ignore else */
2188
+ if (this.mediaConnection) {
2189
+ this.mediaConnection.roapMessageReceived(message);
2190
+ }
2191
+ /* istanbul ignore else */
2192
+ if (!this.earlyMedia) {
2193
+ this.sendCallStateMachineEvt({
2194
+ type: 'E_CALL_ESTABLISHED'
2195
+ });
2196
+ }
2197
+ if (this.remoteRoapMessage && this.remoteRoapMessage.seq > this.seq) {
2198
+ if (this.remoteRoapMessage.messageType === 'OFFER_REQUEST') {
2199
+ this.sendMediaStateMachineEvt({
2200
+ type: 'E_RECV_ROAP_OFFER_REQUEST',
2201
+ data: this.remoteRoapMessage
2202
+ });
2203
+ } else if (this.remoteRoapMessage.messageType === 'OFFER') {
2204
+ this.sendMediaStateMachineEvt({
2205
+ type: 'E_RECV_ROAP_OFFER',
2206
+ data: this.remoteRoapMessage
2207
+ });
2208
+ }
2209
+ }
2210
+ case 6:
2211
+ case "end":
2212
+ return _context14.stop();
2213
+ }
2214
+ }, _callee14, this, [[1, 3]]);
2215
+ }));
2216
+ function handleRoapEstablished(_x10, _x11) {
2217
+ return _handleRoapEstablished.apply(this, arguments);
2218
+ }
2219
+ return handleRoapEstablished;
2220
+ }()
2221
+ /**
2222
+ * Handle Roap Error events.
2223
+ *
2224
+ * @param context
2225
+ * @param event - Roap Events.
2226
+ */
2227
+ )
2228
+ }, {
2229
+ key: "handleRoapError",
2230
+ value: (function () {
2231
+ var _handleRoapError = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee15(context, event) {
2232
+ var _this9 = this;
2233
+ var message, res, errData, _t11;
2234
+ return _regenerator.default.wrap(function (_context15) {
2235
+ while (1) switch (_context15.prev = _context15.next) {
2236
+ case 0:
2237
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
2238
+ file: _constants.CALL_FILE,
2239
+ method: _constants.METHODS.HANDLE_ROAP_ERROR
2240
+ });
2241
+
2242
+ /* if we receive ROAP_ERROR from internal-media-core , we post it to Mobius */
2243
+ message = event.data;
2244
+ /* istanbul ignore else */
2245
+ if (!(message && message.messageType === 'ERROR')) {
2246
+ _context15.next = 4;
2247
+ break;
2248
+ }
2249
+ _context15.prev = 1;
2250
+ _context15.next = 2;
2251
+ return this.postMedia(message);
2252
+ case 2:
2253
+ res = _context15.sent;
2254
+ _Logger.default.info("Response code: ".concat(res.statusCode), {
2255
+ file: _constants.CALL_FILE,
2256
+ method: _constants.METHODS.HANDLE_ROAP_ERROR
2257
+ });
2258
+ _context15.next = 4;
2259
+ break;
2260
+ case 3:
2261
+ _context15.prev = 3;
2262
+ _t11 = _context15["catch"](1);
2263
+ _Logger.default.warn('Failed to communicate ROAP error to Webex Calling', {
2264
+ file: _constants.CALL_FILE,
2265
+ method: _constants.METHODS.HANDLE_ROAP_ERROR
2266
+ });
2267
+ errData = _t11;
2268
+ (0, _Utils.handleCallErrors)(function (error) {
2269
+ _this9.emit(_types3.CALL_EVENT_KEYS.CALL_ERROR, error);
2270
+ _this9.submitCallErrorMetric(error);
2271
+ }, _types.ERROR_LAYER.MEDIA,
2272
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2273
+ /* istanbul ignore next */
2274
+ function (interval) {
2275
+ return undefined;
2276
+ }, this.getCorrelationId(), errData, this.handleRoapError.name, _constants.CALL_FILE);
2277
+ _context15.next = 4;
2278
+ return (0, _Utils.uploadLogs)({
2279
+ correlationId: this.correlationId,
2280
+ callId: this.callId,
2281
+ broadworksCorrelationInfo: this.broadworksCorrelationInfo
2282
+ });
2283
+ case 4:
2284
+ /* Only disconnect calls that are not yet connected yet */
2285
+
2286
+ if (!this.connected) {
2287
+ _Logger.default.warn('Call failed due to media issue', {
2288
+ file: _constants.CALL_FILE,
2289
+ method: _constants.METHODS.HANDLE_ROAP_ERROR
2290
+ });
2291
+ this.sendCallStateMachineEvt({
2292
+ type: 'E_UNKNOWN',
2293
+ data: {
2294
+ media: true
2295
+ }
2296
+ });
2297
+ }
2298
+ case 5:
2299
+ case "end":
2300
+ return _context15.stop();
2301
+ }
2302
+ }, _callee15, this, [[1, 3]]);
2303
+ }));
2304
+ function handleRoapError(_x12, _x13) {
2305
+ return _handleRoapError.apply(this, arguments);
2306
+ }
2307
+ return handleRoapError;
2308
+ }()
2309
+ /**
2310
+ * Handle Outgoing Roap Offer events.
2311
+ *
2312
+ * @param context
2313
+ * @param event - Roap Events.
2314
+ */
2315
+ )
2316
+ }, {
2317
+ key: "handleOutgoingRoapOffer",
2318
+ value: (function () {
2319
+ var _handleOutgoingRoapOffer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee16(context, event) {
2320
+ var _this0 = this;
2321
+ var message, res, errData, _t12;
2322
+ return _regenerator.default.wrap(function (_context16) {
2323
+ while (1) switch (_context16.prev = _context16.next) {
2324
+ case 0:
2325
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
2326
+ file: _constants.CALL_FILE,
2327
+ method: _constants.METHODS.HANDLE_OUTGOING_ROAP_OFFER
2328
+ });
2329
+ message = event.data;
2330
+ if (message !== null && message !== void 0 && message.sdp) {
2331
+ _context16.next = 1;
2332
+ break;
2333
+ }
2334
+ _Logger.default.info('Initializing Offer...', {
2335
+ file: _constants.CALL_FILE,
2336
+ method: _constants.METHODS.HANDLE_OUTGOING_ROAP_OFFER
2337
+ });
2338
+ this.mediaConnection.initiateOffer();
2339
+ return _context16.abrupt("return");
2340
+ case 1:
2341
+ _context16.prev = 1;
2342
+ _context16.next = 2;
2343
+ return this.postMedia(message);
2344
+ case 2:
2345
+ res = _context16.sent;
2346
+ _Logger.default.log("Response code: ".concat(res.statusCode), {
2347
+ file: _constants.CALL_FILE,
2348
+ method: _constants.METHODS.HANDLE_OUTGOING_ROAP_OFFER
2349
+ });
2350
+ _context16.next = 4;
2351
+ break;
2352
+ case 3:
2353
+ _context16.prev = 3;
2354
+ _t12 = _context16["catch"](1);
2355
+ _Logger.default.warn('Failed to send MediaOffer request', {
2356
+ file: _constants.CALL_FILE,
2357
+ method: _constants.METHODS.HANDLE_OUTGOING_ROAP_OFFER
2358
+ });
2359
+ errData = _t12;
2360
+ (0, _Utils.handleCallErrors)(this.getEmitterCallback(errData), _types.ERROR_LAYER.MEDIA, function (interval) {
2361
+ /* Start retry if only it is a midcall case */
2362
+ if (_this0.connected) {
2363
+ setTimeout(function () {
2364
+ _this0.sendMediaStateMachineEvt({
2365
+ type: 'E_SEND_ROAP_OFFER',
2366
+ data: event.data
2367
+ });
2368
+ }, interval * 1000);
2369
+ }
2370
+ }, this.getCorrelationId(), errData, _constants.METHODS.HANDLE_OUTGOING_ROAP_OFFER, _constants.CALL_FILE);
2371
+ _context16.next = 4;
2372
+ return (0, _Utils.uploadLogs)({
2373
+ correlationId: this.correlationId,
2374
+ callId: this.callId,
2375
+ broadworksCorrelationInfo: this.broadworksCorrelationInfo
2376
+ });
2377
+ case 4:
2378
+ case "end":
2379
+ return _context16.stop();
2380
+ }
2381
+ }, _callee16, this, [[1, 3]]);
2382
+ }));
2383
+ function handleOutgoingRoapOffer(_x14, _x15) {
2384
+ return _handleOutgoingRoapOffer.apply(this, arguments);
2385
+ }
2386
+ return handleOutgoingRoapOffer;
2387
+ }()
2388
+ /**
2389
+ * Handle Outgoing Roap Answer events.
2390
+ *
2391
+ * @param context
2392
+ * @param event - Roap Events.
2393
+ */
2394
+ )
2395
+ }, {
2396
+ key: "handleOutgoingRoapAnswer",
2397
+ value: (function () {
2398
+ var _handleOutgoingRoapAnswer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee17(context, event) {
2399
+ var _this1 = this;
2400
+ var message, res, errData, _t13;
2401
+ return _regenerator.default.wrap(function (_context17) {
2402
+ while (1) switch (_context17.prev = _context17.next) {
2403
+ case 0:
2404
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
2405
+ file: _constants.CALL_FILE,
2406
+ method: _constants.METHODS.HANDLE_OUTGOING_ROAP_ANSWER
2407
+ });
2408
+ message = event.data;
2409
+ _context17.prev = 1;
2410
+ message.seq = this.seq;
2411
+ _context17.next = 2;
2412
+ return this.postMedia(message);
2413
+ case 2:
2414
+ res = _context17.sent;
2415
+ _Logger.default.log("Response code: ".concat(res.statusCode), {
2416
+ file: _constants.CALL_FILE,
2417
+ method: _constants.METHODS.HANDLE_OUTGOING_ROAP_ANSWER
2418
+ });
2419
+ _context17.next = 4;
2420
+ break;
2421
+ case 3:
2422
+ _context17.prev = 3;
2423
+ _t13 = _context17["catch"](1);
2424
+ _Logger.default.warn('Failed to send MediaAnswer request', {
2425
+ file: _constants.CALL_FILE,
2426
+ method: _constants.METHODS.HANDLE_OUTGOING_ROAP_ANSWER
2427
+ });
2428
+ errData = _t13;
2429
+ (0, _Utils.handleCallErrors)(this.getEmitterCallback(errData), _types.ERROR_LAYER.MEDIA, function (interval) {
2430
+ /* Start retry if only it is a midcall case */
2431
+ if (_this1.connected) {
2432
+ setTimeout(function () {
2433
+ _this1.sendMediaStateMachineEvt({
2434
+ type: 'E_SEND_ROAP_ANSWER',
2435
+ data: event.data
2436
+ });
2437
+ }, interval * 1000);
2438
+ }
2439
+ }, this.getCorrelationId(), errData, _constants.METHODS.HANDLE_OUTGOING_ROAP_ANSWER, _constants.CALL_FILE);
2440
+ _context17.next = 4;
2441
+ return (0, _Utils.uploadLogs)({
2442
+ correlationId: this.correlationId,
2443
+ callId: this.callId,
2444
+ broadworksCorrelationInfo: this.broadworksCorrelationInfo
2445
+ });
2446
+ case 4:
2447
+ case "end":
2448
+ return _context17.stop();
2449
+ }
2450
+ }, _callee17, this, [[1, 3]]);
2451
+ }));
2452
+ function handleOutgoingRoapAnswer(_x16, _x17) {
2453
+ return _handleOutgoingRoapAnswer.apply(this, arguments);
2454
+ }
2455
+ return handleOutgoingRoapAnswer;
2456
+ }()
2457
+ /**
2458
+ * Handle Incoming Roap Offer events.
2459
+ *
2460
+ * @param context
2461
+ * @param event - Roap Events.
2462
+ */
2463
+ )
2464
+ }, {
2465
+ key: "handleIncomingRoapOffer",
2466
+ value: function handleIncomingRoapOffer(context, event) {
2467
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
2468
+ file: _constants.CALL_FILE,
2469
+ method: _constants.METHODS.HANDLE_INCOMING_ROAP_OFFER
2470
+ });
2471
+ var message = event.data;
2472
+ this.remoteRoapMessage = message;
2473
+ if (!this.mediaConnection) {
2474
+ _Logger.default.info('Media connection is not up, buffer the remote offer for later handling', {
2475
+ file: _constants.CALL_FILE,
2476
+ method: _constants.METHODS.HANDLE_INCOMING_ROAP_OFFER
2477
+ });
2478
+ this.seq = message.seq;
2479
+ _Logger.default.info("Setting Sequence No: ".concat(this.seq), {
2480
+ file: _constants.CALL_FILE,
2481
+ method: _constants.METHODS.HANDLE_INCOMING_ROAP_OFFER
2482
+ });
2483
+ } else if (this.receivedRoapOKSeq === message.seq - 2) {
2484
+ _Logger.default.info('Waiting for Roap OK, buffer the remote offer for later handling', {
2485
+ file: _constants.CALL_FILE,
2486
+ method: _constants.METHODS.HANDLE_INCOMING_ROAP_OFFER
2487
+ });
2488
+ this.remoteRoapMessage = message;
2489
+ } else {
2490
+ _Logger.default.info('Handling new offer...', {
2491
+ file: _constants.CALL_FILE,
2492
+ method: _constants.METHODS.HANDLE_INCOMING_ROAP_OFFER
2493
+ });
2494
+ this.seq = message.seq;
2495
+ /* istanbul ignore else */
2496
+ if (this.mediaConnection) {
2497
+ this.mediaConnection.roapMessageReceived(message);
2498
+ }
2499
+ }
2500
+ }
2501
+
2502
+ /**
2503
+ * Handle Incoming Roap Answer events.
2504
+ *
2505
+ * @param context
2506
+ * @param event - Roap Events.
2507
+ */
2508
+ }, {
2509
+ key: "handleIncomingRoapAnswer",
2510
+ value: function handleIncomingRoapAnswer(context, event) {
2511
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
2512
+ file: _constants.CALL_FILE,
2513
+ method: _constants.METHODS.HANDLE_INCOMING_ROAP_ANSWER
2514
+ });
2515
+ var message = event.data;
2516
+ this.remoteRoapMessage = message;
2517
+ message.seq = this.seq;
2518
+ /* istanbul ignore else */
2519
+ if (this.mediaConnection) {
2520
+ this.mediaConnection.roapMessageReceived(message);
2521
+ }
2522
+ }
2523
+ }, {
2524
+ key: "initMediaConnection",
2525
+ value: /* istanbul ignore next */
2526
+ /**
2527
+ * Initialize Media Connection.
2528
+ *
2529
+ * @param settings -.
2530
+ * @param settings.localAudioTrack - MediaStreamTrack.
2531
+ * @param settings.debugId - String.
2532
+ */
2533
+ function initMediaConnection(localAudioTrack, debugId) {
2534
+ var _this10 = this;
2535
+ var mediaConnection = new _internalMediaCore.RoapMediaConnection({
2536
+ skipInactiveTransceivers: true,
2537
+ iceServers: [],
2538
+ iceCandidatesTimeout: _constants.ICE_CANDIDATES_TIMEOUT,
2539
+ sdpMunging: {
2540
+ convertPort9to0: true,
2541
+ addContentSlides: false,
2542
+ copyClineToSessionLevel: true
2543
+ }
2544
+ }, {
2545
+ localTracks: {
2546
+ audio: localAudioTrack
2547
+ },
2548
+ direction: {
2549
+ audio: 'sendrecv',
2550
+ video: 'inactive',
2551
+ screenShareVideo: 'inactive'
2552
+ }
2553
+ }, debugId || "WebexCallSDK-".concat(this.correlationId), function (data) {
2554
+ return _this10.rtcMetrics.addMetrics(data);
2555
+ }, function () {
2556
+ return _this10.rtcMetrics.closeMetrics();
2557
+ }, function () {
2558
+ return _this10.rtcMetrics.sendMetricsInQueue();
2559
+ });
2560
+ this.mediaConnection = mediaConnection;
2561
+ }
2562
+ }, {
2563
+ key: "sendCallStateMachineEvt",
2564
+ value:
2565
+ /**
2566
+ * .
2567
+ *
2568
+ * @param event -.
2569
+ */
2570
+ function sendCallStateMachineEvt(event) {
2571
+ this.callStateMachine.send(event);
2572
+ }
2573
+
2574
+ /**
2575
+ * .
2576
+ *
2577
+ * @param event -.
2578
+ */
2579
+ }, {
2580
+ key: "sendMediaStateMachineEvt",
2581
+ value: function sendMediaStateMachineEvt(event) {
2582
+ this.mediaStateMachine.send(event);
2583
+ }
2584
+ }, {
2585
+ key: "setDisconnectReason",
2586
+ value:
2587
+ /**
2588
+ * Sets the Disconnect reason.
2589
+ *
2590
+ */
2591
+ function setDisconnectReason() {
2592
+ if (this.mediaInactivity) {
2593
+ this.disconnectReason.code = _types4.DisconnectCode.MEDIA_INACTIVITY;
2594
+ this.disconnectReason.cause = _types4.DisconnectCause.MEDIA_INACTIVITY;
2595
+ } else if (this.connected || this.direction === _types2.CallDirection.OUTBOUND) {
2596
+ this.disconnectReason.code = _types4.DisconnectCode.NORMAL;
2597
+ this.disconnectReason.cause = _types4.DisconnectCause.NORMAL;
2598
+ } else {
2599
+ this.disconnectReason.code = _types4.DisconnectCode.BUSY;
2600
+ this.disconnectReason.cause = _types4.DisconnectCause.BUSY;
2601
+ }
2602
+ }
2603
+ }, {
2604
+ key: "answer",
2605
+ value: (
2606
+ /**
2607
+ * Answers the call with the provided local audio stream.
2608
+ *
2609
+ * @param localAudioStream - The local audio stream for the call.
2610
+ */
2611
+ function () {
2612
+ var _answer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee18(localAudioStream) {
2613
+ var localAudioTrack;
2614
+ return _regenerator.default.wrap(function (_context18) {
2615
+ while (1) switch (_context18.prev = _context18.next) {
2616
+ case 0:
2617
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with stream"), {
2618
+ file: _constants.CALL_FILE,
2619
+ method: _constants.METHODS.ANSWER
2620
+ });
2621
+ this.localAudioStream = localAudioStream;
2622
+ localAudioTrack = localAudioStream.outputStream.getAudioTracks()[0];
2623
+ if (localAudioTrack) {
2624
+ _context18.next = 1;
2625
+ break;
2626
+ }
2627
+ _Logger.default.warn("Did not find a local track while answering the call ".concat(this.getCorrelationId()), {
2628
+ file: _constants.CALL_FILE,
2629
+ method: _constants.METHODS.ANSWER
2630
+ });
2631
+ this.mediaInactivity = true;
2632
+ this.sendCallStateMachineEvt({
2633
+ type: 'E_SEND_CALL_DISCONNECT'
2634
+ });
2635
+ return _context18.abrupt("return");
2636
+ case 1:
2637
+ localAudioTrack.enabled = true;
2638
+ if (!this.mediaConnection) {
2639
+ this.initMediaConnection(localAudioTrack);
2640
+ this.mediaRoapEventsListener();
2641
+ this.mediaTrackListener();
2642
+ this.registerListeners(localAudioStream);
2643
+ }
2644
+ if (this.callStateMachine.state.value === 'S_SEND_CALL_PROGRESS') {
2645
+ this.sendCallStateMachineEvt({
2646
+ type: 'E_SEND_CALL_CONNECT'
2647
+ });
2648
+ } else {
2649
+ _Logger.default.warn("Call cannot be answered because the state is : ".concat(this.callStateMachine.state.value), {
2650
+ file: _constants.CALL_FILE,
2651
+ method: _constants.METHODS.ANSWER
2652
+ });
2653
+ }
2654
+ case 2:
2655
+ case "end":
2656
+ return _context18.stop();
2657
+ }
2658
+ }, _callee18, this);
2659
+ }));
2660
+ function answer(_x18) {
2661
+ return _answer.apply(this, arguments);
2662
+ }
2663
+ return answer;
2664
+ }()
2665
+ /**
2666
+ * @param settings
2667
+ * @param settings.localAudioTrack
2668
+ */
2669
+ )
2670
+ }, {
2671
+ key: "dial",
2672
+ value: (function () {
2673
+ var _dial = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee19(localAudioStream) {
2674
+ var localAudioTrack;
2675
+ return _regenerator.default.wrap(function (_context19) {
2676
+ while (1) switch (_context19.prev = _context19.next) {
2677
+ case 0:
2678
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with stream"), {
2679
+ file: _constants.CALL_FILE,
2680
+ method: _constants.METHODS.DIAL
2681
+ });
2682
+ this.localAudioStream = localAudioStream;
2683
+ localAudioTrack = localAudioStream.outputStream.getAudioTracks()[0];
2684
+ if (localAudioTrack) {
2685
+ _context19.next = 1;
2686
+ break;
2687
+ }
2688
+ _Logger.default.warn("Did not find a local track while dialing the call ".concat(this.getCorrelationId()), {
2689
+ file: _constants.CALL_FILE,
2690
+ method: _constants.METHODS.DIAL
2691
+ });
2692
+ this.deleteCb(this.getCorrelationId());
2693
+ this.emit(_types3.CALL_EVENT_KEYS.DISCONNECT, this.getCorrelationId());
2694
+ return _context19.abrupt("return");
2695
+ case 1:
2696
+ localAudioTrack.enabled = true;
2697
+ if (!this.mediaConnection) {
2698
+ this.initMediaConnection(localAudioTrack);
2699
+ this.mediaRoapEventsListener();
2700
+ this.mediaTrackListener();
2701
+ this.registerListeners(localAudioStream);
2702
+ }
2703
+ if (this.mediaStateMachine.state.value === 'S_ROAP_IDLE') {
2704
+ this.sendMediaStateMachineEvt({
2705
+ type: 'E_SEND_ROAP_OFFER'
2706
+ });
2707
+ } else {
2708
+ _Logger.default.warn("Call cannot be dialed because the state is already : ".concat(this.mediaStateMachine.state.value), {
2709
+ file: _constants.CALL_FILE,
2710
+ method: _constants.METHODS.DIAL
2711
+ });
2712
+ }
2713
+ case 2:
2714
+ case "end":
2715
+ return _context19.stop();
2716
+ }
2717
+ }, _callee19, this);
2718
+ }));
2719
+ function dial(_x19) {
2720
+ return _dial.apply(this, arguments);
2721
+ }
2722
+ return dial;
2723
+ }())
2724
+ }, {
2725
+ key: "patch",
2726
+ value: (
2727
+ /**
2728
+ * .
2729
+ *
2730
+ * @param state -.
2731
+ */
2732
+ function () {
2733
+ var _patch = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee20(state) {
2734
+ return _regenerator.default.wrap(function (_context20) {
2735
+ while (1) switch (_context20.prev = _context20.next) {
2736
+ case 0:
2737
+ _Logger.default.info("Send a PATCH for ".concat(state, " to Webex Calling"), {
2738
+ file: _constants.CALL_FILE,
2739
+ method: 'patch'
2740
+ });
2741
+ return _context20.abrupt("return", this.apiRequest.makeRequest({
2742
+ uri: "".concat(this.mobiusUrl).concat(_constants.DEVICES_ENDPOINT_RESOURCE, "/").concat(this.deviceId, "/").concat(_constants.CALLS_ENDPOINT_RESOURCE, "/").concat(this.callId),
2743
+ method: _types2.HTTP_METHODS.PATCH,
2744
+ service: _types2.ALLOWED_SERVICES.MOBIUS,
2745
+ headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants.CISCO_DEVICE_URL, this.webex.internal.device.url), _constants.SPARK_USER_AGENT, _constants.CALLING_USER_AGENT),
2746
+ body: {
2747
+ device: {
2748
+ deviceId: this.deviceId,
2749
+ correlationId: this.correlationId
2750
+ },
2751
+ callId: this.callId,
2752
+ callState: state,
2753
+ inbandMedia: false // setting false for now
2754
+ }
2755
+ }));
2756
+ case 1:
2757
+ case "end":
2758
+ return _context20.stop();
2759
+ }
2760
+ }, _callee20, this);
2761
+ }));
2762
+ function patch(_x20) {
2763
+ return _patch.apply(this, arguments);
2764
+ }
2765
+ return patch;
2766
+ }()
2767
+ /**
2768
+ * Sends Supplementary request to Mobius.
2769
+ *
2770
+ * @param context - Context information related to a particular supplementary service.
2771
+ * @param type - Type of Supplementary service.
2772
+ */
2773
+ )
2774
+ }, {
2775
+ key: "postSSRequest",
2776
+ value: (function () {
2777
+ var _postSSRequest = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee21(context, type) {
2778
+ var request, transferContext, _t14;
2779
+ return _regenerator.default.wrap(function (_context21) {
2780
+ while (1) switch (_context21.prev = _context21.next) {
2781
+ case 0:
2782
+ request = {
2783
+ uri: "".concat(this.mobiusUrl).concat(_constants2.SERVICES_ENDPOINT),
2784
+ method: _types2.HTTP_METHODS.POST,
2785
+ service: _types2.ALLOWED_SERVICES.MOBIUS,
2786
+ headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants.CISCO_DEVICE_URL, this.webex.internal.device.url), _constants.SPARK_USER_AGENT, _constants.CALLING_USER_AGENT),
2787
+ body: {
2788
+ device: {
2789
+ deviceId: this.deviceId,
2790
+ correlationId: this.correlationId
2791
+ },
2792
+ callId: this.callId
2793
+ }
2794
+ };
2795
+ _t14 = type;
2796
+ _context21.next = _t14 === _types3.SUPPLEMENTARY_SERVICES.HOLD ? 1 : _t14 === _types3.SUPPLEMENTARY_SERVICES.RESUME ? 2 : _t14 === _types3.SUPPLEMENTARY_SERVICES.TRANSFER ? 3 : 4;
2797
+ break;
2798
+ case 1:
2799
+ request.uri = "".concat(request.uri, "/").concat(_constants.CALL_HOLD_SERVICE, "/").concat(_constants.HOLD_ENDPOINT);
2800
+ return _context21.abrupt("continue", 5);
2801
+ case 2:
2802
+ request.uri = "".concat(request.uri, "/").concat(_constants.CALL_HOLD_SERVICE, "/").concat(_constants.RESUME_ENDPOINT);
2803
+ return _context21.abrupt("continue", 5);
2804
+ case 3:
2805
+ request.uri = "".concat(request.uri, "/").concat(_constants.CALL_TRANSFER_SERVICE, "/").concat(_constants.TRANSFER_ENDPOINT);
2806
+ transferContext = context;
2807
+ if (transferContext.destination) {
2808
+ (0, _assign.default)(request.body, {
2809
+ blindTransferContext: transferContext
2810
+ });
2811
+ (0, _assign.default)(request.body, {
2812
+ transferType: _types4.TransferType.BLIND
2813
+ });
2814
+ } /* istanbul ignore else */else if (transferContext.transferToCallId) {
2815
+ (0, _assign.default)(request.body, {
2816
+ consultTransferContext: transferContext
2817
+ });
2818
+ (0, _assign.default)(request.body, {
2819
+ transferType: _types4.TransferType.CONSULT
2820
+ });
2821
+ }
2822
+ return _context21.abrupt("continue", 5);
2823
+ case 4:
2824
+ _Logger.default.warn("Unknown type for PUT request: ".concat(type), {
2825
+ file: _constants.CALL_FILE,
2826
+ method: _constants.METHODS.POST_SS_REQUEST
2827
+ });
2828
+ case 5:
2829
+ return _context21.abrupt("return", this.apiRequest.makeRequest(request));
2830
+ case 6:
2831
+ case "end":
2832
+ return _context21.stop();
2833
+ }
2834
+ }, _callee21, this);
2835
+ }));
2836
+ function postSSRequest(_x21, _x22) {
2837
+ return _postSSRequest.apply(this, arguments);
2838
+ }
2839
+ return postSSRequest;
2840
+ }()
2841
+ /**
2842
+ * Sends Call status to Mobius.
2843
+ */
2844
+ )
2845
+ }, {
2846
+ key: "postStatus",
2847
+ value: (function () {
2848
+ var _postStatus = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee22() {
2849
+ return _regenerator.default.wrap(function (_context22) {
2850
+ while (1) switch (_context22.prev = _context22.next) {
2851
+ case 0:
2852
+ return _context22.abrupt("return", this.apiRequest.makeRequest({
2853
+ uri: "".concat(this.mobiusUrl).concat(_constants.DEVICES_ENDPOINT_RESOURCE, "/").concat(this.deviceId, "/").concat(_constants.CALLS_ENDPOINT_RESOURCE, "/").concat(this.callId, "/").concat(_constants.CALL_STATUS_RESOURCE),
2854
+ method: _types2.HTTP_METHODS.POST,
2855
+ service: _types2.ALLOWED_SERVICES.MOBIUS,
2856
+ headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants.CISCO_DEVICE_URL, this.webex.internal.device.url), _constants.SPARK_USER_AGENT, _constants.CALLING_USER_AGENT),
2857
+ body: {
2858
+ device: {
2859
+ deviceId: this.deviceId,
2860
+ correlationId: this.correlationId
2861
+ },
2862
+ callId: this.callId
2863
+ }
2864
+ }));
2865
+ case 1:
2866
+ case "end":
2867
+ return _context22.stop();
2868
+ }
2869
+ }, _callee22, this);
2870
+ }));
2871
+ function postStatus() {
2872
+ return _postStatus.apply(this, arguments);
2873
+ }
2874
+ return postStatus;
2875
+ }()
2876
+ /**
2877
+ * This function is called when user attempts to complete transfer(Blind or Consult)
2878
+ * It checks if we have a valid transferCallId or transfer target and transfer type.
2879
+ *
2880
+ * @param transferType - Transfer type.
2881
+ * @param transferCallId - Call Id where the current call will be merged for consult transfers.
2882
+ * @param transferTarget - Destination for blind transfer.
2883
+ */
2884
+ )
2885
+ }, {
2886
+ key: "completeTransfer",
2887
+ value: (function () {
2888
+ var _completeTransfer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee23(transferType, transferCallId, transferTarget) {
2889
+ var _this11 = this;
2890
+ var context, errData, _context23, _errData, _t15, _t16;
2891
+ return _regenerator.default.wrap(function (_context24) {
2892
+ while (1) switch (_context24.prev = _context24.next) {
2893
+ case 0:
2894
+ if (!(transferType === _types4.TransferType.BLIND && transferTarget)) {
2895
+ _context24.next = 5;
2896
+ break;
2897
+ }
2898
+ /* blind transfer */
2899
+
2900
+ _Logger.default.info("Initiating Blind transfer with : ".concat(transferTarget), {
2901
+ file: _constants.CALL_FILE,
2902
+ method: _constants.METHODS.COMPLETE_TRANSFER
2903
+ });
2904
+ context = {
2905
+ transferorCallId: this.getCallId(),
2906
+ destination: transferTarget
2907
+ };
2908
+ _context24.prev = 1;
2909
+ _context24.next = 2;
2910
+ return this.postSSRequest(context, _types3.SUPPLEMENTARY_SERVICES.TRANSFER);
2911
+ case 2:
2912
+ _Logger.default.info("Blind Transfer completed for correlationId ".concat(this.getCorrelationId()), {
2913
+ file: _constants.CALL_FILE,
2914
+ method: _constants.METHODS.COMPLETE_TRANSFER
2915
+ });
2916
+ this.metricManager.submitCallMetric(_types5.METRIC_EVENT.CALL, _types5.TRANSFER_ACTION.BLIND, _types5.METRIC_TYPE.BEHAVIORAL, this.getCallId(), this.getCorrelationId(), undefined);
2917
+ _context24.next = 4;
2918
+ break;
2919
+ case 3:
2920
+ _context24.prev = 3;
2921
+ _t15 = _context24["catch"](1);
2922
+ _Logger.default.warn("Blind Transfer failed for correlationId ".concat(this.getCorrelationId()), {
2923
+ file: _constants.CALL_FILE,
2924
+ method: _constants.METHODS.COMPLETE_TRANSFER
2925
+ });
2926
+ errData = _t15;
2927
+ (0, _Utils.handleCallErrors)(function (error) {
2928
+ _this11.emit(_types3.CALL_EVENT_KEYS.TRANSFER_ERROR, error);
2929
+ _this11.submitCallErrorMetric(error, _types5.TRANSFER_ACTION.BLIND);
2930
+ }, _types.ERROR_LAYER.CALL_CONTROL,
2931
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2932
+ /* istanbul ignore next */
2933
+ function (interval) {
2934
+ return undefined;
2935
+ }, this.getCorrelationId(), errData, _constants.METHODS.COMPLETE_TRANSFER, _constants.CALL_FILE);
2936
+ _context24.next = 4;
2937
+ return (0, _Utils.uploadLogs)({
2938
+ correlationId: this.correlationId,
2939
+ callId: this.callId,
2940
+ broadworksCorrelationInfo: this.broadworksCorrelationInfo
2941
+ });
2942
+ case 4:
2943
+ _context24.next = 11;
2944
+ break;
2945
+ case 5:
2946
+ if (!(transferType === _types4.TransferType.CONSULT && transferCallId)) {
2947
+ _context24.next = 10;
2948
+ break;
2949
+ }
2950
+ /* Consult transfer */
2951
+
2952
+ _Logger.default.info("Initiating Consult transfer between : ".concat(this.callId, " and ").concat(transferCallId), {
2953
+ file: _constants.CALL_FILE,
2954
+ method: _constants.METHODS.COMPLETE_TRANSFER
2955
+ });
2956
+ _context23 = {
2957
+ transferorCallId: this.getCallId(),
2958
+ transferToCallId: transferCallId
2959
+ };
2960
+ _context24.prev = 6;
2961
+ _context24.next = 7;
2962
+ return this.postSSRequest(_context23, _types3.SUPPLEMENTARY_SERVICES.TRANSFER);
2963
+ case 7:
2964
+ _Logger.default.info("Consult Transfer completed for correlationId ".concat(this.getCorrelationId()), {
2965
+ file: _constants.CALL_FILE,
2966
+ method: _constants.METHODS.COMPLETE_TRANSFER
2967
+ });
2968
+ this.metricManager.submitCallMetric(_types5.METRIC_EVENT.CALL, _types5.TRANSFER_ACTION.CONSULT, _types5.METRIC_TYPE.BEHAVIORAL, this.getCallId(), this.getCorrelationId(), undefined);
2969
+ _context24.next = 9;
2970
+ break;
2971
+ case 8:
2972
+ _context24.prev = 8;
2973
+ _t16 = _context24["catch"](6);
2974
+ _Logger.default.warn("Consult Transfer failed for correlationId ".concat(this.getCorrelationId()), {
2975
+ file: _constants.CALL_FILE,
2976
+ method: _constants.METHODS.COMPLETE_TRANSFER
2977
+ });
2978
+ _errData = _t16;
2979
+ (0, _Utils.handleCallErrors)(function (error) {
2980
+ _this11.emit(_types3.CALL_EVENT_KEYS.TRANSFER_ERROR, error);
2981
+ _this11.submitCallErrorMetric(error, _types5.TRANSFER_ACTION.CONSULT);
2982
+ }, _types.ERROR_LAYER.CALL_CONTROL,
2983
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2984
+ /* istanbul ignore next */
2985
+ function (interval) {
2986
+ return undefined;
2987
+ }, this.getCorrelationId(), _errData, _constants.METHODS.COMPLETE_TRANSFER, _constants.CALL_FILE);
2988
+ _context24.next = 9;
2989
+ return (0, _Utils.uploadLogs)({
2990
+ correlationId: this.correlationId,
2991
+ callId: this.callId,
2992
+ broadworksCorrelationInfo: this.broadworksCorrelationInfo
2993
+ });
2994
+ case 9:
2995
+ _context24.next = 11;
2996
+ break;
2997
+ case 10:
2998
+ _Logger.default.warn("Invalid information received, transfer failed for correlationId: ".concat(this.getCorrelationId()), {
2999
+ file: _constants.CALL_FILE,
3000
+ method: _constants.METHODS.COMPLETE_TRANSFER
3001
+ });
3002
+ case 11:
3003
+ case "end":
3004
+ return _context24.stop();
3005
+ }
3006
+ }, _callee23, this, [[1, 3], [6, 8]]);
3007
+ }));
3008
+ function completeTransfer(_x23, _x24, _x25) {
3009
+ return _completeTransfer.apply(this, arguments);
3010
+ }
3011
+ return completeTransfer;
3012
+ }()
3013
+ /**
3014
+ *
3015
+ */
3016
+ )
3017
+ }, {
3018
+ key: "getCallStats",
3019
+ value: (function () {
3020
+ var _getCallStats = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee24() {
3021
+ var stats, _t17;
3022
+ return _regenerator.default.wrap(function (_context25) {
3023
+ while (1) switch (_context25.prev = _context25.next) {
3024
+ case 0:
3025
+ _context25.prev = 0;
3026
+ _context25.next = 1;
3027
+ return this.mediaConnection.getStats();
3028
+ case 1:
3029
+ stats = _context25.sent;
3030
+ _context25.next = 3;
3031
+ break;
3032
+ case 2:
3033
+ _context25.prev = 2;
3034
+ _t17 = _context25["catch"](0);
3035
+ _Logger.default.warn('Stats collection failed, using dummy stats', {
3036
+ file: _constants.CALL_FILE,
3037
+ method: _constants.METHODS.GET_CALL_STATS
3038
+ });
3039
+ case 3:
3040
+ return _context25.abrupt("return", (0, _Utils.parseMediaQualityStatistics)(stats));
3041
+ case 4:
3042
+ case "end":
3043
+ return _context25.stop();
3044
+ }
3045
+ }, _callee24, this, [[0, 2]]);
3046
+ }));
3047
+ function getCallStats() {
3048
+ return _getCallStats.apply(this, arguments);
3049
+ }
3050
+ return getCallStats;
3051
+ }()
3052
+ /**
3053
+ * .
3054
+ *
3055
+ * @param roapMessage -.
3056
+ */
3057
+ )
3058
+ }, {
3059
+ key: "postMedia",
3060
+ value: (function () {
3061
+ var _postMedia = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee25(roapMessage) {
3062
+ return _regenerator.default.wrap(function (_context26) {
3063
+ while (1) switch (_context26.prev = _context26.next) {
3064
+ case 0:
3065
+ _Logger.default.log('Posting message to Webex Calling', {
3066
+ file: _constants.CALL_FILE,
3067
+ method: _constants.METHODS.POST_MEDIA
3068
+ });
3069
+ return _context26.abrupt("return", this.apiRequest.makeRequest({
3070
+ uri: "".concat(this.mobiusUrl).concat(_constants.DEVICES_ENDPOINT_RESOURCE, "/").concat(this.deviceId, "/").concat(_constants.CALLS_ENDPOINT_RESOURCE, "/").concat(this.callId, "/").concat(_constants.MEDIA_ENDPOINT_RESOURCE),
3071
+ method: _types2.HTTP_METHODS.POST,
3072
+ service: _types2.ALLOWED_SERVICES.MOBIUS,
3073
+ headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants.CISCO_DEVICE_URL, this.webex.internal.device.url), _constants.SPARK_USER_AGENT, _constants.CALLING_USER_AGENT),
3074
+ body: {
3075
+ device: {
3076
+ deviceId: this.deviceId,
3077
+ correlationId: this.correlationId
3078
+ },
3079
+ callId: this.callId,
3080
+ localMedia: {
3081
+ roap: roapMessage,
3082
+ mediaId: (0, _uuid.v4)()
3083
+ }
3084
+ }
3085
+ }));
3086
+ case 1:
3087
+ case "end":
3088
+ return _context26.stop();
3089
+ }
3090
+ }, _callee25, this);
3091
+ }));
3092
+ function postMedia(_x26) {
3093
+ return _postMedia.apply(this, arguments);
3094
+ }
3095
+ return postMedia;
3096
+ }()
3097
+ /* istanbul ignore next */
3098
+ /**
3099
+ * Setup a listener for roap events emitted by the media sdk.
3100
+ */
3101
+ )
3102
+ }, {
3103
+ key: "mediaRoapEventsListener",
3104
+ value: function mediaRoapEventsListener() {
3105
+ var _this12 = this;
3106
+ this.mediaConnection.on(_internalMediaCore.MediaConnectionEventNames.ROAP_MESSAGE_TO_SEND,
3107
+ /*#__PURE__*/
3108
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
3109
+ function () {
3110
+ var _ref0 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee26(event) {
3111
+ var _event$roapMessage, _event$roapMessage2;
3112
+ var mediaOk, sdpVideoPortZero, _t18;
3113
+ return _regenerator.default.wrap(function (_context27) {
3114
+ while (1) switch (_context27.prev = _context27.next) {
3115
+ case 0:
3116
+ _Logger.default.info("ROAP message to send (rcv from MEDIA-SDK) :\n \n type: ".concat((_event$roapMessage = event.roapMessage) === null || _event$roapMessage === void 0 ? void 0 : _event$roapMessage.messageType, ", seq: ").concat(event.roapMessage.seq, " , version: ").concat(event.roapMessage.version), {
3117
+ file: _constants.CALL_FILE,
3118
+ method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
3119
+ });
3120
+ _Logger.default.info("SDP message to send : \n ".concat((_event$roapMessage2 = event.roapMessage) === null || _event$roapMessage2 === void 0 ? void 0 : _event$roapMessage2.sdp), {
3121
+ file: _constants.CALL_FILE,
3122
+ method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
3123
+ });
3124
+ _t18 = event.roapMessage.messageType;
3125
+ _context27.next = _t18 === _types4.RoapScenario.OK ? 1 : _t18 === _types4.RoapScenario.OFFER ? 2 : _t18 === _types4.RoapScenario.ANSWER ? 3 : _t18 === _types4.RoapScenario.ERROR ? 4 : _t18 === _types4.RoapScenario.OFFER_RESPONSE ? 5 : 6;
3126
+ break;
3127
+ case 1:
3128
+ mediaOk = {
3129
+ received: false,
3130
+ message: event.roapMessage
3131
+ };
3132
+ _this12.sendMediaStateMachineEvt({
3133
+ type: 'E_ROAP_OK',
3134
+ data: mediaOk
3135
+ });
3136
+ return _context27.abrupt("continue", 6);
3137
+ case 2:
3138
+ // TODO: Remove these after the Media-Core adds the fix
3139
+ // Check if at least one IPv6 "c=" line is present
3140
+ _Logger.default.info("before modifying sdp: ".concat(event.roapMessage.sdp), {
3141
+ file: _constants.CALL_FILE,
3142
+ method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
3143
+ });
3144
+ event.roapMessage.sdp = (0, _Utils.modifySdpForIPv4)(event.roapMessage.sdp);
3145
+ sdpVideoPortZero = event.roapMessage.sdp.replace(/^m=(video) (?:\d+) /gim, 'm=$1 0 ');
3146
+ _Logger.default.info("after modification sdp: ".concat(sdpVideoPortZero), {
3147
+ file: _constants.CALL_FILE,
3148
+ method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
3149
+ });
3150
+ event.roapMessage.sdp = sdpVideoPortZero;
3151
+ _this12.localRoapMessage = event.roapMessage;
3152
+ _this12.sendCallStateMachineEvt({
3153
+ type: 'E_SEND_CALL_SETUP',
3154
+ data: event.roapMessage
3155
+ });
3156
+ return _context27.abrupt("continue", 6);
3157
+ case 3:
3158
+ event.roapMessage.sdp = (0, _Utils.modifySdpForIPv4)(event.roapMessage.sdp);
3159
+ _this12.localRoapMessage = event.roapMessage;
3160
+ _this12.sendMediaStateMachineEvt({
3161
+ type: 'E_SEND_ROAP_ANSWER',
3162
+ data: event.roapMessage
3163
+ });
3164
+ return _context27.abrupt("continue", 6);
3165
+ case 4:
3166
+ _this12.sendMediaStateMachineEvt({
3167
+ type: 'E_ROAP_ERROR',
3168
+ data: event.roapMessage
3169
+ });
3170
+ return _context27.abrupt("continue", 6);
3171
+ case 5:
3172
+ event.roapMessage.sdp = (0, _Utils.modifySdpForIPv4)(event.roapMessage.sdp);
3173
+ _this12.localRoapMessage = event.roapMessage;
3174
+ _this12.sendMediaStateMachineEvt({
3175
+ type: 'E_SEND_ROAP_OFFER',
3176
+ data: event.roapMessage
3177
+ });
3178
+ return _context27.abrupt("continue", 6);
3179
+ case 6:
3180
+ case "end":
3181
+ return _context27.stop();
3182
+ }
3183
+ }, _callee26);
3184
+ }));
3185
+ return function (_x27) {
3186
+ return _ref0.apply(this, arguments);
3187
+ };
3188
+ }());
3189
+ }
3190
+
3191
+ /* istanbul ignore next */
3192
+ /**
3193
+ * Setup a listener for remote track added event emitted by the media sdk.
3194
+ */
3195
+ }, {
3196
+ key: "mediaTrackListener",
3197
+ value: function mediaTrackListener() {
3198
+ var _this13 = this;
3199
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
3200
+ this.mediaConnection.on(_internalMediaCore.MediaConnectionEventNames.REMOTE_TRACK_ADDED, function (e) {
3201
+ if (e.type === _types3.MEDIA_CONNECTION_EVENT_KEYS.MEDIA_TYPE_AUDIO) {
3202
+ _this13.emit(_types3.CALL_EVENT_KEYS.REMOTE_MEDIA, e.track);
3203
+ }
3204
+ });
3205
+ }
3206
+ }, {
3207
+ key: "unregisterListeners",
3208
+ value: function unregisterListeners() {
3209
+ if (this.localAudioStream) {
3210
+ var effect = this.localAudioStream.getEffectByKind(_constants.NOISE_REDUCTION_EFFECT);
3211
+ if (effect) {
3212
+ effect.off(_mediaHelpers.EffectEvent.Enabled, this.onEffectEnabled);
3213
+ effect.off(_mediaHelpers.EffectEvent.Disabled, this.onEffectDisabled);
3214
+ }
3215
+ this.localAudioStream.off(_internalMediaCore.LocalStreamEventNames.EffectAdded, this.registerEffectListener);
3216
+ this.localAudioStream.off(_internalMediaCore.LocalStreamEventNames.OutputTrackChange, this.updateTrack);
3217
+ }
3218
+ }
3219
+ }, {
3220
+ key: "registerListeners",
3221
+ value: function registerListeners(localAudioStream) {
3222
+ localAudioStream.on(_internalMediaCore.LocalStreamEventNames.OutputTrackChange, this.updateTrack);
3223
+ localAudioStream.on(_internalMediaCore.LocalStreamEventNames.EffectAdded, this.registerEffectListener);
3224
+ var effect = localAudioStream.getEffectByKind(_constants.NOISE_REDUCTION_EFFECT);
3225
+ if (effect) {
3226
+ effect.on(_mediaHelpers.EffectEvent.Enabled, this.onEffectEnabled);
3227
+ effect.on(_mediaHelpers.EffectEvent.Disabled, this.onEffectDisabled);
3228
+ if (effect.isEnabled) {
3229
+ this.onEffectEnabled();
3230
+ }
3231
+ }
3232
+ }
3233
+ }, {
3234
+ key: "delete",
3235
+ value: function () {
3236
+ var _delete2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee27() {
3237
+ var disconnectMetrics;
3238
+ return _regenerator.default.wrap(function (_context28) {
3239
+ while (1) switch (_context28.prev = _context28.next) {
3240
+ case 0:
3241
+ _context28.next = 1;
3242
+ return this.getCallStats();
3243
+ case 1:
3244
+ disconnectMetrics = _context28.sent;
3245
+ return _context28.abrupt("return", this.apiRequest.makeRequest({
3246
+ uri: "".concat(this.mobiusUrl).concat(_constants.DEVICES_ENDPOINT_RESOURCE, "/").concat(this.deviceId, "/").concat(_constants.CALLS_ENDPOINT_RESOURCE, "/").concat(this.callId),
3247
+ method: _types2.HTTP_METHODS.DELETE,
3248
+ service: _types2.ALLOWED_SERVICES.MOBIUS,
3249
+ headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants.CISCO_DEVICE_URL, this.webex.internal.device.url), _constants.SPARK_USER_AGENT, _constants.CALLING_USER_AGENT),
3250
+ body: {
3251
+ device: {
3252
+ deviceId: this.deviceId,
3253
+ correlationId: this.correlationId
3254
+ },
3255
+ callId: this.callId,
3256
+ metrics: disconnectMetrics,
3257
+ causecode: this.disconnectReason.code,
3258
+ cause: this.disconnectReason.cause
3259
+ }
3260
+ }));
3261
+ case 2:
3262
+ case "end":
3263
+ return _context28.stop();
3264
+ }
3265
+ }, _callee27, this);
3266
+ }));
3267
+ function _delete() {
3268
+ return _delete2.apply(this, arguments);
3269
+ }
3270
+ return _delete;
3271
+ }()
3272
+ /**
3273
+ * @param state - Current state of the call state machine.
3274
+ * @param error - Error object containing the message and type.
3275
+ * @param transferMetricAction - Metric action type incase of a transfer metric.
3276
+ */
3277
+ }, {
3278
+ key: "submitCallErrorMetric",
3279
+ value: function submitCallErrorMetric(error, transferMetricAction) {
3280
+ if (error.getCallError().errorLayer === _types.ERROR_LAYER.CALL_CONTROL) {
3281
+ this.metricManager.submitCallMetric(_types5.METRIC_EVENT.CALL_ERROR, transferMetricAction || this.callStateMachine.state.value.toString(), _types5.METRIC_TYPE.BEHAVIORAL, this.callId, this.correlationId, error);
3282
+ } else {
3283
+ var _this$remoteRoapMessa2;
3284
+ this.metricManager.submitMediaMetric(_types5.METRIC_EVENT.MEDIA_ERROR, this.mediaStateMachine.state.value.toString(), _types5.METRIC_TYPE.BEHAVIORAL, this.callId, this.correlationId, this.localRoapMessage.sdp, (_this$remoteRoapMessa2 = this.remoteRoapMessage) === null || _this$remoteRoapMessa2 === void 0 ? void 0 : _this$remoteRoapMessa2.sdp, error);
3285
+ }
3286
+ }
3287
+
3288
+ /**
3289
+ * Handler for mid call events.
3290
+ *
3291
+ * @param event - Midcall Events from Mobius.
3292
+ */
3293
+ }, {
3294
+ key: "handleMidCallEvent",
3295
+ value: function handleMidCallEvent(event) {
3296
+ var eventType = event.eventType,
3297
+ eventData = event.eventData;
3298
+ switch (eventType) {
3299
+ case _types4.MidCallEventType.CALL_INFO:
3300
+ {
3301
+ _Logger.default.log("Received Midcall CallInfo Event for correlationId : ".concat(this.correlationId), {
3302
+ file: _constants.CALL_FILE,
3303
+ method: _constants.METHODS.HANDLE_MID_CALL_EVENT
3304
+ });
3305
+ var callerData = eventData;
3306
+ this.startCallerIdResolution(callerData.callerId);
3307
+ break;
3308
+ }
3309
+ case _types4.MidCallEventType.CALL_STATE:
3310
+ {
3311
+ _Logger.default.log("Received Midcall call event for correlationId : ".concat(this.correlationId), {
3312
+ file: _constants.CALL_FILE,
3313
+ method: _constants.METHODS.HANDLE_MID_CALL_EVENT
3314
+ });
3315
+ var data = eventData;
3316
+
3317
+ /* Emit Events as per the state.
3318
+ * We will enter this state only when media negotiation is done
3319
+ * So, it's safe to emit events from here.
3320
+ */
3321
+
3322
+ switch (data.callState) {
3323
+ case _types3.MOBIUS_MIDCALL_STATE.HELD:
3324
+ {
3325
+ _Logger.default.log("Call is successfully held : ".concat(this.correlationId), {
3326
+ file: _constants.CALL_FILE,
3327
+ method: _constants.METHODS.HANDLE_MID_CALL_EVENT
3328
+ });
3329
+ this.emit(_types3.CALL_EVENT_KEYS.HELD, this.correlationId);
3330
+ this.held = true;
3331
+ if (this.supplementaryServicesTimer) {
3332
+ clearTimeout(this.supplementaryServicesTimer);
3333
+ this.supplementaryServicesTimer = undefined;
3334
+ }
3335
+ break;
3336
+ }
3337
+ case _types3.MOBIUS_MIDCALL_STATE.CONNECTED:
3338
+ {
3339
+ _Logger.default.log("Call is successfully resumed : ".concat(this.correlationId), {
3340
+ file: _constants.CALL_FILE,
3341
+ method: _constants.METHODS.HANDLE_MID_CALL_EVENT
3342
+ });
3343
+ this.emit(_types3.CALL_EVENT_KEYS.RESUMED, this.correlationId);
3344
+ this.held = false;
3345
+ if (this.supplementaryServicesTimer) {
3346
+ clearTimeout(this.supplementaryServicesTimer);
3347
+ this.supplementaryServicesTimer = undefined;
3348
+ }
3349
+ break;
3350
+ }
3351
+ default:
3352
+ {
3353
+ _Logger.default.warn("Unknown Supplementary service state: ".concat(data.callState, " for correlationId : ").concat(this.correlationId), {
3354
+ file: _constants.CALL_FILE,
3355
+ method: _constants.METHODS.HANDLE_MID_CALL_EVENT
3356
+ });
3357
+ }
3358
+ }
3359
+ break;
3360
+ }
3361
+ default:
3362
+ {
3363
+ _Logger.default.warn("Unknown Midcall type: ".concat(eventType, " for correlationId : ").concat(this.correlationId), {
3364
+ file: _constants.CALL_FILE,
3365
+ method: _constants.METHODS.HANDLE_MID_CALL_EVENT
3366
+ });
3367
+ }
3368
+ }
3369
+ }
3370
+ }, {
3371
+ key: "startCallerIdResolution",
3372
+ value:
3373
+ /**
3374
+ * .
3375
+ *
3376
+ * @param callerInfo
3377
+ */
3378
+ function startCallerIdResolution(callerInfo) {
3379
+ this.callerInfo = this.callerId.fetchCallerDetails(callerInfo);
3380
+ }
3381
+
3382
+ /**
3383
+ * Sends digit over the established call.
3384
+ *
3385
+ * @param tone - DTMF tones.
3386
+ */
3387
+ }, {
3388
+ key: "sendDigit",
3389
+ value: function sendDigit(tone) {
3390
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(tone), {
3391
+ file: _constants.CALL_FILE,
3392
+ method: _constants.METHODS.SEND_DIGIT
3393
+ });
3394
+
3395
+ /* istanbul ignore else */
3396
+ try {
3397
+ this.mediaConnection.insertDTMF(tone);
3398
+ } catch (e) {
3399
+ _Logger.default.warn("Unable to send digit on call: ".concat(e.message), {
3400
+ file: _constants.CALL_FILE,
3401
+ method: _constants.METHODS.SEND_DIGIT
3402
+ });
3403
+ }
3404
+ }
3405
+ }, {
3406
+ key: "setBroadworksCorrelationInfo",
3407
+ value:
3408
+ /**
3409
+ * @param broadworksCorrelationInfo
3410
+ */
3411
+ function setBroadworksCorrelationInfo(broadworksCorrelationInfo) {
3412
+ this.broadworksCorrelationInfo = broadworksCorrelationInfo;
3413
+ }
3414
+
3415
+ /**
3416
+ *
3417
+ */
3418
+ }, {
3419
+ key: "getBroadworksCorrelationInfo",
3420
+ value: function getBroadworksCorrelationInfo() {
3421
+ return this.broadworksCorrelationInfo;
3422
+ }
3423
+
3424
+ /**
3425
+ * Get call stats for an active call.
3426
+ *
3427
+ * @returns Promise<CallRtpStats> Call Stats.
3428
+ */
3429
+ }, {
3430
+ key: "getCallRtpStats",
3431
+ value: function getCallRtpStats() {
3432
+ return this.getCallStats();
3433
+ }
3434
+
3435
+ /**
3436
+ * Handle timeout for the missed events
3437
+ * @param expectedStates - An array of next expected states
3438
+ * @param errorMessage - Error message to be emitted if the call is not in the expected state in expected time
3439
+ */
3440
+ }, {
3441
+ key: "handleTimeout",
3442
+ value: (function () {
3443
+ var _handleTimeout = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee28() {
3444
+ var response;
3445
+ return _regenerator.default.wrap(function (_context29) {
3446
+ while (1) switch (_context29.prev = _context29.next) {
3447
+ case 0:
3448
+ _Logger.default.warn("Call timed out", {
3449
+ file: _constants.CALL_FILE,
3450
+ method: _constants.METHODS.HANDLE_TIMEOUT
3451
+ });
3452
+ this.deleteCb(this.getCorrelationId());
3453
+ this.emit(_types3.CALL_EVENT_KEYS.DISCONNECT, this.getCorrelationId());
3454
+ _context29.next = 1;
3455
+ return this.delete();
3456
+ case 1:
3457
+ response = _context29.sent;
3458
+ _Logger.default.log("Response code: ".concat(response.statusCode), {
3459
+ file: _constants.CALL_FILE,
3460
+ method: _constants.METHODS.HANDLE_TIMEOUT
3461
+ });
3462
+ case 2:
3463
+ case "end":
3464
+ return _context29.stop();
3465
+ }
3466
+ }, _callee28, this);
3467
+ }));
3468
+ function handleTimeout() {
3469
+ return _handleTimeout.apply(this, arguments);
3470
+ }
3471
+ return handleTimeout;
3472
+ }())
3473
+ }]);
3474
+ }(_impl.Eventing);
3475
+ /**
3476
+ * @param activeUrl
3477
+ * @param webex -.
3478
+ * @param dir -.
3479
+ * @param deviceId -.
3480
+ * @param lineId -.
3481
+ * @param serverCb
3482
+ * @param deleteCb
3483
+ * @param indicator - Service Indicator.
3484
+ * @param dest -.
3485
+ */
3486
+ var createCall = exports.createCall = function createCall(activeUrl, webex, dir, deviceId, lineId, deleteCb, indicator, dest) {
3487
+ return new Call(activeUrl, webex, dir, deviceId, lineId, deleteCb, indicator, dest);
3488
+ };
3489
+ //# sourceMappingURL=call.js.map