@webex/calling 3.12.0-task-refactor.1 → 3.12.0-webex-services-ready.2
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.
- package/dist/CallHistory/CallHistory.js +68 -51
- package/dist/CallHistory/CallHistory.js.map +1 -1
- package/dist/CallRecording/CallRecording.js +160 -0
- package/dist/CallRecording/CallRecording.js.map +1 -0
- package/dist/CallRecording/CallRecording.test.js +257 -0
- package/dist/CallRecording/CallRecording.test.js.map +1 -0
- package/dist/CallRecording/WxcCallRecordingConnector.js +577 -0
- package/dist/CallRecording/WxcCallRecordingConnector.js.map +1 -0
- package/dist/CallRecording/WxcCallRecordingConnector.test.js +652 -0
- package/dist/CallRecording/WxcCallRecordingConnector.test.js.map +1 -0
- package/dist/CallRecording/callRecordingFixtures.js +235 -0
- package/dist/CallRecording/callRecordingFixtures.js.map +1 -0
- package/dist/CallRecording/constants.js +50 -0
- package/dist/CallRecording/constants.js.map +1 -0
- package/dist/CallRecording/types.js +137 -0
- package/dist/CallRecording/types.js.map +1 -0
- package/dist/CallRecording/utils.js +42 -0
- package/dist/CallRecording/utils.js.map +1 -0
- package/dist/CallRecording/utils.test.js +97 -0
- package/dist/CallRecording/utils.test.js.map +1 -0
- package/dist/CallingClient/CallingClient.js +520 -193
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +607 -133
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/calling/call.js +599 -454
- package/dist/CallingClient/calling/call.js.map +1 -1
- package/dist/CallingClient/calling/call.test.js +834 -443
- package/dist/CallingClient/calling/call.test.js.map +1 -1
- package/dist/CallingClient/calling/callManager.js +88 -31
- package/dist/CallingClient/calling/callManager.js.map +1 -1
- package/dist/CallingClient/calling/callManager.test.js +123 -0
- package/dist/CallingClient/calling/callManager.test.js.map +1 -1
- package/dist/CallingClient/calling/types.js +2 -0
- package/dist/CallingClient/calling/types.js.map +1 -1
- package/dist/CallingClient/constants.js +30 -3
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/CallingClient/line/index.js +4 -1
- package/dist/CallingClient/line/index.js.map +1 -1
- package/dist/CallingClient/line/line.test.js +16 -1
- package/dist/CallingClient/line/line.test.js.map +1 -1
- package/dist/CallingClient/registration/register.js +740 -407
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +380 -58
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/registration/types.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.js +41 -104
- package/dist/CallingClient/registration/webWorker.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.test.js +39 -153
- package/dist/CallingClient/registration/webWorker.test.js.map +1 -1
- package/dist/CallingClient/registration/webWorkerStr.js +1 -1
- package/dist/CallingClient/registration/webWorkerStr.js.map +1 -1
- package/dist/CallingClient/types.js.map +1 -1
- package/dist/CallingClient/utils/constants.js +58 -0
- package/dist/CallingClient/utils/constants.js.map +1 -0
- package/dist/CallingClient/utils/index.js +63 -0
- package/dist/CallingClient/utils/index.js.map +1 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.js +122 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.js.map +1 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.test.js +221 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.test.js.map +1 -0
- package/dist/CallingClient/utils/request.js +435 -0
- package/dist/CallingClient/utils/request.js.map +1 -0
- package/dist/CallingClient/utils/request.test.js +999 -0
- package/dist/CallingClient/utils/request.test.js.map +1 -0
- package/dist/CallingClient/utils/types.js +7 -0
- package/dist/CallingClient/utils/types.js.map +1 -0
- package/dist/CallingClient/utils/wsFeatureFlag.js +70 -0
- package/dist/CallingClient/utils/wsFeatureFlag.js.map +1 -0
- package/dist/CallingClient/utils/wsFeatureFlag.test.js +139 -0
- package/dist/CallingClient/utils/wsFeatureFlag.test.js.map +1 -0
- package/dist/Contacts/ContactsClient.js +13 -11
- package/dist/Contacts/ContactsClient.js.map +1 -1
- package/dist/Contacts/ContactsClient.test.js +3 -8
- package/dist/Contacts/ContactsClient.test.js.map +1 -1
- package/dist/Events/types.js +38 -11
- package/dist/Events/types.js.map +1 -1
- package/dist/Metrics/index.js +63 -2
- package/dist/Metrics/index.js.map +1 -1
- package/dist/Metrics/index.test.js +357 -1
- package/dist/Metrics/index.test.js.map +1 -1
- package/dist/Metrics/types.js +19 -1
- package/dist/Metrics/types.js.map +1 -1
- package/dist/SDKConnector/types.js.map +1 -1
- package/dist/api.js +56 -0
- package/dist/api.js.map +1 -1
- package/dist/common/Utils.js +161 -53
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/Utils.test.js +207 -46
- package/dist/common/Utils.test.js.map +1 -1
- package/dist/common/testUtil.js +10 -5
- package/dist/common/testUtil.js.map +1 -1
- package/dist/common/types.js +3 -0
- package/dist/common/types.js.map +1 -1
- package/dist/index.js +165 -40
- package/dist/index.js.map +1 -1
- package/dist/mobius-socket/config.js +24 -0
- package/dist/mobius-socket/config.js.map +1 -0
- package/dist/mobius-socket/errors.js +143 -0
- package/dist/mobius-socket/errors.js.map +1 -0
- package/dist/mobius-socket/errors.test.js +20 -0
- package/dist/mobius-socket/errors.test.js.map +1 -0
- package/dist/mobius-socket/index.js +57 -0
- package/dist/mobius-socket/index.js.map +1 -0
- package/dist/mobius-socket/mobius-socket-events.test.js +492 -0
- package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -0
- package/dist/mobius-socket/mobius-socket.js +849 -0
- package/dist/mobius-socket/mobius-socket.js.map +1 -0
- package/dist/mobius-socket/mobius-socket.test.js +1898 -0
- package/dist/mobius-socket/mobius-socket.test.js.map +1 -0
- package/dist/mobius-socket/socket/constants.js +55 -0
- package/dist/mobius-socket/socket/constants.js.map +1 -0
- package/dist/mobius-socket/socket/index.js +15 -0
- package/dist/mobius-socket/socket/index.js.map +1 -0
- package/dist/mobius-socket/socket/socket-base.js +604 -0
- package/dist/mobius-socket/socket/socket-base.js.map +1 -0
- package/dist/mobius-socket/socket/socket.js +19 -0
- package/dist/mobius-socket/socket/socket.js.map +1 -0
- package/dist/mobius-socket/socket/socket.shim.js +26 -0
- package/dist/mobius-socket/socket/socket.shim.js.map +1 -0
- package/dist/mobius-socket/socket/types.js +7 -0
- package/dist/mobius-socket/socket/types.js.map +1 -0
- package/dist/mobius-socket/socket.test.js +727 -0
- package/dist/mobius-socket/socket.test.js.map +1 -0
- package/dist/mobius-socket/test/mocha-helpers.js +23 -0
- package/dist/mobius-socket/test/mocha-helpers.js.map +1 -0
- package/dist/mobius-socket/test/promise-tick.js +28 -0
- package/dist/mobius-socket/test/promise-tick.js.map +1 -0
- package/dist/mobius-socket/types.js +7 -0
- package/dist/mobius-socket/types.js.map +1 -0
- package/dist/module/CallHistory/CallHistory.js +28 -17
- package/dist/module/CallRecording/CallRecording.js +56 -0
- package/dist/module/CallRecording/WxcCallRecordingConnector.js +257 -0
- package/dist/module/CallRecording/callRecordingFixtures.js +201 -0
- package/dist/module/CallRecording/constants.js +28 -0
- package/dist/module/CallRecording/types.js +19 -0
- package/dist/module/CallRecording/utils.js +14 -0
- package/dist/module/CallingClient/CallingClient.js +166 -8
- package/dist/module/CallingClient/calling/call.js +181 -64
- package/dist/module/CallingClient/calling/callManager.js +46 -7
- package/dist/module/CallingClient/calling/types.js +2 -0
- package/dist/module/CallingClient/constants.js +26 -0
- package/dist/module/CallingClient/line/index.js +2 -2
- package/dist/module/CallingClient/registration/register.js +247 -63
- package/dist/module/CallingClient/registration/webWorker.js +42 -61
- package/dist/module/CallingClient/registration/webWorkerStr.js +47 -82
- package/dist/module/CallingClient/utils/constants.js +36 -0
- package/dist/module/CallingClient/utils/index.js +5 -0
- package/dist/module/CallingClient/utils/mobiusSocketMapper.js +72 -0
- package/dist/module/CallingClient/utils/request.js +211 -0
- package/dist/module/CallingClient/utils/types.js +1 -0
- package/dist/module/CallingClient/utils/wsFeatureFlag.js +41 -0
- package/dist/module/Contacts/ContactsClient.js +1 -1
- package/dist/module/Events/types.js +23 -10
- package/dist/module/Metrics/index.js +48 -1
- package/dist/module/Metrics/types.js +18 -0
- package/dist/module/api.js +3 -2
- package/dist/module/common/Utils.js +65 -18
- package/dist/module/common/testUtil.js +6 -1
- package/dist/module/common/types.js +3 -0
- package/dist/module/index.js +7 -3
- package/dist/module/mobius-socket/config.js +15 -0
- package/dist/module/mobius-socket/errors.js +58 -0
- package/dist/module/mobius-socket/index.js +24 -0
- package/dist/module/mobius-socket/mobius-socket.js +593 -0
- package/dist/module/mobius-socket/socket/constants.js +26 -0
- package/dist/module/mobius-socket/socket/index.js +4 -0
- package/dist/module/mobius-socket/socket/socket-base.js +368 -0
- package/dist/module/mobius-socket/socket/socket.js +9 -0
- package/dist/module/mobius-socket/socket/socket.shim.js +12 -0
- package/dist/module/mobius-socket/socket/types.js +1 -0
- package/dist/module/mobius-socket/types.js +1 -0
- package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
- package/dist/types/CallRecording/CallRecording.d.ts +18 -0
- package/dist/types/CallRecording/CallRecording.d.ts.map +1 -0
- package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts +23 -0
- package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts.map +1 -0
- package/dist/types/CallRecording/callRecordingFixtures.d.ts +61 -0
- package/dist/types/CallRecording/callRecordingFixtures.d.ts.map +1 -0
- package/dist/types/CallRecording/constants.d.ts +29 -0
- package/dist/types/CallRecording/constants.d.ts.map +1 -0
- package/dist/types/CallRecording/types.d.ts +176 -0
- package/dist/types/CallRecording/types.d.ts.map +1 -0
- package/dist/types/CallRecording/utils.d.ts +3 -0
- package/dist/types/CallRecording/utils.d.ts.map +1 -0
- package/dist/types/CallingClient/CallingClient.d.ts +10 -1
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/call.d.ts +12 -0
- package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/callManager.d.ts +4 -2
- package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/types.d.ts +34 -9
- package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
- package/dist/types/CallingClient/constants.d.ts +26 -0
- package/dist/types/CallingClient/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/line/index.d.ts +1 -1
- package/dist/types/CallingClient/line/index.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts +9 -2
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/types.d.ts +6 -3
- package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
- package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
- package/dist/types/CallingClient/types.d.ts +3 -1
- package/dist/types/CallingClient/types.d.ts.map +1 -1
- package/dist/types/CallingClient/utils/constants.d.ts +35 -0
- package/dist/types/CallingClient/utils/constants.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/index.d.ts +6 -0
- package/dist/types/CallingClient/utils/index.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts +5 -0
- package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/request.d.ts +28 -0
- package/dist/types/CallingClient/utils/request.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/types.d.ts +34 -0
- package/dist/types/CallingClient/utils/types.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts +4 -0
- package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts.map +1 -0
- package/dist/types/Events/types.d.ts +79 -15
- package/dist/types/Events/types.d.ts.map +1 -1
- package/dist/types/Metrics/index.d.ts.map +1 -1
- package/dist/types/Metrics/types.d.ts +19 -2
- package/dist/types/Metrics/types.d.ts.map +1 -1
- package/dist/types/SDKConnector/types.d.ts +39 -12
- package/dist/types/SDKConnector/types.d.ts.map +1 -1
- package/dist/types/api.d.ts +6 -4
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/common/Utils.d.ts +11 -3
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/dist/types/common/testUtil.d.ts +5 -1
- package/dist/types/common/testUtil.d.ts.map +1 -1
- package/dist/types/common/types.d.ts +9 -1
- package/dist/types/common/types.d.ts.map +1 -1
- package/dist/types/index.d.ts +8 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/mobius-socket/config.d.ts +17 -0
- package/dist/types/mobius-socket/config.d.ts.map +1 -0
- package/dist/types/mobius-socket/errors.d.ts +32 -0
- package/dist/types/mobius-socket/errors.d.ts.map +1 -0
- package/dist/types/mobius-socket/index.d.ts +14 -0
- package/dist/types/mobius-socket/index.d.ts.map +1 -0
- package/dist/types/mobius-socket/mobius-socket.d.ts +48 -0
- package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/constants.d.ts +27 -0
- package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/index.d.ts +5 -0
- package/dist/types/mobius-socket/socket/index.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/socket-base.d.ts +43 -0
- package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/socket.d.ts +6 -0
- package/dist/types/mobius-socket/socket/socket.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/socket.shim.d.ts +6 -0
- package/dist/types/mobius-socket/socket/socket.shim.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/types.d.ts +61 -0
- package/dist/types/mobius-socket/socket/types.d.ts.map +1 -0
- package/dist/types/mobius-socket/types.d.ts +21 -0
- package/dist/types/mobius-socket/types.d.ts.map +1 -0
- package/package.json +20 -5
- package/src/mobius-socket/socket/socket.shim.ts +22 -0
- 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
|
-
|
|
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
|
|
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) {
|