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

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