@webex/calling 3.12.0-task-refactor.1 → 3.12.0-webex-services-ready.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/dist/CallHistory/CallHistory.js +68 -51
  2. package/dist/CallHistory/CallHistory.js.map +1 -1
  3. package/dist/CallRecording/CallRecording.js +160 -0
  4. package/dist/CallRecording/CallRecording.js.map +1 -0
  5. package/dist/CallRecording/CallRecording.test.js +257 -0
  6. package/dist/CallRecording/CallRecording.test.js.map +1 -0
  7. package/dist/CallRecording/WxcCallRecordingConnector.js +577 -0
  8. package/dist/CallRecording/WxcCallRecordingConnector.js.map +1 -0
  9. package/dist/CallRecording/WxcCallRecordingConnector.test.js +652 -0
  10. package/dist/CallRecording/WxcCallRecordingConnector.test.js.map +1 -0
  11. package/dist/CallRecording/callRecordingFixtures.js +235 -0
  12. package/dist/CallRecording/callRecordingFixtures.js.map +1 -0
  13. package/dist/CallRecording/constants.js +50 -0
  14. package/dist/CallRecording/constants.js.map +1 -0
  15. package/dist/CallRecording/types.js +137 -0
  16. package/dist/CallRecording/types.js.map +1 -0
  17. package/dist/CallRecording/utils.js +42 -0
  18. package/dist/CallRecording/utils.js.map +1 -0
  19. package/dist/CallRecording/utils.test.js +97 -0
  20. package/dist/CallRecording/utils.test.js.map +1 -0
  21. package/dist/CallingClient/CallingClient.js +520 -193
  22. package/dist/CallingClient/CallingClient.js.map +1 -1
  23. package/dist/CallingClient/CallingClient.test.js +607 -133
  24. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  25. package/dist/CallingClient/calling/call.js +599 -454
  26. package/dist/CallingClient/calling/call.js.map +1 -1
  27. package/dist/CallingClient/calling/call.test.js +834 -443
  28. package/dist/CallingClient/calling/call.test.js.map +1 -1
  29. package/dist/CallingClient/calling/callManager.js +88 -31
  30. package/dist/CallingClient/calling/callManager.js.map +1 -1
  31. package/dist/CallingClient/calling/callManager.test.js +123 -0
  32. package/dist/CallingClient/calling/callManager.test.js.map +1 -1
  33. package/dist/CallingClient/calling/types.js +2 -0
  34. package/dist/CallingClient/calling/types.js.map +1 -1
  35. package/dist/CallingClient/constants.js +30 -3
  36. package/dist/CallingClient/constants.js.map +1 -1
  37. package/dist/CallingClient/line/index.js +4 -1
  38. package/dist/CallingClient/line/index.js.map +1 -1
  39. package/dist/CallingClient/line/line.test.js +16 -1
  40. package/dist/CallingClient/line/line.test.js.map +1 -1
  41. package/dist/CallingClient/registration/register.js +740 -407
  42. package/dist/CallingClient/registration/register.js.map +1 -1
  43. package/dist/CallingClient/registration/register.test.js +380 -58
  44. package/dist/CallingClient/registration/register.test.js.map +1 -1
  45. package/dist/CallingClient/registration/types.js.map +1 -1
  46. package/dist/CallingClient/registration/webWorker.js +41 -104
  47. package/dist/CallingClient/registration/webWorker.js.map +1 -1
  48. package/dist/CallingClient/registration/webWorker.test.js +39 -153
  49. package/dist/CallingClient/registration/webWorker.test.js.map +1 -1
  50. package/dist/CallingClient/registration/webWorkerStr.js +1 -1
  51. package/dist/CallingClient/registration/webWorkerStr.js.map +1 -1
  52. package/dist/CallingClient/types.js.map +1 -1
  53. package/dist/CallingClient/utils/constants.js +58 -0
  54. package/dist/CallingClient/utils/constants.js.map +1 -0
  55. package/dist/CallingClient/utils/index.js +63 -0
  56. package/dist/CallingClient/utils/index.js.map +1 -0
  57. package/dist/CallingClient/utils/mobiusSocketMapper.js +122 -0
  58. package/dist/CallingClient/utils/mobiusSocketMapper.js.map +1 -0
  59. package/dist/CallingClient/utils/mobiusSocketMapper.test.js +221 -0
  60. package/dist/CallingClient/utils/mobiusSocketMapper.test.js.map +1 -0
  61. package/dist/CallingClient/utils/request.js +435 -0
  62. package/dist/CallingClient/utils/request.js.map +1 -0
  63. package/dist/CallingClient/utils/request.test.js +999 -0
  64. package/dist/CallingClient/utils/request.test.js.map +1 -0
  65. package/dist/CallingClient/utils/types.js +7 -0
  66. package/dist/CallingClient/utils/types.js.map +1 -0
  67. package/dist/CallingClient/utils/wsFeatureFlag.js +70 -0
  68. package/dist/CallingClient/utils/wsFeatureFlag.js.map +1 -0
  69. package/dist/CallingClient/utils/wsFeatureFlag.test.js +139 -0
  70. package/dist/CallingClient/utils/wsFeatureFlag.test.js.map +1 -0
  71. package/dist/Contacts/ContactsClient.js +13 -11
  72. package/dist/Contacts/ContactsClient.js.map +1 -1
  73. package/dist/Contacts/ContactsClient.test.js +3 -8
  74. package/dist/Contacts/ContactsClient.test.js.map +1 -1
  75. package/dist/Events/types.js +38 -11
  76. package/dist/Events/types.js.map +1 -1
  77. package/dist/Metrics/index.js +63 -2
  78. package/dist/Metrics/index.js.map +1 -1
  79. package/dist/Metrics/index.test.js +357 -1
  80. package/dist/Metrics/index.test.js.map +1 -1
  81. package/dist/Metrics/types.js +19 -1
  82. package/dist/Metrics/types.js.map +1 -1
  83. package/dist/SDKConnector/types.js.map +1 -1
  84. package/dist/api.js +56 -0
  85. package/dist/api.js.map +1 -1
  86. package/dist/common/Utils.js +161 -53
  87. package/dist/common/Utils.js.map +1 -1
  88. package/dist/common/Utils.test.js +207 -46
  89. package/dist/common/Utils.test.js.map +1 -1
  90. package/dist/common/testUtil.js +10 -5
  91. package/dist/common/testUtil.js.map +1 -1
  92. package/dist/common/types.js +3 -0
  93. package/dist/common/types.js.map +1 -1
  94. package/dist/index.js +165 -40
  95. package/dist/index.js.map +1 -1
  96. package/dist/mobius-socket/config.js +24 -0
  97. package/dist/mobius-socket/config.js.map +1 -0
  98. package/dist/mobius-socket/errors.js +143 -0
  99. package/dist/mobius-socket/errors.js.map +1 -0
  100. package/dist/mobius-socket/errors.test.js +20 -0
  101. package/dist/mobius-socket/errors.test.js.map +1 -0
  102. package/dist/mobius-socket/index.js +57 -0
  103. package/dist/mobius-socket/index.js.map +1 -0
  104. package/dist/mobius-socket/mobius-socket-events.test.js +492 -0
  105. package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -0
  106. package/dist/mobius-socket/mobius-socket.js +849 -0
  107. package/dist/mobius-socket/mobius-socket.js.map +1 -0
  108. package/dist/mobius-socket/mobius-socket.test.js +1898 -0
  109. package/dist/mobius-socket/mobius-socket.test.js.map +1 -0
  110. package/dist/mobius-socket/socket/constants.js +55 -0
  111. package/dist/mobius-socket/socket/constants.js.map +1 -0
  112. package/dist/mobius-socket/socket/index.js +15 -0
  113. package/dist/mobius-socket/socket/index.js.map +1 -0
  114. package/dist/mobius-socket/socket/socket-base.js +604 -0
  115. package/dist/mobius-socket/socket/socket-base.js.map +1 -0
  116. package/dist/mobius-socket/socket/socket.js +19 -0
  117. package/dist/mobius-socket/socket/socket.js.map +1 -0
  118. package/dist/mobius-socket/socket/socket.shim.js +26 -0
  119. package/dist/mobius-socket/socket/socket.shim.js.map +1 -0
  120. package/dist/mobius-socket/socket/types.js +7 -0
  121. package/dist/mobius-socket/socket/types.js.map +1 -0
  122. package/dist/mobius-socket/socket.test.js +727 -0
  123. package/dist/mobius-socket/socket.test.js.map +1 -0
  124. package/dist/mobius-socket/test/mocha-helpers.js +23 -0
  125. package/dist/mobius-socket/test/mocha-helpers.js.map +1 -0
  126. package/dist/mobius-socket/test/promise-tick.js +28 -0
  127. package/dist/mobius-socket/test/promise-tick.js.map +1 -0
  128. package/dist/mobius-socket/types.js +7 -0
  129. package/dist/mobius-socket/types.js.map +1 -0
  130. package/dist/module/CallHistory/CallHistory.js +28 -17
  131. package/dist/module/CallRecording/CallRecording.js +56 -0
  132. package/dist/module/CallRecording/WxcCallRecordingConnector.js +257 -0
  133. package/dist/module/CallRecording/callRecordingFixtures.js +201 -0
  134. package/dist/module/CallRecording/constants.js +28 -0
  135. package/dist/module/CallRecording/types.js +19 -0
  136. package/dist/module/CallRecording/utils.js +14 -0
  137. package/dist/module/CallingClient/CallingClient.js +166 -8
  138. package/dist/module/CallingClient/calling/call.js +181 -64
  139. package/dist/module/CallingClient/calling/callManager.js +46 -7
  140. package/dist/module/CallingClient/calling/types.js +2 -0
  141. package/dist/module/CallingClient/constants.js +26 -0
  142. package/dist/module/CallingClient/line/index.js +2 -2
  143. package/dist/module/CallingClient/registration/register.js +247 -63
  144. package/dist/module/CallingClient/registration/webWorker.js +42 -61
  145. package/dist/module/CallingClient/registration/webWorkerStr.js +47 -82
  146. package/dist/module/CallingClient/utils/constants.js +36 -0
  147. package/dist/module/CallingClient/utils/index.js +5 -0
  148. package/dist/module/CallingClient/utils/mobiusSocketMapper.js +72 -0
  149. package/dist/module/CallingClient/utils/request.js +211 -0
  150. package/dist/module/CallingClient/utils/types.js +1 -0
  151. package/dist/module/CallingClient/utils/wsFeatureFlag.js +41 -0
  152. package/dist/module/Contacts/ContactsClient.js +1 -1
  153. package/dist/module/Events/types.js +23 -10
  154. package/dist/module/Metrics/index.js +48 -1
  155. package/dist/module/Metrics/types.js +18 -0
  156. package/dist/module/api.js +3 -2
  157. package/dist/module/common/Utils.js +65 -18
  158. package/dist/module/common/testUtil.js +6 -1
  159. package/dist/module/common/types.js +3 -0
  160. package/dist/module/index.js +7 -3
  161. package/dist/module/mobius-socket/config.js +15 -0
  162. package/dist/module/mobius-socket/errors.js +58 -0
  163. package/dist/module/mobius-socket/index.js +24 -0
  164. package/dist/module/mobius-socket/mobius-socket.js +593 -0
  165. package/dist/module/mobius-socket/socket/constants.js +26 -0
  166. package/dist/module/mobius-socket/socket/index.js +4 -0
  167. package/dist/module/mobius-socket/socket/socket-base.js +368 -0
  168. package/dist/module/mobius-socket/socket/socket.js +9 -0
  169. package/dist/module/mobius-socket/socket/socket.shim.js +12 -0
  170. package/dist/module/mobius-socket/socket/types.js +1 -0
  171. package/dist/module/mobius-socket/types.js +1 -0
  172. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  173. package/dist/types/CallRecording/CallRecording.d.ts +18 -0
  174. package/dist/types/CallRecording/CallRecording.d.ts.map +1 -0
  175. package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts +23 -0
  176. package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts.map +1 -0
  177. package/dist/types/CallRecording/callRecordingFixtures.d.ts +61 -0
  178. package/dist/types/CallRecording/callRecordingFixtures.d.ts.map +1 -0
  179. package/dist/types/CallRecording/constants.d.ts +29 -0
  180. package/dist/types/CallRecording/constants.d.ts.map +1 -0
  181. package/dist/types/CallRecording/types.d.ts +176 -0
  182. package/dist/types/CallRecording/types.d.ts.map +1 -0
  183. package/dist/types/CallRecording/utils.d.ts +3 -0
  184. package/dist/types/CallRecording/utils.d.ts.map +1 -0
  185. package/dist/types/CallingClient/CallingClient.d.ts +10 -1
  186. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  187. package/dist/types/CallingClient/calling/call.d.ts +12 -0
  188. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  189. package/dist/types/CallingClient/calling/callManager.d.ts +4 -2
  190. package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
  191. package/dist/types/CallingClient/calling/types.d.ts +34 -9
  192. package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
  193. package/dist/types/CallingClient/constants.d.ts +26 -0
  194. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  195. package/dist/types/CallingClient/line/index.d.ts +1 -1
  196. package/dist/types/CallingClient/line/index.d.ts.map +1 -1
  197. package/dist/types/CallingClient/registration/register.d.ts +9 -2
  198. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  199. package/dist/types/CallingClient/registration/types.d.ts +6 -3
  200. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  201. package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
  202. package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
  203. package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
  204. package/dist/types/CallingClient/types.d.ts +3 -1
  205. package/dist/types/CallingClient/types.d.ts.map +1 -1
  206. package/dist/types/CallingClient/utils/constants.d.ts +35 -0
  207. package/dist/types/CallingClient/utils/constants.d.ts.map +1 -0
  208. package/dist/types/CallingClient/utils/index.d.ts +6 -0
  209. package/dist/types/CallingClient/utils/index.d.ts.map +1 -0
  210. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts +5 -0
  211. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts.map +1 -0
  212. package/dist/types/CallingClient/utils/request.d.ts +28 -0
  213. package/dist/types/CallingClient/utils/request.d.ts.map +1 -0
  214. package/dist/types/CallingClient/utils/types.d.ts +34 -0
  215. package/dist/types/CallingClient/utils/types.d.ts.map +1 -0
  216. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts +4 -0
  217. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts.map +1 -0
  218. package/dist/types/Events/types.d.ts +79 -15
  219. package/dist/types/Events/types.d.ts.map +1 -1
  220. package/dist/types/Metrics/index.d.ts.map +1 -1
  221. package/dist/types/Metrics/types.d.ts +19 -2
  222. package/dist/types/Metrics/types.d.ts.map +1 -1
  223. package/dist/types/SDKConnector/types.d.ts +39 -12
  224. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  225. package/dist/types/api.d.ts +6 -4
  226. package/dist/types/api.d.ts.map +1 -1
  227. package/dist/types/common/Utils.d.ts +11 -3
  228. package/dist/types/common/Utils.d.ts.map +1 -1
  229. package/dist/types/common/testUtil.d.ts +5 -1
  230. package/dist/types/common/testUtil.d.ts.map +1 -1
  231. package/dist/types/common/types.d.ts +9 -1
  232. package/dist/types/common/types.d.ts.map +1 -1
  233. package/dist/types/index.d.ts +8 -3
  234. package/dist/types/index.d.ts.map +1 -1
  235. package/dist/types/mobius-socket/config.d.ts +17 -0
  236. package/dist/types/mobius-socket/config.d.ts.map +1 -0
  237. package/dist/types/mobius-socket/errors.d.ts +32 -0
  238. package/dist/types/mobius-socket/errors.d.ts.map +1 -0
  239. package/dist/types/mobius-socket/index.d.ts +14 -0
  240. package/dist/types/mobius-socket/index.d.ts.map +1 -0
  241. package/dist/types/mobius-socket/mobius-socket.d.ts +48 -0
  242. package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -0
  243. package/dist/types/mobius-socket/socket/constants.d.ts +27 -0
  244. package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -0
  245. package/dist/types/mobius-socket/socket/index.d.ts +5 -0
  246. package/dist/types/mobius-socket/socket/index.d.ts.map +1 -0
  247. package/dist/types/mobius-socket/socket/socket-base.d.ts +43 -0
  248. package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -0
  249. package/dist/types/mobius-socket/socket/socket.d.ts +6 -0
  250. package/dist/types/mobius-socket/socket/socket.d.ts.map +1 -0
  251. package/dist/types/mobius-socket/socket/socket.shim.d.ts +6 -0
  252. package/dist/types/mobius-socket/socket/socket.shim.d.ts.map +1 -0
  253. package/dist/types/mobius-socket/socket/types.d.ts +61 -0
  254. package/dist/types/mobius-socket/socket/types.d.ts.map +1 -0
  255. package/dist/types/mobius-socket/types.d.ts +21 -0
  256. package/dist/types/mobius-socket/types.d.ts.map +1 -0
  257. package/package.json +20 -5
  258. package/src/mobius-socket/socket/socket.shim.ts +22 -0
  259. package/src/mobius-socket/socket/socket.ts +14 -0
