@webex/calling 3.10.0 → 3.11.0

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