@webex/contact-center 3.8.1 → 3.9.0-next.10
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 +105 -63
- package/dist/cc.js.map +1 -1
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/logger-proxy.js +24 -1
- package/dist/logger-proxy.js.map +1 -1
- package/dist/metrics/MetricsManager.js +1 -1
- package/dist/metrics/MetricsManager.js.map +1 -1
- package/dist/metrics/behavioral-events.js +51 -0
- package/dist/metrics/behavioral-events.js.map +1 -1
- package/dist/metrics/constants.js +12 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/services/AddressBook.js +271 -0
- package/dist/services/AddressBook.js.map +1 -0
- package/dist/services/EntryPoint.js +227 -0
- package/dist/services/EntryPoint.js.map +1 -0
- package/dist/services/Queue.js +261 -0
- package/dist/services/Queue.js.map +1 -0
- package/dist/services/config/constants.js +24 -2
- package/dist/services/config/constants.js.map +1 -1
- package/dist/services/config/index.js +1 -43
- package/dist/services/config/index.js.map +1 -1
- package/dist/services/config/types.js +0 -5
- package/dist/services/config/types.js.map +1 -1
- package/dist/services/core/GlobalTypes.js.map +1 -1
- package/dist/services/core/Utils.js +121 -2
- package/dist/services/core/Utils.js.map +1 -1
- package/dist/services/core/aqm-reqs.js +0 -4
- package/dist/services/core/aqm-reqs.js.map +1 -1
- package/dist/services/core/websocket/WebSocketManager.js +0 -4
- package/dist/services/core/websocket/WebSocketManager.js.map +1 -1
- package/dist/services/task/TaskManager.js +1 -0
- package/dist/services/task/TaskManager.js.map +1 -1
- package/dist/services/task/index.js +145 -71
- package/dist/services/task/index.js.map +1 -1
- package/dist/types/cc.d.ts +77 -43
- package/dist/types/index.d.ts +8 -3
- package/dist/types/metrics/constants.d.ts +7 -0
- package/dist/types/services/AddressBook.d.ts +74 -0
- package/dist/types/services/EntryPoint.d.ts +67 -0
- package/dist/types/services/Queue.d.ts +76 -0
- package/dist/types/services/config/constants.d.ts +23 -1
- package/dist/types/services/config/index.d.ts +1 -14
- package/dist/types/services/config/types.d.ts +0 -64
- package/dist/types/services/core/GlobalTypes.d.ts +25 -0
- package/dist/types/services/core/Utils.d.ts +27 -1
- package/dist/types/services/task/index.d.ts +1 -1
- package/dist/types/types.d.ts +162 -0
- package/dist/types/utils/PageCache.d.ts +173 -0
- package/dist/types.js +17 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/PageCache.js +192 -0
- package/dist/utils/PageCache.js.map +1 -0
- package/dist/webex.js +1 -1
- package/package.json +10 -10
- package/src/cc.ts +121 -81
- package/src/index.ts +19 -3
- package/src/logger-proxy.ts +24 -1
- package/src/metrics/MetricsManager.ts +1 -1
- package/src/metrics/behavioral-events.ts +54 -0
- package/src/metrics/constants.ts +15 -0
- package/src/services/AddressBook.ts +291 -0
- package/src/services/EntryPoint.ts +241 -0
- package/src/services/Queue.ts +277 -0
- package/src/services/config/constants.ts +26 -2
- package/src/services/config/index.ts +1 -55
- package/src/services/config/types.ts +0 -65
- package/src/services/core/GlobalTypes.ts +27 -0
- package/src/services/core/Utils.ts +155 -1
- package/src/services/core/aqm-reqs.ts +0 -5
- package/src/services/core/websocket/WebSocketManager.ts +0 -4
- package/src/services/task/TaskManager.ts +1 -0
- package/src/services/task/index.ts +172 -56
- package/src/types.ts +180 -0
- package/src/utils/PageCache.ts +252 -0
- package/test/unit/spec/cc.ts +30 -82
- package/test/unit/spec/metrics/MetricsManager.ts +0 -1
- package/test/unit/spec/metrics/behavioral-events.ts +14 -0
- package/test/unit/spec/services/AddressBook.ts +332 -0
- package/test/unit/spec/services/EntryPoint.ts +259 -0
- package/test/unit/spec/services/Queue.ts +323 -0
- package/test/unit/spec/services/config/index.ts +0 -71
- package/test/unit/spec/services/core/Utils.ts +50 -0
- package/test/unit/spec/services/core/aqm-reqs.ts +1 -3
- package/test/unit/spec/services/core/websocket/WebSocketManager.ts +0 -4
- package/test/unit/spec/services/task/TaskManager.ts +8 -1
- package/test/unit/spec/services/task/index.ts +226 -122
- package/umd/contact-center.min.js +2 -2
- package/umd/contact-center.min.js.map +1 -1
package/dist/cc.js
CHANGED
|
@@ -22,6 +22,9 @@ var _WebCallingService = _interopRequireDefault(require("./services/WebCallingSe
|
|
|
22
22
|
var _types4 = require("./services/task/types");
|
|
23
23
|
var _MetricsManager = _interopRequireDefault(require("./metrics/MetricsManager"));
|
|
24
24
|
var _constants4 = require("./metrics/constants");
|
|
25
|
+
var _EntryPoint = _interopRequireDefault(require("./services/EntryPoint"));
|
|
26
|
+
var _AddressBook = _interopRequireDefault(require("./services/AddressBook"));
|
|
27
|
+
var _Queue = _interopRequireDefault(require("./services/Queue"));
|
|
25
28
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
26
29
|
/**
|
|
27
30
|
* @module CCPlugin
|
|
@@ -135,6 +138,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
135
138
|
*
|
|
136
139
|
* @public
|
|
137
140
|
*/
|
|
141
|
+
|
|
138
142
|
class ContactCenter extends _webexCore.WebexPlugin {
|
|
139
143
|
/**
|
|
140
144
|
* The plugin's unique namespace identifier in the Webex SDK.
|
|
@@ -206,6 +210,68 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
206
210
|
* @private
|
|
207
211
|
*/
|
|
208
212
|
|
|
213
|
+
/**
|
|
214
|
+
* API instance for managing Webex Contact Center entry points
|
|
215
|
+
* Provides functionality to fetch entry points with caching support
|
|
216
|
+
* @type {EntryPoint}
|
|
217
|
+
* @public
|
|
218
|
+
* @example
|
|
219
|
+
* ```typescript
|
|
220
|
+
* const cc = webex.cc;
|
|
221
|
+
* await cc.register();
|
|
222
|
+
* await cc.stationLogin({ teamId: 'team123', loginOption: 'BROWSER' });
|
|
223
|
+
*
|
|
224
|
+
* // Access EntryPointRecord
|
|
225
|
+
* const response = await cc.entryPoint.getEntryPoints({
|
|
226
|
+
* page: 0,
|
|
227
|
+
* pageSize: 50
|
|
228
|
+
* });
|
|
229
|
+
* ```
|
|
230
|
+
*/
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* API instance for managing Webex Contact Center address book contacts
|
|
234
|
+
* Provides functionality to fetch address book entries with caching support
|
|
235
|
+
* @type {AddressBook}
|
|
236
|
+
* @public
|
|
237
|
+
* @example
|
|
238
|
+
* ```typescript
|
|
239
|
+
* const cc = webex.cc;
|
|
240
|
+
* await cc.register();
|
|
241
|
+
* await cc.stationLogin({ teamId: 'team123', loginOption: 'BROWSER' });
|
|
242
|
+
*
|
|
243
|
+
* // Access AddressBook API
|
|
244
|
+
* const response = await cc.addressBook.getEntries({
|
|
245
|
+
* page: 0,
|
|
246
|
+
* pageSize: 25
|
|
247
|
+
* });
|
|
248
|
+
* ```
|
|
249
|
+
*/
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* API instance for managing Webex Contact Center queues
|
|
253
|
+
* Provides functionality to fetch queues with caching support
|
|
254
|
+
* @type {Queue}
|
|
255
|
+
* @public
|
|
256
|
+
* @example
|
|
257
|
+
* ```typescript
|
|
258
|
+
* const cc = webex.cc;
|
|
259
|
+
* await cc.register();
|
|
260
|
+
* await cc.stationLogin({ teamId: 'team123', loginOption: 'BROWSER' });
|
|
261
|
+
*
|
|
262
|
+
* // Access Queue API
|
|
263
|
+
* const response = await cc.queue.getQueues({
|
|
264
|
+
* page: 0,
|
|
265
|
+
* pageSize: 50
|
|
266
|
+
* });
|
|
267
|
+
*
|
|
268
|
+
* // Filter queues by specific criteria
|
|
269
|
+
* const filteredQueues = await cc.queue.getQueues({
|
|
270
|
+
* filter: 'id=="queue-id-123"'
|
|
271
|
+
* });
|
|
272
|
+
* ```
|
|
273
|
+
*/
|
|
274
|
+
|
|
209
275
|
/**
|
|
210
276
|
* Logger utility for Contact Center plugin
|
|
211
277
|
* Provides consistent logging across the plugin
|
|
@@ -245,6 +311,14 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
245
311
|
});
|
|
246
312
|
this.taskManager = _TaskManager.default.getTaskManager(this.services.contact, this.webCallingService, this.services.webSocketManager);
|
|
247
313
|
this.incomingTaskListener();
|
|
314
|
+
|
|
315
|
+
// Initialize API instances
|
|
316
|
+
// will have future function for indivdual fetch etc so better be in an object
|
|
317
|
+
this.entryPoint = new _EntryPoint.default(this.$webex);
|
|
318
|
+
this.addressBook = new _AddressBook.default(this.$webex, () => this.agentConfig?.addressBookId);
|
|
319
|
+
this.queue = new _Queue.default(this.$webex);
|
|
320
|
+
|
|
321
|
+
// Initialize logger
|
|
248
322
|
_loggerProxy.default.initialize(this.$webex.logger);
|
|
249
323
|
});
|
|
250
324
|
}
|
|
@@ -833,10 +907,22 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
833
907
|
if (!eventData.type) {
|
|
834
908
|
return;
|
|
835
909
|
}
|
|
836
|
-
_loggerProxy.default.log(`Received event: ${eventData.type}`, {
|
|
910
|
+
_loggerProxy.default.log(`Received event: ${eventData?.data?.type ?? eventData.type}`, {
|
|
837
911
|
module: _constants.CC_FILE,
|
|
838
912
|
method: _constants.METHODS.HANDLE_WEBSOCKET_MESSAGE
|
|
839
913
|
});
|
|
914
|
+
|
|
915
|
+
// Emit metrics for all websocket events except keepalive and welcome
|
|
916
|
+
const topLevelType = eventData.type;
|
|
917
|
+
const nestedType = eventData?.data?.type;
|
|
918
|
+
if (topLevelType !== _types3.CC_EVENTS.WELCOME && eventData.keepalive !== 'true') {
|
|
919
|
+
const metricsPayload = {
|
|
920
|
+
ws_event_type: nestedType || topLevelType,
|
|
921
|
+
top_level_type: topLevelType,
|
|
922
|
+
has_data: Boolean(eventData.data)
|
|
923
|
+
};
|
|
924
|
+
this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.WEBSOCKET_EVENT_RECEIVED, metricsPayload, ['operational']);
|
|
925
|
+
}
|
|
840
926
|
switch (eventData.type) {
|
|
841
927
|
case _types3.CC_EVENTS.AGENT_MULTI_LOGIN:
|
|
842
928
|
// @ts-ignore
|
|
@@ -1234,68 +1320,6 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1234
1320
|
}
|
|
1235
1321
|
}
|
|
1236
1322
|
|
|
1237
|
-
/**
|
|
1238
|
-
* This is used for getting the list of queues to which a task can be consulted or transferred.
|
|
1239
|
-
* @param {string} [search] - Optional search string to filter queues by name
|
|
1240
|
-
* @param {string} [filter] - Optional OData filter expression (e.g., 'teamId eq "team123"')
|
|
1241
|
-
* @param {number} [page=0] - Page number for paginated results, starting at 0
|
|
1242
|
-
* @param {number} [pageSize=100] - Number of queues to return per page
|
|
1243
|
-
* @returns Promise<ContactServiceQueue[]> Resolves with the list of queues
|
|
1244
|
-
* @throws Error If the operation fails
|
|
1245
|
-
* @public
|
|
1246
|
-
* @example
|
|
1247
|
-
* ```typescript
|
|
1248
|
-
* const cc = webex.cc;
|
|
1249
|
-
* await cc.register();
|
|
1250
|
-
* await cc.stationLogin({ teamId: 'team123', loginOption: 'BROWSER' });
|
|
1251
|
-
*
|
|
1252
|
-
* // Basic usage - get all queues
|
|
1253
|
-
* const allQueues = await cc.getQueues();
|
|
1254
|
-
*
|
|
1255
|
-
* // Search for specific queues
|
|
1256
|
-
* const salesQueues = await cc.getQueues('sales'); // Search for 'sales' in queue names
|
|
1257
|
-
*
|
|
1258
|
-
* // Use filtering and pagination
|
|
1259
|
-
* const filteredQueues = await cc.getQueues(
|
|
1260
|
-
* '', // No search term
|
|
1261
|
-
* 'teamId eq "team123"', // Filter by team
|
|
1262
|
-
* 0, // First page
|
|
1263
|
-
* 50 // 50 items per page
|
|
1264
|
-
* );
|
|
1265
|
-
*
|
|
1266
|
-
* // Process queue results
|
|
1267
|
-
* queues.forEach(queue => {
|
|
1268
|
-
* console.log('Queue:', {
|
|
1269
|
-
* id: queue.queueId,
|
|
1270
|
-
* name: queue.queueName,
|
|
1271
|
-
* channelType: queue.channelType,
|
|
1272
|
-
* isActive: queue.isActive,
|
|
1273
|
-
* description: queue.description
|
|
1274
|
-
* });
|
|
1275
|
-
* });
|
|
1276
|
-
* ```
|
|
1277
|
-
*/
|
|
1278
|
-
async getQueues(search, filter, page = _constants3.DEFAULT_PAGE, pageSize = _constants3.DEFAULT_PAGE_SIZE) {
|
|
1279
|
-
_loggerProxy.default.info('Fetching queues', {
|
|
1280
|
-
module: _constants.CC_FILE,
|
|
1281
|
-
method: _constants.METHODS.GET_QUEUES
|
|
1282
|
-
});
|
|
1283
|
-
const orgId = this.$webex.credentials.getOrgId();
|
|
1284
|
-
if (!orgId) {
|
|
1285
|
-
_loggerProxy.default.error('Org ID not found.', {
|
|
1286
|
-
module: _constants.CC_FILE,
|
|
1287
|
-
method: _constants.METHODS.GET_QUEUES
|
|
1288
|
-
});
|
|
1289
|
-
throw new Error('Org ID not found.');
|
|
1290
|
-
}
|
|
1291
|
-
const result = await this.services.config.getQueues(orgId, page, pageSize, search, filter);
|
|
1292
|
-
_loggerProxy.default.log(`Successfully retrieved ${result?.length} queues`, {
|
|
1293
|
-
module: _constants.CC_FILE,
|
|
1294
|
-
method: _constants.METHODS.GET_QUEUES
|
|
1295
|
-
});
|
|
1296
|
-
return result;
|
|
1297
|
-
}
|
|
1298
|
-
|
|
1299
1323
|
/**
|
|
1300
1324
|
* Uploads logs to help troubleshoot SDK issues.
|
|
1301
1325
|
*
|
|
@@ -1411,6 +1435,24 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1411
1435
|
throw error;
|
|
1412
1436
|
}
|
|
1413
1437
|
}
|
|
1438
|
+
|
|
1439
|
+
/**
|
|
1440
|
+
* Returns paginated entry points for the organization.
|
|
1441
|
+
* Thin wrapper around internal EntryPoint instance.
|
|
1442
|
+
* @public
|
|
1443
|
+
*/
|
|
1444
|
+
async getEntryPoints(params = {}) {
|
|
1445
|
+
return this.entryPoint.getEntryPoints(params);
|
|
1446
|
+
}
|
|
1447
|
+
|
|
1448
|
+
/**
|
|
1449
|
+
* Returns paginated contact service queues for the organization.
|
|
1450
|
+
* Thin wrapper around internal Queue instance.
|
|
1451
|
+
* @public
|
|
1452
|
+
*/
|
|
1453
|
+
async getQueues(params = {}) {
|
|
1454
|
+
return this.queue.getQueues(params);
|
|
1455
|
+
}
|
|
1414
1456
|
}
|
|
1415
1457
|
exports.default = ContactCenter;
|
|
1416
1458
|
//# sourceMappingURL=cc.js.map
|