@webex/contact-center 3.8.1 → 3.9.0-multipleLLM.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cc.js +106 -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 +88 -0
- package/dist/metrics/behavioral-events.js.map +1 -1
- package/dist/metrics/constants.js +26 -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 +22 -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 +162 -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 +74 -2
- package/dist/services/task/TaskManager.js.map +1 -1
- package/dist/services/task/constants.js +7 -1
- package/dist/services/task/constants.js.map +1 -1
- package/dist/services/task/contact.js +86 -0
- package/dist/services/task/contact.js.map +1 -1
- package/dist/services/task/index.js +384 -72
- package/dist/services/task/index.js.map +1 -1
- package/dist/services/task/types.js +14 -0
- package/dist/services/task/types.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 +20 -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 +44 -64
- package/dist/types/services/core/GlobalTypes.d.ts +25 -0
- package/dist/types/services/core/Utils.d.ts +40 -1
- package/dist/types/services/task/constants.d.ts +6 -0
- package/dist/types/services/task/contact.d.ts +10 -0
- package/dist/types/services/task/index.d.ts +44 -2
- package/dist/types/services/task/types.d.ts +123 -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 +122 -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 +92 -0
- package/src/metrics/constants.ts +30 -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 +22 -65
- package/src/services/core/GlobalTypes.ts +27 -0
- package/src/services/core/Utils.ts +199 -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 +79 -3
- package/src/services/task/constants.ts +6 -0
- package/src/services/task/contact.ts +80 -0
- package/src/services/task/index.ts +457 -57
- package/src/services/task/types.ts +133 -0
- package/src/types.ts +180 -0
- package/src/utils/PageCache.ts +252 -0
- package/test/unit/spec/cc.ts +31 -82
- package/test/unit/spec/metrics/MetricsManager.ts +0 -1
- package/test/unit/spec/metrics/behavioral-events.ts +56 -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 +145 -1
- package/test/unit/spec/services/task/contact.ts +31 -1
- package/test/unit/spec/services/task/index.ts +410 -123
- 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
|
}
|
|
@@ -522,6 +596,7 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
522
596
|
});
|
|
523
597
|
// TODO: Make profile a singleton to make it available throughout app/sdk so we dont need to inject info everywhere
|
|
524
598
|
this.taskManager.setWrapupData(this.agentConfig.wrapUpData);
|
|
599
|
+
this.taskManager.setAgentId(this.agentConfig.agentId);
|
|
525
600
|
if (this.agentConfig.webRtcEnabled && this.agentConfig.loginVoiceOptions.includes(_types.LoginOption.BROWSER)) {
|
|
526
601
|
this.$webex.internal.mercury.connect().then(() => {
|
|
527
602
|
_loggerProxy.default.log('Authentication: webex.internal.mercury.connect successful', {
|
|
@@ -833,10 +908,22 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
833
908
|
if (!eventData.type) {
|
|
834
909
|
return;
|
|
835
910
|
}
|
|
836
|
-
_loggerProxy.default.log(`Received event: ${eventData.type}`, {
|
|
911
|
+
_loggerProxy.default.log(`Received event: ${eventData?.data?.type ?? eventData.type}`, {
|
|
837
912
|
module: _constants.CC_FILE,
|
|
838
913
|
method: _constants.METHODS.HANDLE_WEBSOCKET_MESSAGE
|
|
839
914
|
});
|
|
915
|
+
|
|
916
|
+
// Emit metrics for all websocket events except keepalive and welcome
|
|
917
|
+
const topLevelType = eventData.type;
|
|
918
|
+
const nestedType = eventData?.data?.type;
|
|
919
|
+
if (topLevelType !== _types3.CC_EVENTS.WELCOME && eventData.keepalive !== 'true') {
|
|
920
|
+
const metricsPayload = {
|
|
921
|
+
ws_event_type: nestedType || topLevelType,
|
|
922
|
+
top_level_type: topLevelType,
|
|
923
|
+
has_data: Boolean(eventData.data)
|
|
924
|
+
};
|
|
925
|
+
this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.WEBSOCKET_EVENT_RECEIVED, metricsPayload, ['operational']);
|
|
926
|
+
}
|
|
840
927
|
switch (eventData.type) {
|
|
841
928
|
case _types3.CC_EVENTS.AGENT_MULTI_LOGIN:
|
|
842
929
|
// @ts-ignore
|
|
@@ -1234,68 +1321,6 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1234
1321
|
}
|
|
1235
1322
|
}
|
|
1236
1323
|
|
|
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
1324
|
/**
|
|
1300
1325
|
* Uploads logs to help troubleshoot SDK issues.
|
|
1301
1326
|
*
|
|
@@ -1411,6 +1436,24 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1411
1436
|
throw error;
|
|
1412
1437
|
}
|
|
1413
1438
|
}
|
|
1439
|
+
|
|
1440
|
+
/**
|
|
1441
|
+
* Returns paginated entry points for the organization.
|
|
1442
|
+
* Thin wrapper around internal EntryPoint instance.
|
|
1443
|
+
* @public
|
|
1444
|
+
*/
|
|
1445
|
+
async getEntryPoints(params = {}) {
|
|
1446
|
+
return this.entryPoint.getEntryPoints(params);
|
|
1447
|
+
}
|
|
1448
|
+
|
|
1449
|
+
/**
|
|
1450
|
+
* Returns paginated contact service queues for the organization.
|
|
1451
|
+
* Thin wrapper around internal Queue instance.
|
|
1452
|
+
* @public
|
|
1453
|
+
*/
|
|
1454
|
+
async getQueues(params = {}) {
|
|
1455
|
+
return this.queue.getQueues(params);
|
|
1456
|
+
}
|
|
1414
1457
|
}
|
|
1415
1458
|
exports.default = ContactCenter;
|
|
1416
1459
|
//# sourceMappingURL=cc.js.map
|