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

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 (255) hide show
  1. package/dist/CallRecording/CallRecording.js +158 -0
  2. package/dist/CallRecording/CallRecording.js.map +1 -0
  3. package/dist/CallRecording/CallRecording.test.js +257 -0
  4. package/dist/CallRecording/CallRecording.test.js.map +1 -0
  5. package/dist/CallRecording/WxcCallRecordingConnector.js +576 -0
  6. package/dist/CallRecording/WxcCallRecordingConnector.js.map +1 -0
  7. package/dist/CallRecording/WxcCallRecordingConnector.test.js +651 -0
  8. package/dist/CallRecording/WxcCallRecordingConnector.test.js.map +1 -0
  9. package/dist/CallRecording/callRecordingFixtures.js +235 -0
  10. package/dist/CallRecording/callRecordingFixtures.js.map +1 -0
  11. package/dist/CallRecording/constants.js +49 -0
  12. package/dist/CallRecording/constants.js.map +1 -0
  13. package/dist/CallRecording/types.js +136 -0
  14. package/dist/CallRecording/types.js.map +1 -0
  15. package/dist/CallRecording/utils.js +42 -0
  16. package/dist/CallRecording/utils.js.map +1 -0
  17. package/dist/CallRecording/utils.test.js +97 -0
  18. package/dist/CallRecording/utils.test.js.map +1 -0
  19. package/dist/CallingClient/CallingClient.js +454 -224
  20. package/dist/CallingClient/CallingClient.js.map +1 -1
  21. package/dist/CallingClient/CallingClient.test.js +513 -154
  22. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  23. package/dist/CallingClient/calling/call.js +589 -445
  24. package/dist/CallingClient/calling/call.js.map +1 -1
  25. package/dist/CallingClient/calling/call.test.js +695 -445
  26. package/dist/CallingClient/calling/call.test.js.map +1 -1
  27. package/dist/CallingClient/calling/callManager.js +81 -31
  28. package/dist/CallingClient/calling/callManager.js.map +1 -1
  29. package/dist/CallingClient/calling/callManager.test.js +123 -0
  30. package/dist/CallingClient/calling/callManager.test.js.map +1 -1
  31. package/dist/CallingClient/calling/types.js +2 -0
  32. package/dist/CallingClient/calling/types.js.map +1 -1
  33. package/dist/CallingClient/constants.js +28 -3
  34. package/dist/CallingClient/constants.js.map +1 -1
  35. package/dist/CallingClient/line/index.js +4 -1
  36. package/dist/CallingClient/line/index.js.map +1 -1
  37. package/dist/CallingClient/line/line.test.js +16 -1
  38. package/dist/CallingClient/line/line.test.js.map +1 -1
  39. package/dist/CallingClient/registration/register.js +724 -407
  40. package/dist/CallingClient/registration/register.js.map +1 -1
  41. package/dist/CallingClient/registration/register.test.js +380 -58
  42. package/dist/CallingClient/registration/register.test.js.map +1 -1
  43. package/dist/CallingClient/registration/types.js.map +1 -1
  44. package/dist/CallingClient/registration/webWorker.js +41 -104
  45. package/dist/CallingClient/registration/webWorker.js.map +1 -1
  46. package/dist/CallingClient/registration/webWorker.test.js +39 -153
  47. package/dist/CallingClient/registration/webWorker.test.js.map +1 -1
  48. package/dist/CallingClient/registration/webWorkerStr.js +1 -1
  49. package/dist/CallingClient/registration/webWorkerStr.js.map +1 -1
  50. package/dist/CallingClient/types.js.map +1 -1
  51. package/dist/CallingClient/utils/constants.js +58 -0
  52. package/dist/CallingClient/utils/constants.js.map +1 -0
  53. package/dist/CallingClient/utils/index.js +63 -0
  54. package/dist/CallingClient/utils/index.js.map +1 -0
  55. package/dist/CallingClient/utils/mobiusSocketMapper.js +122 -0
  56. package/dist/CallingClient/utils/mobiusSocketMapper.js.map +1 -0
  57. package/dist/CallingClient/utils/mobiusSocketMapper.test.js +221 -0
  58. package/dist/CallingClient/utils/mobiusSocketMapper.test.js.map +1 -0
  59. package/dist/CallingClient/utils/request.js +435 -0
  60. package/dist/CallingClient/utils/request.js.map +1 -0
  61. package/dist/CallingClient/utils/request.test.js +999 -0
  62. package/dist/CallingClient/utils/request.test.js.map +1 -0
  63. package/dist/CallingClient/utils/types.js +7 -0
  64. package/dist/CallingClient/utils/types.js.map +1 -0
  65. package/dist/CallingClient/utils/wsFeatureFlag.js +70 -0
  66. package/dist/CallingClient/utils/wsFeatureFlag.js.map +1 -0
  67. package/dist/CallingClient/utils/wsFeatureFlag.test.js +139 -0
  68. package/dist/CallingClient/utils/wsFeatureFlag.test.js.map +1 -0
  69. package/dist/Contacts/ContactsClient.js +13 -11
  70. package/dist/Contacts/ContactsClient.js.map +1 -1
  71. package/dist/Contacts/ContactsClient.test.js +3 -8
  72. package/dist/Contacts/ContactsClient.test.js.map +1 -1
  73. package/dist/Events/types.js +38 -11
  74. package/dist/Events/types.js.map +1 -1
  75. package/dist/Metrics/index.js +63 -2
  76. package/dist/Metrics/index.js.map +1 -1
  77. package/dist/Metrics/index.test.js +357 -1
  78. package/dist/Metrics/index.test.js.map +1 -1
  79. package/dist/Metrics/types.js +19 -1
  80. package/dist/Metrics/types.js.map +1 -1
  81. package/dist/SDKConnector/types.js.map +1 -1
  82. package/dist/api.js +56 -0
  83. package/dist/api.js.map +1 -1
  84. package/dist/common/Utils.js +156 -51
  85. package/dist/common/Utils.js.map +1 -1
  86. package/dist/common/Utils.test.js +79 -0
  87. package/dist/common/Utils.test.js.map +1 -1
  88. package/dist/common/testUtil.js +10 -5
  89. package/dist/common/testUtil.js.map +1 -1
  90. package/dist/common/types.js +3 -0
  91. package/dist/common/types.js.map +1 -1
  92. package/dist/index.js +165 -40
  93. package/dist/index.js.map +1 -1
  94. package/dist/mobius-socket/config.js +24 -0
  95. package/dist/mobius-socket/config.js.map +1 -0
  96. package/dist/mobius-socket/errors.js +143 -0
  97. package/dist/mobius-socket/errors.js.map +1 -0
  98. package/dist/mobius-socket/errors.test.js +20 -0
  99. package/dist/mobius-socket/errors.test.js.map +1 -0
  100. package/dist/mobius-socket/index.js +57 -0
  101. package/dist/mobius-socket/index.js.map +1 -0
  102. package/dist/mobius-socket/mobius-socket-events.test.js +492 -0
  103. package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -0
  104. package/dist/mobius-socket/mobius-socket.js +849 -0
  105. package/dist/mobius-socket/mobius-socket.js.map +1 -0
  106. package/dist/mobius-socket/mobius-socket.test.js +1898 -0
  107. package/dist/mobius-socket/mobius-socket.test.js.map +1 -0
  108. package/dist/mobius-socket/socket/constants.js +55 -0
  109. package/dist/mobius-socket/socket/constants.js.map +1 -0
  110. package/dist/mobius-socket/socket/index.js +15 -0
  111. package/dist/mobius-socket/socket/index.js.map +1 -0
  112. package/dist/mobius-socket/socket/socket-base.js +604 -0
  113. package/dist/mobius-socket/socket/socket-base.js.map +1 -0
  114. package/dist/mobius-socket/socket/socket.js +19 -0
  115. package/dist/mobius-socket/socket/socket.js.map +1 -0
  116. package/dist/mobius-socket/socket/socket.shim.js +26 -0
  117. package/dist/mobius-socket/socket/socket.shim.js.map +1 -0
  118. package/dist/mobius-socket/socket/types.js +7 -0
  119. package/dist/mobius-socket/socket/types.js.map +1 -0
  120. package/dist/mobius-socket/socket.test.js +727 -0
  121. package/dist/mobius-socket/socket.test.js.map +1 -0
  122. package/dist/mobius-socket/test/mocha-helpers.js +23 -0
  123. package/dist/mobius-socket/test/mocha-helpers.js.map +1 -0
  124. package/dist/mobius-socket/test/promise-tick.js +28 -0
  125. package/dist/mobius-socket/test/promise-tick.js.map +1 -0
  126. package/dist/mobius-socket/types.js +7 -0
  127. package/dist/mobius-socket/types.js.map +1 -0
  128. package/dist/module/CallRecording/CallRecording.js +56 -0
  129. package/dist/module/CallRecording/WxcCallRecordingConnector.js +264 -0
  130. package/dist/module/CallRecording/callRecordingFixtures.js +201 -0
  131. package/dist/module/CallRecording/constants.js +27 -0
  132. package/dist/module/CallRecording/types.js +19 -0
  133. package/dist/module/CallRecording/utils.js +14 -0
  134. package/dist/module/CallingClient/CallingClient.js +126 -10
  135. package/dist/module/CallingClient/calling/call.js +177 -61
  136. package/dist/module/CallingClient/calling/callManager.js +39 -7
  137. package/dist/module/CallingClient/calling/types.js +2 -0
  138. package/dist/module/CallingClient/constants.js +24 -0
  139. package/dist/module/CallingClient/line/index.js +2 -2
  140. package/dist/module/CallingClient/registration/register.js +239 -63
  141. package/dist/module/CallingClient/registration/webWorker.js +42 -61
  142. package/dist/module/CallingClient/registration/webWorkerStr.js +47 -82
  143. package/dist/module/CallingClient/utils/constants.js +36 -0
  144. package/dist/module/CallingClient/utils/index.js +5 -0
  145. package/dist/module/CallingClient/utils/mobiusSocketMapper.js +72 -0
  146. package/dist/module/CallingClient/utils/request.js +211 -0
  147. package/dist/module/CallingClient/utils/types.js +1 -0
  148. package/dist/module/CallingClient/utils/wsFeatureFlag.js +41 -0
  149. package/dist/module/Contacts/ContactsClient.js +1 -1
  150. package/dist/module/Events/types.js +23 -10
  151. package/dist/module/Metrics/index.js +48 -1
  152. package/dist/module/Metrics/types.js +18 -0
  153. package/dist/module/api.js +3 -2
  154. package/dist/module/common/Utils.js +60 -17
  155. package/dist/module/common/testUtil.js +6 -1
  156. package/dist/module/common/types.js +3 -0
  157. package/dist/module/index.js +7 -3
  158. package/dist/module/mobius-socket/config.js +15 -0
  159. package/dist/module/mobius-socket/errors.js +58 -0
  160. package/dist/module/mobius-socket/index.js +24 -0
  161. package/dist/module/mobius-socket/mobius-socket.js +593 -0
  162. package/dist/module/mobius-socket/socket/constants.js +26 -0
  163. package/dist/module/mobius-socket/socket/index.js +4 -0
  164. package/dist/module/mobius-socket/socket/socket-base.js +368 -0
  165. package/dist/module/mobius-socket/socket/socket.js +9 -0
  166. package/dist/module/mobius-socket/socket/socket.shim.js +12 -0
  167. package/dist/module/mobius-socket/socket/types.js +1 -0
  168. package/dist/module/mobius-socket/types.js +1 -0
  169. package/dist/types/CallRecording/CallRecording.d.ts +18 -0
  170. package/dist/types/CallRecording/CallRecording.d.ts.map +1 -0
  171. package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts +23 -0
  172. package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts.map +1 -0
  173. package/dist/types/CallRecording/callRecordingFixtures.d.ts +61 -0
  174. package/dist/types/CallRecording/callRecordingFixtures.d.ts.map +1 -0
  175. package/dist/types/CallRecording/constants.d.ts +28 -0
  176. package/dist/types/CallRecording/constants.d.ts.map +1 -0
  177. package/dist/types/CallRecording/types.d.ts +176 -0
  178. package/dist/types/CallRecording/types.d.ts.map +1 -0
  179. package/dist/types/CallRecording/utils.d.ts +3 -0
  180. package/dist/types/CallRecording/utils.d.ts.map +1 -0
  181. package/dist/types/CallingClient/CallingClient.d.ts +8 -0
  182. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  183. package/dist/types/CallingClient/calling/call.d.ts +12 -0
  184. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  185. package/dist/types/CallingClient/calling/callManager.d.ts +4 -2
  186. package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
  187. package/dist/types/CallingClient/calling/types.d.ts +34 -9
  188. package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
  189. package/dist/types/CallingClient/constants.d.ts +24 -0
  190. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  191. package/dist/types/CallingClient/line/index.d.ts +1 -1
  192. package/dist/types/CallingClient/line/index.d.ts.map +1 -1
  193. package/dist/types/CallingClient/registration/register.d.ts +7 -1
  194. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  195. package/dist/types/CallingClient/registration/types.d.ts +4 -2
  196. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  197. package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
  198. package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
  199. package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
  200. package/dist/types/CallingClient/types.d.ts +1 -0
  201. package/dist/types/CallingClient/types.d.ts.map +1 -1
  202. package/dist/types/CallingClient/utils/constants.d.ts +35 -0
  203. package/dist/types/CallingClient/utils/constants.d.ts.map +1 -0
  204. package/dist/types/CallingClient/utils/index.d.ts +6 -0
  205. package/dist/types/CallingClient/utils/index.d.ts.map +1 -0
  206. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts +5 -0
  207. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts.map +1 -0
  208. package/dist/types/CallingClient/utils/request.d.ts +28 -0
  209. package/dist/types/CallingClient/utils/request.d.ts.map +1 -0
  210. package/dist/types/CallingClient/utils/types.d.ts +34 -0
  211. package/dist/types/CallingClient/utils/types.d.ts.map +1 -0
  212. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts +4 -0
  213. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts.map +1 -0
  214. package/dist/types/Events/types.d.ts +79 -15
  215. package/dist/types/Events/types.d.ts.map +1 -1
  216. package/dist/types/Metrics/index.d.ts.map +1 -1
  217. package/dist/types/Metrics/types.d.ts +19 -2
  218. package/dist/types/Metrics/types.d.ts.map +1 -1
  219. package/dist/types/SDKConnector/types.d.ts +39 -12
  220. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  221. package/dist/types/api.d.ts +6 -4
  222. package/dist/types/api.d.ts.map +1 -1
  223. package/dist/types/common/Utils.d.ts +11 -3
  224. package/dist/types/common/Utils.d.ts.map +1 -1
  225. package/dist/types/common/testUtil.d.ts +5 -1
  226. package/dist/types/common/testUtil.d.ts.map +1 -1
  227. package/dist/types/common/types.d.ts +5 -1
  228. package/dist/types/common/types.d.ts.map +1 -1
  229. package/dist/types/index.d.ts +8 -3
  230. package/dist/types/index.d.ts.map +1 -1
  231. package/dist/types/mobius-socket/config.d.ts +17 -0
  232. package/dist/types/mobius-socket/config.d.ts.map +1 -0
  233. package/dist/types/mobius-socket/errors.d.ts +32 -0
  234. package/dist/types/mobius-socket/errors.d.ts.map +1 -0
  235. package/dist/types/mobius-socket/index.d.ts +14 -0
  236. package/dist/types/mobius-socket/index.d.ts.map +1 -0
  237. package/dist/types/mobius-socket/mobius-socket.d.ts +48 -0
  238. package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -0
  239. package/dist/types/mobius-socket/socket/constants.d.ts +27 -0
  240. package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -0
  241. package/dist/types/mobius-socket/socket/index.d.ts +5 -0
  242. package/dist/types/mobius-socket/socket/index.d.ts.map +1 -0
  243. package/dist/types/mobius-socket/socket/socket-base.d.ts +43 -0
  244. package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -0
  245. package/dist/types/mobius-socket/socket/socket.d.ts +6 -0
  246. package/dist/types/mobius-socket/socket/socket.d.ts.map +1 -0
  247. package/dist/types/mobius-socket/socket/socket.shim.d.ts +6 -0
  248. package/dist/types/mobius-socket/socket/socket.shim.d.ts.map +1 -0
  249. package/dist/types/mobius-socket/socket/types.d.ts +61 -0
  250. package/dist/types/mobius-socket/socket/types.d.ts.map +1 -0
  251. package/dist/types/mobius-socket/types.d.ts +21 -0
  252. package/dist/types/mobius-socket/types.d.ts.map +1 -0
  253. package/package.json +20 -5
  254. package/src/mobius-socket/socket/socket.shim.ts +22 -0
  255. 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,27 @@
