@webex/calling 3.0.0-next.2 → 3.0.0-next.4

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