@webex/contact-center 3.9.0 → 3.10.0-multi-llms.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 +207 -47
- package/dist/cc.js.map +1 -1
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -1
- package/dist/index.js +9 -0
- 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 +89 -0
- package/dist/metrics/behavioral-events.js.map +1 -1
- package/dist/metrics/constants.js +32 -2
- 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 +36 -2
- package/dist/services/config/constants.js.map +1 -1
- package/dist/services/config/index.js +29 -21
- package/dist/services/config/index.js.map +1 -1
- package/dist/services/config/types.js +33 -1
- package/dist/services/config/types.js.map +1 -1
- package/dist/services/core/GlobalTypes.js.map +1 -1
- package/dist/services/core/Utils.js +181 -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/constants.js +17 -1
- package/dist/services/core/constants.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 +151 -7
- package/dist/services/task/TaskManager.js.map +1 -1
- package/dist/services/task/TaskUtils.js +104 -0
- package/dist/services/task/TaskUtils.js.map +1 -0
- package/dist/services/task/constants.js +26 -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 +428 -91
- package/dist/services/task/index.js.map +1 -1
- package/dist/services/task/types.js +12 -0
- package/dist/services/task/types.js.map +1 -1
- package/dist/types/cc.d.ts +121 -35
- package/dist/types/constants.d.ts +1 -0
- package/dist/types/index.d.ts +4 -3
- package/dist/types/metrics/constants.d.ts +25 -1
- 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 +35 -1
- package/dist/types/services/config/index.d.ts +6 -9
- package/dist/types/services/config/types.d.ts +79 -58
- package/dist/types/services/core/GlobalTypes.d.ts +25 -0
- package/dist/types/services/core/Utils.d.ts +55 -1
- package/dist/types/services/core/constants.d.ts +14 -0
- package/dist/types/services/task/TaskUtils.d.ts +42 -0
- package/dist/types/services/task/constants.d.ts +23 -0
- package/dist/types/services/task/contact.d.ts +10 -0
- package/dist/types/services/task/index.d.ts +85 -4
- package/dist/types/services/task/types.d.ts +245 -21
- 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 -9
- package/src/cc.ts +232 -52
- package/src/constants.ts +1 -0
- package/src/index.ts +17 -2
- package/src/logger-proxy.ts +24 -1
- package/src/metrics/MetricsManager.ts +1 -1
- package/src/metrics/behavioral-events.ts +94 -0
- package/src/metrics/constants.ts +37 -1
- 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 +42 -2
- package/src/services/config/index.ts +30 -30
- package/src/services/config/types.ts +59 -58
- package/src/services/core/GlobalTypes.ts +27 -0
- package/src/services/core/Utils.ts +215 -1
- package/src/services/core/aqm-reqs.ts +0 -5
- package/src/services/core/constants.ts +16 -0
- package/src/services/core/websocket/WebSocketManager.ts +0 -4
- package/src/services/task/TaskManager.ts +182 -9
- package/src/services/task/TaskUtils.ts +113 -0
- package/src/services/task/constants.ts +25 -0
- package/src/services/task/contact.ts +80 -0
- package/src/services/task/index.ts +497 -71
- package/src/services/task/types.ts +264 -20
- package/src/types.ts +180 -0
- package/src/utils/PageCache.ts +252 -0
- package/test/unit/spec/cc.ts +282 -85
- package/test/unit/spec/metrics/MetricsManager.ts +0 -1
- package/test/unit/spec/metrics/behavioral-events.ts +42 -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 +279 -65
- package/test/unit/spec/services/core/Utils.ts +282 -1
- 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 +760 -2
- package/test/unit/spec/services/task/TaskUtils.ts +131 -0
- package/test/unit/spec/services/task/contact.ts +31 -1
- package/test/unit/spec/services/task/index.ts +873 -163
- package/umd/contact-center.min.js +2 -2
- package/umd/contact-center.min.js.map +1 -1
package/dist/cc.js
CHANGED
|
@@ -9,19 +9,22 @@ var _events = _interopRequireDefault(require("events"));
|
|
|
9
9
|
var _uuid = require("uuid");
|
|
10
10
|
var _types = require("./types");
|
|
11
11
|
var _constants = require("./constants");
|
|
12
|
-
var _constants2 = require("./services/constants");
|
|
12
|
+
var _constants2 = require("./services/config/constants");
|
|
13
|
+
var _constants3 = require("./services/constants");
|
|
13
14
|
var _services = _interopRequireDefault(require("./services"));
|
|
14
15
|
var _WebexRequest = _interopRequireDefault(require("./services/core/WebexRequest"));
|
|
15
16
|
var _loggerProxy = _interopRequireDefault(require("./logger-proxy"));
|
|
16
17
|
var _types2 = require("./services/agent/types");
|
|
17
18
|
var _Utils = require("./services/core/Utils");
|
|
18
19
|
var _types3 = require("./services/config/types");
|
|
19
|
-
var _constants3 = require("./services/config/constants");
|
|
20
20
|
var _TaskManager = _interopRequireDefault(require("./services/task/TaskManager"));
|
|
21
21
|
var _WebCallingService = _interopRequireDefault(require("./services/WebCallingService"));
|
|
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
|
}
|
|
@@ -269,6 +343,16 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
269
343
|
this.trigger(_types4.TASK_EVENTS.TASK_HYDRATE, task);
|
|
270
344
|
};
|
|
271
345
|
|
|
346
|
+
/**
|
|
347
|
+
* Handles task merged events when tasks are combined eg: EPDN merge/transfer
|
|
348
|
+
* @private
|
|
349
|
+
* @param {ITask} task The task object that has been merged
|
|
350
|
+
*/
|
|
351
|
+
handleTaskMerged = task => {
|
|
352
|
+
// @ts-ignore
|
|
353
|
+
this.trigger(_types4.TASK_EVENTS.TASK_MERGED, task);
|
|
354
|
+
};
|
|
355
|
+
|
|
272
356
|
/**
|
|
273
357
|
* Sets up event listeners for incoming tasks and task hydration
|
|
274
358
|
* Subscribes to task events from the task manager
|
|
@@ -277,6 +361,7 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
277
361
|
incomingTaskListener() {
|
|
278
362
|
this.taskManager.on(_types4.TASK_EVENTS.TASK_INCOMING, this.handleIncomingTask);
|
|
279
363
|
this.taskManager.on(_types4.TASK_EVENTS.TASK_HYDRATE, this.handleTaskHydrate);
|
|
364
|
+
this.taskManager.on(_types4.TASK_EVENTS.TASK_MERGED, this.handleTaskMerged);
|
|
280
365
|
}
|
|
281
366
|
|
|
282
367
|
/**
|
|
@@ -522,6 +607,7 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
522
607
|
});
|
|
523
608
|
// TODO: Make profile a singleton to make it available throughout app/sdk so we dont need to inject info everywhere
|
|
524
609
|
this.taskManager.setWrapupData(this.agentConfig.wrapUpData);
|
|
610
|
+
this.taskManager.setAgentId(this.agentConfig.agentId);
|
|
525
611
|
if (this.agentConfig.webRtcEnabled && this.agentConfig.loginVoiceOptions.includes(_types.LoginOption.BROWSER)) {
|
|
526
612
|
this.$webex.internal.mercury.connect().then(() => {
|
|
527
613
|
_loggerProxy.default.log('Authentication: webex.internal.mercury.connect successful', {
|
|
@@ -596,14 +682,14 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
596
682
|
};
|
|
597
683
|
throw error;
|
|
598
684
|
}
|
|
599
|
-
const loginResponse = this.services.agent.stationLogin({
|
|
685
|
+
const loginResponse = await this.services.agent.stationLogin({
|
|
600
686
|
data: {
|
|
601
687
|
dialNumber: data.loginOption === _types.LoginOption.BROWSER ? this.agentConfig.agentId : data.dialNumber,
|
|
602
688
|
teamId: data.teamId,
|
|
603
689
|
deviceType: data.loginOption,
|
|
604
690
|
isExtension: data.loginOption === _types.LoginOption.EXTENSION,
|
|
605
691
|
deviceId: this.getDeviceId(data.loginOption, data.dialNumber),
|
|
606
|
-
roles: [
|
|
692
|
+
roles: [_constants3.AGENT],
|
|
607
693
|
teamName: _constants.EMPTY_STRING,
|
|
608
694
|
siteId: _constants.EMPTY_STRING,
|
|
609
695
|
usesOtherDN: false,
|
|
@@ -726,7 +812,7 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
726
812
|
if (loginOption === _types.LoginOption.EXTENSION || loginOption === _types.LoginOption.AGENT_DN) {
|
|
727
813
|
return dialNumber;
|
|
728
814
|
}
|
|
729
|
-
return
|
|
815
|
+
return _constants3.WEB_RTC_PREFIX + this.agentConfig.agentId;
|
|
730
816
|
}
|
|
731
817
|
|
|
732
818
|
/**
|
|
@@ -837,6 +923,18 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
837
923
|
module: _constants.CC_FILE,
|
|
838
924
|
method: _constants.METHODS.HANDLE_WEBSOCKET_MESSAGE
|
|
839
925
|
});
|
|
926
|
+
|
|
927
|
+
// Emit metrics for all websocket events except keepalive and welcome
|
|
928
|
+
const topLevelType = eventData.type;
|
|
929
|
+
const nestedType = eventData?.data?.type;
|
|
930
|
+
if (topLevelType !== _types3.CC_EVENTS.WELCOME && eventData.keepalive !== 'true') {
|
|
931
|
+
const metricsPayload = {
|
|
932
|
+
ws_event_type: nestedType || topLevelType,
|
|
933
|
+
top_level_type: topLevelType,
|
|
934
|
+
has_data: Boolean(eventData.data)
|
|
935
|
+
};
|
|
936
|
+
this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.WEBSOCKET_EVENT_RECEIVED, metricsPayload, ['operational']);
|
|
937
|
+
}
|
|
840
938
|
switch (eventData.type) {
|
|
841
939
|
case _types3.CC_EVENTS.AGENT_MULTI_LOGIN:
|
|
842
940
|
// @ts-ignore
|
|
@@ -1001,9 +1099,9 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1001
1099
|
module: _constants.CC_FILE,
|
|
1002
1100
|
method: _constants.METHODS.SILENT_RELOGIN
|
|
1003
1101
|
});
|
|
1004
|
-
auxCodeId =
|
|
1102
|
+
auxCodeId = _constants2.AGENT_STATE_AVAILABLE_ID;
|
|
1005
1103
|
const stateChangeData = {
|
|
1006
|
-
state:
|
|
1104
|
+
state: _constants2.AGENT_STATE_AVAILABLE,
|
|
1007
1105
|
auxCodeId,
|
|
1008
1106
|
lastStateChangeReason,
|
|
1009
1107
|
agentId
|
|
@@ -1085,6 +1183,7 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1085
1183
|
* Makes an outbound call to a specified phone number.
|
|
1086
1184
|
*
|
|
1087
1185
|
* @param {string} destination - The phone number to dial (e.g., '+1234567890').
|
|
1186
|
+
* @param {string} origin - The contact center number that will be used while making a call to the customer.
|
|
1088
1187
|
* Should include country code and be in E.164 format.
|
|
1089
1188
|
* @returns {Promise<TaskResponse>} Resolves with the task response containing:
|
|
1090
1189
|
* - interactionId: Unique identifier for the outbound call
|
|
@@ -1120,7 +1219,7 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1120
1219
|
*
|
|
1121
1220
|
* // Start the outbound call
|
|
1122
1221
|
* const destination = '+1234567890';
|
|
1123
|
-
* const task = await cc.startOutdial(destination);
|
|
1222
|
+
* const task = await cc.startOutdial(destination, origin);
|
|
1124
1223
|
*
|
|
1125
1224
|
* // Listen for all relevant task events
|
|
1126
1225
|
* task.on('task:ringing', () => {
|
|
@@ -1188,7 +1287,7 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1188
1287
|
* }
|
|
1189
1288
|
* ```
|
|
1190
1289
|
*/
|
|
1191
|
-
async startOutdial(destination) {
|
|
1290
|
+
async startOutdial(destination, origin) {
|
|
1192
1291
|
_loggerProxy.default.info('Starting outbound dial', {
|
|
1193
1292
|
module: _constants.CC_FILE,
|
|
1194
1293
|
method: _constants.METHODS.START_OUTDIAL
|
|
@@ -1199,6 +1298,7 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1199
1298
|
// Construct the outdial payload.
|
|
1200
1299
|
const outDialPayload = {
|
|
1201
1300
|
destination,
|
|
1301
|
+
origin,
|
|
1202
1302
|
entryPointId: this.agentConfig.outDialEp,
|
|
1203
1303
|
direction: _constants.OUTDIAL_DIRECTION,
|
|
1204
1304
|
attributes: _constants.ATTRIBUTES,
|
|
@@ -1211,6 +1311,7 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1211
1311
|
this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.TASK_OUTDIAL_SUCCESS, {
|
|
1212
1312
|
..._MetricsManager.default.getCommonTrackingFieldForAQMResponse(result),
|
|
1213
1313
|
destination,
|
|
1314
|
+
origin,
|
|
1214
1315
|
mediaType: _constants.OUTDIAL_MEDIA_TYPE
|
|
1215
1316
|
}, ['behavioral', 'business', 'operational']);
|
|
1216
1317
|
_loggerProxy.default.log(`Outbound dial completed successfully`, {
|
|
@@ -1225,6 +1326,7 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1225
1326
|
this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.TASK_OUTDIAL_FAILED, {
|
|
1226
1327
|
..._MetricsManager.default.getCommonTrackingFieldForAQMResponseFailed(failure),
|
|
1227
1328
|
destination,
|
|
1329
|
+
origin,
|
|
1228
1330
|
mediaType: _constants.OUTDIAL_MEDIA_TYPE
|
|
1229
1331
|
}, ['behavioral', 'business', 'operational']);
|
|
1230
1332
|
const {
|
|
@@ -1235,65 +1337,105 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1235
1337
|
}
|
|
1236
1338
|
|
|
1237
1339
|
/**
|
|
1238
|
-
*
|
|
1239
|
-
*
|
|
1240
|
-
*
|
|
1241
|
-
*
|
|
1242
|
-
*
|
|
1243
|
-
*
|
|
1244
|
-
* @
|
|
1340
|
+
* Fetches outdial ANI (Automatic Number Identification) entries for an outdial ANI ID.
|
|
1341
|
+
*
|
|
1342
|
+
* This method retrieves the list of phone numbers that can be used as caller ID when making
|
|
1343
|
+
* outbound calls. The ANI data is associated with an outdial ANI ID and can be filtered
|
|
1344
|
+
* and paginated as needed.
|
|
1345
|
+
*
|
|
1346
|
+
* @param {string} outdialANI - The outdial ANI ID to fetch ANI data for
|
|
1347
|
+
* @param {number} [page] - Optional page number for pagination (0-based)
|
|
1348
|
+
* @param {number} [pageSize] - Optional number of items per page
|
|
1349
|
+
* @param {string} [search] - Optional search term to filter results by name or number
|
|
1350
|
+
* @param {string} [filter] - Optional filter string
|
|
1351
|
+
* @param {string} [attributes] - Optional attributes to include in response
|
|
1352
|
+
* @returns {Promise<OutdialAniEntriesResponse>} Promise resolving to outdial ANI response containing:
|
|
1353
|
+
* - data: Array of ANI entries with number and name
|
|
1354
|
+
* - meta: Pagination metadata
|
|
1355
|
+
* @throws {Error} If the operation fails or agent is not registered
|
|
1245
1356
|
* @public
|
|
1246
1357
|
* @example
|
|
1247
1358
|
* ```typescript
|
|
1248
1359
|
* const cc = webex.cc;
|
|
1249
1360
|
* await cc.register();
|
|
1250
|
-
* await cc.stationLogin({ teamId: 'team123', loginOption: 'BROWSER' });
|
|
1251
1361
|
*
|
|
1252
|
-
* //
|
|
1253
|
-
* const
|
|
1362
|
+
* // Get agent profile to obtain outdial ANI ID
|
|
1363
|
+
* const agentProfile = cc.agentConfig;
|
|
1364
|
+
* const outdialANI = agentProfile.outdialANIId;
|
|
1254
1365
|
*
|
|
1255
|
-
* //
|
|
1256
|
-
* const
|
|
1366
|
+
* // Basic usage - get all ANI data for an outdial ANI ID
|
|
1367
|
+
* const aniData = await cc.getOutdialAniEntries({ outdialANI });
|
|
1257
1368
|
*
|
|
1258
|
-
* //
|
|
1259
|
-
* const
|
|
1260
|
-
*
|
|
1261
|
-
*
|
|
1262
|
-
*
|
|
1263
|
-
*
|
|
1264
|
-
* );
|
|
1369
|
+
* // With pagination and search
|
|
1370
|
+
* const paginatedAni = await cc.getOutdialAniEntries({
|
|
1371
|
+
* outdialANI,
|
|
1372
|
+
* page: 0,
|
|
1373
|
+
* pageSize: 50,
|
|
1374
|
+
* search: '555' // search for numbers containing '555'
|
|
1375
|
+
* });
|
|
1265
1376
|
*
|
|
1266
|
-
* // Process
|
|
1267
|
-
*
|
|
1268
|
-
* console.log(
|
|
1269
|
-
* id: queue.queueId,
|
|
1270
|
-
* name: queue.queueName,
|
|
1271
|
-
* channelType: queue.channelType,
|
|
1272
|
-
* isActive: queue.isActive,
|
|
1273
|
-
* description: queue.description
|
|
1274
|
-
* });
|
|
1377
|
+
* // Process the results
|
|
1378
|
+
* paginatedAni.forEach(ani => {
|
|
1379
|
+
* console.log(`ANI: ${ani.number} - ${ani.name}`);
|
|
1275
1380
|
* });
|
|
1276
1381
|
* ```
|
|
1277
1382
|
*/
|
|
1278
|
-
async
|
|
1279
|
-
|
|
1383
|
+
async getOutdialAniEntries(params) {
|
|
1384
|
+
const {
|
|
1385
|
+
outdialANI,
|
|
1386
|
+
page,
|
|
1387
|
+
pageSize,
|
|
1388
|
+
search,
|
|
1389
|
+
filter,
|
|
1390
|
+
attributes
|
|
1391
|
+
} = params;
|
|
1392
|
+
_loggerProxy.default.info('Fetching outdial ANI entries', {
|
|
1280
1393
|
module: _constants.CC_FILE,
|
|
1281
|
-
method: _constants.METHODS.
|
|
1394
|
+
method: _constants.METHODS.GET_OUTDIAL_ANI_ENTRIES
|
|
1282
1395
|
});
|
|
1283
1396
|
const orgId = this.$webex.credentials.getOrgId();
|
|
1284
1397
|
if (!orgId) {
|
|
1285
1398
|
_loggerProxy.default.error('Org ID not found.', {
|
|
1286
1399
|
module: _constants.CC_FILE,
|
|
1287
|
-
method: _constants.METHODS.
|
|
1400
|
+
method: _constants.METHODS.GET_OUTDIAL_ANI_ENTRIES
|
|
1288
1401
|
});
|
|
1289
1402
|
throw new Error('Org ID not found.');
|
|
1290
1403
|
}
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1404
|
+
try {
|
|
1405
|
+
const result = await this.services.config.getOutdialAniEntries(orgId, {
|
|
1406
|
+
outdialANI,
|
|
1407
|
+
page,
|
|
1408
|
+
pageSize,
|
|
1409
|
+
search,
|
|
1410
|
+
filter,
|
|
1411
|
+
attributes
|
|
1412
|
+
});
|
|
1413
|
+
this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.OUTDIAL_ANI_EP_FETCH_SUCCESS, {
|
|
1414
|
+
outdialANI,
|
|
1415
|
+
resultCount: result?.length || 0
|
|
1416
|
+
}, ['behavioral', 'business', 'operational']);
|
|
1417
|
+
_loggerProxy.default.log(`Successfully retrieved outdial ANI entries for ANI ID ${outdialANI}`, {
|
|
1418
|
+
module: _constants.CC_FILE,
|
|
1419
|
+
method: _constants.METHODS.GET_OUTDIAL_ANI_ENTRIES
|
|
1420
|
+
});
|
|
1421
|
+
return result;
|
|
1422
|
+
} catch (error) {
|
|
1423
|
+
const failure = error.details;
|
|
1424
|
+
this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.OUTDIAL_ANI_EP_FETCH_FAILED, {
|
|
1425
|
+
..._MetricsManager.default.getCommonTrackingFieldForAQMResponseFailed(failure),
|
|
1426
|
+
outdialANI,
|
|
1427
|
+
error
|
|
1428
|
+
}, ['behavioral', 'business', 'operational']);
|
|
1429
|
+
_loggerProxy.default.error(`Failed to fetch outdial ANI entries for ANI ID ${outdialANI} due to: ${error}`, {
|
|
1430
|
+
module: _constants.CC_FILE,
|
|
1431
|
+
method: _constants.METHODS.GET_OUTDIAL_ANI_ENTRIES,
|
|
1432
|
+
trackingId: failure.trackingId
|
|
1433
|
+
});
|
|
1434
|
+
const {
|
|
1435
|
+
error: detailedError
|
|
1436
|
+
} = (0, _Utils.getErrorDetails)(error, _constants.METHODS.GET_OUTDIAL_ANI_ENTRIES, _constants.CC_FILE);
|
|
1437
|
+
throw detailedError;
|
|
1438
|
+
}
|
|
1297
1439
|
}
|
|
1298
1440
|
|
|
1299
1441
|
/**
|
|
@@ -1411,6 +1553,24 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1411
1553
|
throw error;
|
|
1412
1554
|
}
|
|
1413
1555
|
}
|
|
1556
|
+
|
|
1557
|
+
/**
|
|
1558
|
+
* Returns paginated entry points for the organization.
|
|
1559
|
+
* Thin wrapper around internal EntryPoint instance.
|
|
1560
|
+
* @public
|
|
1561
|
+
*/
|
|
1562
|
+
async getEntryPoints(params = {}) {
|
|
1563
|
+
return this.entryPoint.getEntryPoints(params);
|
|
1564
|
+
}
|
|
1565
|
+
|
|
1566
|
+
/**
|
|
1567
|
+
* Returns paginated contact service queues for the organization.
|
|
1568
|
+
* Thin wrapper around internal Queue instance.
|
|
1569
|
+
* @public
|
|
1570
|
+
*/
|
|
1571
|
+
async getQueues(params = {}) {
|
|
1572
|
+
return this.queue.getQueues(params);
|
|
1573
|
+
}
|
|
1414
1574
|
}
|
|
1415
1575
|
exports.default = ContactCenter;
|
|
1416
1576
|
//# sourceMappingURL=cc.js.map
|