@webex/calling 3.12.0-next.6 → 3.12.0-next.60

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 (214) hide show
  1. package/dist/CallingClient/CallingClient.js +454 -224
  2. package/dist/CallingClient/CallingClient.js.map +1 -1
  3. package/dist/CallingClient/CallingClient.test.js +513 -154
  4. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  5. package/dist/CallingClient/calling/call.js +589 -445
  6. package/dist/CallingClient/calling/call.js.map +1 -1
  7. package/dist/CallingClient/calling/call.test.js +695 -445
  8. package/dist/CallingClient/calling/call.test.js.map +1 -1
  9. package/dist/CallingClient/calling/callManager.js +81 -31
  10. package/dist/CallingClient/calling/callManager.js.map +1 -1
  11. package/dist/CallingClient/calling/callManager.test.js +123 -0
  12. package/dist/CallingClient/calling/callManager.test.js.map +1 -1
  13. package/dist/CallingClient/calling/types.js +2 -0
  14. package/dist/CallingClient/calling/types.js.map +1 -1
  15. package/dist/CallingClient/constants.js +28 -3
  16. package/dist/CallingClient/constants.js.map +1 -1
  17. package/dist/CallingClient/line/index.js +4 -1
  18. package/dist/CallingClient/line/index.js.map +1 -1
  19. package/dist/CallingClient/line/line.test.js +16 -1
  20. package/dist/CallingClient/line/line.test.js.map +1 -1
  21. package/dist/CallingClient/registration/register.js +724 -407
  22. package/dist/CallingClient/registration/register.js.map +1 -1
  23. package/dist/CallingClient/registration/register.test.js +380 -58
  24. package/dist/CallingClient/registration/register.test.js.map +1 -1
  25. package/dist/CallingClient/registration/types.js.map +1 -1
  26. package/dist/CallingClient/registration/webWorker.js +41 -104
  27. package/dist/CallingClient/registration/webWorker.js.map +1 -1
  28. package/dist/CallingClient/registration/webWorker.test.js +39 -153
  29. package/dist/CallingClient/registration/webWorker.test.js.map +1 -1
  30. package/dist/CallingClient/registration/webWorkerStr.js +1 -1
  31. package/dist/CallingClient/registration/webWorkerStr.js.map +1 -1
  32. package/dist/CallingClient/types.js.map +1 -1
  33. package/dist/CallingClient/utils/constants.js +58 -0
  34. package/dist/CallingClient/utils/constants.js.map +1 -0
  35. package/dist/CallingClient/utils/index.js +63 -0
  36. package/dist/CallingClient/utils/index.js.map +1 -0
  37. package/dist/CallingClient/utils/mobiusSocketMapper.js +122 -0
  38. package/dist/CallingClient/utils/mobiusSocketMapper.js.map +1 -0
  39. package/dist/CallingClient/utils/mobiusSocketMapper.test.js +221 -0
  40. package/dist/CallingClient/utils/mobiusSocketMapper.test.js.map +1 -0
  41. package/dist/CallingClient/utils/request.js +435 -0
  42. package/dist/CallingClient/utils/request.js.map +1 -0
  43. package/dist/CallingClient/utils/request.test.js +999 -0
  44. package/dist/CallingClient/utils/request.test.js.map +1 -0
  45. package/dist/CallingClient/utils/types.js +7 -0
  46. package/dist/CallingClient/utils/types.js.map +1 -0
  47. package/dist/CallingClient/utils/wsFeatureFlag.js +70 -0
  48. package/dist/CallingClient/utils/wsFeatureFlag.js.map +1 -0
  49. package/dist/CallingClient/utils/wsFeatureFlag.test.js +139 -0
  50. package/dist/CallingClient/utils/wsFeatureFlag.test.js.map +1 -0
  51. package/dist/Contacts/ContactsClient.js +13 -11
  52. package/dist/Contacts/ContactsClient.js.map +1 -1
  53. package/dist/Contacts/ContactsClient.test.js +3 -8
  54. package/dist/Contacts/ContactsClient.test.js.map +1 -1
  55. package/dist/Events/types.js +11 -11
  56. package/dist/Events/types.js.map +1 -1
  57. package/dist/Metrics/index.js +63 -2
  58. package/dist/Metrics/index.js.map +1 -1
  59. package/dist/Metrics/index.test.js +357 -1
  60. package/dist/Metrics/index.test.js.map +1 -1
  61. package/dist/Metrics/types.js +19 -1
  62. package/dist/Metrics/types.js.map +1 -1
  63. package/dist/SDKConnector/types.js.map +1 -1
  64. package/dist/common/Utils.js +156 -51
  65. package/dist/common/Utils.js.map +1 -1
  66. package/dist/common/Utils.test.js +79 -0
  67. package/dist/common/Utils.test.js.map +1 -1
  68. package/dist/common/testUtil.js +8 -4
  69. package/dist/common/testUtil.js.map +1 -1
  70. package/dist/common/types.js +2 -0
  71. package/dist/common/types.js.map +1 -1
  72. package/dist/index.js +37 -5
  73. package/dist/index.js.map +1 -1
  74. package/dist/mobius-socket/config.js +24 -0
  75. package/dist/mobius-socket/config.js.map +1 -0
  76. package/dist/mobius-socket/errors.js +143 -0
  77. package/dist/mobius-socket/errors.js.map +1 -0
  78. package/dist/mobius-socket/errors.test.js +20 -0
  79. package/dist/mobius-socket/errors.test.js.map +1 -0
  80. package/dist/mobius-socket/index.js +57 -0
  81. package/dist/mobius-socket/index.js.map +1 -0
  82. package/dist/mobius-socket/mobius-socket-events.test.js +492 -0
  83. package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -0
  84. package/dist/mobius-socket/mobius-socket.js +849 -0
  85. package/dist/mobius-socket/mobius-socket.js.map +1 -0
  86. package/dist/mobius-socket/mobius-socket.test.js +1898 -0
  87. package/dist/mobius-socket/mobius-socket.test.js.map +1 -0
  88. package/dist/mobius-socket/socket/constants.js +55 -0
  89. package/dist/mobius-socket/socket/constants.js.map +1 -0
  90. package/dist/mobius-socket/socket/index.js +15 -0
  91. package/dist/mobius-socket/socket/index.js.map +1 -0
  92. package/dist/mobius-socket/socket/socket-base.js +604 -0
  93. package/dist/mobius-socket/socket/socket-base.js.map +1 -0
  94. package/dist/mobius-socket/socket/socket.js +19 -0
  95. package/dist/mobius-socket/socket/socket.js.map +1 -0
  96. package/dist/mobius-socket/socket/socket.shim.js +26 -0
  97. package/dist/mobius-socket/socket/socket.shim.js.map +1 -0
  98. package/dist/mobius-socket/socket/types.js +7 -0
  99. package/dist/mobius-socket/socket/types.js.map +1 -0
  100. package/dist/mobius-socket/socket.test.js +727 -0
  101. package/dist/mobius-socket/socket.test.js.map +1 -0
  102. package/dist/mobius-socket/test/mocha-helpers.js +23 -0
  103. package/dist/mobius-socket/test/mocha-helpers.js.map +1 -0
  104. package/dist/mobius-socket/test/promise-tick.js +28 -0
  105. package/dist/mobius-socket/test/promise-tick.js.map +1 -0
  106. package/dist/mobius-socket/types.js +7 -0
  107. package/dist/mobius-socket/types.js.map +1 -0
  108. package/dist/module/CallingClient/CallingClient.js +126 -10
  109. package/dist/module/CallingClient/calling/call.js +177 -61
  110. package/dist/module/CallingClient/calling/callManager.js +39 -7
  111. package/dist/module/CallingClient/calling/types.js +2 -0
  112. package/dist/module/CallingClient/constants.js +24 -0
  113. package/dist/module/CallingClient/line/index.js +2 -2
  114. package/dist/module/CallingClient/registration/register.js +239 -63
  115. package/dist/module/CallingClient/registration/webWorker.js +42 -61
  116. package/dist/module/CallingClient/registration/webWorkerStr.js +47 -82
  117. package/dist/module/CallingClient/utils/constants.js +36 -0
  118. package/dist/module/CallingClient/utils/index.js +5 -0
  119. package/dist/module/CallingClient/utils/mobiusSocketMapper.js +72 -0
  120. package/dist/module/CallingClient/utils/request.js +211 -0
  121. package/dist/module/CallingClient/utils/types.js +1 -0
  122. package/dist/module/CallingClient/utils/wsFeatureFlag.js +41 -0
  123. package/dist/module/Contacts/ContactsClient.js +1 -1
  124. package/dist/module/Events/types.js +4 -10
  125. package/dist/module/Metrics/index.js +48 -1
  126. package/dist/module/Metrics/types.js +18 -0
  127. package/dist/module/common/Utils.js +60 -17
  128. package/dist/module/common/testUtil.js +5 -1
  129. package/dist/module/common/types.js +2 -0
  130. package/dist/module/index.js +3 -2
  131. package/dist/module/mobius-socket/config.js +15 -0
  132. package/dist/module/mobius-socket/errors.js +58 -0
  133. package/dist/module/mobius-socket/index.js +24 -0
  134. package/dist/module/mobius-socket/mobius-socket.js +593 -0
  135. package/dist/module/mobius-socket/socket/constants.js +26 -0
  136. package/dist/module/mobius-socket/socket/index.js +4 -0
  137. package/dist/module/mobius-socket/socket/socket-base.js +368 -0
  138. package/dist/module/mobius-socket/socket/socket.js +9 -0
  139. package/dist/module/mobius-socket/socket/socket.shim.js +12 -0
  140. package/dist/module/mobius-socket/socket/types.js +1 -0
  141. package/dist/module/mobius-socket/types.js +1 -0
  142. package/dist/types/CallingClient/CallingClient.d.ts +8 -0
  143. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  144. package/dist/types/CallingClient/calling/call.d.ts +12 -0
  145. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  146. package/dist/types/CallingClient/calling/callManager.d.ts +4 -2
  147. package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
  148. package/dist/types/CallingClient/calling/types.d.ts +34 -9
  149. package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
  150. package/dist/types/CallingClient/constants.d.ts +24 -0
  151. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  152. package/dist/types/CallingClient/line/index.d.ts +1 -1
  153. package/dist/types/CallingClient/line/index.d.ts.map +1 -1
  154. package/dist/types/CallingClient/registration/register.d.ts +7 -1
  155. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  156. package/dist/types/CallingClient/registration/types.d.ts +4 -2
  157. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  158. package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
  159. package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
  160. package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
  161. package/dist/types/CallingClient/types.d.ts +1 -0
  162. package/dist/types/CallingClient/types.d.ts.map +1 -1
  163. package/dist/types/CallingClient/utils/constants.d.ts +35 -0
  164. package/dist/types/CallingClient/utils/constants.d.ts.map +1 -0
  165. package/dist/types/CallingClient/utils/index.d.ts +6 -0
  166. package/dist/types/CallingClient/utils/index.d.ts.map +1 -0
  167. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts +5 -0
  168. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts.map +1 -0
  169. package/dist/types/CallingClient/utils/request.d.ts +28 -0
  170. package/dist/types/CallingClient/utils/request.d.ts.map +1 -0
  171. package/dist/types/CallingClient/utils/types.d.ts +34 -0
  172. package/dist/types/CallingClient/utils/types.d.ts.map +1 -0
  173. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts +4 -0
  174. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts.map +1 -0
  175. package/dist/types/Events/types.d.ts +14 -13
  176. package/dist/types/Events/types.d.ts.map +1 -1
  177. package/dist/types/Metrics/index.d.ts.map +1 -1
  178. package/dist/types/Metrics/types.d.ts +19 -2
  179. package/dist/types/Metrics/types.d.ts.map +1 -1
  180. package/dist/types/SDKConnector/types.d.ts +37 -12
  181. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  182. package/dist/types/common/Utils.d.ts +11 -3
  183. package/dist/types/common/Utils.d.ts.map +1 -1
  184. package/dist/types/common/testUtil.d.ts +4 -1
  185. package/dist/types/common/testUtil.d.ts.map +1 -1
  186. package/dist/types/common/types.d.ts +3 -0
  187. package/dist/types/common/types.d.ts.map +1 -1
  188. package/dist/types/index.d.ts +4 -2
  189. package/dist/types/index.d.ts.map +1 -1
  190. package/dist/types/mobius-socket/config.d.ts +17 -0
  191. package/dist/types/mobius-socket/config.d.ts.map +1 -0
  192. package/dist/types/mobius-socket/errors.d.ts +32 -0
  193. package/dist/types/mobius-socket/errors.d.ts.map +1 -0
  194. package/dist/types/mobius-socket/index.d.ts +14 -0
  195. package/dist/types/mobius-socket/index.d.ts.map +1 -0
  196. package/dist/types/mobius-socket/mobius-socket.d.ts +48 -0
  197. package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -0
  198. package/dist/types/mobius-socket/socket/constants.d.ts +27 -0
  199. package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -0
  200. package/dist/types/mobius-socket/socket/index.d.ts +5 -0
  201. package/dist/types/mobius-socket/socket/index.d.ts.map +1 -0
  202. package/dist/types/mobius-socket/socket/socket-base.d.ts +43 -0
  203. package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -0
  204. package/dist/types/mobius-socket/socket/socket.d.ts +6 -0
  205. package/dist/types/mobius-socket/socket/socket.d.ts.map +1 -0
  206. package/dist/types/mobius-socket/socket/socket.shim.d.ts +6 -0
  207. package/dist/types/mobius-socket/socket/socket.shim.d.ts.map +1 -0
  208. package/dist/types/mobius-socket/socket/types.d.ts +61 -0
  209. package/dist/types/mobius-socket/socket/types.d.ts.map +1 -0
  210. package/dist/types/mobius-socket/types.d.ts +21 -0
  211. package/dist/types/mobius-socket/types.d.ts.map +1 -0
  212. package/package.json +20 -5
  213. package/src/mobius-socket/socket/socket.shim.ts +22 -0
  214. package/src/mobius-socket/socket/socket.ts +14 -0