@@ -0,0 +1,201 @@
1
+ import { MOBIUS_EVENT_KEYS, RECORDING_EVENT_SUBTYPE, RECORDING_EVENT_TYPE, } from '../Events/types';
2
+ import { RecordingStatus } from './types';
3
+ export const CALL_SESSION_ID = 'a1b2c3d4-1111-2222-3333-444455556666';
4
+ export const RECORDING_ONE = {
5
+ id: '11111111-aaaa-bbbb-cccc-222222222222',
6
+ topic: 'Call with Alice',
7
+ createTime: '2024-05-01T10:01:05.000Z',
8
+ timeRecorded: '2024-05-01T10:00:00.000Z',
9
+ format: 'MP3',
10
+ serviceType: 'calling',
11
+ durationSeconds: 65,
12
+ sizeBytes: 1048576,
13
+ status: RecordingStatus.AVAILABLE,
14
+ ownerId: '8a67806f-fc4d-446b-a131-31e71ea5b0e9',
15
+ ownerEmail: 'owner@cisco.com',
16
+ ownerType: 'user',
17
+ storageRegion: 'US',
18
+ serviceData: {
19
+ locationId: 'loc-1',
20
+ callSessionId: CALL_SESSION_ID,
21
+ },
22
+ };
23
+ export const RECORDING_TWO = {
24
+ id: '33333333-dddd-eeee-ffff-444444444444',
25
+ topic: 'Call with Bob',
26
+ createTime: '2024-05-02T11:02:05.000Z',
27
+ timeRecorded: '2024-05-02T11:00:00.000Z',
28
+ format: 'MP3',
29
+ serviceType: 'calling',
30
+ durationSeconds: 120,
31
+ sizeBytes: 2097152,
32
+ status: RecordingStatus.AVAILABLE,
33
+ ownerId: '8a67806f-fc4d-446b-a131-31e71ea5b0e9',
34
+ ownerEmail: 'owner@cisco.com',
35
+ ownerType: 'user',
36
+ storageRegion: 'US',
37
+ serviceData: {
38
+ locationId: 'loc-1',
39
+ callSessionId: 'ffffffff-9999-8888-7777-666666666666',
40
+ },
41
+ };
42
+ export const MOCK_RECORDING_LIST_BODY = {
43
+ statusCode: 200,
44
+ body: {
45
+ items: [RECORDING_ONE, RECORDING_TWO],
46
+ },
47
+ };
48
+ export const MOCK_EMPTY_RECORDING_LIST_BODY = {
49
+ statusCode: 200,
50
+ body: {
51
+ items: [],
52
+ },
53
+ };
54
+ export const MOCK_RECORDING_BODY = {
55
+ statusCode: 200,
56
+ body: RECORDING_ONE,
57
+ };
58
+ export const RECORDING_OWNER_ID = '8a67806f-fc4d-446b-a131-31e71ea5b0e9';
59
+ export const RECORDING_REMOTE_PARTY_ID = '0fea4a63-4e27-46ee-99c3-2472cb12bf68';
60
+ export const MOCK_RECORDING_METADATA = {
61
+ id: RECORDING_ONE.id,
62
+ callSessionId: CALL_SESSION_ID,
63
+ owner: {
64
+ ownerID: RECORDING_OWNER_ID,
65
+ ownerEmail: 'owner@cisco.com',
66
+ ownerName: 'Mark',
67
+ orgID: '1704d30d-a131-4bc7-9449-948487643793',
68
+ },
69
+ participants: [
70
+ { id: RECORDING_OWNER_ID, name: 'Mark', email: 'owner@cisco.com' },
71
+ { id: RECORDING_REMOTE_PARTY_ID, name: 'Alice', email: 'alice@cisco.com' },
72
+ ],
73
+ mediaStreams: [{ streamId: 'audio-1', type: 'audio', codec: 'opus', durationMS: 65000 }],
74
+ extensionData: {
75
+ callData: { direction: 'OUTGOING' },
76
+ acd: {},
77
+ redirectInfo: {},
78
+ },
79
+ serviceData: {
80
+ callRecordingId: RECORDING_ONE.id,
81
+ locationId: 'loc-1',
82
+ callSessionId: CALL_SESSION_ID,
83
+ personality: 'originator',
84
+ callingParty: {
85
+ actor: { type: 'USER', id: RECORDING_OWNER_ID, email: 'owner@cisco.com' },
86
+ number: '9902',
87
+ name: 'Mark',
88
+ },
89
+ calledParty: {
90
+ actor: { type: 'USER', id: RECORDING_REMOTE_PARTY_ID, email: 'alice@cisco.com' },
91
+ number: '9903',
92
+ name: 'Alice',
93
+ },
94
+ },
95
+ };
96
+ export const MOCK_RECORDING_METADATA_BODY = {
97
+ statusCode: 200,
98
+ body: MOCK_RECORDING_METADATA,
99
+ };
100
+ export const ERROR_DETAILS_400 = {
101
+ statusCode: 400,
102
+ data: {
103
+ error: '400 Bad request',
104
+ },
105
+ message: 'FAILURE',
106
+ };
107
+ export const ERROR_DETAILS_401 = {
108
+ statusCode: 401,
109
+ data: {
110
+ error: 'User is unauthorised, possible token expiry',
111
+ },
112
+ message: 'FAILURE',
113
+ };
114
+ export const ERROR_DETAILS_404 = {
115
+ statusCode: 404,
116
+ data: {
117
+ error: 'User info not found',
118
+ },
119
+ message: 'FAILURE',
120
+ };
121
+ const RECORDING_ACTIVITY = {
122
+ id: 'activity-1',
123
+ objectType: 'activity',
124
+ verb: 'add',
125
+ published: '2024-05-01T10:01:05.000Z',
126
+ actor: {
127
+ id: '8a67806f-fc4d-446b-a131-31e71ea5b0e9',
128
+ objectType: 'person',
129
+ emailAddress: 'owner@cisco.com',
130
+ },
131
+ object: {
132
+ id: RECORDING_ONE.id,
133
+ objectType: 'wxCallingCallRecording',
134
+ callSessionId: CALL_SESSION_ID,
135
+ durationSeconds: 65,
136
+ sizeBytes: 1048576,
137
+ },
138
+ };
139
+ export const MOCK_RECORDING_CREATED_EVENT = {
140
+ id: 'event-created',
141
+ data: {
142
+ activity: RECORDING_ACTIVITY,
143
+ eventType: RECORDING_EVENT_TYPE.CREATED,
144
+ },
145
+ timestamp: 12345,
146
+ trackingId: 'tracking-id',
147
+ };
148
+ export const MOCK_RECORDING_UPDATED_EVENT = {
149
+ id: 'event-updated',
150
+ data: {
151
+ activity: RECORDING_ACTIVITY,
152
+ eventType: RECORDING_EVENT_TYPE.UPDATED,
153
+ eventSubType: RECORDING_EVENT_SUBTYPE.SUMMARY_CREATE,
154
+ },
155
+ timestamp: 12346,
156
+ trackingId: 'tracking-id',
157
+ };
158
+ export const MOCK_RECORDING_DELETED_EVENT = {
159
+ id: 'event-deleted',
160
+ data: {
161
+ activity: RECORDING_ACTIVITY,
162
+ eventType: RECORDING_EVENT_TYPE.DELETED,
163
+ },
164
+ timestamp: 12347,
165
+ trackingId: 'tracking-id',
166
+ };
167
+ export const MOCK_RECORDING_TRASH_EVENT = {
168
+ id: 'event-trash',
169
+ data: {
170
+ activity: RECORDING_ACTIVITY,
171
+ eventType: RECORDING_EVENT_TYPE.UPDATED,
172
+ eventSubType: RECORDING_EVENT_SUBTYPE.TRASH,
173
+ },
174
+ timestamp: 12348,
175
+ trackingId: 'tracking-id',
176
+ };
177
+ export const MOCK_RECORDING_PURGE_EVENT = {
178
+ id: 'event-purge',
179
+ data: {
180
+ activity: RECORDING_ACTIVITY,
181
+ eventType: RECORDING_EVENT_TYPE.UPDATED,
182
+ eventSubType: RECORDING_EVENT_SUBTYPE.PURGE,
183
+ },
184
+ timestamp: 12349,
185
+ trackingId: 'tracking-id',
186
+ };
187
+ export const MOCK_RECORDING_RESTORE_EVENT = {
188
+ id: 'event-restore',
189
+ data: {
190
+ activity: RECORDING_ACTIVITY,
191
+ eventType: RECORDING_EVENT_TYPE.UPDATED,
192
+ eventSubType: RECORDING_EVENT_SUBTYPE.RESTORE,
193
+ },
194
+ timestamp: 12350,
195
+ trackingId: 'tracking-id',
196
+ };
197
+ export const RECORDING_MERCURY_KEYS = {
198
+ CREATED: MOBIUS_EVENT_KEYS.RECORDING_EVENT_CREATED,
199
+ UPDATED: MOBIUS_EVENT_KEYS.RECORDING_EVENT_UPDATED,
200
+ DELETED: MOBIUS_EVENT_KEYS.RECORDING_EVENT_DELETED,
201
+ };
@@ -0,0 +1,28 @@
1
+ export const CALL_RECORDING_FILE = 'CallRecording';
2
+ export const CONVERGED_RECORDINGS = 'convergedRecordings';
3
+ export const SOFT_DELETE = 'softDelete';
4
+ export const METADATA = 'metadata';
5
+ export const FROM = 'from';
6
+ export const TO = 'to';
7
+ export const STATUS = 'status';
8
+ export const MAX = 'max';
9
+ export const SERVICE_TYPE = 'serviceType';
10
+ export const FORMAT = 'format';
11
+ export const OWNER_TYPE = 'ownerType';
12
+ export const STORAGE_REGION = 'storageRegion';
13
+ export const LOCATION_ID = 'locationId';
14
+ export const TOPIC = 'topic';
15
+ export const DEFAULT_STATUS = 'available';
16
+ export const DEFAULT_MAX = 30;
17
+ export const DEFAULT_NUMBER_OF_DAYS = 30;
18
+ export const WEBEX_USER_REQUEST_HEADER = 'WebexUserRequest';
19
+ export const RECORDING_NOT_FOUND_MESSAGE = 'No recordings found for the given call session id.';
20
+ export const METHODS = {
21
+ INITIALIZE_BACKEND_CONNECTOR: 'initializeBackendConnector',
22
+ GET_CALL_RECORDING: 'getCallRecording',
23
+ GET_RECORDINGS: 'getRecordings',
24
+ GET_RECORDING: 'getRecording',
25
+ GET_RECORDINGS_BY_CALL_SESSION_ID: 'getRecordingsByCallSessionId',
26
+ GET_RECORDING_METADATA: 'getRecordingMetadata',
27
+ DELETE_RECORDING: 'deleteRecording',
28
+ };
@@ -0,0 +1,19 @@
1
+ export var RecordingStatus;
2
+ (function (RecordingStatus) {
3
+ RecordingStatus["AVAILABLE"] = "available";
4
+ RecordingStatus["DELETED"] = "deleted";
5
+ })(RecordingStatus || (RecordingStatus = {}));
6
+ export var AiGenerationStatus;
7
+ (function (AiGenerationStatus) {
8
+ AiGenerationStatus["NOT_STARTED"] = "NOT_STARTED";
9
+ AiGenerationStatus["IN_PROGRESS"] = "IN_PROGRESS";
10
+ AiGenerationStatus["COMPLETED"] = "COMPLETED";
11
+ AiGenerationStatus["FAILED"] = "FAILED";
12
+ })(AiGenerationStatus || (AiGenerationStatus = {}));
13
+ export var RecordingRequestType;
14
+ (function (RecordingRequestType) {
15
+ RecordingRequestType["LIST"] = "list";
16
+ RecordingRequestType["DETAIL"] = "detail";
17
+ RecordingRequestType["METADATA"] = "metadata";
18
+ RecordingRequestType["BY_CALL_SESSION"] = "byCallSession";
19
+ })(RecordingRequestType || (RecordingRequestType = {}));
@@ -0,0 +1,14 @@
1
+ export const getRemoteParty = (serviceData) => {
2
+ if (!serviceData) {
3
+ return undefined;
4
+ }
5
+ const { personality, callingParty, calledParty } = serviceData;
6
+ switch (personality) {
7
+ case 'originator':
8
+ return calledParty;
9
+ case 'terminator':
10
+ return callingParty;
11
+ default:
12
+ return undefined;
13
+ }
14
+ };
@@ -1,19 +1,21 @@
1
1
  import * as Media from '@webex/internal-media-core';
