@webex/contact-center 3.11.0 → 3.12.0-next.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 +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
package/dist/cc.js
CHANGED
|
@@ -22,9 +22,10 @@ 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 =
|
|
26
|
-
var _AddressBook =
|
|
27
|
-
var _Queue =
|
|
25
|
+
var _EntryPoint = require("./services/EntryPoint");
|
|
26
|
+
var _AddressBook = require("./services/AddressBook");
|
|
27
|
+
var _Queue = require("./services/Queue");
|
|
28
|
+
var _ApiAiAssistant = require("./services/ApiAiAssistant");
|
|
28
29
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
29
30
|
/**
|
|
30
31
|
* @module CCPlugin
|
|
@@ -84,6 +85,7 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
84
85
|
* - `task:established` - Task/call has been connected
|
|
85
86
|
* - `task:ended` - Task/call has ended
|
|
86
87
|
* - `task:error` - An error occurred during task handling
|
|
88
|
+
* - `task:campaignPreviewReservation` - Campaign preview contact offered to agent
|
|
87
89
|
*
|
|
88
90
|
* @public
|
|
89
91
|
*
|
|
@@ -272,6 +274,12 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
272
274
|
* ```
|
|
273
275
|
*/
|
|
274
276
|
|
|
277
|
+
/**
|
|
278
|
+
* API instance for AI Assistant operations such as transcript controls.
|
|
279
|
+
* @type {ApiAIAssistant}
|
|
280
|
+
* @public
|
|
281
|
+
*/
|
|
282
|
+
|
|
275
283
|
/**
|
|
276
284
|
* Logger utility for Contact Center plugin
|
|
277
285
|
* Provides consistent logging across the plugin
|
|
@@ -306,19 +314,18 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
306
314
|
});
|
|
307
315
|
this.services.webSocketManager.on('message', this.handleWebsocketMessage);
|
|
308
316
|
this.webCallingService = new _WebCallingService.default(this.$webex);
|
|
317
|
+
this.apiAIAssistant = new _ApiAiAssistant.ApiAIAssistant(this.$webex);
|
|
309
318
|
this.metricsManager = _MetricsManager.default.getInstance({
|
|
310
319
|
webex: this.$webex
|
|
311
320
|
});
|
|
312
|
-
this.taskManager = _TaskManager.default.getTaskManager(this.services.contact, this.webCallingService, this.services.webSocketManager);
|
|
321
|
+
this.taskManager = _TaskManager.default.getTaskManager(this.apiAIAssistant, this.services.contact, this.webCallingService, this.services.webSocketManager);
|
|
313
322
|
this.incomingTaskListener();
|
|
314
323
|
|
|
315
324
|
// Initialize API instances
|
|
316
325
|
// will have future function for indivdual fetch etc so better be in an object
|
|
317
|
-
this.entryPoint = new _EntryPoint.
|
|
318
|
-
this.addressBook = new _AddressBook.
|
|
319
|
-
this.queue = new _Queue.
|
|
320
|
-
|
|
321
|
-
// Initialize logger
|
|
326
|
+
this.entryPoint = new _EntryPoint.EntryPoint(this.$webex);
|
|
327
|
+
this.addressBook = new _AddressBook.AddressBook(this.$webex, () => this.agentConfig?.addressBookId);
|
|
328
|
+
this.queue = new _Queue.Queue(this.$webex);
|
|
322
329
|
_loggerProxy.default.initialize(this.$webex.logger);
|
|
323
330
|
});
|
|
324
331
|
}
|
|
@@ -353,6 +360,19 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
353
360
|
this.trigger(_types4.TASK_EVENTS.TASK_MERGED, task);
|
|
354
361
|
};
|
|
355
362
|
|
|
363
|
+
/**
|
|
364
|
+
* Handles campaign preview reservation events when a contact is offered to the agent
|
|
365
|
+
* @private
|
|
366
|
+
* @param {ITask} task The campaign reservation task
|
|
367
|
+
*/
|
|
368
|
+
handleCampaignPreviewReservation = task => {
|
|
369
|
+
// @ts-ignore
|
|
370
|
+
this.trigger(_types4.TASK_EVENTS.TASK_CAMPAIGN_PREVIEW_RESERVATION, task);
|
|
371
|
+
};
|
|
372
|
+
handleRTDWebsocketMessage = payload => {
|
|
373
|
+
this.taskManager.handleRealtimeWebsocketEvent(payload);
|
|
374
|
+
};
|
|
375
|
+
|
|
356
376
|
/**
|
|
357
377
|
* Sets up event listeners for incoming tasks and task hydration
|
|
358
378
|
* Subscribes to task events from the task manager
|
|
@@ -362,6 +382,7 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
362
382
|
this.taskManager.on(_types4.TASK_EVENTS.TASK_INCOMING, this.handleIncomingTask);
|
|
363
383
|
this.taskManager.on(_types4.TASK_EVENTS.TASK_HYDRATE, this.handleTaskHydrate);
|
|
364
384
|
this.taskManager.on(_types4.TASK_EVENTS.TASK_MERGED, this.handleTaskMerged);
|
|
385
|
+
this.taskManager.on(_types4.TASK_EVENTS.TASK_CAMPAIGN_PREVIEW_RESERVATION, this.handleCampaignPreviewReservation);
|
|
365
386
|
}
|
|
366
387
|
|
|
367
388
|
/**
|
|
@@ -470,8 +491,10 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
470
491
|
this.metricsManager.timeEvent([_constants4.METRIC_EVENT_NAMES.WEBSOCKET_DEREGISTER_SUCCESS, _constants4.METRIC_EVENT_NAMES.WEBSOCKET_DEREGISTER_FAIL]);
|
|
471
492
|
this.taskManager.off(_types4.TASK_EVENTS.TASK_INCOMING, this.handleIncomingTask);
|
|
472
493
|
this.taskManager.off(_types4.TASK_EVENTS.TASK_HYDRATE, this.handleTaskHydrate);
|
|
494
|
+
this.taskManager.off(_types4.TASK_EVENTS.TASK_CAMPAIGN_PREVIEW_RESERVATION, this.handleCampaignPreviewReservation);
|
|
473
495
|
this.taskManager.unregisterIncomingCallEvent();
|
|
474
496
|
this.services.webSocketManager.off('message', this.handleWebsocketMessage);
|
|
497
|
+
this.services.rtdWebSocketManager.off('message', this.handleRTDWebsocketMessage);
|
|
475
498
|
this.services.connectionService.off('connectionLost', this.handleConnectionLost);
|
|
476
499
|
if (this.agentConfig.webRtcEnabled && this.agentConfig.loginVoiceOptions.includes(_types.LoginOption.BROWSER)) {
|
|
477
500
|
if (this.$webex.internal.mercury.connected) {
|
|
@@ -489,6 +512,9 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
489
512
|
if (!this.services.webSocketManager.isSocketClosed) {
|
|
490
513
|
this.services.webSocketManager.close(false, 'Unregistering the SDK');
|
|
491
514
|
}
|
|
515
|
+
if (this.services.rtdWebSocketManager && !this.services.rtdWebSocketManager.isSocketClosed) {
|
|
516
|
+
this.services.rtdWebSocketManager.close(false, 'Unregistering the RTD websocket');
|
|
517
|
+
}
|
|
492
518
|
|
|
493
519
|
// Clear any cached agent configuration
|
|
494
520
|
this.agentConfig = null;
|
|
@@ -596,7 +622,8 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
596
622
|
});
|
|
597
623
|
try {
|
|
598
624
|
const data = await this.services.webSocketManager.initWebSocket({
|
|
599
|
-
body: this.getConnectionConfig()
|
|
625
|
+
body: this.getConnectionConfig(),
|
|
626
|
+
resource: _constants3.SUBSCRIBE_API
|
|
600
627
|
});
|
|
601
628
|
const agentId = data.agentId;
|
|
602
629
|
const orgId = this.$webex.credentials.getOrgId();
|
|
@@ -610,6 +637,28 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
610
637
|
this.taskManager.setWrapupData(this.agentConfig.wrapUpData);
|
|
611
638
|
this.taskManager.setAgentId(this.agentConfig.agentId);
|
|
612
639
|
this.taskManager.setWebRtcEnabled(this.agentConfig.webRtcEnabled);
|
|
640
|
+
this.apiAIAssistant.setAIFeatureFlags(this.agentConfig.aiFeature);
|
|
641
|
+
if (this.agentConfig.aiFeature?.realtimeTranscripts?.enable) {
|
|
642
|
+
_loggerProxy.default.info('Connecting to RTD websocket', {
|
|
643
|
+
module: _constants.CC_FILE,
|
|
644
|
+
method: _constants.METHODS.CONNECT_WEBSOCKET
|
|
645
|
+
});
|
|
646
|
+
await this.services.rtdWebSocketManager.initWebSocket({
|
|
647
|
+
body: this.getConnectionConfig(),
|
|
648
|
+
resource: _constants3.RTD_SUBSCRIBE_API
|
|
649
|
+
}).then(() => {
|
|
650
|
+
_loggerProxy.default.log('RTD websocket connected successfully', {
|
|
651
|
+
module: _constants.CC_FILE,
|
|
652
|
+
method: _constants.METHODS.CONNECT_WEBSOCKET
|
|
653
|
+
});
|
|
654
|
+
this.services.rtdWebSocketManager.on('message', this.handleRTDWebsocketMessage);
|
|
655
|
+
}).catch(error => {
|
|
656
|
+
_loggerProxy.default.error(`Error during RTD websocket setup: ${error}`, {
|
|
657
|
+
module: _constants.CC_FILE,
|
|
658
|
+
method: _constants.METHODS.CONNECT_WEBSOCKET
|
|
659
|
+
});
|
|
660
|
+
});
|
|
661
|
+
}
|
|
613
662
|
if (this.agentConfig.webRtcEnabled && this.agentConfig.loginVoiceOptions.includes(_types.LoginOption.BROWSER)) {
|
|
614
663
|
try {
|
|
615
664
|
await this.$webex.internal.mercury.connect();
|
|
@@ -672,7 +721,8 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
672
721
|
});
|
|
673
722
|
try {
|
|
674
723
|
this.metricsManager.timeEvent([_constants4.METRIC_EVENT_NAMES.STATION_LOGIN_SUCCESS, _constants4.METRIC_EVENT_NAMES.STATION_LOGIN_FAILED]);
|
|
675
|
-
|
|
724
|
+
const dialPlanEntries = this.agentConfig?.dialPlan?.dialPlanEntity ?? [];
|
|
725
|
+
if (data.loginOption === _types.LoginOption.AGENT_DN && !(0, _Utils.isValidDialNumber)(data.dialNumber, dialPlanEntries)) {
|
|
676
726
|
const error = new Error('INVALID_DIAL_NUMBER');
|
|
677
727
|
// @ts-ignore - adding custom key to the error object
|
|
678
728
|
error.details = {
|
|
@@ -1336,6 +1386,64 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1336
1386
|
}
|
|
1337
1387
|
}
|
|
1338
1388
|
|
|
1389
|
+
/**
|
|
1390
|
+
* Accepts a campaign preview contact, initiating the outbound call.
|
|
1391
|
+
*
|
|
1392
|
+
* When a campaign manager reserves a contact for an agent, the agent receives an
|
|
1393
|
+
* `AgentOfferCampaignReservation` event. The agent can then accept the preview contact
|
|
1394
|
+
* to initiate the outbound call.
|
|
1395
|
+
*
|
|
1396
|
+
* @param {PreviewContactPayload} payload - The preview contact payload containing interactionId and campaignId (campaign name, not UUID).
|
|
1397
|
+
* @returns {Promise<TaskResponse>} Promise resolving with agent contact on success.
|
|
1398
|
+
* @throws {Error} If the operation fails (network error, customer unavailable, etc.)
|
|
1399
|
+
*
|
|
1400
|
+
* @example
|
|
1401
|
+
* ```typescript
|
|
1402
|
+
* webex.cc.on('task:campaignPreviewReservation', async (task) => {
|
|
1403
|
+
* const { interactionId } = task.data;
|
|
1404
|
+
* // campaignId is the campaign name (e.g. "MyCampaign"), not a UUID
|
|
1405
|
+
* const campaignId = task.data.interaction.callProcessingDetails.campaignId;
|
|
1406
|
+
*
|
|
1407
|
+
* const result = await webex.cc.acceptPreviewContact({ interactionId, campaignId });
|
|
1408
|
+
* });
|
|
1409
|
+
* ```
|
|
1410
|
+
*/
|
|
1411
|
+
async acceptPreviewContact(payload) {
|
|
1412
|
+
_loggerProxy.default.info('Accepting campaign preview contact', {
|
|
1413
|
+
module: _constants.CC_FILE,
|
|
1414
|
+
method: _constants.METHODS.ACCEPT_PREVIEW_CONTACT
|
|
1415
|
+
});
|
|
1416
|
+
try {
|
|
1417
|
+
this.metricsManager.timeEvent([_constants4.METRIC_EVENT_NAMES.CAMPAIGN_PREVIEW_ACCEPT_SUCCESS, _constants4.METRIC_EVENT_NAMES.CAMPAIGN_PREVIEW_ACCEPT_FAILED]);
|
|
1418
|
+
const result = await this.services.dialer.acceptPreviewContact({
|
|
1419
|
+
data: payload
|
|
1420
|
+
});
|
|
1421
|
+
this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.CAMPAIGN_PREVIEW_ACCEPT_SUCCESS, {
|
|
1422
|
+
..._MetricsManager.default.getCommonTrackingFieldForAQMResponse(result),
|
|
1423
|
+
interactionId: payload.interactionId,
|
|
1424
|
+
campaignId: payload.campaignId
|
|
1425
|
+
}, ['behavioral', 'business', 'operational']);
|
|
1426
|
+
_loggerProxy.default.log('Campaign preview contact accepted successfully', {
|
|
1427
|
+
module: _constants.CC_FILE,
|
|
1428
|
+
method: _constants.METHODS.ACCEPT_PREVIEW_CONTACT,
|
|
1429
|
+
trackingId: result.trackingId,
|
|
1430
|
+
interactionId: payload.interactionId
|
|
1431
|
+
});
|
|
1432
|
+
return result;
|
|
1433
|
+
} catch (error) {
|
|
1434
|
+
const failure = error.details;
|
|
1435
|
+
this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.CAMPAIGN_PREVIEW_ACCEPT_FAILED, {
|
|
1436
|
+
..._MetricsManager.default.getCommonTrackingFieldForAQMResponseFailed(failure),
|
|
1437
|
+
interactionId: payload.interactionId,
|
|
1438
|
+
campaignId: payload.campaignId
|
|
1439
|
+
}, ['behavioral', 'business', 'operational']);
|
|
1440
|
+
const {
|
|
1441
|
+
error: detailedError
|
|
1442
|
+
} = (0, _Utils.getErrorDetails)(error, _constants.METHODS.ACCEPT_PREVIEW_CONTACT, _constants.CC_FILE);
|
|
1443
|
+
throw detailedError;
|
|
1444
|
+
}
|
|
1445
|
+
}
|
|
1446
|
+
|
|
1339
1447
|
/**
|
|
1340
1448
|
* Fetches outdial ANI (Automatic Number Identification) entries for an outdial ANI ID.
|
|
1341
1449
|
*
|
|
@@ -1467,6 +1575,7 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1467
1575
|
/**
|
|
1468
1576
|
* Updates the agent device type and login configuration.
|
|
1469
1577
|
* Use this method to change how an agent connects to the contact center system (e.g., switching from browser-based calling to a desk phone extension).
|
|
1578
|
+
* Change to any field of the profile is allowed;
|
|
1470
1579
|
*
|
|
1471
1580
|
* @param {AgentDeviceUpdate} data Configuration containing:
|
|
1472
1581
|
* - loginOption: New device type ('BROWSER', 'EXTENSION', 'AGENT_DN')
|
|
@@ -1500,24 +1609,8 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1500
1609
|
trackingId
|
|
1501
1610
|
});
|
|
1502
1611
|
try {
|
|
1503
|
-
// Only block if both loginOption AND teamId remain unchanged
|
|
1504
|
-
if (this.webCallingService?.loginOption === data.loginOption && data.teamId === this.agentConfig.currentTeamId) {
|
|
1505
|
-
const message = 'Will not proceed with device update as new Device type is same as current device type and teamId is same as current teamId';
|
|
1506
|
-
const err = new Error(message);
|
|
1507
|
-
err.details = {
|
|
1508
|
-
type: 'Identical Device Change Failure',
|
|
1509
|
-
orgId: this.$webex.credentials.getOrgId(),
|
|
1510
|
-
trackingId,
|
|
1511
|
-
data: {
|
|
1512
|
-
agentId: this.agentConfig.agentId,
|
|
1513
|
-
reasonCode: 'R002',
|
|
1514
|
-
reason: message
|
|
1515
|
-
}
|
|
1516
|
-
};
|
|
1517
|
-
throw err;
|
|
1518
|
-
}
|
|
1519
1612
|
await this.stationLogout({
|
|
1520
|
-
logoutReason: 'User requested agent
|
|
1613
|
+
logoutReason: 'User requested agent profile update'
|
|
1521
1614
|
});
|
|
1522
1615
|
const loginPayload = {
|
|
1523
1616
|
teamId: data.teamId,
|