@@ -16,6 +16,7 @@ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime
16
16
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
17
17
  var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
18
18
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
19
+ var _request = require("../utils/request");
19
20
  var _constants = require("../../common/constants");
20
21
  var _constants2 = require("../constants");
21
22
  var _types = require("../../Events/types");
@@ -23,7 +24,7 @@ var _impl = require("../../Events/impl");
23
24
  var _SDKConnector = _interopRequireDefault(require("../../SDKConnector"));
24
25
  var _types2 = require("../../common/types");
25
26
  var _types3 = require("./types");
26
- var _call3 = require("./call");
27
+ var _call4 = require("./call");
27
28
  var _Logger = _interopRequireDefault(require("../../Logger"));
28
29
  function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? _Reflect$construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
29
30
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /* eslint-disable dot-notation */ /* eslint-disable valid-jsdoc */
@@ -47,6 +48,8 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
47
48
  (0, _defineProperty2.default)(_this, "activeMobiusUrl", void 0);
48
49
  (0, _defineProperty2.default)(_this, "serviceIndicator", void 0);
49
50
  (0, _defineProperty2.default)(_this, "lineDict", void 0);
51
+ (0, _defineProperty2.default)(_this, "apiRequest", void 0);
52
+ (0, _defineProperty2.default)(_this, "isMobiusSocketListenerRegistered", false);
50
53
  /**
51
54
  * @param direction -.
52
55
  * @param deviceId -.
@@ -58,7 +61,7 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
58
61
  method: _constants2.METHODS.CREATE_CALL
59
62
  });
60
63
  _Logger.default.log('Creating call object', {});
61
- var newCall = (0, _call3.createCall)(_this.activeMobiusUrl, _this.webex, direction, deviceId, lineId, function (correlationId) {
64
+ var newCall = (0, _call4.createCall)(_this.activeMobiusUrl, _this.webex, direction, deviceId, lineId, function (correlationId) {
62
65
  delete _this.callCollection[correlationId];
63
66
  var activeCalls = (0, _keys.default)(_this.getActiveCalls()).length;
64
67
  _Logger.default.info("DELETE:: Deleted corelationId: ".concat(newCall.getCorrelationId(), " from CallManager, Number of call records :- ").concat(activeCalls), {});
@@ -95,6 +98,9 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
95
98
  }
96
99
  _this.lineDict = {};
97
100
  _this.webex = _this.sdkConnector.getWebex();
101
+ _this.apiRequest = _request.APIRequest.getInstance({
102
+ webex: _this.webex
103
+ });
98
104
  _this.callCollection = {};
99
105
  _this.activeMobiusUrl = '';
100
106
  _this.listenForWsEvents();
@@ -115,35 +121,63 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
115
121
  file: _constants2.CALL_MANAGER_FILE,
116
122
  method: _constants2.METHODS.UPDATE_ACTIVE_MOBIUS
117
123
  });
124
+
125
+ /*
126
+ * The active transport is resolved per Mobius server group during registration: a
127
+ * group with no WSS URL falls back to HTTP even while the Mobius socket feature is
128
+ * enabled, so the final transport is only known once registration succeeds. Re-align
129
+ * the Mobius event source with that transport now that the device has registered.
130
+ */
131
+ this.listenForWsEvents();
118
132
  }
