@microsoft/omnichannel-chat-widget 1.8.3 → 1.8.4-main.4478bbf
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/lib/cjs/common/Constants.js +5 -0
- package/lib/cjs/common/facades/FacadeChatSDK.js +6 -0
- package/lib/cjs/common/telemetry/AppInsightsEvents.js +4 -5
- package/lib/cjs/common/telemetry/TelemetryConstants.js +43 -2
- package/lib/cjs/common/telemetry/loggers/appInsightsLogger.js +26 -10
- package/lib/cjs/common/utils/SecureEventBus.js +307 -0
- package/lib/cjs/common/utils/dispatchCustomEvent.js +25 -0
- package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +16 -4
- package/lib/cjs/components/headerstateful/HeaderStateful.js +8 -2
- package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/AddActivitySubscriber.js +127 -0
- package/lib/cjs/components/livechatwidget/common/ChatWidgetEvents.js +15 -0
- package/lib/cjs/components/livechatwidget/common/PersistentConversationHandler.js +284 -0
- package/lib/cjs/components/livechatwidget/common/createAdapter.js +2 -0
- package/lib/cjs/components/livechatwidget/common/defaultProps/defaultPersistentChatHistoryProps.js +18 -0
- package/lib/cjs/components/livechatwidget/common/endChat.js +7 -1
- package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +7 -5
- package/lib/cjs/components/livechatwidget/common/renderSurveyHelpers.js +2 -2
- package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +3 -3
- package/lib/cjs/components/livechatwidget/common/startChat.js +5 -1
- package/lib/cjs/components/livechatwidget/common/startChatErrorHandler.js +24 -4
- package/lib/cjs/components/livechatwidget/interfaces/IPersistentChatHistoryProps.js +1 -0
- package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +12 -3
- package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +29 -2
- package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +12 -3
- package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +31 -5
- package/lib/cjs/components/webchatcontainerstateful/common/activities/botActivity.js +14 -0
- package/lib/cjs/components/webchatcontainerstateful/common/activities/conversationDividerActivity.js +17 -0
- package/lib/cjs/components/webchatcontainerstateful/common/activityConverters/convertPersistentChatHistoryMessageToActivity.js +97 -0
- package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts.js +2 -1
- package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +1 -1
- package/lib/cjs/components/webchatcontainerstateful/hooks/usePersistentChatHistory.js +59 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatEventSubscribers.js +122 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/Constants.js +10 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/ConversationDividerActivity.js +18 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LazyLoadActivity.js +1038 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LoadInlineBannerActivity.js +34 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +44 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +16 -2
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultInLineBannerStyle.js +20 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +2 -2
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/HistoryMessageTimestamp.js +59 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +5 -3
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +2 -2
- package/lib/cjs/firstresponselatency/FirstMessageTrackerFromBot.js +3 -2
- package/lib/cjs/firstresponselatency/FirstResponseLatencyTracker.js +6 -2
- package/lib/cjs/plugins/newMessageEventHandler.js +4 -1
- package/lib/esm/common/Constants.js +5 -0
- package/lib/esm/common/facades/FacadeChatSDK.js +6 -0
- package/lib/esm/common/telemetry/AppInsightsEvents.js +4 -5
- package/lib/esm/common/telemetry/TelemetryConstants.js +41 -1
- package/lib/esm/common/telemetry/loggers/appInsightsLogger.js +27 -11
- package/lib/esm/common/utils/SecureEventBus.js +328 -0
- package/lib/esm/common/utils/dispatchCustomEvent.js +18 -0
- package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +17 -5
- package/lib/esm/components/headerstateful/HeaderStateful.js +9 -3
- package/lib/esm/components/livechatwidget/common/ActivitySubscriber/AddActivitySubscriber.js +120 -0
- package/lib/esm/components/livechatwidget/common/ChatWidgetEvents.js +8 -0
- package/lib/esm/components/livechatwidget/common/PersistentConversationHandler.js +277 -0
- package/lib/esm/components/livechatwidget/common/createAdapter.js +2 -0
- package/lib/esm/components/livechatwidget/common/defaultProps/defaultPersistentChatHistoryProps.js +11 -0
- package/lib/esm/components/livechatwidget/common/endChat.js +7 -1
- package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +7 -5
- package/lib/esm/components/livechatwidget/common/renderSurveyHelpers.js +2 -2
- package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +3 -3
- package/lib/esm/components/livechatwidget/common/startChat.js +7 -3
- package/lib/esm/components/livechatwidget/common/startChatErrorHandler.js +23 -4
- package/lib/esm/components/livechatwidget/interfaces/IPersistentChatHistoryProps.js +1 -0
- package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +13 -4
- package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +31 -4
- package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +13 -4
- package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +34 -5
- package/lib/esm/components/webchatcontainerstateful/common/activities/botActivity.js +7 -0
- package/lib/esm/components/webchatcontainerstateful/common/activities/conversationDividerActivity.js +9 -0
- package/lib/esm/components/webchatcontainerstateful/common/activityConverters/convertPersistentChatHistoryMessageToActivity.js +90 -0
- package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts.js +2 -1
- package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -2
- package/lib/esm/components/webchatcontainerstateful/hooks/usePersistentChatHistory.js +51 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatEventSubscribers.js +115 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/Constants.js +3 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/ConversationDividerActivity.js +10 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LazyLoadActivity.js +1060 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LoadInlineBannerActivity.js +25 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +42 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +13 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultInLineBannerStyle.js +13 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +1 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/HistoryMessageTimestamp.js +52 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +3 -2
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +1 -1
- package/lib/esm/firstresponselatency/FirstMessageTrackerFromBot.js +3 -2
- package/lib/esm/firstresponselatency/FirstResponseLatencyTracker.js +6 -2
- package/lib/esm/plugins/newMessageEventHandler.js +4 -1
- package/lib/types/common/Constants.d.ts +4 -0
- package/lib/types/common/facades/FacadeChatSDK.d.ts +3 -1
- package/lib/types/common/telemetry/TelemetryConstants.d.ts +38 -2
- package/lib/types/common/utils/SecureEventBus.d.ts +159 -0
- package/lib/types/common/utils/dispatchCustomEvent.d.ts +2 -0
- package/lib/types/components/livechatwidget/common/ActivitySubscriber/AddActivitySubscriber.d.ts +45 -0
- package/lib/types/components/livechatwidget/common/ChatWidgetEvents.d.ts +7 -0
- package/lib/types/components/livechatwidget/common/PersistentConversationHandler.d.ts +28 -0
- package/lib/types/components/livechatwidget/common/defaultProps/defaultPersistentChatHistoryProps.d.ts +2 -0
- package/lib/types/components/livechatwidget/common/startChatErrorHandler.d.ts +1 -0
- package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +2 -0
- package/lib/types/components/livechatwidget/interfaces/IPersistentChatHistoryProps.d.ts +7 -0
- package/lib/types/components/webchatcontainerstateful/common/activities/botActivity.d.ts +7 -0
- package/lib/types/components/webchatcontainerstateful/common/activities/conversationDividerActivity.d.ts +10 -0
- package/lib/types/components/webchatcontainerstateful/common/activityConverters/convertPersistentChatHistoryMessageToActivity.d.ts +2 -0
- package/lib/types/components/webchatcontainerstateful/hooks/usePersistentChatHistory.d.ts +4 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/WebChatEventSubscribers.d.ts +7 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/Constants.d.ts +3 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/ConversationDividerActivity.d.ts +4 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LazyLoadActivity.d.ts +326 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LoadInlineBannerActivity.d.ts +8 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultInLineBannerStyle.d.ts +2 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/HistoryMessageTimestamp.d.ts +2 -0
- package/lib/types/contexts/common/ILiveChatWidgetLocalizedTexts.d.ts +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _defaultInLineBannerStyle = require("../defaultStyles/defaultInLineBannerStyle");
|
|
9
|
+
var _defaultMiddlewareLocalizedTexts = require("../../../../common/defaultProps/defaultMiddlewareLocalizedTexts");
|
|
10
|
+
var _mergeStyles = require("@fluentui/merge-styles");
|
|
11
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
12
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
13
|
+
const LoadInlineBannerActivity = _ref => {
|
|
14
|
+
let {
|
|
15
|
+
webChatContainerProps,
|
|
16
|
+
persistentChatHistory,
|
|
17
|
+
id
|
|
18
|
+
} = _ref;
|
|
19
|
+
const localizedTexts = (0, _react.useMemo)(() => ({
|
|
20
|
+
..._defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts,
|
|
21
|
+
...(webChatContainerProps === null || webChatContainerProps === void 0 ? void 0 : webChatContainerProps.localizedTexts)
|
|
22
|
+
}), [webChatContainerProps === null || webChatContainerProps === void 0 ? void 0 : webChatContainerProps.localizedTexts]);
|
|
23
|
+
const bannerStyle = (0, _mergeStyles.mergeStyles)(persistentChatHistory === null || persistentChatHistory === void 0 ? void 0 : persistentChatHistory.bannerStyle, _defaultInLineBannerStyle.defaultInlineBannerStyle);
|
|
24
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
25
|
+
id: id,
|
|
26
|
+
className: bannerStyle,
|
|
27
|
+
role: "status",
|
|
28
|
+
"aria-live": "polite",
|
|
29
|
+
"aria-label": localizedTexts.PREVIOUS_MESSAGES_LOADING,
|
|
30
|
+
"aria-busy": "true"
|
|
31
|
+
}, localizedTexts.PREVIOUS_MESSAGES_LOADING));
|
|
32
|
+
};
|
|
33
|
+
var _default = LoadInlineBannerActivity;
|
|
34
|
+
exports.default = _default;
|
|
@@ -4,8 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createActivityMiddleware = void 0;
|
|
7
|
+
var _LazyLoadActivity = _interopRequireWildcard(require("./activities/LazyLoadActivity"));
|
|
7
8
|
var _TelemetryConstants = require("../../../../../common/telemetry/TelemetryConstants");
|
|
8
9
|
var _Constants = require("../../../../../common/Constants");
|
|
10
|
+
var _ConversationDividerActivity = _interopRequireDefault(require("./activities/ConversationDividerActivity"));
|
|
9
11
|
var _DirectLineActivityType = require("../../enums/DirectLineActivityType");
|
|
10
12
|
var _DirectLineSenderRole = require("../../enums/DirectLineSenderRole");
|
|
11
13
|
var _react = _interopRequireDefault(require("react"));
|
|
@@ -14,6 +16,10 @@ var _defaultSystemMessageStyles = require("./defaultStyles/defaultSystemMessageS
|
|
|
14
16
|
var _defaultUserMessageStyles = require("./defaultStyles/defaultUserMessageStyles");
|
|
15
17
|
var _utils = require("../../../../../common/utils");
|
|
16
18
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
20
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
22
|
+
/* eslint-disable react/display-name */
|
|
17
23
|
/******
|
|
18
24
|
* ActivityMiddleware
|
|
19
25
|
*
|
|
@@ -24,6 +30,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
24
30
|
******/
|
|
25
31
|
|
|
26
32
|
const loggedSystemMessages = new Array();
|
|
33
|
+
let lastRenderedAt = 0; // Track last rendered receivedAt timestamp for deduplication
|
|
27
34
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
35
|
const handleSystemMessage = (next, args, card, renderMarkdown, systemMessageStyleProps) => {
|
|
29
36
|
var _card$activity, _card$activity$channe, _card$activity$channe2, _card$activity2, _card$activity2$chann, _card$activity3, _card$activity3$chann, _card$activity3$chann2, _card$activity4, _card$activity4$chann, _card$activity5, _card$activity5$chann, _card$nextVisibleActi, _card$nextVisibleActi2, _card$activity6, _card$activity6$chann, _card$activity7, _card$nextVisibleActi3, _card$activity8;
|
|
@@ -88,6 +95,43 @@ const createActivityMiddleware = (renderMarkdown, systemMessageStyleProps, userM
|
|
|
88
95
|
if (isTagIncluded(card, _Constants.Constants.systemMessageTag)) {
|
|
89
96
|
return handleSystemMessage(next, args, card, renderMarkdown, systemMessageStyleProps);
|
|
90
97
|
}
|
|
98
|
+
if (isTagIncluded(card, _Constants.Constants.persistentChatHistoryMessagePullTriggerTag)) {
|
|
99
|
+
var _card$activity9, _card$activity9$chann, _card$activity9$chann2;
|
|
100
|
+
// Safety check: if this is a new chat session and flag is false, auto-correct it
|
|
101
|
+
if (!_LazyLoadActivity.LazyLoadHandler.hasMoreHistoryAvailable) {
|
|
102
|
+
_LazyLoadActivity.LazyLoadHandler.setHasMoreHistoryAvailable(true);
|
|
103
|
+
}
|
|
104
|
+
const receivedAt = card === null || card === void 0 ? void 0 : (_card$activity9 = card.activity) === null || _card$activity9 === void 0 ? void 0 : (_card$activity9$chann = _card$activity9.channelData) === null || _card$activity9$chann === void 0 ? void 0 : (_card$activity9$chann2 = _card$activity9$chann.webChat) === null || _card$activity9$chann2 === void 0 ? void 0 : _card$activity9$chann2.receivedAt;
|
|
105
|
+
if (receivedAt < lastRenderedAt) {
|
|
106
|
+
card.activity = null;
|
|
107
|
+
return () => false;
|
|
108
|
+
}
|
|
109
|
+
lastRenderedAt = receivedAt;
|
|
110
|
+
|
|
111
|
+
// Return a function that checks availability at render time
|
|
112
|
+
return () => {
|
|
113
|
+
// Double-check at render time in case history availability changed
|
|
114
|
+
if (!_LazyLoadActivity.LazyLoadHandler.hasMoreHistoryAvailable) {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
return /*#__PURE__*/_react.default.createElement(_LazyLoadActivity.default, null);
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
if (isTagIncluded(card, _Constants.Constants.persistentChatHistoryMessageTag)) {
|
|
121
|
+
const userMessageStyles = {
|
|
122
|
+
..._defaultUserMessageStyles.defaultUserMessageStyles,
|
|
123
|
+
...userMessageStyleProps
|
|
124
|
+
};
|
|
125
|
+
return function () {
|
|
126
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
127
|
+
className: card.activity.from.role === _DirectLineSenderRole.DirectLineSenderRole.User ? _Constants.Constants.sentMessageClassName : _Constants.Constants.receivedMessageClassName,
|
|
128
|
+
style: userMessageStyles
|
|
129
|
+
}, next(...args)(...arguments));
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
if (isTagIncluded(card, _Constants.Constants.conversationDividerTag)) {
|
|
133
|
+
return /*#__PURE__*/_react.default.createElement(_ConversationDividerActivity.default, null);
|
|
134
|
+
}
|
|
91
135
|
if (card.activity.text && card.activity.type === _DirectLineActivityType.DirectLineActivityType.Message) {
|
|
92
136
|
if (!card.activity.channelData.isHtmlEncoded && card.activity.channelId === _Constants.Constants.webchatChannelId) {
|
|
93
137
|
card.activity.text = (0, _utils.escapeHtml)(card.activity.text);
|
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.activityStatusMiddleware = void 0;
|
|
6
|
+
exports.createActivityStatusMiddleware = exports.activityStatusMiddleware = void 0;
|
|
7
7
|
var _Constants = require("../../../../../common/Constants");
|
|
8
8
|
var _DeliveredTimestamp = require("./timestamps/DeliveredTimestamp");
|
|
9
|
+
var _HistoryMessageTimestamp = require("./timestamps/HistoryMessageTimestamp");
|
|
9
10
|
var _NotDeliveredTimestamp = require("./timestamps/NotDeliveredTimestamp");
|
|
10
11
|
var _react = _interopRequireDefault(require("react"));
|
|
11
12
|
var _SendStatus = require("../../enums/SendStatus");
|
|
@@ -32,6 +33,11 @@ const activityStatusMiddleware = () => next => args => {
|
|
|
32
33
|
current_role = role,
|
|
33
34
|
current_timestamp = timestamp;
|
|
34
35
|
let sameTimestampGroupTemp = sameTimestampGroup;
|
|
36
|
+
if (tags !== null && tags !== void 0 && tags.includes(_Constants.Constants.persistentChatHistoryMessageTag)) {
|
|
37
|
+
return /*#__PURE__*/_react.default.createElement(_HistoryMessageTimestamp.HistoryMessageTimestamp, {
|
|
38
|
+
args: args
|
|
39
|
+
});
|
|
40
|
+
}
|
|
35
41
|
if (args[_Constants.WebChatMiddlewareConstants.nextVisibleActivity]) {
|
|
36
42
|
const {
|
|
37
43
|
nextVisibleActivity: {
|
|
@@ -41,6 +47,7 @@ const activityStatusMiddleware = () => next => args => {
|
|
|
41
47
|
timestamp
|
|
42
48
|
}
|
|
43
49
|
} = args;
|
|
50
|
+
|
|
44
51
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
45
52
|
const next_name = name,
|
|
46
53
|
next_timestamp = timestamp;
|
|
@@ -68,4 +75,11 @@ const activityStatusMiddleware = () => next => args => {
|
|
|
68
75
|
;
|
|
69
76
|
}
|
|
70
77
|
};
|
|
71
|
-
|
|
78
|
+
|
|
79
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
80
|
+
exports.activityStatusMiddleware = activityStatusMiddleware;
|
|
81
|
+
const createActivityStatusMiddleware = function () {
|
|
82
|
+
let locale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "en-us";
|
|
83
|
+
return activityStatusMiddleware;
|
|
84
|
+
};
|
|
85
|
+
exports.createActivityStatusMiddleware = createActivityStatusMiddleware;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.defaultInlineBannerStyle = void 0;
|
|
7
|
+
var _defaultSystemMessageStyles = require("./defaultSystemMessageStyles");
|
|
8
|
+
// Adjust the import path if necessary
|
|
9
|
+
|
|
10
|
+
const defaultInlineBannerStyle = {
|
|
11
|
+
..._defaultSystemMessageStyles.defaultSystemMessageStyles,
|
|
12
|
+
visibility: "visible",
|
|
13
|
+
height: "20px",
|
|
14
|
+
display: "flex",
|
|
15
|
+
justifyContent: "center",
|
|
16
|
+
alignItems: "center",
|
|
17
|
+
margin: "5px 10px",
|
|
18
|
+
cursor: "pointer"
|
|
19
|
+
};
|
|
20
|
+
exports.defaultInlineBannerStyle = defaultInlineBannerStyle;
|
|
@@ -10,7 +10,7 @@ var _react2 = require("@fluentui/react");
|
|
|
10
10
|
var _defaultMiddlewareLocalizedTexts = require("../../../../common/defaultProps/defaultMiddlewareLocalizedTexts");
|
|
11
11
|
var _defaultTimestampContentStyles = require("../defaultStyles/defaultTimestampContentStyles");
|
|
12
12
|
var _utils = require("../../../../../../common/utils");
|
|
13
|
-
var
|
|
13
|
+
var _useChatContextStore = _interopRequireDefault(require("../../../../../../hooks/useChatContextStore"));
|
|
14
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
15
|
/* eslint @typescript-eslint/no-explicit-any: "off" */
|
|
16
16
|
const DeliveredTimestamp = _ref => {
|
|
@@ -20,7 +20,7 @@ const DeliveredTimestamp = _ref => {
|
|
|
20
20
|
role,
|
|
21
21
|
name
|
|
22
22
|
} = _ref;
|
|
23
|
-
const [state] = (0,
|
|
23
|
+
const [state] = (0, _useChatContextStore.default)();
|
|
24
24
|
const dir = ((_state$domainStates$r = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r === void 0 ? void 0 : _state$domainStates$r.timestampDir) ?? state.domainStates.globalDir;
|
|
25
25
|
const contentStyles = {
|
|
26
26
|
..._defaultTimestampContentStyles.defaultTimestampContentStyles,
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.HistoryMessageTimestamp = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _react2 = require("@fluentui/react");
|
|
9
|
+
var _defaultMiddlewareLocalizedTexts = require("../../../../common/defaultProps/defaultMiddlewareLocalizedTexts");
|
|
10
|
+
var _defaultTimestampContentStyles = require("../defaultStyles/defaultTimestampContentStyles");
|
|
11
|
+
var _utils = require("../../../../../../common/utils");
|
|
12
|
+
var _useChatContextStore = _interopRequireDefault(require("../../../../../../hooks/useChatContextStore"));
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
15
|
+
const HistoryMessageTimestamp = _ref => {
|
|
16
|
+
var _state$domainStates$r, _state$domainStates$r2, _state$domainStates$m;
|
|
17
|
+
let {
|
|
18
|
+
args
|
|
19
|
+
} = _ref;
|
|
20
|
+
const [state] = (0, _useChatContextStore.default)();
|
|
21
|
+
const dir = ((_state$domainStates$r = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r === void 0 ? void 0 : _state$domainStates$r.timestampDir) ?? state.domainStates.globalDir;
|
|
22
|
+
const {
|
|
23
|
+
activity: {
|
|
24
|
+
timestamp,
|
|
25
|
+
from: {
|
|
26
|
+
name,
|
|
27
|
+
role
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
} = args;
|
|
31
|
+
const contentStyles = {
|
|
32
|
+
..._defaultTimestampContentStyles.defaultTimestampContentStyles,
|
|
33
|
+
...((_state$domainStates$r2 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r2 === void 0 ? void 0 : _state$domainStates$r2.timestampContentStyleProps)
|
|
34
|
+
};
|
|
35
|
+
const getTimeElement = timestamp => {
|
|
36
|
+
const timeString = (0, _utils.getTimestampHourMinute)(timestamp);
|
|
37
|
+
const isAmPmFormat = timeString.toLowerCase().includes("am") || timeString.toLowerCase().includes("pm");
|
|
38
|
+
if (dir === "rtl" && isAmPmFormat) {
|
|
39
|
+
return /*#__PURE__*/_react.default.createElement("span", {
|
|
40
|
+
dir: "ltr"
|
|
41
|
+
}, timeString);
|
|
42
|
+
} else {
|
|
43
|
+
return /*#__PURE__*/_react.default.createElement("span", {
|
|
44
|
+
dir: dir
|
|
45
|
+
}, timeString);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
return /*#__PURE__*/_react.default.createElement(_react2.Stack, {
|
|
49
|
+
style: contentStyles,
|
|
50
|
+
dir: dir
|
|
51
|
+
}, role === "bot" && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
|
|
52
|
+
dir: dir,
|
|
53
|
+
"aria-hidden": "false"
|
|
54
|
+
}, name, " : ", getTimeElement(timestamp))), role === "user" && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
|
|
55
|
+
"aria-hidden": "false",
|
|
56
|
+
dir: dir
|
|
57
|
+
}, " ", getTimeElement(timestamp), " - ", ((_state$domainStates$m = state.domainStates.middlewareLocalizedTexts) === null || _state$domainStates$m === void 0 ? void 0 : _state$domainStates$m.MIDDLEWARE_MESSAGE_DELIVERED) ?? _defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts.MIDDLEWARE_MESSAGE_DELIVERED), " "));
|
|
58
|
+
};
|
|
59
|
+
exports.HistoryMessageTimestamp = HistoryMessageTimestamp;
|
|
@@ -13,10 +13,11 @@ var _defaultTimestampFailedStyles = require("../defaultStyles/defaultTimestampFa
|
|
|
13
13
|
var _defaultTimestampRetryStyles = require("../defaultStyles/defaultTimestampRetryStyles");
|
|
14
14
|
var _utils = require("../../../../../../common/utils");
|
|
15
15
|
var _botframeworkWebchat = require("botframework-webchat");
|
|
16
|
-
var
|
|
16
|
+
var _useChatContextStore = _interopRequireDefault(require("../../../../../../hooks/useChatContextStore"));
|
|
17
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
18
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
18
19
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
-
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
20
21
|
const NotDeliveredTimestamp = _ref => {
|
|
21
22
|
var _state$domainStates$r, _state$domainStates$r2, _state$domainStates$r3, _state$domainStates$r4, _state$domainStates$m, _state$domainStates$m2;
|
|
22
23
|
let {
|
|
@@ -35,7 +36,7 @@ const NotDeliveredTimestamp = _ref => {
|
|
|
35
36
|
const {
|
|
36
37
|
timestamp
|
|
37
38
|
} = activity;
|
|
38
|
-
const [state] = (0,
|
|
39
|
+
const [state] = (0, _useChatContextStore.default)();
|
|
39
40
|
const dir = ((_state$domainStates$r = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r === void 0 ? void 0 : _state$domainStates$r.timestampDir) ?? state.domainStates.globalDir;
|
|
40
41
|
const contentStyles = {
|
|
41
42
|
..._defaultTimestampContentStyles.defaultTimestampContentStyles,
|
|
@@ -76,6 +77,7 @@ const NotDeliveredTimestamp = _ref => {
|
|
|
76
77
|
style: failedTextStyles
|
|
77
78
|
}, " ", ((_state$domainStates$m = state.domainStates.middlewareLocalizedTexts) === null || _state$domainStates$m === void 0 ? void 0 : _state$domainStates$m.MIDDLEWARE_MESSAGE_NOT_DELIVERED) ?? _defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts.MIDDLEWARE_MESSAGE_NOT_DELIVERED, " "), /*#__PURE__*/_react.default.createElement("span", null, " \xA0-\xA0 "), /*#__PURE__*/_react.default.createElement("span", {
|
|
78
79
|
style: retryTextStyles,
|
|
80
|
+
role: "button",
|
|
79
81
|
onClick: onRetryClick,
|
|
80
82
|
onKeyDown: onRetryKeyEnter,
|
|
81
83
|
tabIndex: 0
|
|
@@ -8,12 +8,12 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
8
8
|
var _react2 = require("@fluentui/react");
|
|
9
9
|
var _defaultMiddlewareLocalizedTexts = require("../../../../common/defaultProps/defaultMiddlewareLocalizedTexts");
|
|
10
10
|
var _defaultTimestampContentStyles = require("../defaultStyles/defaultTimestampContentStyles");
|
|
11
|
-
var
|
|
11
|
+
var _useChatContextStore = _interopRequireDefault(require("../../../../../../hooks/useChatContextStore"));
|
|
12
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
13
|
/* eslint @typescript-eslint/no-explicit-any: "off" */
|
|
14
14
|
const SendingTimestamp = () => {
|
|
15
15
|
var _state$domainStates$r, _state$domainStates$r2, _state$domainStates$m;
|
|
16
|
-
const [state] = (0,
|
|
16
|
+
const [state] = (0, _useChatContextStore.default)();
|
|
17
17
|
const dir = ((_state$domainStates$r = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r === void 0 ? void 0 : _state$domainStates$r.timestampDir) ?? state.domainStates.globalDir;
|
|
18
18
|
const contentStyles = {
|
|
19
19
|
..._defaultTimestampContentStyles.defaultTimestampContentStyles,
|
|
@@ -36,7 +36,7 @@ const createTrackingForFirstMessage = () => {
|
|
|
36
36
|
* Starts tracking the time for the first bot message after widget loads.
|
|
37
37
|
* Sets a 5-second timeout to auto-reset if no bot message is received.
|
|
38
38
|
*/
|
|
39
|
-
const widgetLoadListener = _omnichannelChatComponents.BroadcastService.getMessageByEventName(_TelemetryConstants.TelemetryEvent.
|
|
39
|
+
const widgetLoadListener = _omnichannelChatComponents.BroadcastService.getMessageByEventName(_TelemetryConstants.TelemetryEvent.StartChatComplete).subscribe(() => {
|
|
40
40
|
if (isTracking) return;
|
|
41
41
|
isTracking = true;
|
|
42
42
|
startTime = new Date().getTime();
|
|
@@ -91,7 +91,8 @@ const createTrackingForFirstMessage = () => {
|
|
|
91
91
|
CustomProperties: {
|
|
92
92
|
elapsedTime,
|
|
93
93
|
widgetLoadedAt: startTime,
|
|
94
|
-
botMessage: stopTrackingMessage
|
|
94
|
+
botMessage: stopTrackingMessage,
|
|
95
|
+
type: payload === null || payload === void 0 ? void 0 : payload.type
|
|
95
96
|
}
|
|
96
97
|
});
|
|
97
98
|
disconnectListener();
|
|
@@ -7,6 +7,7 @@ exports.FirstResponseLatencyTracker = void 0;
|
|
|
7
7
|
var _TelemetryConstants = require("../common/telemetry/TelemetryConstants");
|
|
8
8
|
var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
|
|
9
9
|
var _TelemetryHelper = require("../common/telemetry/TelemetryHelper");
|
|
10
|
+
var _Constants = require("../common/Constants");
|
|
10
11
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
11
12
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
12
13
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
@@ -133,7 +134,8 @@ let FirstResponseLatencyTracker = /*#__PURE__*/function () {
|
|
|
133
134
|
CustomProperties: {
|
|
134
135
|
elapsedTime,
|
|
135
136
|
userMessage: this.startTrackingMessage,
|
|
136
|
-
botMessage: this.stopTrackingMessage
|
|
137
|
+
botMessage: this.stopTrackingMessage,
|
|
138
|
+
type: payload === null || payload === void 0 ? void 0 : payload.type
|
|
137
139
|
}
|
|
138
140
|
});
|
|
139
141
|
}
|
|
@@ -174,7 +176,9 @@ let FirstResponseLatencyTracker = /*#__PURE__*/function () {
|
|
|
174
176
|
value: function stopClock(payload) {
|
|
175
177
|
try {
|
|
176
178
|
if (!payload || !payload.Id) {
|
|
177
|
-
|
|
179
|
+
if ((payload === null || payload === void 0 ? void 0 : payload.type) !== _Constants.Constants.typing) {
|
|
180
|
+
throw new Error("Invalid payload");
|
|
181
|
+
}
|
|
178
182
|
}
|
|
179
183
|
|
|
180
184
|
// Only allow stopTracking if sender is valid and tracking is active
|
|
@@ -84,6 +84,9 @@ const createOnNewAdapterActivityHandler = (chatId, userId, startTime) => {
|
|
|
84
84
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
85
85
|
const messageHasNoAttachments = !(activity !== null && activity !== void 0 && activity.attachments) || (activity === null || activity === void 0 ? void 0 : activity.attachments.length) === 0;
|
|
86
86
|
if (messageHasNoTags && messageHasNoText && messageHasNoAttachments) {
|
|
87
|
+
if ((activity === null || activity === void 0 ? void 0 : activity.type) === _Constants2.Constants.typing) {
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
87
90
|
return false;
|
|
88
91
|
}
|
|
89
92
|
return true;
|
|
@@ -112,7 +115,7 @@ const createOnNewAdapterActivityHandler = (chatId, userId, startTime) => {
|
|
|
112
115
|
});
|
|
113
116
|
};
|
|
114
117
|
const raiseMessageEvent = activity => {
|
|
115
|
-
if ((activity === null || activity === void 0 ? void 0 : activity.type) === _Constants2.Constants.message) {
|
|
118
|
+
if ((activity === null || activity === void 0 ? void 0 : activity.type) === _Constants2.Constants.message || (activity === null || activity === void 0 ? void 0 : activity.type) === _Constants2.Constants.typing) {
|
|
116
119
|
const scenarioType = (0, _util.getScenarioType)(activity);
|
|
117
120
|
switch (scenarioType) {
|
|
118
121
|
case _Constants.ScenarioType.UserSendMessageStrategy:
|
|
@@ -38,6 +38,10 @@ _defineProperty(Constants, "botParticipantTypeTag", "Bot");
|
|
|
38
38
|
_defineProperty(Constants, "channelIdKey", "ChannelId-");
|
|
39
39
|
_defineProperty(Constants, "ChannelId", "lcw");
|
|
40
40
|
_defineProperty(Constants, "CustomerTag", "FromCustomer");
|
|
41
|
+
// LCW only tags (Only applicable on client-side for additional processing, not recognized by service)
|
|
42
|
+
_defineProperty(Constants, "persistentChatHistoryMessageTag", "PersistentChatHistory");
|
|
43
|
+
_defineProperty(Constants, "persistentChatHistoryMessagePullTriggerTag", "PersistentChatHistoryMessagePullTrigger");
|
|
44
|
+
_defineProperty(Constants, "conversationDividerTag", "ConversationDivider");
|
|
41
45
|
// gifUploadMiddleware
|
|
42
46
|
_defineProperty(Constants, "GifContentType", "image/gif");
|
|
43
47
|
// htmlPlayerMiddleware
|
|
@@ -57,6 +61,7 @@ _defineProperty(Constants, "queuePositionMessageTag", "queueposition");
|
|
|
57
61
|
_defineProperty(Constants, "averageWaitTimeMessageTag", "averagewaittime");
|
|
58
62
|
_defineProperty(Constants, "message", "message");
|
|
59
63
|
_defineProperty(Constants, "hiddenTag", "Hidden");
|
|
64
|
+
_defineProperty(Constants, "typing", "typing");
|
|
60
65
|
// messageTimestampMiddleware
|
|
61
66
|
_defineProperty(Constants, "prefixTimestampTag", "ServerMessageTimestamp_");
|
|
62
67
|
_defineProperty(Constants, "acsChannel", "ACS_CHANNEL");
|
|
@@ -481,6 +481,12 @@ export let FacadeChatSDK = /*#__PURE__*/function () {
|
|
|
481
481
|
reconnectableChatsParams.authenticatedUserToken = this.token;
|
|
482
482
|
return this.validateAndExecuteCall("getReconnectableChats", () => this.chatSDK.OCClient.getReconnectableChats(reconnectableChatsParams));
|
|
483
483
|
}
|
|
484
|
+
}, {
|
|
485
|
+
key: "fetchPersistentConversationHistory",
|
|
486
|
+
value: async function fetchPersistentConversationHistory() {
|
|
487
|
+
let getPersistentChatHistoryOptionalParams = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
488
|
+
return this.validateAndExecuteCall("getPersistentChatHistory", () => this.chatSDK.getPersistentChatHistory(getPersistentChatHistoryOptionalParams));
|
|
489
|
+
}
|
|
484
490
|
}]);
|
|
485
491
|
return FacadeChatSDK;
|
|
486
492
|
}();
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
export const AppInsightsEventMapping = {
|
|
2
2
|
"LCWChatButtonClicked": "LCWChatButtonActionStarted",
|
|
3
|
-
"WidgetLoadStarted": "WidgetStartChatStarted",
|
|
4
|
-
"WidgetLoadComplete": "WidgetStartChatCompleted",
|
|
5
|
-
"WidgetLoadFailed": "WidgetStartChatFailed",
|
|
6
3
|
"PrechatSubmitted": "PrechatSubmitCompleted",
|
|
7
4
|
"StartChatEventRecevied": "StartChatEventReceivedCompleted",
|
|
8
5
|
"EndChatEventReceived": "EndChatEventReceivedCompleted",
|
|
@@ -18,7 +15,9 @@ export const AppInsightsEventMapping = {
|
|
|
18
15
|
"MessageSent": "MessageSentCompleted",
|
|
19
16
|
"MessageReceived": "MessageReceivedCompleted",
|
|
20
17
|
"SystemMessageReceived": "SystemMessageReceivedCompleted",
|
|
21
|
-
"RehydrateMessageReceived": "
|
|
18
|
+
"RehydrateMessageReceived": "ChatHistoryMessageReceivedCompleted",
|
|
22
19
|
"CustomContextReceived": "CustomContextReceivedCompleted",
|
|
23
|
-
"
|
|
20
|
+
"NewTokenValidationStarted": "AuthTokenValidationStarted",
|
|
21
|
+
"NewTokenValidationCompleted": "AuthTokenValidationCompleted",
|
|
22
|
+
"NewTokenValidationFailed": "AuthTokenValidationFailed"
|
|
24
23
|
};
|
|
@@ -68,9 +68,11 @@ export let BroadcastEvent;
|
|
|
68
68
|
BroadcastEvent["OnWidgetError"] = "OnWidgetError";
|
|
69
69
|
BroadcastEvent["FMLTrackingCompletedAck"] = "FMLTrackingCompletedAck";
|
|
70
70
|
BroadcastEvent["FMLTrackingCompleted"] = "FMLTrackingCompleted";
|
|
71
|
+
BroadcastEvent["PersistentConversationReset"] = "PersistentConversationReset";
|
|
71
72
|
})(BroadcastEvent || (BroadcastEvent = {}));
|
|
72
73
|
export let TelemetryEvent;
|
|
73
74
|
(function (TelemetryEvent) {
|
|
75
|
+
TelemetryEvent["FetchPersistentChatHistoryFailed"] = "FetchPersistentChatHistoryFailed";
|
|
74
76
|
TelemetryEvent["CallAdded"] = "CallAdded";
|
|
75
77
|
TelemetryEvent["LocalVideoStreamAdded"] = "LocalVideoStreamAdded";
|
|
76
78
|
TelemetryEvent["LocalVideoStreamRemoved"] = "LocalVideoStreamRemoved";
|
|
@@ -280,8 +282,37 @@ export let TelemetryEvent;
|
|
|
280
282
|
TelemetryEvent["UXCitationPaneCompleted"] = "UXCitationPaneCompleted";
|
|
281
283
|
TelemetryEvent["UXLiveChatWidgetStart"] = "UXLiveChatWidgetStart";
|
|
282
284
|
TelemetryEvent["UXLiveChatWidgetCompleted"] = "UXLiveChatWidgetCompleted";
|
|
285
|
+
TelemetryEvent["UXPostChatPaneStarted"] = "UXPostChatPaneStarted";
|
|
286
|
+
TelemetryEvent["UXPostChatPaneCompleted"] = "UXPostChatPaneCompleted";
|
|
283
287
|
TelemetryEvent["AppInsightsInitialized"] = "AppInsightsInitialized";
|
|
284
288
|
TelemetryEvent["AppInsightsInitFailed"] = "AppInsightsInitFailed";
|
|
289
|
+
TelemetryEvent["ConvertPersistentChatHistoryMessageToActivityFailed"] = "ConvertPersistentChatHistoryMessageToActivityFailed";
|
|
290
|
+
TelemetryEvent["UXLCWPersistentChatHistoryInitialized"] = "UXLCWPersistentChatHistoryInitialized";
|
|
291
|
+
TelemetryEvent["LCWPersistentChatHistoryFetchStarted"] = "LCWPersistentChatHistoryFetchStarted";
|
|
292
|
+
TelemetryEvent["LCWPersistentChatHistoryFetchCompleted"] = "LCWPersistentChatHistoryFetchCompleted";
|
|
293
|
+
TelemetryEvent["LCWPersistentChatHistoryFetchFailed"] = "LCWPersistentChatHistoryFetchFailed";
|
|
294
|
+
TelemetryEvent["LCWWebChatStorePollingStarted"] = "LCWWebChatStorePollingStarted";
|
|
295
|
+
TelemetryEvent["LCWWebChatStoreReady"] = "LCWWebChatStoreReady";
|
|
296
|
+
TelemetryEvent["LCWWebChatConnected"] = "LCWWebChatConnected";
|
|
297
|
+
TelemetryEvent["LCWWebChatDisconnected"] = "LCWWebChatDisconnected";
|
|
298
|
+
TelemetryEvent["LCWWebChatConnectionCheckFailed"] = "LCWWebChatConnectionCheckFailed";
|
|
299
|
+
TelemetryEvent["LCWPersistentConversationHandlerInitialized"] = "LCWPersistentConversationHandlerInitialized";
|
|
300
|
+
TelemetryEvent["LCWPersistentHistoryPullBlocked"] = "LCWPersistentHistoryPullBlocked";
|
|
301
|
+
TelemetryEvent["LCWPersistentHistoryPullCompleted"] = "LCWPersistentHistoryPullCompleted";
|
|
302
|
+
TelemetryEvent["LCWLazyLoadInitializationStarted"] = "LCWLazyLoadInitializationStarted";
|
|
303
|
+
TelemetryEvent["LCWLazyLoadContainerNotFound"] = "LCWLazyLoadContainerNotFound";
|
|
304
|
+
TelemetryEvent["LCWLazyLoadInitializationCompleted"] = "LCWLazyLoadInitializationCompleted";
|
|
305
|
+
TelemetryEvent["LCWLazyLoadSessionMetrics"] = "LCWLazyLoadSessionMetrics";
|
|
306
|
+
TelemetryEvent["LCWLazyLoadTargetElementNotFound"] = "LCWLazyLoadTargetElementNotFound";
|
|
307
|
+
TelemetryEvent["LCWLazyLoadScrollFailed"] = "LCWLazyLoadScrollFailed";
|
|
308
|
+
TelemetryEvent["LCWLazyLoadActivityMounted"] = "LCWLazyLoadActivityMounted";
|
|
309
|
+
TelemetryEvent["LCWLazyLoadReset"] = "LCWLazyLoadReset";
|
|
310
|
+
TelemetryEvent["LCWLazyLoadNoMoreHistory"] = "LCWLazyLoadNoMoreHistory";
|
|
311
|
+
TelemetryEvent["LCWLazyLoadDestroyed"] = "LCWLazyLoadDestroyed";
|
|
312
|
+
TelemetryEvent["SecureEventBusUnauthorizedDispatch"] = "SecureEventBusUnauthorizedDispatch";
|
|
313
|
+
TelemetryEvent["SecureEventBusListenerError"] = "SecureEventBusListenerError";
|
|
314
|
+
TelemetryEvent["SecureEventBusDispatchError"] = "SecureEventBusDispatchError";
|
|
315
|
+
TelemetryEvent["StartChatComplete"] = "StartChatComplete";
|
|
285
316
|
})(TelemetryEvent || (TelemetryEvent = {}));
|
|
286
317
|
export let TelemetryConstants = /*#__PURE__*/function () {
|
|
287
318
|
function TelemetryConstants() {
|
|
@@ -349,6 +380,9 @@ export let TelemetryConstants = /*#__PURE__*/function () {
|
|
|
349
380
|
case TelemetryEvent.PostChatWorkflowFromAgent:
|
|
350
381
|
case TelemetryEvent.PostChatWorkflowFromBot:
|
|
351
382
|
case TelemetryEvent.AppStatesException:
|
|
383
|
+
case TelemetryEvent.SecureEventBusUnauthorizedDispatch:
|
|
384
|
+
case TelemetryEvent.SecureEventBusListenerError:
|
|
385
|
+
case TelemetryEvent.SecureEventBusDispatchError:
|
|
352
386
|
return ScenarioType.ACTIONS;
|
|
353
387
|
case TelemetryEvent.StartChatSDKCall:
|
|
354
388
|
case TelemetryEvent.StartChatEventReceived:
|
|
@@ -408,4 +442,10 @@ export let TelemetryConstants = /*#__PURE__*/function () {
|
|
|
408
442
|
}
|
|
409
443
|
}]);
|
|
410
444
|
return TelemetryConstants;
|
|
411
|
-
}();
|
|
445
|
+
}();
|
|
446
|
+
export let ConversationStage;
|
|
447
|
+
(function (ConversationStage) {
|
|
448
|
+
ConversationStage["Initialization"] = "Initialization";
|
|
449
|
+
ConversationStage["CSREngagement"] = "CSR Engagement";
|
|
450
|
+
ConversationStage["ConversationEnd"] = "Conversation End";
|
|
451
|
+
})(ConversationStage || (ConversationStage = {}));
|
|
@@ -1,19 +1,16 @@
|
|
|
1
|
-
import { LogLevel, TelemetryEvent } from "../TelemetryConstants";
|
|
1
|
+
import { ConversationStage, LogLevel, TelemetryEvent } from "../TelemetryConstants";
|
|
2
2
|
import ScenarioMarker from "../ScenarioMarker";
|
|
3
3
|
import { TelemetryHelper } from "../TelemetryHelper";
|
|
4
4
|
import { AppInsightsTelemetryMessage } from "../../Constants";
|
|
5
5
|
import { AppInsightsEventMapping } from "../AppInsightsEvents";
|
|
6
6
|
var AllowedKeys;
|
|
7
7
|
(function (AllowedKeys) {
|
|
8
|
-
AllowedKeys["
|
|
8
|
+
AllowedKeys["OrganizationId"] = "OrganizationId";
|
|
9
|
+
AllowedKeys["ConversationId"] = "LiveWorkItemId";
|
|
10
|
+
AllowedKeys["ElapsedTimeInMilliseconds"] = "Duration";
|
|
9
11
|
AllowedKeys["Description"] = "Description";
|
|
10
|
-
AllowedKeys["
|
|
11
|
-
AllowedKeys["ChannelId"] = "ChannelId";
|
|
12
|
+
AllowedKeys["ChannelId"] = "ChannelType";
|
|
12
13
|
AllowedKeys["LCWRuntimeId"] = "ClientSessionId";
|
|
13
|
-
AllowedKeys["ConversationId"] = "LiveWorkItemId";
|
|
14
|
-
AllowedKeys["ChatId"] = "ChatThreadId";
|
|
15
|
-
AllowedKeys["OrganizationId"] = "OrganizationId";
|
|
16
|
-
AllowedKeys["ElapsedTimeInMilliseconds"] = "DurationInMilliseconds";
|
|
17
14
|
})(AllowedKeys || (AllowedKeys = {}));
|
|
18
15
|
let initializationPromise = null;
|
|
19
16
|
export const appInsightsLogger = appInsightsKey => {
|
|
@@ -86,9 +83,9 @@ export const appInsightsLogger = appInsightsKey => {
|
|
|
86
83
|
if (!_logger) return;
|
|
87
84
|
const eventName = telemetryInput === null || telemetryInput === void 0 ? void 0 : (_telemetryInput$paylo = telemetryInput.payload) === null || _telemetryInput$paylo === void 0 ? void 0 : _telemetryInput$paylo.Event;
|
|
88
85
|
const telemetryInfo = telemetryInput === null || telemetryInput === void 0 ? void 0 : (_telemetryInput$telem = telemetryInput.telemetryInfo) === null || _telemetryInput$telem === void 0 ? void 0 : _telemetryInput$telem.telemetryInfo;
|
|
89
|
-
const eventProperties = setEventProperties(telemetryInfo);
|
|
90
86
|
if (eventName) {
|
|
91
87
|
const trackingEventName = getTrackingEventName(logLevel, eventName);
|
|
88
|
+
const eventProperties = setEventProperties(trackingEventName, telemetryInfo);
|
|
92
89
|
_logger.trackEvent({
|
|
93
90
|
name: trackingEventName,
|
|
94
91
|
properties: eventProperties
|
|
@@ -107,17 +104,36 @@ export const appInsightsLogger = appInsightsKey => {
|
|
|
107
104
|
};
|
|
108
105
|
|
|
109
106
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
110
|
-
function setEventProperties(telemetryInfo) {
|
|
107
|
+
function setEventProperties(eventName, telemetryInfo) {
|
|
111
108
|
const eventProperties = {};
|
|
112
109
|
if (telemetryInfo) {
|
|
113
110
|
for (const key in AllowedKeys) {
|
|
114
|
-
const finalKey = AllowedKeys[key]; // get renamed keys for LCWRuntimeId, ConversationId
|
|
111
|
+
const finalKey = AllowedKeys[key]; // get renamed keys for LCWRuntimeId, ConversationId
|
|
115
112
|
const value = telemetryInfo[key];
|
|
116
113
|
if (value !== undefined && value !== null && value !== "") {
|
|
117
114
|
eventProperties[finalKey] = value;
|
|
118
115
|
}
|
|
119
116
|
}
|
|
120
117
|
}
|
|
118
|
+
// Include exception details in description for error events
|
|
119
|
+
if (telemetryInfo !== null && telemetryInfo !== void 0 && telemetryInfo.ExceptionDetails) {
|
|
120
|
+
eventProperties[AllowedKeys.Description] = JSON.stringify(telemetryInfo.ExceptionDetails);
|
|
121
|
+
}
|
|
122
|
+
const customProperties = (() => {
|
|
123
|
+
if (!(telemetryInfo !== null && telemetryInfo !== void 0 && telemetryInfo.CustomProperties)) {
|
|
124
|
+
return {};
|
|
125
|
+
}
|
|
126
|
+
try {
|
|
127
|
+
return typeof telemetryInfo.CustomProperties === "string" ? JSON.parse(telemetryInfo.CustomProperties) : telemetryInfo.CustomProperties;
|
|
128
|
+
} catch (error) {
|
|
129
|
+
console.warn("Failed to parse CustomProperties:", error);
|
|
130
|
+
return {};
|
|
131
|
+
}
|
|
132
|
+
})();
|
|
133
|
+
// Additional properties
|
|
134
|
+
eventProperties["ConversationStage"] = customProperties.ConversationStage ?? ConversationStage.CSREngagement;
|
|
135
|
+
eventProperties["Scenario"] = "Conversation Diagnostics";
|
|
136
|
+
eventProperties["OperationName"] = eventName.includes(": ") ? eventName.split(": ")[1] : eventName;
|
|
121
137
|
return eventProperties;
|
|
122
138
|
}
|
|
123
139
|
function getTrackingEventName(logLevel, eventName) {
|