2
2
  import { Mutex } from 'async-mutex';
3
3
  import { METHOD_START_MESSAGE } from '../common/constants';
4
- import { filterMobiusUris, handleCallingClientErrors, uploadLogs, validateServiceData, } from '../common/Utils';
4
+ import { filterMobiusUris, handleCallingClientErrors, normalizeMobiusUris, isValidServiceDomain, uploadLogs, validateServiceData, } from '../common/Utils';
5
5
  import { LOGGER } from '../Logger/types';
6
6
  import SDKConnector from '../SDKConnector';
7
7
  import { Eventing } from '../Events/impl';
8
8
  import { MOBIUS_EVENT_KEYS, SessionType, CALLING_CLIENT_EVENT_KEYS, } from '../Events/types';
9
9
  import { ServiceIndicator, ALLOWED_SERVICES, HTTP_METHODS, RegistrationStatus, } from '../common/types';
10
+ import { MobiusEventType } from './calling/types';
10
11
  import log from '../Logger';
11
12
  import { getCallManager } from './calling/callManager';
12
- import { CALLING_CLIENT_FILE, CALLS_CLEARED_HANDLER_UTIL, CALLING_USER_AGENT, CISCO_DEVICE_URL, DISCOVERY_URL, GET_MOBIUS_SERVERS_UTIL, SPARK_USER_AGENT, URL_ENDPOINT, API_V1, METHODS, NETWORK_FLAP_TIMEOUT, } from './constants';
13
+ import { CALLING_CLIENT_FILE, CALLS_CLEARED_HANDLER_UTIL, CALLING_USER_AGENT, CISCO_DEVICE_URL, DISCOVERY_URL, GET_MOBIUS_SERVERS_UTIL, SPARK_USER_AGENT, URL_ENDPOINT, API_V1, METHODS, NETWORK_FLAP_TIMEOUT, DEVICES_ENDPOINT_RESOURCE, WCC_CALLING_RTMS_DOMAIN, } from './constants';
13
14
  import Line from './line';