1
+ export const CALL_RECORDING_FILE = 'CallRecording';
2
+ export const CONVERGED_RECORDINGS = 'convergedRecordings';
3
+ export const METADATA = 'metadata';
4
+ export const FROM = 'from';
5
+ export const TO = 'to';
6
+ export const STATUS = 'status';
7
+ export const MAX = 'max';
8
+ export const SERVICE_TYPE = 'serviceType';
9
+ export const FORMAT = 'format';
10
+ export const OWNER_TYPE = 'ownerType';
11
+ export const STORAGE_REGION = 'storageRegion';
12
+ export const LOCATION_ID = 'locationId';
13
+ export const TOPIC = 'topic';
14
+ export const DEFAULT_STATUS = 'available';
15
+ export const DEFAULT_MAX = 30;
16
+ export const DEFAULT_NUMBER_OF_DAYS = 30;
17
+ export const WEBEX_USER_REQUEST_HEADER = 'WebexUserRequest';
18
+ export const RECORDING_NOT_FOUND_MESSAGE = 'No recordings found for the given call session id.';
19
+ export const METHODS = {
20
+ INITIALIZE_BACKEND_CONNECTOR: 'initializeBackendConnector',
21
+ GET_CALL_RECORDING: 'getCallRecording',
22
+ GET_RECORDINGS: 'getRecordings',
23
+ GET_RECORDING: 'getRecording',
24
+ GET_RECORDINGS_BY_CALL_SESSION_ID: 'getRecordingsByCallSessionId',
25
+ GET_RECORDING_METADATA: 'getRecordingMetadata',
26
+ DELETE_RECORDING: 'deleteRecording',
27
+ };
@@ -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, DEVICES_ENDPOINT_RESOURCE, } 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,7 +510,14 @@ 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() {
@@ -425,7 +538,7 @@ export class CallingClient extends Eventing {
425
538
  const normalizedMobiusUrl = mobiusUrl.replace(/\/+$/, '/');
426
539
  const uri = `${normalizedMobiusUrl}${DEVICES_ENDPOINT_RESOURCE}?userid=${encodeURIComponent(userid)}`;
427
540
  try {
428
- const response = await this.webex.request({
541
+ const response = (await this.webex.request({
429
542
  uri,
430
543
  method: HTTP_METHODS.GET,
431
544
  service: ALLOWED_SERVICES.MOBIUS,
@@ -433,7 +546,7 @@ export class CallingClient extends Eventing {
433
546
  [CISCO_DEVICE_URL]: this.webex.internal.device.url,
434
547
  [SPARK_USER_AGENT]: CALLING_USER_AGENT,
435
548
  },
436
- });
549
+ }));
437
550
  if (response.statusCode !== 200) {
438
551
  throw new Error(`API call failed with ${response.statusCode}`);
439
552
  }
@@ -474,6 +587,9 @@ export class CallingClient extends Eventing {
474
587
  });
475
588
  return connectCall;
476
589
  }
590
+ isMobiusSocketConnected() {
591
+ return this.apiRequest.isSocketEnabled() && this.apiRequest.isSocketConnected();
592
+ }
477
593
  async uploadLogs() {
478
594
  const result = await uploadLogs({}, true);
479
595
  if (!result) {