@webex/contact-center 3.11.0 → 3.12.0-next.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/cc.js +121 -28
- package/dist/cc.js.map +1 -1
- package/dist/constants.js +5 -1
- package/dist/constants.js.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/metrics/behavioral-events.js +13 -0
- package/dist/metrics/behavioral-events.js.map +1 -1
- package/dist/metrics/constants.js +9 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/services/ApiAiAssistant.js +173 -0
- package/dist/services/ApiAiAssistant.js.map +1 -0
- package/dist/services/agent/types.js.map +1 -1
- package/dist/services/config/Util.js +6 -2
- package/dist/services/config/Util.js.map +1 -1
- package/dist/services/config/constants.js +12 -0
- package/dist/services/config/constants.js.map +1 -1
- package/dist/services/config/index.js +41 -2
- package/dist/services/config/index.js.map +1 -1
- package/dist/services/config/types.js +19 -1
- package/dist/services/config/types.js.map +1 -1
- package/dist/services/constants.js +27 -1
- package/dist/services/constants.js.map +1 -1
- package/dist/services/core/Err.js.map +1 -1
- package/dist/services/core/Utils.js +28 -6
- package/dist/services/core/Utils.js.map +1 -1
- package/dist/services/core/aqm-reqs.js +92 -17
- package/dist/services/core/aqm-reqs.js.map +1 -1
- package/dist/services/core/websocket/WebSocketManager.js +20 -5
- package/dist/services/core/websocket/WebSocketManager.js.map +1 -1
- package/dist/services/core/websocket/connection-service.js +3 -1
- package/dist/services/core/websocket/connection-service.js.map +1 -1
- package/dist/services/index.js +6 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/task/TaskManager.js +117 -24
- package/dist/services/task/TaskManager.js.map +1 -1
- package/dist/services/task/TaskUtils.js +16 -3
- package/dist/services/task/TaskUtils.js.map +1 -1
- package/dist/services/task/constants.js +15 -1
- package/dist/services/task/constants.js.map +1 -1
- package/dist/services/task/dialer.js +51 -0
- package/dist/services/task/dialer.js.map +1 -1
- package/dist/services/task/types.js +15 -0
- package/dist/services/task/types.js.map +1 -1
- package/dist/types/cc.d.ts +801 -0
- package/dist/types/config.d.ts +66 -0
- package/dist/types/constants.d.ts +50 -0
- package/dist/types/index.d.ts +184 -0
- package/dist/types/logger-proxy.d.ts +71 -0
- package/dist/types/metrics/MetricsManager.d.ts +223 -0
- package/dist/types/metrics/behavioral-events.d.ts +29 -0
- package/dist/types/metrics/constants.d.ts +161 -0
- package/dist/types/services/AddressBook.d.ts +74 -0
- package/dist/types/services/ApiAiAssistant.d.ts +31 -0
- package/dist/types/services/EntryPoint.d.ts +67 -0
- package/dist/types/services/Queue.d.ts +76 -0
- package/dist/types/services/WebCallingService.d.ts +1 -0
- package/dist/types/services/agent/index.d.ts +46 -0
- package/dist/types/services/agent/types.d.ts +413 -0
- package/dist/types/services/config/Util.d.ts +20 -0
- package/dist/types/services/config/constants.d.ts +249 -0
- package/dist/types/services/config/index.d.ts +177 -0
- package/dist/types/services/config/types.d.ts +1207 -0
- package/dist/types/services/constants.d.ts +110 -0
- package/dist/types/services/core/Err.d.ts +121 -0
- package/dist/types/services/core/GlobalTypes.d.ts +58 -0
- package/dist/types/services/core/Utils.d.ts +101 -0
- package/dist/types/services/core/WebexRequest.d.ts +22 -0
- package/dist/types/services/core/aqm-reqs.d.ts +65 -0
- package/dist/types/services/core/constants.d.ts +99 -0
- package/dist/types/services/core/types.d.ts +47 -0
- package/dist/types/services/core/websocket/WebSocketManager.d.ts +35 -0
- package/dist/types/services/core/websocket/connection-service.d.ts +27 -0
- package/dist/types/services/core/websocket/keepalive.worker.d.ts +2 -0
- package/dist/types/services/core/websocket/types.d.ts +37 -0
- package/dist/types/services/index.d.ts +54 -0
- package/dist/types/services/task/AutoWrapup.d.ts +40 -0
- package/dist/types/services/task/TaskManager.d.ts +1 -0
- package/dist/types/services/task/TaskUtils.d.ts +92 -0
- package/dist/types/services/task/constants.d.ts +84 -0
- package/dist/types/services/task/contact.d.ts +69 -0
- package/dist/types/services/task/dialer.d.ts +43 -0
- package/dist/types/services/task/index.d.ts +650 -0
- package/dist/types/services/task/types.d.ts +1319 -0
- package/dist/types/types.d.ts +643 -0
- package/dist/types/utils/PageCache.d.ts +173 -0
- package/dist/types/webex-config.d.ts +53 -0
- package/dist/types/webex.d.ts +7 -0
- package/dist/types.js +14 -1
- package/dist/types.js.map +1 -1
- package/dist/webex.js +1 -1
- package/package.json +9 -9
- package/src/cc.ts +157 -30
- package/src/constants.ts +4 -0
- package/src/index.ts +1 -0
- package/src/metrics/behavioral-events.ts +14 -0
- package/src/metrics/constants.ts +11 -0
- package/src/services/ApiAiAssistant.ts +217 -0
- package/src/services/agent/types.ts +1 -1
- package/src/services/config/Util.ts +8 -0
- package/src/services/config/constants.ts +12 -0
- package/src/services/config/index.ts +45 -1
- package/src/services/config/types.ts +67 -0
- package/src/services/constants.ts +29 -0
- package/src/services/core/Err.ts +1 -0
- package/src/services/core/Utils.ts +32 -5
- package/src/services/core/aqm-reqs.ts +100 -22
- package/src/services/core/websocket/WebSocketManager.ts +21 -6
- package/src/services/core/websocket/connection-service.ts +5 -1
- package/src/services/index.ts +4 -0
- package/src/services/task/TaskManager.ts +174 -27
- package/src/services/task/TaskUtils.ts +12 -0
- package/src/services/task/constants.ts +16 -0
- package/src/services/task/dialer.ts +56 -1
- package/src/services/task/types.ts +24 -0
- package/src/types.ts +40 -1
- package/test/unit/spec/cc.ts +163 -23
- package/test/unit/spec/services/ApiAiAssistant.ts +115 -0
- package/test/unit/spec/services/config/index.ts +56 -0
- package/test/unit/spec/services/core/Utils.ts +63 -1
- package/test/unit/spec/services/core/websocket/WebSocketManager.ts +82 -12
- package/test/unit/spec/services/core/websocket/connection-service.ts +3 -1
- package/test/unit/spec/services/task/TaskManager.ts +1119 -251
- package/test/unit/spec/services/task/dialer.ts +198 -112
- package/umd/contact-center.min.js +2 -2
- package/umd/contact-center.min.js.map +1 -1
|
@@ -74,6 +74,14 @@ describe('WebSocketManager', () => {
|
|
|
74
74
|
|
|
75
75
|
mockWebex = {
|
|
76
76
|
request: jest.fn(),
|
|
77
|
+
credentials: {
|
|
78
|
+
getOrgId: jest.fn().mockReturnValue('test-org-id'),
|
|
79
|
+
},
|
|
80
|
+
internal: {
|
|
81
|
+
services: {
|
|
82
|
+
isIntegrationEnvironment: jest.fn().mockReturnValue(true), // INT environment by default
|
|
83
|
+
},
|
|
84
|
+
},
|
|
77
85
|
} as unknown as WebexSDK;
|
|
78
86
|
|
|
79
87
|
mockWorker = {
|
|
@@ -107,22 +115,84 @@ describe('WebSocketManager', () => {
|
|
|
107
115
|
expect(webSocketManager).toBeDefined();
|
|
108
116
|
});
|
|
109
117
|
|
|
110
|
-
it('should register and connect to WebSocket', async () => {
|
|
118
|
+
it('should register and connect to WebSocket with X-ORGANIZATION-ID header for INT environment', async () => {
|
|
119
|
+
const subscribeResponse = {
|
|
120
|
+
body: {
|
|
121
|
+
webSocketUrl: 'wss://fake-url',
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
// Mock INT environment (services.isIntegrationEnvironment returns true)
|
|
126
|
+
(mockWebex.internal.services.isIntegrationEnvironment as jest.Mock).mockReturnValue(true);
|
|
127
|
+
(mockWebex.request as jest.Mock).mockResolvedValueOnce(subscribeResponse);
|
|
128
|
+
|
|
129
|
+
await webSocketManager.initWebSocket({ body: fakeSubscribeRequest, resource: SUBSCRIBE_API });
|
|
130
|
+
|
|
131
|
+
expect(mockWebex.request).toHaveBeenCalledWith({
|
|
132
|
+
service: WCC_API_GATEWAY,
|
|
133
|
+
resource: SUBSCRIBE_API,
|
|
134
|
+
method: 'POST',
|
|
135
|
+
body: fakeSubscribeRequest,
|
|
136
|
+
headers: {'X-ORGANIZATION-ID': 'test-org-id'},
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
it('should register and connect to WebSocket without X-ORGANIZATION-ID header for production environment', async () => {
|
|
141
|
+
const subscribeResponse = {
|
|
142
|
+
body: {
|
|
143
|
+
webSocketUrl: 'wss://fake-url',
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
// Mock production environment (services.isIntegrationEnvironment returns false)
|
|
148
|
+
(mockWebex.internal.services.isIntegrationEnvironment as jest.Mock).mockReturnValue(false);
|
|
149
|
+
(mockWebex.request as jest.Mock).mockResolvedValueOnce(subscribeResponse);
|
|
150
|
+
|
|
151
|
+
// Create new WebSocketManager instance with production mock
|
|
152
|
+
webSocketManager = new WebSocketManager({ webex: mockWebex });
|
|
153
|
+
|
|
154
|
+
setTimeout(() => {
|
|
155
|
+
MockWebSocket.inst.onopen();
|
|
156
|
+
MockWebSocket.inst.onmessage({ data: JSON.stringify({ type: "Welcome" }) });
|
|
157
|
+
}, 1);
|
|
158
|
+
|
|
159
|
+
await webSocketManager.initWebSocket({ body: fakeSubscribeRequest, resource: SUBSCRIBE_API });
|
|
160
|
+
|
|
161
|
+
expect(mockWebex.request).toHaveBeenCalledWith({
|
|
162
|
+
service: WCC_API_GATEWAY,
|
|
163
|
+
resource: SUBSCRIBE_API,
|
|
164
|
+
method: 'POST',
|
|
165
|
+
body: fakeSubscribeRequest,
|
|
166
|
+
headers: undefined,
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
it('should not send X-ORGANIZATION-ID header when services.isIntegrationEnvironment is not available', async () => {
|
|
111
171
|
const subscribeResponse = {
|
|
112
172
|
body: {
|
|
113
173
|
webSocketUrl: 'wss://fake-url',
|
|
114
174
|
},
|
|
115
175
|
};
|
|
116
176
|
|
|
177
|
+
// Mock services not available (defaults to production behavior)
|
|
178
|
+
(mockWebex as any).internal = undefined;
|
|
117
179
|
(mockWebex.request as jest.Mock).mockResolvedValueOnce(subscribeResponse);
|
|
118
180
|
|
|
119
|
-
|
|
181
|
+
webSocketManager = new WebSocketManager({ webex: mockWebex });
|
|
182
|
+
|
|
183
|
+
setTimeout(() => {
|
|
184
|
+
MockWebSocket.inst.onopen();
|
|
185
|
+
MockWebSocket.inst.onmessage({ data: JSON.stringify({ type: "Welcome" }) });
|
|
186
|
+
}, 1);
|
|
187
|
+
|
|
188
|
+
await webSocketManager.initWebSocket({ body: fakeSubscribeRequest, resource: SUBSCRIBE_API });
|
|
120
189
|
|
|
121
190
|
expect(mockWebex.request).toHaveBeenCalledWith({
|
|
122
191
|
service: WCC_API_GATEWAY,
|
|
123
192
|
resource: SUBSCRIBE_API,
|
|
124
193
|
method: 'POST',
|
|
125
194
|
body: fakeSubscribeRequest,
|
|
195
|
+
headers: undefined,
|
|
126
196
|
});
|
|
127
197
|
});
|
|
128
198
|
|
|
@@ -132,7 +202,7 @@ describe('WebSocketManager', () => {
|
|
|
132
202
|
(mockWebex.request as jest.Mock).mockRejectedValueOnce(error);
|
|
133
203
|
|
|
134
204
|
await expect(
|
|
135
|
-
webSocketManager.initWebSocket({ body: fakeSubscribeRequest })
|
|
205
|
+
webSocketManager.initWebSocket({ body: fakeSubscribeRequest, resource: SUBSCRIBE_API })
|
|
136
206
|
).rejects.toThrow(error);
|
|
137
207
|
|
|
138
208
|
expect(LoggerProxy.error).toHaveBeenCalledWith(
|
|
@@ -155,7 +225,7 @@ describe('WebSocketManager', () => {
|
|
|
155
225
|
|
|
156
226
|
(mockWebex.request as jest.Mock).mockResolvedValueOnce(subscribeResponse);
|
|
157
227
|
|
|
158
|
-
await webSocketManager.initWebSocket({ body: fakeSubscribeRequest });
|
|
228
|
+
await webSocketManager.initWebSocket({ body: fakeSubscribeRequest, resource: SUBSCRIBE_API });
|
|
159
229
|
|
|
160
230
|
webSocketManager.close(true, 'Test reason');
|
|
161
231
|
|
|
@@ -172,7 +242,7 @@ describe('WebSocketManager', () => {
|
|
|
172
242
|
|
|
173
243
|
(mockWebex.request as jest.Mock).mockResolvedValueOnce(subscribeResponse);
|
|
174
244
|
|
|
175
|
-
await webSocketManager.initWebSocket({ body: fakeSubscribeRequest });
|
|
245
|
+
await webSocketManager.initWebSocket({ body: fakeSubscribeRequest, resource: SUBSCRIBE_API });
|
|
176
246
|
|
|
177
247
|
setTimeout(() => {
|
|
178
248
|
MockWebSocket.inst.onopen();
|
|
@@ -196,7 +266,7 @@ describe('WebSocketManager', () => {
|
|
|
196
266
|
|
|
197
267
|
(mockWebex.request as jest.Mock).mockResolvedValueOnce(subscribeResponse);
|
|
198
268
|
|
|
199
|
-
await webSocketManager.initWebSocket({ body: fakeSubscribeRequest });
|
|
269
|
+
await webSocketManager.initWebSocket({ body: fakeSubscribeRequest, resource: SUBSCRIBE_API });
|
|
200
270
|
|
|
201
271
|
// Mock navigator.onLine to simulate network issue
|
|
202
272
|
Object.defineProperty(global, 'navigator', {
|
|
@@ -243,7 +313,7 @@ describe('WebSocketManager', () => {
|
|
|
243
313
|
|
|
244
314
|
(mockWebex.request as jest.Mock).mockResolvedValueOnce(subscribeResponse);
|
|
245
315
|
|
|
246
|
-
await webSocketManager.initWebSocket({ body: fakeSubscribeRequest });
|
|
316
|
+
await webSocketManager.initWebSocket({ body: fakeSubscribeRequest, resource: SUBSCRIBE_API });
|
|
247
317
|
|
|
248
318
|
const errorEvent = new Event('error');
|
|
249
319
|
MockWebSocket.inst.onerror(errorEvent);
|
|
@@ -263,7 +333,7 @@ describe('WebSocketManager', () => {
|
|
|
263
333
|
|
|
264
334
|
(mockWebex.request as jest.Mock).mockResolvedValueOnce(subscribeResponse);
|
|
265
335
|
|
|
266
|
-
await webSocketManager.initWebSocket({ body: fakeSubscribeRequest });
|
|
336
|
+
await webSocketManager.initWebSocket({ body: fakeSubscribeRequest, resource: SUBSCRIBE_API });
|
|
267
337
|
|
|
268
338
|
const messageEvent = new MessageEvent('message', {
|
|
269
339
|
data: JSON.stringify({ type: 'AGENT_MULTI_LOGIN' }),
|
|
@@ -286,7 +356,7 @@ describe('WebSocketManager', () => {
|
|
|
286
356
|
|
|
287
357
|
(mockWebex.request as jest.Mock).mockResolvedValueOnce(subscribeResponse);
|
|
288
358
|
|
|
289
|
-
await webSocketManager.initWebSocket({ body: fakeSubscribeRequest });
|
|
359
|
+
await webSocketManager.initWebSocket({ body: fakeSubscribeRequest, resource: SUBSCRIBE_API });
|
|
290
360
|
|
|
291
361
|
const messageEvent = new MessageEvent('message', {
|
|
292
362
|
data: JSON.stringify({ type: 'Welcome', data: { someData: 'data' } }),
|
|
@@ -305,7 +375,7 @@ describe('WebSocketManager', () => {
|
|
|
305
375
|
|
|
306
376
|
(mockWebex.request as jest.Mock).mockResolvedValueOnce(subscribeResponse);
|
|
307
377
|
|
|
308
|
-
await webSocketManager.initWebSocket({ body: fakeSubscribeRequest });
|
|
378
|
+
await webSocketManager.initWebSocket({ body: fakeSubscribeRequest, resource: SUBSCRIBE_API });
|
|
309
379
|
|
|
310
380
|
webSocketManager['forceCloseWebSocketOnTimeout'] = true;
|
|
311
381
|
|
|
@@ -340,7 +410,7 @@ describe('WebSocketManager', () => {
|
|
|
340
410
|
|
|
341
411
|
(mockWebex.request as jest.Mock).mockResolvedValueOnce(subscribeResponse);
|
|
342
412
|
|
|
343
|
-
await webSocketManager.initWebSocket({ body: fakeSubscribeRequest });
|
|
413
|
+
await webSocketManager.initWebSocket({ body: fakeSubscribeRequest, resource: SUBSCRIBE_API });
|
|
344
414
|
webSocketManager.shouldReconnect = false;
|
|
345
415
|
// Simulate the WebSocket close event
|
|
346
416
|
setTimeout(() => {
|
|
@@ -370,7 +440,7 @@ describe('WebSocketManager', () => {
|
|
|
370
440
|
|
|
371
441
|
(mockWebex.request as jest.Mock).mockResolvedValueOnce(subscribeResponse);
|
|
372
442
|
|
|
373
|
-
await webSocketManager.initWebSocket({ body: fakeSubscribeRequest });
|
|
443
|
+
await webSocketManager.initWebSocket({ body: fakeSubscribeRequest, resource: SUBSCRIBE_API });
|
|
374
444
|
|
|
375
445
|
// Simulate the WebSocket close event
|
|
376
446
|
setTimeout(() => {
|
|
@@ -4,6 +4,8 @@ import {SubscribeRequest} from '../../../../../../src/types';
|
|
|
4
4
|
import LoggerProxy from '../../../../../../src/logger-proxy';
|
|
5
5
|
import {CONNECTIVITY_CHECK_INTERVAL} from '../../../../../../src/services/core/constants';
|
|
6
6
|
import { CONNECTION_SERVICE_FILE } from '../../../../../../src/constants';
|
|
7
|
+
import {SUBSCRIBE_API} from '../../../../../../src/services/constants';
|
|
8
|
+
|
|
7
9
|
|
|
8
10
|
jest.mock('../../../../../../src/services/core/websocket/WebSocketManager');
|
|
9
11
|
jest.mock('../../../../../../src/logger-proxy', () => ({
|
|
@@ -109,7 +111,7 @@ describe('ConnectionService', () => {
|
|
|
109
111
|
'event=socketConnectionRetry | Trying to reconnect to websocket',
|
|
110
112
|
{module: CONNECTION_SERVICE_FILE, method: 'handleSocketClose'}
|
|
111
113
|
);
|
|
112
|
-
expect(mockWebSocketManager.initWebSocket).toHaveBeenCalledWith({body: mockSubscribeRequest});
|
|
114
|
+
expect(mockWebSocketManager.initWebSocket).toHaveBeenCalledWith({body: mockSubscribeRequest, resource: SUBSCRIBE_API});
|
|
113
115
|
});
|
|
114
116
|
|
|
115
117
|
describe('ConnectionService onPing', () => {
|