@webex/contact-center 3.12.0-next.130 → 3.12.0-next.131
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/.sdd/manifest.json +2 -1
- package/ai-docs/CONTRACTS.md +6 -0
- package/dist/cc.js +20 -5
- package/dist/cc.js.map +1 -1
- package/dist/metrics/behavioral-events.js +6 -0
- package/dist/metrics/behavioral-events.js.map +1 -1
- package/dist/metrics/constants.js +1 -0
- package/dist/metrics/constants.js.map +1 -1
- package/dist/services/AnswerCallOnWebexService.js +4 -4
- package/dist/services/AnswerCallOnWebexService.js.map +1 -1
- package/dist/services/WebexCrossClientService.js +5 -2
- package/dist/services/WebexCrossClientService.js.map +1 -1
- package/dist/services/WxAppTelephonyMercurySync.js +6 -3
- package/dist/services/WxAppTelephonyMercurySync.js.map +1 -1
- package/dist/services/task/TaskFactory.js +1 -0
- package/dist/services/task/TaskFactory.js.map +1 -1
- package/dist/services/task/TaskManager.js +11 -0
- package/dist/services/task/TaskManager.js.map +1 -1
- package/dist/services/task/types.js.map +1 -1
- package/dist/services/task/voice/Voice.js +63 -44
- package/dist/services/task/voice/Voice.js.map +1 -1
- package/dist/services/task/voice/wxAppOfferObservability.js +145 -0
- package/dist/services/task/voice/wxAppOfferObservability.js.map +1 -0
- package/dist/services/task/voice/wxAppVoiceMethods.js +52 -11
- package/dist/services/task/voice/wxAppVoiceMethods.js.map +1 -1
- package/dist/services/wxAppDiagnosticLogging.js +50 -13
- package/dist/services/wxAppDiagnosticLogging.js.map +1 -1
- package/dist/types/metrics/constants.d.ts +1 -0
- package/dist/types/services/task/types.d.ts +2 -0
- package/dist/types/services/task/voice/Voice.d.ts +15 -2
- package/dist/types/services/task/voice/wxAppOfferObservability.d.ts +39 -0
- package/dist/types/services/task/voice/wxAppVoiceMethods.d.ts +19 -6
- package/dist/types/services/wxAppDiagnosticLogging.d.ts +12 -0
- package/dist/types.js.map +1 -1
- package/dist/webex.js +1 -1
- package/package.json +1 -1
- package/src/cc.ts +23 -5
- package/src/metrics/ai-docs/metrics-spec.md +44 -2
- package/src/metrics/behavioral-events.ts +6 -0
- package/src/metrics/constants.ts +1 -0
- package/src/services/AnswerCallOnWebexService.ts +4 -4
- package/src/services/WebexCrossClientService.ts +7 -2
- package/src/services/WxAppTelephonyMercurySync.ts +3 -3
- package/src/services/task/TaskFactory.ts +1 -0
- package/src/services/task/TaskManager.ts +11 -0
- package/src/services/task/ai-docs/task-spec.md +2 -0
- package/src/services/task/types.ts +16 -0
- package/src/services/task/voice/Voice.ts +74 -52
- package/src/services/task/voice/wxAppOfferObservability.ts +204 -0
- package/src/services/task/voice/wxAppVoiceMethods.ts +83 -24
- package/src/services/wxAppDiagnosticLogging.ts +135 -23
- package/src/types.ts +2 -0
- package/test/unit/spec/cc.ts +127 -16
- package/test/unit/spec/services/WebexCrossClientService.ts +45 -3
- package/test/unit/spec/services/WxAppTelephonyMercurySync.ts +1 -1
- package/test/unit/spec/services/task/TaskManager.ts +25 -0
- package/test/unit/spec/services/task/voice/Voice.ts +10 -51
- package/test/unit/spec/services/task/voice/wxAppOfferObservability.ts +361 -0
- package/test/unit/spec/services/task/voice/wxAppVoiceMethods.ts +121 -5
- package/test/unit/spec/services/wxAppDiagnosticLogging.ts +44 -8
- package/umd/contact-center.min.js +2 -2
- package/umd/contact-center.min.js.map +1 -1
package/.sdd/manifest.json
CHANGED
|
@@ -96,7 +96,8 @@
|
|
|
96
96
|
"canonical_spec": "src/metrics/ai-docs/metrics-spec.md",
|
|
97
97
|
"contracts": {
|
|
98
98
|
"provides": [
|
|
99
|
-
"MetricsManager timing, behavioral/operational/business event submission, taxonomy, queues, tracking-field helpers, and operational Agent Wellness Break action/notification/system-code event names"
|
|
99
|
+
"MetricsManager timing, behavioral/operational/business event submission, taxonomy, queues, tracking-field helpers, and operational Agent Wellness Break action/notification/system-code event names",
|
|
100
|
+
"WXAPP_OFFER_PARTICIPANT_FIELDS_MISSING operational/behavioral telemetry event (contract metrics.wxapp-offer-participant-fields-missing; emit site voice/wxAppOfferObservability.ts)"
|
|
100
101
|
],
|
|
101
102
|
"requires": [
|
|
102
103
|
"Webex internal metrics service; Webex ready lifecycle; LoggerProxy; browser document visibility"
|
package/ai-docs/CONTRACTS.md
CHANGED
|
@@ -30,6 +30,12 @@
|
|
|
30
30
|
| `rtd.events` | Task | realtime transcription/suggestion | consume then publish per task | task spec | websocket best-effort according to remote service | additive payloads | `src/services/task/TaskManager.ts` |
|
|
31
31
|
| `wellness.notification.events` | Contact Center | `CC_AGENT_EVENTS.WELLNESS_BREAK` | consume validated wellness payloads from the primary data-notification socket, then publish normalized application events | Contact Center spec/types | exact current agent/org; notification session is diagnostic and is not compared with the active session; canonical optional `actionText` is normalized to public `actionText`; malformed/stale payloads are ignored | additive | `src/cc.ts`, `src/types.ts`, `src/services/config/types.ts` |
|
|
32
32
|
|
|
33
|
+
### Telemetry / Metrics Events
|
|
34
|
+
|
|
35
|
+
| Contract ID | Owner module | Event constant | Wire name | Payload schema link | Tags | Defined at |
|
|
36
|
+
|---|---|---|---|---|---|---|
|
|
37
|
+
| `metrics.wxapp-offer-participant-fields-missing` | Task / Metrics | `WXAPP_OFFER_PARTICIPANT_FIELDS_MISSING` | `WxApp Offer Participant Fields Missing` | `src/metrics/ai-docs/metrics-spec.md` | operational, behavioral | `src/metrics/constants.ts`, `src/services/task/voice/wxAppOfferObservability.ts` |
|
|
38
|
+
|
|
33
39
|
## Requires — what this repo depends on
|
|
34
40
|
|
|
35
41
|
| Dependency | What is consumed | Schema / detail link | Availability assumption | Fallback on failure | Version floor |
|
package/dist/cc.js
CHANGED
|
@@ -827,7 +827,8 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
827
827
|
accessEntryPoint: this.agentConfig.accessEntryPoint,
|
|
828
828
|
accessBuddyTeam: this.agentConfig.accessBuddyTeam
|
|
829
829
|
},
|
|
830
|
-
enableWxBetterTogether: this.isWxBetterTogetherEnabled()
|
|
830
|
+
enableWxBetterTogether: this.isWxBetterTogetherEnabled(),
|
|
831
|
+
getWxAppUsersubPublished: () => this.webexCrossClientService.isAnswerCallsStateActive()
|
|
831
832
|
};
|
|
832
833
|
this.taskManager.setConfigFlags(configFlags);
|
|
833
834
|
// TODO: Make profile a singleton to make it available throughout app/sdk so we dont need to inject info everywhere
|
|
@@ -1481,6 +1482,7 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1481
1482
|
await this.publishAnswerOnWebexCrossClientState(true);
|
|
1482
1483
|
publishedEnable = true;
|
|
1483
1484
|
this.taskManager.syncWxAppMuteFromCallDetailsForAllTasks();
|
|
1485
|
+
this.taskManager.refreshWxAppOfferObservabilityForAllTasks();
|
|
1484
1486
|
} else {
|
|
1485
1487
|
await this.publishAnswerOnWebexCrossClientState(false);
|
|
1486
1488
|
this.wxAppTelephonyMercurySync.unsubscribe();
|
|
@@ -1543,6 +1545,7 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1543
1545
|
await this.publishAnswerOnWebexCrossClientState(true);
|
|
1544
1546
|
publishedEnable = true;
|
|
1545
1547
|
this.taskManager.syncWxAppMuteFromCallDetailsForAllTasks();
|
|
1548
|
+
this.taskManager.refreshWxAppOfferObservabilityForAllTasks();
|
|
1546
1549
|
const mercurySubscribed = this.wxAppTelephonyMercurySync.isSubscribed();
|
|
1547
1550
|
const usersubPublished = this.webexCrossClientService.isAnswerCallsStateActive();
|
|
1548
1551
|
(0, _wxAppDiagnosticLogging.logWxAppSessionReadiness)({
|
|
@@ -1557,12 +1560,18 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1557
1560
|
if (sessionInitReady) {
|
|
1558
1561
|
this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.WXAPP_SESSION_INIT_SUCCESS, {
|
|
1559
1562
|
loginOption,
|
|
1560
|
-
enableWxBetterTogether: true
|
|
1563
|
+
enableWxBetterTogether: true,
|
|
1564
|
+
usersubPublished,
|
|
1565
|
+
mercurySubscribed,
|
|
1566
|
+
telephonyTaskType
|
|
1561
1567
|
}, ['operational', 'behavioral']);
|
|
1562
1568
|
} else {
|
|
1563
1569
|
this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.WXAPP_SESSION_INIT_FAILED, {
|
|
1564
1570
|
loginOption,
|
|
1565
1571
|
enableWxBetterTogether: true,
|
|
1572
|
+
usersubPublished,
|
|
1573
|
+
mercurySubscribed,
|
|
1574
|
+
telephonyTaskType,
|
|
1566
1575
|
skipReason: !usersubPublished ? 'usersub_not_published' : 'mercury_not_subscribed'
|
|
1567
1576
|
}, ['operational', 'behavioral']);
|
|
1568
1577
|
}
|
|
@@ -1599,6 +1608,9 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1599
1608
|
this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.WXAPP_SESSION_INIT_FAILED, {
|
|
1600
1609
|
loginOption,
|
|
1601
1610
|
enableWxBetterTogether: true,
|
|
1611
|
+
usersubPublished: this.webexCrossClientService.isAnswerCallsStateActive(),
|
|
1612
|
+
mercurySubscribed: this.wxAppTelephonyMercurySync.isSubscribed(),
|
|
1613
|
+
telephonyTaskType,
|
|
1602
1614
|
skipReason: sessionInitFailureReason,
|
|
1603
1615
|
error: error instanceof Error ? error.toString() : String(error)
|
|
1604
1616
|
}, ['operational', 'behavioral']);
|
|
@@ -1606,7 +1618,7 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1606
1618
|
enableWxBetterTogether: true,
|
|
1607
1619
|
loginOption,
|
|
1608
1620
|
wxAppHooksApplied: false,
|
|
1609
|
-
usersubPublished:
|
|
1621
|
+
usersubPublished: this.webexCrossClientService.isAnswerCallsStateActive(),
|
|
1610
1622
|
mercurySubscribed: this.wxAppTelephonyMercurySync.isSubscribed(),
|
|
1611
1623
|
telephonyTaskType,
|
|
1612
1624
|
skipReason: sessionInitFailureReason
|
|
@@ -1812,7 +1824,8 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1812
1824
|
method: _constants.METHODS.SYNC_WXAPP_MUTE_FROM_MERCURY
|
|
1813
1825
|
});
|
|
1814
1826
|
this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.WXAPP_MERCURY_SUBSCRIBE_FAILED, {
|
|
1815
|
-
error: 'agentId unavailable'
|
|
1827
|
+
error: 'agentId unavailable',
|
|
1828
|
+
mercurySubscribed: false
|
|
1816
1829
|
}, ['operational', 'behavioral']);
|
|
1817
1830
|
return;
|
|
1818
1831
|
}
|
|
@@ -1827,7 +1840,8 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1827
1840
|
method: _constants.METHODS.SYNC_WXAPP_MUTE_FROM_MERCURY
|
|
1828
1841
|
});
|
|
1829
1842
|
this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.WXAPP_MERCURY_SUBSCRIBE_FAILED, {
|
|
1830
|
-
error: error instanceof Error ? error.toString() : String(error)
|
|
1843
|
+
error: error instanceof Error ? error.toString() : String(error),
|
|
1844
|
+
mercurySubscribed: false
|
|
1831
1845
|
}, ['operational', 'behavioral']);
|
|
1832
1846
|
this.wxAppTelephonyMercurySync.unsubscribe();
|
|
1833
1847
|
await this.releaseWxAppMercuryResources();
|
|
@@ -1846,6 +1860,7 @@ class ContactCenter extends _webexCore.WebexPlugin {
|
|
|
1846
1860
|
if (enable && this.isWxBetterTogetherEnabled()) {
|
|
1847
1861
|
this.metricsManager.trackEvent(_constants4.METRIC_EVENT_NAMES.WXAPP_USERSUB_PUBLISH_FAILED, {
|
|
1848
1862
|
enableWxBetterTogether: true,
|
|
1863
|
+
usersubPublished: this.webexCrossClientService.isAnswerCallsStateActive(),
|
|
1849
1864
|
skipReason: 'user_id_unavailable',
|
|
1850
1865
|
error: 'User ID is unavailable for cross-client publish'
|
|
1851
1866
|
}, ['operational', 'behavioral']);
|