14
- import { METRIC_EVENT, REG_ACTION, METRIC_TYPE, CONNECTION_ACTION, MOBIUS_SERVER_ACTION, } from '../Metrics/types';
15
+ import { METRIC_EVENT, REG_ACTION, METRIC_TYPE, CONNECTION_ACTION, MOBIUS_SERVER_ACTION, MOBIUS_SOCKET_ACTION, } from '../Metrics/types';
15
16
  import { getMetricManager } from '../Metrics';
16
17
  import windowsChromiumIceWarmup from './windowsChromiumIceWarmupUtils';
18
+ import { APIRequest } from './utils/request';
17
19
  export class CallingClient extends Eventing {
18
20
  sdkConnector;
19
21
  webex;
@@ -21,12 +23,16 @@ export class CallingClient extends Eventing {
21
23
  callManager;
22
24
  metricManager;
23
25
  sdkConfig;
26
+ serviceData;
24
27
  primaryMobiusUris;
25
28
  backupMobiusUris;
29
+ primaryWssMobiusUris;
30
+ backupWssMobiusUris;
26
31
  mobiusClusters;
27
32
  mobiusHost;
28
33
  mediaEngine;
29
34
  lineDict = {};
35
+ apiRequest;
30
36
  isNetworkDown = false;
31
37
  networkDownTimestamp = '';
32
38
  networkUpTimestamp = '';
@@ -45,14 +51,14 @@ export class CallingClient extends Eventing {
45
51
  this.mutex = new Mutex();
46
52
  this.webex = this.sdkConnector.getWebex();
47
53
  this.sdkConfig = config;
48
- const serviceData = this.sdkConfig?.serviceData?.indicator
54
+ this.serviceData = this.sdkConfig?.serviceData?.indicator
49
55
  ? this.sdkConfig.serviceData
50
56
  : { indicator: ServiceIndicator.CALLING, domain: '' };
51
57
  const logLevel = this.sdkConfig?.logger?.level ? this.sdkConfig.logger.level : LOGGER.ERROR;
52
58
  log.setLogger(logLevel, CALLING_CLIENT_FILE);
53
- validateServiceData(serviceData);
54
- this.callManager = getCallManager(this.webex, serviceData.indicator);
55
- this.metricManager = getMetricManager(this.webex, serviceData.indicator);
59
+ validateServiceData(this.serviceData);
60
+ this.callManager = getCallManager(this.webex, this.serviceData.indicator);
61
+ this.metricManager = getMetricManager(this.webex, this.serviceData.indicator);
56
62
  this.mediaEngine = Media;
57
63
  const adaptedLogger = {
58
64
  log: (...args) => webex.logger.log(args.join(' : ')),
@@ -65,12 +71,20 @@ export class CallingClient extends Eventing {
65
71
  this.mediaEngine.setLogger(adaptedLogger);
66
72
  this.primaryMobiusUris = [];
67
73
  this.backupMobiusUris = [];
74
+ this.primaryWssMobiusUris = [];
75
+ this.backupWssMobiusUris = [];
68
76
  this.mobiusClusters = this.webex.internal.services.getMobiusClusters();
69
77
  this.mobiusHost = '';
78
+ this.apiRequest = APIRequest.getInstance({ webex: this.webex });
70
79
  this.registerSessionsListener();
71
80
  this.registerCallsClearedListener();
72
81
  }
73
82
  async init() {
83
+ const loggerContext = {
84
+ file: CALLING_CLIENT_FILE,
85
+ method: METHODS.INIT,
86
+ };
87
+ log.info(METHOD_START_MESSAGE, loggerContext);
74
88
  if (typeof window !== 'undefined' && window?.navigator?.userAgent) {
75
89
  const ua = window.navigator.userAgent;
76
90
  if (ua.toLowerCase().includes('windows')) {
@@ -97,8 +111,50 @@ export class CallingClient extends Eventing {
97
111
  }
98
112
  }
99
113
  await this.getMobiusServers();
114
+ if (this.apiRequest.isSocketEnabled()) {
115
+ this.apiRequest.registerMobiusSocketConnectionListener({
116
+ onConnected: () => this.emit(CALLING_CLIENT_EVENT_KEYS.MOBIUS_SOCKET_CONNECTED),
117
+ onDisconnected: (reason) => this.emit(CALLING_CLIENT_EVENT_KEYS.MOBIUS_SOCKET_DISCONNECTED, { reason }),
118
+ });
119
+ await this.connectToMobiusSocket();
120
+ this.apiRequest.registerMobiusSocketListener(this.handleMobiusAsyncEvent);
121
+ }
122
+ if (this.serviceData.indicator === ServiceIndicator.CONTACT_CENTER &&
123
+ !this.serviceData.domain) {
124
+ const rtmsDomain = this.getRTMSDomain();
125
+ this.serviceData.domain = rtmsDomain;
126
+ if (this.sdkConfig?.serviceData) {
127
+ this.sdkConfig.serviceData.domain = this.serviceData.domain;
128
+ }
129
+ }
130
+ if (!isValidServiceDomain(this.serviceData)) {
131
+ throw new Error('Invalid service domain.');
132
+ }
100
133
  await this.createLine();
101
134
  this.setupNetworkEventListeners();
135
+ log.log('CallingClient initialization complete', loggerContext);
136
+ }
137
+ getRTMSDomain() {
138
+ log.info('Fetching RTMS domain from service catalog', {
139
+ file: CALLING_CLIENT_FILE,
140
+ method: METHODS.GET_RTMS_DOMAIN,
141
+ });
142
+ try {
143
+ const rtmsURL = this.webex.internal.services.get(WCC_CALLING_RTMS_DOMAIN);
144
+ const url = new URL(rtmsURL);
145
+ log.info(`RTMS domain resolved from catalog: ${url.hostname}`, {
146
+ file: CALLING_CLIENT_FILE,
147
+ method: METHODS.GET_RTMS_DOMAIN,
148
+ });
149
+ return url.hostname;
150
+ }
151
+ catch (error) {
152
+ log.warn(`Failed to fetch RTMS domain from service catalog: ${error}`, {
153
+ file: CALLING_CLIENT_FILE,
154
+ method: METHODS.GET_RTMS_DOMAIN,
155
+ });
156
+ return '';
157
+ }
102
158
  }
103
159
  async checkNetworkReachability() {
104
160
  try {
@@ -311,6 +367,8 @@ export class CallingClient extends Eventing {
311
367
  const mobiusUris = filterMobiusUris(mobiusServers, this.mobiusHost);
312
368
  this.primaryMobiusUris = mobiusUris.primary;
313
369
  this.backupMobiusUris = mobiusUris.backup;
370
+ this.primaryWssMobiusUris = mobiusUris.primaryWss;
371
+ this.backupWssMobiusUris = mobiusUris.backupWss;
314
372
  log.log(`Final list of Mobius Servers, primary: ${mobiusUris.primary} and backup: ${mobiusUris.backup}`, {
315
373
  file: CALLING_CLIENT_FILE,
316
374
  method: GET_MOBIUS_SERVERS_UTIL,
@@ -346,6 +404,54 @@ export class CallingClient extends Eventing {
346
404
  this.primaryMobiusUris = [`${this.mobiusHost}${URL_ENDPOINT}`];
347
405
  }
348
406
  }
407
+ async connectToMobiusSocket() {
408
+ const loggerContext = {
409
+ file: CALLING_CLIENT_FILE,
410
+ method: METHODS.CONNECT_TO_MOBIUS_SOCKET,
411
+ };
412
+ log.info(METHOD_START_MESSAGE, loggerContext);
413
+ if (!this.primaryWssMobiusUris.length) {
414
+ log.warn('No WSS URIs available from Mobius discovery for primary, skipping socket connection', loggerContext);
415
+ return;
416
+ }
417
+ for (const wssUri of this.primaryWssMobiusUris) {
418
+ try {
419
+ log.log(`Trying primary WSS URI: ${wssUri}`, loggerContext);
420
+ await this.apiRequest.connectToMobiusSocket(wssUri);
421
+ log.log(`Successfully connected to Mobius socket on primary WSS URI: ${wssUri}`, loggerContext);
422
+ return;
423
+ }
424
+ catch (err) {
425
+ log.warn(`Primary WSS URI connection failed for ${wssUri}: ${err}`, loggerContext);
426
+ }
427
+ }
428
+ log.warn('All primary WSS URI connection attempts failed', loggerContext);
429
+ }
430
+ handleMobiusAsyncEvent = async (event) => {
431
+ const loggerContext = {
432
+ file: CALLING_CLIENT_FILE,
433
+ method: METHODS.HANDLE_MOBIUS_ASYNC_EVENT,
434
+ };
435
+ const eventType = event?.data.eventType;
436
+ log.trace(`Mobius async event received - eventType: ${eventType ?? 'undefined'}`, loggerContext);
437
+ if (!eventType) {
438
+ log.warn('Dropping unsupported mobius socket payload', loggerContext);
439
+ return;
440
+ }
441
+ if (eventType === MobiusEventType.REGISTRATION_DOWN) {
442
+ log.warn(`Received ${eventType} event from Mobius.`, loggerContext);
443
+ const line = Object.values(this.lineDict)[0];
444
+ if (!line) {
445
+ log.warn('No line found, skipping registration down event', loggerContext);
446
+ return;
447
+ }
448
+ await line.registration.handleRegistrationDownEvent(event);
449
+ this.metricManager.submitMobiusSocketMetric(METRIC_EVENT.MOBIUS_SOCKET_ERROR, MOBIUS_SOCKET_ACTION.REGISTRATION_DOWN, METRIC_TYPE.BEHAVIORAL, undefined, event?.trackingId, undefined, eventType);
450
+ return;
451
+ }
452
+ this.callManager.dequeueWsEvents(event);
453
+ log.trace(`Mobius async event dispatched to CallManager - eventType: ${eventType}`, loggerContext);
454
+ };
349
455
  registerCallsClearedListener() {
350
456
  log.info(METHOD_START_MESSAGE, {
351
457
  file: CALLING_CLIENT_FILE,
@@ -404,12 +510,61 @@ export class CallingClient extends Eventing {
404
510
  file: CALLING_CLIENT_FILE,
405
511
  method: METHODS.CREATE_LINE,
406
512
  });
407
- const line = new Line(this.webex.internal.device.userId, this.webex.internal.device.url, this.mutex, this.primaryMobiusUris, this.backupMobiusUris, this.getLoggingLevel(), this.sdkConfig?.serviceData, this.sdkConfig?.jwe);
513
+ const socketEnabled = this.apiRequest.isSocketEnabled();
514
+ const primaryUris = socketEnabled && this.primaryWssMobiusUris.length
515
+ ? normalizeMobiusUris(this.primaryWssMobiusUris)
516
+ : this.primaryMobiusUris;
517
+ const backupUris = socketEnabled && this.backupWssMobiusUris.length
518
+ ? normalizeMobiusUris(this.backupWssMobiusUris)
519
+ : this.backupMobiusUris;
520
+ const line = new Line(this.webex.internal.device.userId, this.webex.internal.device.url, this.mutex, primaryUris, backupUris, this.getLoggingLevel(), this.serviceData, this.sdkConfig?.jwe);
408
521
  this.lineDict[line.lineId] = line;
409
522
  }
410
523
  getLines() {
411
524
  return this.lineDict;
412
525
  }
526
+ async getDevices(userId) {
527
+ const userid = userId || this.webex.internal.device.userId;
528
+ if (!userid) {
529
+ throw new Error('userId is required to fetch devices');
530
+ }
531
+ log.info(METHOD_START_MESSAGE, { file: CALLING_CLIENT_FILE, method: METHODS.GET_DEVICES });
532
+ const mobiusUrls = [...this.primaryMobiusUris, ...this.backupMobiusUris];
533
+ if (mobiusUrls.length === 0) {
534
+ throw new Error('Mobius URLs are not available');
535
+ }
536
+ let finalError;
537
+ for (const mobiusUrl of mobiusUrls) {
538
+ const normalizedMobiusUrl = mobiusUrl.replace(/\/+$/, '/');
539
+ const uri = `${normalizedMobiusUrl}${DEVICES_ENDPOINT_RESOURCE}?userid=${encodeURIComponent(userid)}`;
540
+ try {
541
+ const response = (await this.webex.request({
542
+ uri,
543
+ method: HTTP_METHODS.GET,
544
+ service: ALLOWED_SERVICES.MOBIUS,
545
+ headers: {
546
+ [CISCO_DEVICE_URL]: this.webex.internal.device.url,
547
+ [SPARK_USER_AGENT]: CALLING_USER_AGENT,
548
+ },
549
+ }));
550
+ if (response.statusCode !== 200) {
551
+ throw new Error(`API call failed with ${response.statusCode}`);
552
+ }
553
+ const body = response.body;
554
+ Object.values(this.lineDict)[0].registration.setDeviceInfo(body);
555
+ Object.values(this.lineDict)[0].registration.setActiveMobiusUrl(normalizedMobiusUrl);
556
+ return body.devices ?? [];
557
+ }
558
+ catch (error) {
559
+ finalError = error;
560
+ }
561
+ }
562
+ log.error(`Failed to fetch devices for userId ${userId}: ${JSON.stringify(finalError)}`, {
563
+ file: CALLING_CLIENT_FILE,
564
+ method: METHODS.GET_DEVICES,
565
+ });
566
+ throw finalError;
567
+ }
413
568
  getActiveCalls() {
414
569
  const activeCalls = {};
415
570
  const calls = this.callManager.getActiveCalls();
@@ -432,6 +587,9 @@ export class CallingClient extends Eventing {
432
587
  });
433
588
  return connectCall;
434
589
  }
590
+ isMobiusSocketConnected() {
591
+ return this.apiRequest.isSocketEnabled() && this.apiRequest.isSocketConnected();
592
+ }
435
593
  async uploadLogs() {
436
594
  const result = await uploadLogs({}, true);
437
595
  if (!result) {