@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.
Files changed (89) hide show
  1. package/dist/cc.js +105 -63
  2. package/dist/cc.js.map +1 -1
  3. package/dist/index.js +13 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/logger-proxy.js +24 -1
  6. package/dist/logger-proxy.js.map +1 -1
  7. package/dist/metrics/MetricsManager.js +1 -1
  8. package/dist/metrics/MetricsManager.js.map +1 -1
  9. package/dist/metrics/behavioral-events.js +51 -0
  10. package/dist/metrics/behavioral-events.js.map +1 -1
  11. package/dist/metrics/constants.js +12 -1
  12. package/dist/metrics/constants.js.map +1 -1
  13. package/dist/services/AddressBook.js +271 -0
  14. package/dist/services/AddressBook.js.map +1 -0
  15. package/dist/services/EntryPoint.js +227 -0
  16. package/dist/services/EntryPoint.js.map +1 -0
  17. package/dist/services/Queue.js +261 -0
  18. package/dist/services/Queue.js.map +1 -0
  19. package/dist/services/config/constants.js +24 -2
  20. package/dist/services/config/constants.js.map +1 -1
  21. package/dist/services/config/index.js +1 -43
  22. package/dist/services/config/index.js.map +1 -1
  23. package/dist/services/config/types.js +0 -5
  24. package/dist/services/config/types.js.map +1 -1
  25. package/dist/services/core/GlobalTypes.js.map +1 -1
  26. package/dist/services/core/Utils.js +121 -2
  27. package/dist/services/core/Utils.js.map +1 -1
  28. package/dist/services/core/aqm-reqs.js +0 -4
  29. package/dist/services/core/aqm-reqs.js.map +1 -1
  30. package/dist/services/core/websocket/WebSocketManager.js +0 -4
  31. package/dist/services/core/websocket/WebSocketManager.js.map +1 -1
  32. package/dist/services/task/TaskManager.js +1 -0
  33. package/dist/services/task/TaskManager.js.map +1 -1
  34. package/dist/services/task/index.js +145 -71
  35. package/dist/services/task/index.js.map +1 -1
  36. package/dist/types/cc.d.ts +77 -43
  37. package/dist/types/index.d.ts +8 -3
  38. package/dist/types/metrics/constants.d.ts +7 -0
  39. package/dist/types/services/AddressBook.d.ts +74 -0
  40. package/dist/types/services/EntryPoint.d.ts +67 -0
  41. package/dist/types/services/Queue.d.ts +76 -0
  42. package/dist/types/services/config/constants.d.ts +23 -1
  43. package/dist/types/services/config/index.d.ts +1 -14
  44. package/dist/types/services/config/types.d.ts +0 -64
  45. package/dist/types/services/core/GlobalTypes.d.ts +25 -0
  46. package/dist/types/services/core/Utils.d.ts +27 -1
  47. package/dist/types/services/task/index.d.ts +1 -1
  48. package/dist/types/types.d.ts +162 -0
  49. package/dist/types/utils/PageCache.d.ts +173 -0
  50. package/dist/types.js +17 -0
  51. package/dist/types.js.map +1 -1
  52. package/dist/utils/PageCache.js +192 -0
  53. package/dist/utils/PageCache.js.map +1 -0
  54. package/dist/webex.js +1 -1
  55. package/package.json +10 -10
  56. package/src/cc.ts +121 -81
  57. package/src/index.ts +19 -3
  58. package/src/logger-proxy.ts +24 -1
  59. package/src/metrics/MetricsManager.ts +1 -1
  60. package/src/metrics/behavioral-events.ts +54 -0
  61. package/src/metrics/constants.ts +15 -0
  62. package/src/services/AddressBook.ts +291 -0
  63. package/src/services/EntryPoint.ts +241 -0
  64. package/src/services/Queue.ts +277 -0
  65. package/src/services/config/constants.ts +26 -2
  66. package/src/services/config/index.ts +1 -55
  67. package/src/services/config/types.ts +0 -65
  68. package/src/services/core/GlobalTypes.ts +27 -0
  69. package/src/services/core/Utils.ts +155 -1
  70. package/src/services/core/aqm-reqs.ts +0 -5
  71. package/src/services/core/websocket/WebSocketManager.ts +0 -4
  72. package/src/services/task/TaskManager.ts +1 -0
  73. package/src/services/task/index.ts +172 -56
  74. package/src/types.ts +180 -0
  75. package/src/utils/PageCache.ts +252 -0
  76. package/test/unit/spec/cc.ts +30 -82
  77. package/test/unit/spec/metrics/MetricsManager.ts +0 -1
  78. package/test/unit/spec/metrics/behavioral-events.ts +14 -0
  79. package/test/unit/spec/services/AddressBook.ts +332 -0
  80. package/test/unit/spec/services/EntryPoint.ts +259 -0
  81. package/test/unit/spec/services/Queue.ts +323 -0
  82. package/test/unit/spec/services/config/index.ts +0 -71
  83. package/test/unit/spec/services/core/Utils.ts +50 -0
  84. package/test/unit/spec/services/core/aqm-reqs.ts +1 -3
  85. package/test/unit/spec/services/core/websocket/WebSocketManager.ts +0 -4
  86. package/test/unit/spec/services/task/TaskManager.ts +8 -1
  87. package/test/unit/spec/services/task/index.ts +226 -122
  88. package/umd/contact-center.min.js +2 -2
  89. 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