119
133
 
120
134
  /**
121
- * A listener for Mobius events.
135
+ * Aligns the Mobius event source with the active transport.
136
+ *
137
+ * Call events reach {@link dequeueWsEvents} over one of two paths:
138
+ * - HTTP transport: a Mercury `event:mobius` listener owned by this CallManager.
139
+ * - WebSocket transport: CallingClient forwards Mobius socket events to dequeueWsEvents().
140
+ *
141
+ * Because the transport can fall back from WSS to HTTP per server group during
142
+ * registration, this is invoked both at construction and whenever the active Mobius
143
+ * URL changes. It registers the Mercury listener for HTTP and removes it for the
144
+ * WebSocket transport, and is idempotent so repeated calls do not duplicate listeners.
122
145
  */
123
146
  }, {
124
147
  key: "listenForWsEvents",
125
148
  value: function listenForWsEvents() {
126
149
  var _this2 = this;
127
- this.sdkConnector.registerListener('event:mobius', /*#__PURE__*/function () {
128
- var _ref = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(event) {
129
- return _regenerator.default.wrap(function (_context) {
130
- while (1) switch (_context.prev = _context.next) {
131
- case 0:
132
- _this2.dequeueWsEvents(event);
133
- case 1:
134
- case "end":
135
- return _context.stop();
136
- }
137
- }, _callee);
138
- }));
139
- return function (_x) {
140
- return _ref.apply(this, arguments);
141
- };
142
- }());
143
- _Logger.default.info('Successfully registered listener for Mobius events', {
144
- file: _constants2.CALL_MANAGER_FILE,
145
- method: _constants2.METHODS.REGISTER_SESSIONS_LISTENER
146
- });
150
+ var socketEnabled = this.apiRequest.isSocketEnabled();
151
+ if (!socketEnabled && !this.isMobiusSocketListenerRegistered) {
152
+ this.sdkConnector.registerListener('event:mobius', /*#__PURE__*/function () {
153
+ var _ref = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(event) {
154
+ return _regenerator.default.wrap(function (_context) {
155
+ while (1) switch (_context.prev = _context.next) {
156
+ case 0:
157
+ _this2.dequeueWsEvents(event);
158
+ case 1:
159
+ case "end":
160
+ return _context.stop();
161
+ }
162
+ }, _callee);
163
+ }));
164
+ return function (_x) {
165
+ return _ref.apply(this, arguments);
166
+ };
167
+ }());
168
+ this.isMobiusSocketListenerRegistered = true;
169
+ _Logger.default.info('Successfully registered listener for Mobius events', {
170
+ file: _constants2.CALL_MANAGER_FILE,
171
+ method: _constants2.METHODS.REGISTER_SESSIONS_LISTENER
172
+ });
173
+ } else if (socketEnabled && this.isMobiusSocketListenerRegistered) {
174
+ this.sdkConnector.unregisterListener('event:mobius');
175
+ this.isMobiusSocketListenerRegistered = false;
176
+ _Logger.default.info('Unregistered Mercury listener for Mobius events; using WebSocket transport', {
177
+ file: _constants2.CALL_MANAGER_FILE,
178
+ method: _constants2.METHODS.REGISTER_SESSIONS_LISTENER
179
+ });
180
+ }
147
181
  }
148
182
 
