@webex/contact-center 3.12.0-next.118 → 3.12.0-next.119
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 +104 -4
- package/dist/cc.js.map +1 -1
- package/dist/metrics/MetricsManager.js +16 -0
- package/dist/metrics/MetricsManager.js.map +1 -1
- package/dist/metrics/behavioral-events.js +91 -0
- package/dist/metrics/behavioral-events.js.map +1 -1
- package/dist/metrics/constants.js +16 -0
- package/dist/metrics/constants.js.map +1 -1
- package/dist/services/AnswerCallOnWebexService.js +34 -6
- package/dist/services/AnswerCallOnWebexService.js.map +1 -1
- package/dist/services/WebexCrossClientService.js +54 -3
- package/dist/services/WebexCrossClientService.js.map +1 -1
- package/dist/services/WxAppTelephonyMercurySync.js +21 -6
- package/dist/services/WxAppTelephonyMercurySync.js.map +1 -1
- package/dist/services/task/voice/Voice.js +81 -14
- package/dist/services/task/voice/Voice.js.map +1 -1
- package/dist/services/task/voice/wxAppVoiceMethods.js +154 -1
- package/dist/services/task/voice/wxAppVoiceMethods.js.map +1 -1
- package/dist/services/wxAppDiagnosticLogging.js +122 -0
- package/dist/services/wxAppDiagnosticLogging.js.map +1 -0
- package/dist/types/cc.d.ts +1 -0
- package/dist/types/metrics/MetricsManager.d.ts +6 -0
- package/dist/types/metrics/constants.d.ts +15 -0
- package/dist/types/services/AnswerCallOnWebexService.d.ts +1 -0
- package/dist/types/services/WebexCrossClientService.d.ts +4 -0
- package/dist/types/services/task/voice/Voice.d.ts +5 -1
- package/dist/types/services/task/voice/wxAppVoiceMethods.d.ts +3 -0
- package/dist/types/services/wxAppDiagnosticLogging.d.ts +51 -0
- package/dist/webex.js +1 -1
- package/package.json +1 -1
- package/src/cc.ts +151 -4
- package/src/metrics/MetricsManager.ts +16 -0
- package/src/metrics/ai-docs/metrics-spec.md +71 -9
- package/src/metrics/behavioral-events.ts +92 -0
- package/src/metrics/constants.ts +18 -0
- package/src/services/AnswerCallOnWebexService.ts +41 -8
- package/src/services/WebexCrossClientService.ts +85 -4
- package/src/services/WxAppTelephonyMercurySync.ts +31 -4
- package/src/services/task/ai-docs/task-spec.md +2 -0
- package/src/services/task/voice/Voice.ts +115 -26
- package/src/services/task/voice/wxAppVoiceMethods.ts +211 -2
- package/src/services/wxAppDiagnosticLogging.ts +174 -0
- package/test/unit/spec/cc.ts +249 -20
- package/test/unit/spec/metrics/MetricsManager.ts +25 -0
- package/test/unit/spec/metrics/behavioral-events.ts +42 -0
- package/test/unit/spec/services/AnswerCallOnWebexService.ts +41 -0
- package/test/unit/spec/services/WebexCrossClientService.ts +207 -1
- package/test/unit/spec/services/WxAppTelephonyMercurySync.ts +23 -0
- package/test/unit/spec/services/task/voice/Voice.ts +380 -0
- package/test/unit/spec/services/task/voice/wxAppVoiceMethods.ts +145 -1
- package/test/unit/spec/services/wxAppDiagnosticLogging.ts +143 -0
- 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,7 @@ var _WebCallingService = _interopRequireDefault(require("./services/WebCallingSe
|
|
|
22
22
|
var _AnswerCallOnWebexService = _interopRequireDefault(require("./services/AnswerCallOnWebexService"));
|
|
23
23
|
var _WebexCrossClientService = _interopRequireDefault(require("./services/WebexCrossClientService"));
|
|
24
24
|
var _WxAppTelephonyMercurySync = _interopRequireDefault(require("./services/WxAppTelephonyMercurySync"));
|
|
25
|
+
var _wxAppDiagnosticLogging = require("./services/wxAppDiagnosticLogging");
|
|
25
26
|
var _types4 = require("./services/task/types");
|
|
26
27
|
var _MetricsManager = _interopRequireDefault(require("./metrics/MetricsManager"));
|
|
27
28
|
var _constants4 = require("./metrics/constants");
|
|
@@ -1337,17 +1338,72 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1337
1338
|
throw error;
|
|
1338
1339
|
}
|
|
1339
1340
|
}
|
|
1341
|
+
getWxAppTelephonyTaskType() {
|
|
1342
|
+
const loginOption = this.getCurrentStationLoginOption();
|
|
1343
|
+
if (loginOption === _types.LoginOption.BROWSER) {
|
|
1344
|
+
return 'WebRTC';
|
|
1345
|
+
}
|
|
1346
|
+
if (loginOption === _types.LoginOption.EXTENSION || loginOption === _types.LoginOption.AGENT_DN) {
|
|
1347
|
+
return 'Voice';
|
|
1348
|
+
}
|
|
1349
|
+
return 'unknown';
|
|
1350
|
+
}
|
|
1340
1351
|
async ensureWxAppPostStationLogin() {
|
|
1341
|
-
|
|
1352
|
+
const loginOption = this.getCurrentStationLoginOption();
|
|
1353
|
+
const flagEnabled = this.isWxBetterTogetherEnabled();
|
|
1354
|
+
const telephonyTaskType = this.getWxAppTelephonyTaskType();
|
|
1355
|
+
if (loginOption === _types.LoginOption.BROWSER) {
|
|
1356
|
+
if (flagEnabled) {
|
|
1357
|
+
(0, _wxAppDiagnosticLogging.logWxAppSessionReadiness)({
|
|
1358
|
+
enableWxBetterTogether: true,
|
|
1359
|
+
loginOption,
|
|
1360
|
+
wxAppHooksApplied: false,
|
|
1361
|
+
usersubPublished: false,
|
|
1362
|
+
mercurySubscribed: false,
|
|
1363
|
+
telephonyTaskType,
|
|
1364
|
+
skipReason: 'unsupported_browser_login'
|
|
1365
|
+
});
|
|
1366
|
+
this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.WXAPP_SESSION_SKIPPED, {
|
|
1367
|
+
loginOption,
|
|
1368
|
+
enableWxBetterTogether: true,
|
|
1369
|
+
skipReason: 'unsupported_browser_login'
|
|
1370
|
+
}, ['operational', 'behavioral']);
|
|
1371
|
+
}
|
|
1342
1372
|
return;
|
|
1343
1373
|
}
|
|
1344
1374
|
let publishedEnable = false;
|
|
1375
|
+
let wxAppInitStage = 'mercury';
|
|
1345
1376
|
try {
|
|
1346
|
-
if (
|
|
1377
|
+
if (flagEnabled) {
|
|
1378
|
+
this.metricsManager.timeEvent([_constants4.METRIC_EVENT_NAMES.WXAPP_SESSION_INIT_SUCCESS, _constants4.METRIC_EVENT_NAMES.WXAPP_SESSION_INIT_FAILED]);
|
|
1347
1379
|
await this.ensureWxAppMercuryAndSubscribe();
|
|
1380
|
+
wxAppInitStage = 'publish';
|
|
1348
1381
|
await this.publishAnswerOnWebexCrossClientState(true);
|
|
1349
1382
|
publishedEnable = true;
|
|
1350
1383
|
this.taskManager.syncWxAppMuteFromCallDetailsForAllTasks();
|
|
1384
|
+
const mercurySubscribed = this.wxAppTelephonyMercurySync.isSubscribed();
|
|
1385
|
+
const usersubPublished = this.webexCrossClientService.isAnswerCallsStateActive();
|
|
1386
|
+
(0, _wxAppDiagnosticLogging.logWxAppSessionReadiness)({
|
|
1387
|
+
enableWxBetterTogether: true,
|
|
1388
|
+
loginOption,
|
|
1389
|
+
wxAppHooksApplied: true,
|
|
1390
|
+
usersubPublished,
|
|
1391
|
+
mercurySubscribed,
|
|
1392
|
+
telephonyTaskType
|
|
1393
|
+
});
|
|
1394
|
+
const sessionInitReady = mercurySubscribed && usersubPublished;
|
|
1395
|
+
if (sessionInitReady) {
|
|
1396
|
+
this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.WXAPP_SESSION_INIT_SUCCESS, {
|
|
1397
|
+
loginOption,
|
|
1398
|
+
enableWxBetterTogether: true
|
|
1399
|
+
}, ['operational', 'behavioral']);
|
|
1400
|
+
} else {
|
|
1401
|
+
this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.WXAPP_SESSION_INIT_FAILED, {
|
|
1402
|
+
loginOption,
|
|
1403
|
+
enableWxBetterTogether: true,
|
|
1404
|
+
skipReason: !usersubPublished ? 'usersub_not_published' : 'mercury_not_subscribed'
|
|
1405
|
+
}, ['operational', 'behavioral']);
|
|
1406
|
+
}
|
|
1351
1407
|
} else {
|
|
1352
1408
|
await this.ensureWxAppDeviceRegistered();
|
|
1353
1409
|
await this.publishAnswerOnWebexCrossClientState(false, {
|
|
@@ -1356,13 +1412,43 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1356
1412
|
this.webexCrossClientService.teardown();
|
|
1357
1413
|
this.wxAppTelephonyMercurySync.unsubscribe();
|
|
1358
1414
|
await this.releaseWxAppMercuryResources();
|
|
1415
|
+
(0, _wxAppDiagnosticLogging.logWxAppSessionReadiness)({
|
|
1416
|
+
enableWxBetterTogether: false,
|
|
1417
|
+
loginOption,
|
|
1418
|
+
wxAppHooksApplied: true,
|
|
1419
|
+
usersubPublished: false,
|
|
1420
|
+
mercurySubscribed: false,
|
|
1421
|
+
telephonyTaskType,
|
|
1422
|
+
skipReason: 'flag_disabled'
|
|
1423
|
+
});
|
|
1424
|
+
this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.WXAPP_SESSION_SKIPPED, {
|
|
1425
|
+
loginOption,
|
|
1426
|
+
enableWxBetterTogether: false,
|
|
1427
|
+
skipReason: 'flag_disabled'
|
|
1428
|
+
}, ['operational', 'behavioral']);
|
|
1359
1429
|
}
|
|
1360
1430
|
} catch (error) {
|
|
1361
1431
|
_loggerProxy.default.error(`Failed to initialize wxApp post-station-login: ${error}`, {
|
|
1362
1432
|
module: _constants.CC_FILE,
|
|
1363
1433
|
method: _constants.METHODS.STATION_LOGIN
|
|
1364
1434
|
});
|
|
1365
|
-
if (
|
|
1435
|
+
if (flagEnabled) {
|
|
1436
|
+
const sessionInitFailureReason = wxAppInitStage === 'mercury' ? 'mercury_subscribe_failed' : 'publish_failed';
|
|
1437
|
+
this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.WXAPP_SESSION_INIT_FAILED, {
|
|
1438
|
+
loginOption,
|
|
1439
|
+
enableWxBetterTogether: true,
|
|
1440
|
+
skipReason: sessionInitFailureReason,
|
|
1441
|
+
error: error instanceof Error ? error.toString() : String(error)
|
|
1442
|
+
}, ['operational', 'behavioral']);
|
|
1443
|
+
(0, _wxAppDiagnosticLogging.logWxAppSessionReadiness)({
|
|
1444
|
+
enableWxBetterTogether: true,
|
|
1445
|
+
loginOption,
|
|
1446
|
+
wxAppHooksApplied: false,
|
|
1447
|
+
usersubPublished: publishedEnable && this.webexCrossClientService.isAnswerCallsStateActive(),
|
|
1448
|
+
mercurySubscribed: this.wxAppTelephonyMercurySync.isSubscribed(),
|
|
1449
|
+
telephonyTaskType,
|
|
1450
|
+
skipReason: sessionInitFailureReason
|
|
1451
|
+
});
|
|
1366
1452
|
if (publishedEnable) {
|
|
1367
1453
|
await this.revertWxAppCrossClientPublish();
|
|
1368
1454
|
} else {
|
|
@@ -1563,6 +1649,9 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1563
1649
|
module: _constants.CC_FILE,
|
|
1564
1650
|
method: _constants.METHODS.SYNC_WXAPP_MUTE_FROM_MERCURY
|
|
1565
1651
|
});
|
|
1652
|
+
this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.WXAPP_MERCURY_SUBSCRIBE_FAILED, {
|
|
1653
|
+
error: 'agentId unavailable'
|
|
1654
|
+
}, ['operational', 'behavioral']);
|
|
1566
1655
|
return;
|
|
1567
1656
|
}
|
|
1568
1657
|
try {
|
|
@@ -1575,6 +1664,9 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1575
1664
|
module: _constants.CC_FILE,
|
|
1576
1665
|
method: _constants.METHODS.SYNC_WXAPP_MUTE_FROM_MERCURY
|
|
1577
1666
|
});
|
|
1667
|
+
this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.WXAPP_MERCURY_SUBSCRIBE_FAILED, {
|
|
1668
|
+
error: error instanceof Error ? error.toString() : String(error)
|
|
1669
|
+
}, ['operational', 'behavioral']);
|
|
1578
1670
|
this.wxAppTelephonyMercurySync.unsubscribe();
|
|
1579
1671
|
await this.releaseWxAppMercuryResources();
|
|
1580
1672
|
throw error;
|
|
@@ -1589,10 +1681,18 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1589
1681
|
}
|
|
1590
1682
|
const userId = this.$webex.internal.device?.userId;
|
|
1591
1683
|
if (!userId) {
|
|
1684
|
+
if (enable && this.isWxBetterTogetherEnabled()) {
|
|
1685
|
+
this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.WXAPP_USERSUB_PUBLISH_FAILED, {
|
|
1686
|
+
enableWxBetterTogether: true,
|
|
1687
|
+
skipReason: 'user_id_unavailable',
|
|
1688
|
+
error: 'User ID is unavailable for cross-client publish'
|
|
1689
|
+
}, ['operational', 'behavioral']);
|
|
1690
|
+
}
|
|
1592
1691
|
return;
|
|
1593
1692
|
}
|
|
1594
1693
|
await this.webexCrossClientService.setManageWebexCallingInWxcc(enable, {
|
|
1595
|
-
userId
|
|
1694
|
+
userId,
|
|
1695
|
+
trackPublishMetrics: true
|
|
1596
1696
|
});
|
|
1597
1697
|
if (enable) {
|
|
1598
1698
|
this.clearWxAppFalsePublishRetryTimer();
|