149
183
  /**
@@ -162,9 +196,9 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
162
196
  method: _constants2.METHODS.DEQUEUE_WS_EVENTS
163
197
  });
164
198
  var mobiusEvent = event;
165
- var _mobiusEvent$data = mobiusEvent.data,
166
- callId = _mobiusEvent$data.callId,
167
- correlationId = _mobiusEvent$data.correlationId;
199
+ var _ref2 = mobiusEvent.data,
200
+ callId = _ref2.callId,
201
+ correlationId = _ref2.correlationId;
168
202
  switch (mobiusEvent.data.eventType) {
169
203
  case _types3.MobiusEventType.CALL_SETUP:
170
204
  {
@@ -257,6 +291,22 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
257
291
  });
258
292
  break;
259
293
  }
294
+ case _types3.MobiusEventType.CALL_INFO:
295
+ {
296
+ _Logger.default.log("Received call info mobiusEvent for call: ".concat(correlationId), {
297
+ file: _constants2.CALL_MANAGER_FILE,
298
+ method: _constants2.METHODS.DEQUEUE_WS_EVENTS
299
+ });
300
+ var _call = this.getCall(correlationId);
301
+ if (_call && mobiusEvent.data.callerId) {
302
+ _Logger.default.info('Processing Caller-Id data', {
303
+ file: _constants2.CALL_MANAGER_FILE,
304
+ method: _constants2.METHODS.DEQUEUE_WS_EVENTS
305
+ });
306
+ _call.startCallerIdResolution(mobiusEvent.data.callerId);
307
+ }
308
+ break;
309
+ }
260
310
  case _types3.MobiusEventType.CALL_MEDIA:
261
311
  {
262
312
  _Logger.default.log("Received call media mobiusEvent for call: ".concat(correlationId), {
@@ -393,8 +443,8 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
393
443
  file: _constants2.CALL_MANAGER_FILE,
394
444
  method: _constants2.METHODS.DEQUEUE_WS_EVENTS
395
445
  });
396
- var _call = this.getCall(correlationId);
397
- _call.sendCallStateMachineEvt({
446
+ var _call2 = this.getCall(correlationId);
447
+ _call2.sendCallStateMachineEvt({
398
448
  type: 'E_RECV_CALL_CONNECT',
399
449
  data: mobiusEvent.data
400
450
  });
@@ -406,9 +456,9 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
406
456
  file: _constants2.CALL_MANAGER_FILE,
407
457
  method: _constants2.METHODS.DEQUEUE_WS_EVENTS
408
458
  });
409
- var _call2 = this.getCall(correlationId);
410
- if (_call2) {
411
- _call2.sendCallStateMachineEvt({
459
+ var _call3 = this.getCall(correlationId);
460
+ if (_call3) {
461
+ _call3.sendCallStateMachineEvt({
412
462
  type: 'E_RECV_CALL_DISCONNECT'
413
463
  });
414
464
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","_constants2","_types","_impl","_SDKConnector","_interopRequireDefault","_types2","_types3","_call3","_Logger","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","callManager","CallManager","exports","_Eventing","webex","indicator","_this","_classCallCheck2","_defineProperty2","direction","deviceId","lineId","destination","log","info","concat","METHOD_START_MESSAGE","file","CALL_MANAGER_FILE","method","METHODS","CREATE_CALL","newCall","createCall","activeMobiusUrl","correlationId","callCollection","activeCalls","_keys","getActiveCalls","length","getCorrelationId","emit","CALLING_CLIENT_EVENT_KEYS","ALL_CALLS_CLEARED","serviceIndicator","sdkConnector","SDKConnector","getWebex","setWebex","lineDict","listenForWsEvents","_inherits2","_createClass2","key","value","updateActiveMobius","url","UPDATE_ACTIVE_MOBIUS","_this2","registerListener","_ref","_asyncToGenerator2","_regenerator","mark","_callee","event","wrap","_context","prev","next","dequeueWsEvents","stop","_x","arguments","REGISTER_SESSIONS_LISTENER","_this3","DEQUEUE_WS_EVENTS","mobiusEvent","_mobiusEvent$data","data","callId","eventType","MobiusEventType","CALL_SETUP","midCallService","forEach","midCallEvent","getCall","handleMidCallEvent","newId","find","id","getCallId","getLineId","CallDirection","INBOUND","setCallId","broadworksCorrelationInfo","setBroadworksCorrelationInfo","callerId","startCallerIdResolution","LINE_EVENT_KEYS","INCOMING_CALL","sendCallStateMachineEvt","type","CALL_PROGRESS","CALL_MEDIA","activeCall","_mobiusEvent$data$mes","_mobiusEvent$data$mes2","_mobiusEvent$data$mes3","_mobiusEvent$data$mes4","_mobiusEvent$data$mes5","message","sdp","messageType","seq","version","mediaState","MediaState","OFFER","sendMediaStateMachineEvt","ANSWER","OFFER_REQUEST","OK","mediaOk","received","ERROR","CALL_CONNECTED","CALL_DISCONNECTED","updateLine","line","UPDATE_LINE","Eventing","getCallManager"],"sources":["callManager.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n/* eslint-disable valid-jsdoc */\nimport {METHOD_START_MESSAGE} from '../../common/constants';\nimport {CALL_MANAGER_FILE, METHODS} from '../constants';\nimport {CALLING_CLIENT_EVENT_KEYS, CallEventTypes, LINE_EVENT_KEYS} from '../../Events/types';\nimport {Eventing} from '../../Events/impl';\nimport SDKConnector from '../../SDKConnector';\nimport {ISDKConnector, WebexSDK} from '../../SDKConnector/types';\nimport {CallDetails, CallDirection, CorrelationId, ServiceIndicator} from '../../common/types';\nimport {\n ICall,\n ICallManager,\n MediaState,\n MidCallEvent,\n MobiusCallEvent,\n MobiusEventType,\n} from './types';\nimport {createCall} from './call';\nimport log from '../../Logger';\nimport {ILine} from '../line/types';\n\nlet callManager: ICallManager;\n\n/**\n *\n */\nexport class CallManager extends Eventing<CallEventTypes> implements ICallManager {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private callCollection: Record<CorrelationId, ICall>;\n\n private activeMobiusUrl!: string;\n\n private serviceIndicator: ServiceIndicator;\n\n private lineDict: Record<string, ILine>;\n\n /**\n * @param webex -.\n * @param indicator - Service Indicator.\n */\n constructor(webex: WebexSDK, indicator: ServiceIndicator) {\n super();\n this.sdkConnector = SDKConnector;\n this.serviceIndicator = indicator;\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.lineDict = {};\n this.webex = this.sdkConnector.getWebex();\n this.callCollection = {};\n this.activeMobiusUrl = '';\n this.listenForWsEvents();\n }\n\n /**\n * @param direction -.\n * @param deviceId -.\n * @param destination -.\n */\n public createCall = (\n direction: CallDirection,\n deviceId: string,\n lineId: string,\n destination?: CallDetails\n ): ICall => {\n log.info(`${METHOD_START_MESSAGE} with ${direction}, ${deviceId} and ${lineId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.CREATE_CALL,\n });\n log.log('Creating call object', {});\n const newCall = createCall(\n this.activeMobiusUrl,\n this.webex,\n direction,\n deviceId,\n lineId,\n (correlationId: CorrelationId) => {\n delete this.callCollection[correlationId];\n const activeCalls = Object.keys(this.getActiveCalls()).length;\n\n log.info(\n `DELETE:: Deleted corelationId: ${newCall.getCorrelationId()} from CallManager, Number of call records :- ${activeCalls}`,\n {}\n );\n if (activeCalls === 0) {\n /* Notify CallingClient when all calls are cleared. */\n this.emit(CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED);\n log.log('All calls have been cleared', {\n file: CALL_MANAGER_FILE,\n method: METHODS.CREATE_CALL,\n });\n }\n },\n this.serviceIndicator,\n destination\n );\n\n this.callCollection[newCall.getCorrelationId()] = newCall;\n log.log(`New call created with correlationId: ${newCall.getCorrelationId()}`, {});\n log.info(\n `ADD:: Added corelationId: ${newCall.getCorrelationId()} to CallManager , Number of call records now:- ${\n Object.keys(this.getActiveCalls()).length\n }`,\n {}\n );\n\n return newCall;\n };\n\n /**\n * Update Active Mobius Url.\n *\n * @param url - Mobius Url.\n */\n public updateActiveMobius(url: string) {\n this.activeMobiusUrl = url;\n log.log(`Successfully updated active Mobius URL to: ${url}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.UPDATE_ACTIVE_MOBIUS,\n });\n }\n\n /**\n * A listener for Mobius events.\n */\n private listenForWsEvents() {\n this.sdkConnector.registerListener('event:mobius', async (event) => {\n this.dequeueWsEvents(event);\n });\n log.info('Successfully registered listener for Mobius events', {\n file: CALL_MANAGER_FILE,\n method: METHODS.REGISTER_SESSIONS_LISTENER,\n });\n }\n\n /**\n * This a Queue where Mobius Events are reported by the underlying Mercury\n * Connection. We handle the events in the order they are posted here. New call\n * Objects are generated from here.\n *\n * @param event - Mobius Events.\n */\n private dequeueWsEvents(event: unknown) {\n log.info(`${METHOD_START_MESSAGE} with event ${event}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const mobiusEvent = event as MobiusCallEvent;\n const {callId, correlationId} = mobiusEvent.data;\n\n switch (mobiusEvent.data.eventType) {\n case MobiusEventType.CALL_SETUP: {\n log.log(`Received call Setup message for call: ${callId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n /* Check whether MidCall or not */\n if (mobiusEvent.data.midCallService) {\n mobiusEvent.data.midCallService.forEach((midCallEvent: MidCallEvent) => {\n const call = this.getCall(correlationId);\n\n if (call) {\n call.handleMidCallEvent(midCallEvent);\n } else {\n log.info(\n `Dropping midcall event of type: ${midCallEvent.eventType} as it doesn't match with any existing call`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n }\n });\n\n return;\n }\n /* Check if the Call.Media was processed before Call.Setup.\n * In that case , the Call Object is already created while processing\n * Media message.\n */\n\n const newId = (Object.keys(this.callCollection) as Array<string>).find(\n (id) => this.callCollection[id].getCallId() === callId\n );\n let newCall: ICall;\n\n if (!newId) {\n /* This means it's a new call ...\n * Create an incoming call object and add to our records\n */\n const lineId = this.getLineId(mobiusEvent.data.deviceId);\n newCall = this.createCall(\n CallDirection.INBOUND,\n mobiusEvent.data.deviceId,\n lineId,\n {} as CallDetails\n );\n log.log(\n `New incoming call created with correlationId from Call Setup message: ${newCall.getCorrelationId()}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n newCall.setCallId(callId);\n if (mobiusEvent.data.broadworksCorrelationInfo) {\n log.info(\n `Found broadworksCorrelationInfo: ${mobiusEvent.data.broadworksCorrelationInfo}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n newCall.setBroadworksCorrelationInfo(mobiusEvent.data.broadworksCorrelationInfo);\n }\n } else {\n log.info(\n `Found the call Object with a matching callId: ${callId} from our records with correlationId: ${newId}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n newCall = this.getCall(newId);\n }\n\n if (mobiusEvent.data.callerId) {\n log.info('Processing Caller-Id data', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n newCall.startCallerIdResolution(mobiusEvent.data.callerId);\n }\n /* Signal Line */\n\n this.emit(LINE_EVENT_KEYS.INCOMING_CALL, newCall);\n\n newCall.sendCallStateMachineEvt({type: 'E_RECV_CALL_SETUP', data: mobiusEvent.data});\n\n break;\n }\n case MobiusEventType.CALL_PROGRESS: {\n log.log(`Received call progress mobiusEvent for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const call = this.getCall(correlationId);\n\n if (mobiusEvent.data.callerId) {\n log.info('Processing Caller-Id data', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n call.startCallerIdResolution(mobiusEvent.data.callerId);\n }\n\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_PROGRESS', data: mobiusEvent.data});\n break;\n }\n case MobiusEventType.CALL_MEDIA: {\n log.log(`Received call media mobiusEvent for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n\n let activeCall: ICall;\n\n if (correlationId) {\n /* The Call.Media message had correlation id (Except the first message) */\n activeCall = this.getCall(correlationId);\n } else {\n /* This is possibly the first Media message for the call.\n * We should scan our record to see if we can find a call with\n * this callId.\n */\n\n const newId = (Object.keys(this.callCollection) as Array<string>).find(\n (id) => this.callCollection[id].getCallId() === callId\n );\n\n if (newId) {\n /* Call.Media arrived after Call.Setup but the correlationId was Null. */\n\n log.info(\n `Found the call Object with a matching callId: ${callId} from our records with correlationId: ${newId}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n activeCall = this.getCall(newId);\n } else {\n /* If Call.Media arrived before Call.Setup , we create the Call Object here */\n\n const lineId = this.getLineId(mobiusEvent.data.deviceId);\n activeCall = this.createCall(\n CallDirection.INBOUND,\n mobiusEvent.data.deviceId,\n lineId,\n {} as CallDetails\n );\n log.log(\n `New incoming call created with correlationId from ROAP Message: ${activeCall.getCorrelationId()}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n activeCall.setCallId(callId);\n }\n }\n\n if (activeCall) {\n /* Only Handle if the call is present */\n\n log.info(`SDP from mobius ${mobiusEvent.data.message?.sdp}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n log.log(\n `ROAP message from mobius with type: ${mobiusEvent.data.message?.messageType}, seq: ${mobiusEvent.data.message?.seq} , version: ${mobiusEvent.data.message?.version}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n const mediaState = mobiusEvent.data.message?.messageType;\n\n switch (mediaState) {\n case MediaState.OFFER: {\n log.log('Received OFFER', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n activeCall.sendMediaStateMachineEvt({\n type: 'E_RECV_ROAP_OFFER',\n data: mobiusEvent.data.message,\n });\n break;\n }\n case MediaState.ANSWER: {\n log.log('Received ANSWER', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n activeCall.sendMediaStateMachineEvt({\n type: 'E_RECV_ROAP_ANSWER',\n data: mobiusEvent.data.message,\n });\n break;\n }\n case MediaState.OFFER_REQUEST: {\n log.log('Received OFFER_REQUEST', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n activeCall.sendMediaStateMachineEvt({\n type: 'E_RECV_ROAP_OFFER_REQUEST',\n data: mobiusEvent.data.message,\n });\n break;\n }\n case MediaState.OK: {\n log.log('Received OK', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const mediaOk = {\n received: true,\n message: mobiusEvent.data.message,\n };\n\n activeCall.sendMediaStateMachineEvt({\n type: 'E_ROAP_OK',\n data: mediaOk,\n });\n break;\n }\n case MediaState.ERROR: {\n log.log('Received Error...', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n break;\n }\n default: {\n log.log(`Unknown Media mobiusEvent: ${mediaState} `, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n }\n }\n } else {\n log.info(`CorrelationId: ${correlationId} doesn't exist , discarding..`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n // TODO: Maybe add a queue for these mobiusEvents per callID and handle them once the call is setup ?\n }\n break;\n }\n case MobiusEventType.CALL_CONNECTED: {\n log.log(`Received call connect for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const call = this.getCall(correlationId);\n\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_CONNECT', data: mobiusEvent.data});\n\n break;\n }\n case MobiusEventType.CALL_DISCONNECTED: {\n log.log(`Received call disconnect for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const call = this.getCall(correlationId);\n\n if (call) {\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_DISCONNECT'});\n }\n break;\n }\n default: {\n log.log(`Unknown Call Event mobiusEvent: ${mobiusEvent.data.eventType}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n }\n }\n }\n\n /**\n * @param correlationId -.\n */\n public getCall = (correlationId: CorrelationId): ICall => {\n return this.callCollection[correlationId];\n };\n\n /**\n *\n */\n public getActiveCalls = (): Record<string, ICall> => {\n return this.callCollection;\n };\n\n /**\n * Adds line instance to lineDict\n */\n public updateLine(deviceId: string, line: ILine) {\n this.lineDict[deviceId] = line;\n log.log(`Successfully updated line for deviceId: ${deviceId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.UPDATE_LINE,\n });\n }\n\n /**\n * Retrieves line id\n */\n private getLineId(deviceId: string) {\n return this.lineDict[deviceId].lineId;\n }\n}\n\n/**\n * @param webex -.\n * @param indicator - Service Indicator.\n */\nexport const getCallManager = (webex: WebexSDK, indicator: ServiceIndicator): ICallManager => {\n if (!callManager) {\n callManager = new CallManager(webex, indicator);\n }\n\n return callManager;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_request","require","_constants","_constants2","_types","_impl","_SDKConnector","_interopRequireDefault","_types2","_types3","_call4","_Logger","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","callManager","CallManager","exports","_Eventing","webex","indicator","_this","_classCallCheck2","_defineProperty2","direction","deviceId","lineId","destination","log","info","concat","METHOD_START_MESSAGE","file","CALL_MANAGER_FILE","method","METHODS","CREATE_CALL","newCall","createCall","activeMobiusUrl","correlationId","callCollection","activeCalls","_keys","getActiveCalls","length","getCorrelationId","emit","CALLING_CLIENT_EVENT_KEYS","ALL_CALLS_CLEARED","serviceIndicator","sdkConnector","SDKConnector","getWebex","setWebex","lineDict","apiRequest","APIRequest","getInstance","listenForWsEvents","_inherits2","_createClass2","key","value","updateActiveMobius","url","UPDATE_ACTIVE_MOBIUS","_this2","socketEnabled","isSocketEnabled","isMobiusSocketListenerRegistered","registerListener","_ref","_asyncToGenerator2","_regenerator","mark","_callee","event","wrap","_context","prev","next","dequeueWsEvents","stop","_x","arguments","REGISTER_SESSIONS_LISTENER","unregisterListener","_this3","DEQUEUE_WS_EVENTS","mobiusEvent","_ref2","data","callId","eventType","MobiusEventType","CALL_SETUP","midCallService","forEach","midCallEvent","getCall","handleMidCallEvent","newId","find","id","getCallId","getLineId","CallDirection","INBOUND","setCallId","broadworksCorrelationInfo","setBroadworksCorrelationInfo","callerId","startCallerIdResolution","LINE_EVENT_KEYS","INCOMING_CALL","sendCallStateMachineEvt","type","CALL_PROGRESS","CALL_INFO","CALL_MEDIA","activeCall","_mobiusEvent$data$mes","_mobiusEvent$data$mes2","_mobiusEvent$data$mes3","_mobiusEvent$data$mes4","_mobiusEvent$data$mes5","message","sdp","messageType","seq","version","mediaState","MediaState","OFFER","sendMediaStateMachineEvt","ANSWER","OFFER_REQUEST","OK","mediaOk","received","ERROR","CALL_CONNECTED","CALL_DISCONNECTED","updateLine","line","UPDATE_LINE","Eventing","getCallManager"],"sources":["callManager.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n/* eslint-disable valid-jsdoc */\nimport {APIRequest} from '../utils/request';\nimport {METHOD_START_MESSAGE} from '../../common/constants';\nimport {CALL_MANAGER_FILE, METHODS} from '../constants';\nimport {CALLING_CLIENT_EVENT_KEYS, CallEventTypes, LINE_EVENT_KEYS} from '../../Events/types';\nimport {Eventing} from '../../Events/impl';\nimport SDKConnector from '../../SDKConnector';\nimport {ISDKConnector, WebexSDK} from '../../SDKConnector/types';\nimport {CallDetails, CallDirection, CorrelationId, ServiceIndicator} from '../../common/types';\nimport {\n ICall,\n ICallManager,\n MediaState,\n MidCallEvent,\n MobiusAsyncEvent,\n MobiusCallData,\n MobiusEventType,\n} from './types';\nimport {createCall} from './call';\nimport log from '../../Logger';\nimport {ILine} from '../line/types';\n\nlet callManager: ICallManager;\n\n/**\n *\n */\nexport class CallManager extends Eventing<CallEventTypes> implements ICallManager {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private callCollection: Record<CorrelationId, ICall>;\n\n private activeMobiusUrl!: string;\n\n private serviceIndicator: ServiceIndicator;\n\n private lineDict: Record<string, ILine>;\n\n private apiRequest: APIRequest;\n\n private isMobiusSocketListenerRegistered = false;\n\n /**\n * @param webex -.\n * @param indicator - Service Indicator.\n */\n constructor(webex: WebexSDK, indicator: ServiceIndicator) {\n super();\n this.sdkConnector = SDKConnector;\n this.serviceIndicator = indicator;\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.lineDict = {};\n this.webex = this.sdkConnector.getWebex();\n this.apiRequest = APIRequest.getInstance({webex: this.webex});\n this.callCollection = {};\n this.activeMobiusUrl = '';\n this.listenForWsEvents();\n }\n\n /**\n * @param direction -.\n * @param deviceId -.\n * @param destination -.\n */\n public createCall = (\n direction: CallDirection,\n deviceId: string,\n lineId: string,\n destination?: CallDetails\n ): ICall => {\n log.info(`${METHOD_START_MESSAGE} with ${direction}, ${deviceId} and ${lineId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.CREATE_CALL,\n });\n log.log('Creating call object', {});\n const newCall = createCall(\n this.activeMobiusUrl,\n this.webex,\n direction,\n deviceId,\n lineId,\n (correlationId: CorrelationId) => {\n delete this.callCollection[correlationId];\n const activeCalls = Object.keys(this.getActiveCalls()).length;\n\n log.info(\n `DELETE:: Deleted corelationId: ${newCall.getCorrelationId()} from CallManager, Number of call records :- ${activeCalls}`,\n {}\n );\n if (activeCalls === 0) {\n /* Notify CallingClient when all calls are cleared. */\n this.emit(CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED);\n log.log('All calls have been cleared', {\n file: CALL_MANAGER_FILE,\n method: METHODS.CREATE_CALL,\n });\n }\n },\n this.serviceIndicator,\n destination\n );\n\n this.callCollection[newCall.getCorrelationId()] = newCall;\n log.log(`New call created with correlationId: ${newCall.getCorrelationId()}`, {});\n log.info(\n `ADD:: Added corelationId: ${newCall.getCorrelationId()} to CallManager , Number of call records now:- ${\n Object.keys(this.getActiveCalls()).length\n }`,\n {}\n );\n\n return newCall;\n };\n\n /**\n * Update Active Mobius Url.\n *\n * @param url - Mobius Url.\n */\n public updateActiveMobius(url: string) {\n this.activeMobiusUrl = url;\n log.log(`Successfully updated active Mobius URL to: ${url}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.UPDATE_ACTIVE_MOBIUS,\n });\n\n /*\n * The active transport is resolved per Mobius server group during registration: a\n * group with no WSS URL falls back to HTTP even while the Mobius socket feature is\n * enabled, so the final transport is only known once registration succeeds. Re-align\n * the Mobius event source with that transport now that the device has registered.\n */\n this.listenForWsEvents();\n }\n\n /**\n * Aligns the Mobius event source with the active transport.\n *\n * Call events reach {@link dequeueWsEvents} over one of two paths:\n * - HTTP transport: a Mercury `event:mobius` listener owned by this CallManager.\n * - WebSocket transport: CallingClient forwards Mobius socket events to dequeueWsEvents().\n *\n * Because the transport can fall back from WSS to HTTP per server group during\n * registration, this is invoked both at construction and whenever the active Mobius\n * URL changes. It registers the Mercury listener for HTTP and removes it for the\n * WebSocket transport, and is idempotent so repeated calls do not duplicate listeners.\n */\n private listenForWsEvents() {\n const socketEnabled = this.apiRequest.isSocketEnabled();\n\n if (!socketEnabled && !this.isMobiusSocketListenerRegistered) {\n this.sdkConnector.registerListener('event:mobius', async (event) => {\n this.dequeueWsEvents(event);\n });\n this.isMobiusSocketListenerRegistered = true;\n log.info('Successfully registered listener for Mobius events', {\n file: CALL_MANAGER_FILE,\n method: METHODS.REGISTER_SESSIONS_LISTENER,\n });\n } else if (socketEnabled && this.isMobiusSocketListenerRegistered) {\n this.sdkConnector.unregisterListener('event:mobius');\n this.isMobiusSocketListenerRegistered = false;\n log.info('Unregistered Mercury listener for Mobius events; using WebSocket transport', {\n file: CALL_MANAGER_FILE,\n method: METHODS.REGISTER_SESSIONS_LISTENER,\n });\n }\n }\n\n /**\n * This a Queue where Mobius Events are reported by the underlying Mercury\n * Connection. We handle the events in the order they are posted here. New call\n * Objects are generated from here.\n *\n * @param event - Mobius Events.\n */\n public dequeueWsEvents(event: MobiusAsyncEvent | unknown) {\n log.info(`${METHOD_START_MESSAGE} with event ${event}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const mobiusEvent = event as MobiusAsyncEvent;\n\n const {callId, correlationId} = mobiusEvent.data as MobiusCallData;\n\n switch (mobiusEvent.data.eventType) {\n case MobiusEventType.CALL_SETUP: {\n log.log(`Received call Setup message for call: ${callId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n /* Check whether MidCall or not */\n if (mobiusEvent.data.midCallService) {\n mobiusEvent.data.midCallService.forEach((midCallEvent: MidCallEvent) => {\n const call = this.getCall(correlationId);\n\n if (call) {\n call.handleMidCallEvent(midCallEvent);\n } else {\n log.info(\n `Dropping midcall event of type: ${midCallEvent.eventType} as it doesn't match with any existing call`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n }\n });\n\n return;\n }\n /* Check if the Call.Media was processed before Call.Setup.\n * In that case , the Call Object is already created while processing\n * Media message.\n */\n\n const newId = (Object.keys(this.callCollection) as Array<string>).find(\n (id) => this.callCollection[id].getCallId() === callId\n );\n let newCall: ICall;\n\n if (!newId) {\n /* This means it's a new call ...\n * Create an incoming call object and add to our records\n */\n const lineId = this.getLineId(mobiusEvent.data.deviceId);\n newCall = this.createCall(\n CallDirection.INBOUND,\n mobiusEvent.data.deviceId,\n lineId,\n {} as CallDetails\n );\n log.log(\n `New incoming call created with correlationId from Call Setup message: ${newCall.getCorrelationId()}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n newCall.setCallId(callId);\n if (mobiusEvent.data.broadworksCorrelationInfo) {\n log.info(\n `Found broadworksCorrelationInfo: ${mobiusEvent.data.broadworksCorrelationInfo}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n newCall.setBroadworksCorrelationInfo(mobiusEvent.data.broadworksCorrelationInfo);\n }\n } else {\n log.info(\n `Found the call Object with a matching callId: ${callId} from our records with correlationId: ${newId}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n newCall = this.getCall(newId);\n }\n\n if (mobiusEvent.data.callerId) {\n log.info('Processing Caller-Id data', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n newCall.startCallerIdResolution(mobiusEvent.data.callerId);\n }\n /* Signal Line */\n\n this.emit(LINE_EVENT_KEYS.INCOMING_CALL, newCall);\n\n newCall.sendCallStateMachineEvt({type: 'E_RECV_CALL_SETUP', data: mobiusEvent.data});\n\n break;\n }\n case MobiusEventType.CALL_PROGRESS: {\n log.log(`Received call progress mobiusEvent for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const call = this.getCall(correlationId);\n\n if (mobiusEvent.data.callerId) {\n log.info('Processing Caller-Id data', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n call.startCallerIdResolution(mobiusEvent.data.callerId);\n }\n\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_PROGRESS', data: mobiusEvent.data});\n break;\n }\n case MobiusEventType.CALL_INFO: {\n log.log(`Received call info mobiusEvent for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const call = this.getCall(correlationId);\n\n if (call && mobiusEvent.data.callerId) {\n log.info('Processing Caller-Id data', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n call.startCallerIdResolution(mobiusEvent.data.callerId);\n }\n break;\n }\n case MobiusEventType.CALL_MEDIA: {\n log.log(`Received call media mobiusEvent for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n\n let activeCall: ICall;\n\n if (correlationId) {\n /* The Call.Media message had correlation id (Except the first message) */\n activeCall = this.getCall(correlationId);\n } else {\n /* This is possibly the first Media message for the call.\n * We should scan our record to see if we can find a call with\n * this callId.\n */\n\n const newId = (Object.keys(this.callCollection) as Array<string>).find(\n (id) => this.callCollection[id].getCallId() === callId\n );\n\n if (newId) {\n /* Call.Media arrived after Call.Setup but the correlationId was Null. */\n\n log.info(\n `Found the call Object with a matching callId: ${callId} from our records with correlationId: ${newId}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n activeCall = this.getCall(newId);\n } else {\n /* If Call.Media arrived before Call.Setup , we create the Call Object here */\n\n const lineId = this.getLineId(mobiusEvent.data.deviceId);\n activeCall = this.createCall(\n CallDirection.INBOUND,\n mobiusEvent.data.deviceId,\n lineId,\n {} as CallDetails\n );\n log.log(\n `New incoming call created with correlationId from ROAP Message: ${activeCall.getCorrelationId()}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n activeCall.setCallId(callId);\n }\n }\n\n if (activeCall) {\n /* Only Handle if the call is present */\n\n log.info(`SDP from mobius ${mobiusEvent.data.message?.sdp}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n log.log(\n `ROAP message from mobius with type: ${mobiusEvent.data.message?.messageType}, seq: ${mobiusEvent.data.message?.seq} , version: ${mobiusEvent.data.message?.version}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n const mediaState = mobiusEvent.data.message?.messageType;\n\n switch (mediaState) {\n case MediaState.OFFER: {\n log.log('Received OFFER', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n activeCall.sendMediaStateMachineEvt({\n type: 'E_RECV_ROAP_OFFER',\n data: mobiusEvent.data.message,\n });\n break;\n }\n case MediaState.ANSWER: {\n log.log('Received ANSWER', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n activeCall.sendMediaStateMachineEvt({\n type: 'E_RECV_ROAP_ANSWER',\n data: mobiusEvent.data.message,\n });\n break;\n }\n case MediaState.OFFER_REQUEST: {\n log.log('Received OFFER_REQUEST', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n activeCall.sendMediaStateMachineEvt({\n type: 'E_RECV_ROAP_OFFER_REQUEST',\n data: mobiusEvent.data.message,\n });\n break;\n }\n case MediaState.OK: {\n log.log('Received OK', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const mediaOk = {\n received: true,\n message: mobiusEvent.data.message,\n };\n\n activeCall.sendMediaStateMachineEvt({\n type: 'E_ROAP_OK',\n data: mediaOk,\n });\n break;\n }\n case MediaState.ERROR: {\n log.log('Received Error...', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n break;\n }\n default: {\n log.log(`Unknown Media mobiusEvent: ${mediaState} `, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n }\n }\n } else {\n log.info(`CorrelationId: ${correlationId} doesn't exist , discarding..`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n // TODO: Maybe add a queue for these mobiusEvents per callID and handle them once the call is setup ?\n }\n break;\n }\n case MobiusEventType.CALL_CONNECTED: {\n log.log(`Received call connect for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const call = this.getCall(correlationId);\n\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_CONNECT', data: mobiusEvent.data});\n\n break;\n }\n case MobiusEventType.CALL_DISCONNECTED: {\n log.log(`Received call disconnect for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const call = this.getCall(correlationId);\n\n if (call) {\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_DISCONNECT'});\n }\n break;\n }\n default: {\n log.log(`Unknown Call Event mobiusEvent: ${mobiusEvent.data.eventType}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n }\n }\n }\n\n /**\n * @param correlationId -.\n */\n public getCall = (correlationId: CorrelationId): ICall => {\n return this.callCollection[correlationId];\n };\n\n /**\n *\n */\n public getActiveCalls = (): Record<string, ICall> => {\n return this.callCollection;\n };\n\n /**\n * Adds line instance to lineDict\n */\n public updateLine(deviceId: string, line: ILine) {\n this.lineDict[deviceId] = line;\n log.log(`Successfully updated line for deviceId: ${deviceId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.UPDATE_LINE,\n });\n }\n\n /**\n * Retrieves line id\n */\n private getLineId(deviceId: string) {\n return this.lineDict[deviceId].lineId;\n }\n}\n\n/**\n * @param webex -.\n * @param indicator - Service Indicator.\n */\nexport const getCallManager = (webex: WebexSDK, indicator: ServiceIndicator): ICallManager => {\n if (!callManager) {\n callManager = new CallManager(webex, indicator);\n }\n\n return callManager;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -86,6 +86,22 @@ var disconnectEvent = {
86
86
  sequenceNumber: 6,
87
87
  filterMessage: false
88
88
  };
89
+ var registrationDownEvent = {
90
+ type: 'async_event',
91
+ trackingId: 'SRV_bb000000-0000-0000-0000-000000000007',
92
+ eventId: 'a7b8c9d0-e1f2-3456-abcd-567890123456',
93
+ data: {
94
+ eventType: 'registration.down',
95
+ deviceInfo: {
96
+ userId: '44533573-f6aa-429d-b4fe-58aa04a2b636',
97
+ device: {
98
+ deviceId: '334f3d50-1d26-4712-93f1-4972390cc565',
99
+ uri: 'https://mobius-a.wbx2.com/api/v1/calling/web/devices/334f3d50-1d26-4712-93f1-4972390cc565',
100
+ status: 'inactive'
101
+ }
102
+ }
103
+ }
104
+ };
89
105
  var deviceId = '55dfb53f-bed2-36da-8e85-cee7f02aa68e';
90
106
  var dest = {
91
107
  type: _types.CallType.URI,
@@ -737,5 +753,112 @@ describe('Coverage for Events listener', function () {
737
753
  }
738
754
  }, _callee16);
739
755
  })));
756
+ it('Handles registration down event without routing to call state machine', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee17() {
757
+ return _regenerator.default.wrap(function (_context17) {
758
+ while (1) switch (_context17.prev = _context17.next) {
759
+ case 0:
760
+ jest.clearAllMocks();
761
+ _context17.next = 1;
762
+ return callManager['dequeueWsEvents'](registrationDownEvent);
763
+ case 1:
764
+ expect(callSpy).not.toHaveBeenCalled();
765
+ expect(logSpy).toHaveBeenCalledWith('Unknown Call Event mobiusEvent: registration.down', {
766
+ file: 'callManager',
767
+ method: 'dequeueWsEvents'
768
+ });
769
+ case 2:
770
+ case "end":
771
+ return _context17.stop();
772
+ }
773
+ }, _callee17);
774
+ })));
775
+ });
776
+ describe('Mobius event transport alignment', function () {
777
+ var callManager;
778
+ var mercuryOnSpy;
779
+ var mercuryOffSpy;
780
+ var isSocketEnabledSpy;
781
+ var httpUrl = 'https://mobius.example.com/api/v1/calling/web/';
782
+ var wssUrl = 'wss://mobius.example.com/api/v1/calling/web/';
783
+
784
+ // SDKConnector.registerListener/unregisterListener delegate to mercury.on/off, so the
785
+ // Mercury listener lifecycle is observed through those mocks on the shared webex instance.
786
+ var getMobiusListenerWrapper = function getMobiusListenerWrapper() {
787
+ var _mercuryOnSpy$mock$ca;
788
+ return (_mercuryOnSpy$mock$ca = mercuryOnSpy.mock.calls.find(function (call) {
789
+ return call[0] === 'event:mobius';
790
+ })) === null || _mercuryOnSpy$mock$ca === void 0 ? void 0 : _mercuryOnSpy$mock$ca[1];
791
+ };
792
+ beforeEach(function () {
793
+ callManager = (0, _callManager.getCallManager)(webex, defaultServiceIndicator);
794
+ mercuryOnSpy = webex.internal.mercury.on;
795
+ mercuryOffSpy = webex.internal.mercury.off;
796
+ mercuryOnSpy.mockClear();
797
+ mercuryOffSpy.mockClear();
798
+ isSocketEnabledSpy = jest.spyOn(callManager['apiRequest'], 'isSocketEnabled');
799
+ });
800
+ afterEach(function () {
801
+ isSocketEnabledSpy.mockRestore();
802
+ });
803
+ it('updateActiveMobius stores the active Mobius URL', function () {
804
+ isSocketEnabledSpy.mockReturnValue(false);
805
+ callManager.updateActiveMobius(httpUrl);
806
+ expect(callManager['activeMobiusUrl']).toBe(httpUrl);
807
+ });
808
+ it('registers the Mercury listener when the transport falls back to HTTP', function () {
809
+ callManager['isMobiusSocketListenerRegistered'] = false;
810
+ isSocketEnabledSpy.mockReturnValue(false);
811
+ callManager.updateActiveMobius(httpUrl);
812
+ expect(mercuryOnSpy).toHaveBeenCalledWith('event:mobius', expect.any(Function));
813
+ expect(callManager['isMobiusSocketListenerRegistered']).toBe(true);
814
+ expect(mercuryOffSpy).not.toHaveBeenCalled();
815
+ });
816
+ it('removes the Mercury listener when the transport switches to WebSocket', function () {
817
+ callManager['isMobiusSocketListenerRegistered'] = true;
818
+ isSocketEnabledSpy.mockReturnValue(true);
819
+ callManager.updateActiveMobius(wssUrl);
820
+ expect(mercuryOffSpy).toHaveBeenCalledWith('event:mobius');
821
+ expect(callManager['isMobiusSocketListenerRegistered']).toBe(false);
822
+ expect(mercuryOnSpy).not.toHaveBeenCalled();
823
+ });
824
+ it('does not re-register the Mercury listener when already registered on HTTP', function () {
825
+ callManager['isMobiusSocketListenerRegistered'] = true;
826
+ isSocketEnabledSpy.mockReturnValue(false);
827
+ callManager.updateActiveMobius(httpUrl);
828
+ expect(mercuryOnSpy).not.toHaveBeenCalled();
829
+ expect(mercuryOffSpy).not.toHaveBeenCalled();
830
+ expect(callManager['isMobiusSocketListenerRegistered']).toBe(true);
831
+ });
832
+ it('does nothing when socket is enabled and no Mercury listener is registered', function () {
833
+ callManager['isMobiusSocketListenerRegistered'] = false;
834
+ isSocketEnabledSpy.mockReturnValue(true);
835
+ callManager.updateActiveMobius(wssUrl);
836
+ expect(mercuryOnSpy).not.toHaveBeenCalled();
837
+ expect(mercuryOffSpy).not.toHaveBeenCalled();
838
+ expect(callManager['isMobiusSocketListenerRegistered']).toBe(false);
839
+ });
840
+ it('routes Mobius events to dequeueWsEvents through the registered Mercury listener', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee18() {
841
+ var dequeueSpy, mobiusListenerWrapper;
842
+ return _regenerator.default.wrap(function (_context18) {
843
+ while (1) switch (_context18.prev = _context18.next) {
844
+ case 0:
845
+ callManager['isMobiusSocketListenerRegistered'] = false;
846
+ isSocketEnabledSpy.mockReturnValue(false);
847
+ dequeueSpy = jest.spyOn(callManager, 'dequeueWsEvents').mockImplementation(function () {
848
+ return undefined;
849
+ });
850
+ callManager.updateActiveMobius(httpUrl);
851
+ mobiusListenerWrapper = getMobiusListenerWrapper();
852
+ _context18.next = 1;
853
+ return mobiusListenerWrapper(setupEvent);
854
+ case 1:
855
+ expect(dequeueSpy).toHaveBeenCalledWith(setupEvent);
856
+ dequeueSpy.mockRestore();
857
+ case 2:
858
+ case "end":
859
+ return _context18.stop();
860
+ }
861
+ }, _callee18);
862
+ })));
740
863
  });
741
864
  //# sourceMappingURL=callManager.test.js.map