@microsoft/omnichannel-chat-widget 1.7.4-main.9d63968 → 1.7.4-main.c391e9f
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/telemetry/TelemetryConstants.js +1 -0
- package/lib/cjs/components/livechatwidget/common/endChat.js +7 -0
- package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +8 -4
- package/lib/cjs/components/livechatwidget/common/startChat.js +6 -0
- package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +20 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +2 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +8 -0
- package/lib/esm/common/telemetry/TelemetryConstants.js +1 -0
- package/lib/esm/components/livechatwidget/common/endChat.js +8 -1
- package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +8 -4
- package/lib/esm/components/livechatwidget/common/startChat.js +6 -0
- package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +20 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +2 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +8 -0
- package/lib/types/common/telemetry/TelemetryConstants.d.ts +2 -1
- package/package.json +1 -1
|
@@ -65,6 +65,7 @@ exports.BroadcastEvent = BroadcastEvent;
|
|
|
65
65
|
BroadcastEvent["UpdateConversationDataForTelemetry"] = "UpdateConversationDataForTelemetry";
|
|
66
66
|
BroadcastEvent["ContactIdNotFound"] = "ContactIdNotFound";
|
|
67
67
|
BroadcastEvent["SyncMinimize"] = "SyncMinimize";
|
|
68
|
+
BroadcastEvent["OnWidgetError"] = "OnWidgetError";
|
|
68
69
|
})(BroadcastEvent || (exports.BroadcastEvent = BroadcastEvent = {}));
|
|
69
70
|
let TelemetryEvent;
|
|
70
71
|
exports.TelemetryEvent = TelemetryEvent;
|
|
@@ -60,6 +60,13 @@ const prepareEndChat = async (props, chatSDK, state, dispatch, setAdapter, setWe
|
|
|
60
60
|
const postchatContext = (await (0, _renderSurveyHelpers.getPostChatContext)(chatSDK, state, dispatch)) ?? (state === null || state === void 0 ? void 0 : (_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : _state$domainStates.postChatContext);
|
|
61
61
|
if (postchatContext === undefined) {
|
|
62
62
|
var _state$appStates2;
|
|
63
|
+
_omnichannelChatComponents.BroadcastService.postMessage({
|
|
64
|
+
eventName: _TelemetryConstants.BroadcastEvent.OnWidgetError,
|
|
65
|
+
payload: {
|
|
66
|
+
errorMessage: "Widget did not display post chat survey as getPostChatContext returned undefined."
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
|
|
63
70
|
// For Customer intiated conversations, just close chat widget
|
|
64
71
|
if ((state === null || state === void 0 ? void 0 : (_state$appStates2 = state.appStates) === null || _state$appStates2 === void 0 ? void 0 : _state$appStates2.conversationEndedBy) === _Constants.ConversationEndEntity.Customer) {
|
|
65
72
|
_TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
@@ -7,6 +7,7 @@ exports.initWebChatComposer = void 0;
|
|
|
7
7
|
var _Constants = require("../../../common/Constants");
|
|
8
8
|
var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
|
|
9
9
|
var _utils = require("../../../common/utils");
|
|
10
|
+
var _dompurify = _interopRequireDefault(require("dompurify"));
|
|
10
11
|
var _HyperlinkTextOverrideRenderer = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/markdownrenderers/HyperlinkTextOverrideRenderer"));
|
|
11
12
|
var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
|
|
12
13
|
var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
|
|
@@ -22,8 +23,10 @@ var _conversationEndMiddleware = _interopRequireDefault(require("../../webchatco
|
|
|
22
23
|
var _dataMaskingMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware"));
|
|
23
24
|
var _createMarkdown = require("./createMarkdown");
|
|
24
25
|
var _maxMessageSizeValidator = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator"));
|
|
26
|
+
var _messageSequenceIdOverrideMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageSequenceIdOverrideMiddleware"));
|
|
25
27
|
var _messageTimestampMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware"));
|
|
26
28
|
var _botframeworkWebchat = require("botframework-webchat");
|
|
29
|
+
var _toastMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/toastMiddleware"));
|
|
27
30
|
var _WebChatLogger = require("../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger");
|
|
28
31
|
var _defaultAttachmentProps = require("../../webchatcontainerstateful/common/defaultProps/defaultAttachmentProps");
|
|
29
32
|
var _defaultMiddlewareLocalizedTexts = require("../../webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts");
|
|
@@ -34,9 +37,6 @@ var _htmlPlayerMiddleware = _interopRequireDefault(require("../../webchatcontain
|
|
|
34
37
|
var _htmlTextMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware"));
|
|
35
38
|
var _preProcessingMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware"));
|
|
36
39
|
var _sanitizationMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware"));
|
|
37
|
-
var _dompurify = _interopRequireDefault(require("dompurify"));
|
|
38
|
-
var _messageSequenceIdOverrideMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageSequenceIdOverrideMiddleware"));
|
|
39
|
-
var _toastMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/toastMiddleware"));
|
|
40
40
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
41
41
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
42
42
|
const initWebChatComposer = (props, state, dispatch, chatSDK, endChat) => {
|
|
@@ -106,7 +106,11 @@ const initWebChatComposer = (props, state, dispatch, chatSDK, endChat) => {
|
|
|
106
106
|
markdownRenderers.forEach(renderer => {
|
|
107
107
|
text = renderer.render(text);
|
|
108
108
|
});
|
|
109
|
-
|
|
109
|
+
const config = {
|
|
110
|
+
FORBID_TAGS: ["form", "button", "script", "div"],
|
|
111
|
+
FORBID_ATTR: ["action"]
|
|
112
|
+
};
|
|
113
|
+
text = _dompurify.default.sanitize(text, config);
|
|
110
114
|
return text;
|
|
111
115
|
};
|
|
112
116
|
function postDomPurifyActivities() {
|
|
@@ -206,6 +206,12 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, state, props, params
|
|
|
206
206
|
exception: `Failed to setup startChat: ${error}`
|
|
207
207
|
}
|
|
208
208
|
});
|
|
209
|
+
_omnichannelChatComponents.BroadcastService.postMessage({
|
|
210
|
+
eventName: _TelemetryConstants.BroadcastEvent.OnWidgetError,
|
|
211
|
+
payload: {
|
|
212
|
+
errorMessage: error
|
|
213
|
+
}
|
|
214
|
+
});
|
|
209
215
|
isStartChatSuccessful = false;
|
|
210
216
|
throw error;
|
|
211
217
|
}
|
|
@@ -155,6 +155,12 @@ const LiveChatWidgetStateful = props => {
|
|
|
155
155
|
}
|
|
156
156
|
return;
|
|
157
157
|
}
|
|
158
|
+
_omnichannelChatComponents.BroadcastService.postMessage({
|
|
159
|
+
eventName: _TelemetryConstants.BroadcastEvent.OnWidgetError,
|
|
160
|
+
payload: {
|
|
161
|
+
errorMessage: "Chat found in cache but invalid as the conversation status is inactive."
|
|
162
|
+
}
|
|
163
|
+
});
|
|
158
164
|
}
|
|
159
165
|
if (isChatValid === false) {
|
|
160
166
|
if (localState) {
|
|
@@ -274,6 +280,12 @@ const LiveChatWidgetStateful = props => {
|
|
|
274
280
|
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
275
281
|
payload: _ConversationState.ConversationState.OutOfOffice
|
|
276
282
|
});
|
|
283
|
+
_omnichannelChatComponents.BroadcastService.postMessage({
|
|
284
|
+
eventName: _TelemetryConstants.BroadcastEvent.OnWidgetError,
|
|
285
|
+
payload: {
|
|
286
|
+
errorMessage: "Out-of-office hours status is shown."
|
|
287
|
+
}
|
|
288
|
+
});
|
|
277
289
|
return;
|
|
278
290
|
}
|
|
279
291
|
_omnichannelChatComponents.BroadcastService.postMessage({
|
|
@@ -365,9 +377,16 @@ const LiveChatWidgetStateful = props => {
|
|
|
365
377
|
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_DISCONNECT_EVENT_RECEIVED,
|
|
366
378
|
payload: true
|
|
367
379
|
});
|
|
380
|
+
const desc = "Chat disconnected due to timeout, user went offline or blocked the device (including closing laptop)";
|
|
368
381
|
_TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
369
382
|
Event: _TelemetryConstants.TelemetryEvent.ChatDisconnectThreadEventReceived,
|
|
370
|
-
Description:
|
|
383
|
+
Description: desc
|
|
384
|
+
});
|
|
385
|
+
_omnichannelChatComponents.BroadcastService.postMessage({
|
|
386
|
+
eventName: _TelemetryConstants.BroadcastEvent.OnWidgetError,
|
|
387
|
+
payload: {
|
|
388
|
+
errorMessage: desc
|
|
389
|
+
}
|
|
371
390
|
});
|
|
372
391
|
}
|
|
373
392
|
});
|
|
@@ -87,7 +87,8 @@ const createActivityMiddleware = (renderMarkdown, systemMessageStyleProps, userM
|
|
|
87
87
|
}
|
|
88
88
|
if (isTagIncluded(card, _Constants.Constants.systemMessageTag)) {
|
|
89
89
|
return handleSystemMessage(next, args, card, renderMarkdown, systemMessageStyleProps);
|
|
90
|
-
}
|
|
90
|
+
}
|
|
91
|
+
if (card.activity.text && card.activity.type === _DirectLineActivityType.DirectLineActivityType.Message) {
|
|
91
92
|
if (!card.activity.channelData.isHtmlEncoded && card.activity.channelId === _Constants.Constants.webchatChannelId) {
|
|
92
93
|
card.activity.text = (0, _utils.escapeHtml)(card.activity.text);
|
|
93
94
|
card.activity.channelData.isHtmlEncoded = true;
|
|
@@ -9,6 +9,8 @@ var _NotificationLevel = require("../enums/NotificationLevel");
|
|
|
9
9
|
var _WebChatActionType = require("../enums/WebChatActionType");
|
|
10
10
|
var _WebChatStoreLoader = require("../WebChatStoreLoader");
|
|
11
11
|
var _utils = require("../../../../common/utils");
|
|
12
|
+
var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
|
|
13
|
+
var _TelemetryConstants = require("../../../../common/telemetry/TelemetryConstants");
|
|
12
14
|
class NotificationHandler {
|
|
13
15
|
static notify(id, level, message) {
|
|
14
16
|
if (_WebChatStoreLoader.WebChatStoreLoader.store) {
|
|
@@ -34,6 +36,12 @@ class NotificationHandler {
|
|
|
34
36
|
}
|
|
35
37
|
}
|
|
36
38
|
static notifyError(id, message) {
|
|
39
|
+
_omnichannelChatComponents.BroadcastService.postMessage({
|
|
40
|
+
eventName: _TelemetryConstants.BroadcastEvent.OnWidgetError,
|
|
41
|
+
payload: {
|
|
42
|
+
errorMessage: message
|
|
43
|
+
}
|
|
44
|
+
});
|
|
37
45
|
this.notify(id, _NotificationLevel.NotificationLevel.Error, message);
|
|
38
46
|
}
|
|
39
47
|
static notifyWarning(id, message) {
|
|
@@ -60,6 +60,7 @@ export let BroadcastEvent;
|
|
|
60
60
|
BroadcastEvent["UpdateConversationDataForTelemetry"] = "UpdateConversationDataForTelemetry";
|
|
61
61
|
BroadcastEvent["ContactIdNotFound"] = "ContactIdNotFound";
|
|
62
62
|
BroadcastEvent["SyncMinimize"] = "SyncMinimize";
|
|
63
|
+
BroadcastEvent["OnWidgetError"] = "OnWidgetError";
|
|
63
64
|
})(BroadcastEvent || (BroadcastEvent = {}));
|
|
64
65
|
export let TelemetryEvent;
|
|
65
66
|
(function (TelemetryEvent) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ConfirmationState, Constants, ConversationEndEntity, ParticipantType, PrepareEndChatDescriptionConstants } from "../../../common/Constants";
|
|
2
|
-
import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
|
|
2
|
+
import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
|
|
3
3
|
import { getConversationDetailsCall, getWidgetEndChatEventName } from "../../../common/utils";
|
|
4
4
|
import { getPostChatContext, initiatePostChat } from "./renderSurveyHelpers";
|
|
5
5
|
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
@@ -55,6 +55,13 @@ const prepareEndChat = async (props, chatSDK, state, dispatch, setAdapter, setWe
|
|
|
55
55
|
const postchatContext = (await getPostChatContext(chatSDK, state, dispatch)) ?? (state === null || state === void 0 ? void 0 : (_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : _state$domainStates.postChatContext);
|
|
56
56
|
if (postchatContext === undefined) {
|
|
57
57
|
var _state$appStates2;
|
|
58
|
+
BroadcastService.postMessage({
|
|
59
|
+
eventName: BroadcastEvent.OnWidgetError,
|
|
60
|
+
payload: {
|
|
61
|
+
errorMessage: "Widget did not display post chat survey as getPostChatContext returned undefined."
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
|
|
58
65
|
// For Customer intiated conversations, just close chat widget
|
|
59
66
|
if ((state === null || state === void 0 ? void 0 : (_state$appStates2 = state.appStates) === null || _state$appStates2 === void 0 ? void 0 : _state$appStates2.conversationEndedBy) === ConversationEndEntity.Customer) {
|
|
60
67
|
TelemetryHelper.logSDKEvent(LogLevel.INFO, {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ConversationEndEntity, ParticipantType } from "../../../common/Constants";
|
|
2
2
|
import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
|
|
3
3
|
import { changeLanguageCodeFormatForWebChat, getConversationDetailsCall } from "../../../common/utils";
|
|
4
|
+
import DOMPurify from "dompurify";
|
|
4
5
|
import HyperlinkTextOverrideRenderer from "../../webchatcontainerstateful/webchatcontroller/markdownrenderers/HyperlinkTextOverrideRenderer";
|
|
5
6
|
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
6
7
|
import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
|
|
@@ -16,8 +17,10 @@ import createConversationEndMiddleware from "../../webchatcontainerstateful/webc
|
|
|
16
17
|
import createDataMaskingMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware";
|
|
17
18
|
import { createMarkdown } from "./createMarkdown";
|
|
18
19
|
import createMaxMessageSizeValidator from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator";
|
|
20
|
+
import createMessageSequenceIdOverrideMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageSequenceIdOverrideMiddleware";
|
|
19
21
|
import createMessageTimeStampMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware";
|
|
20
22
|
import { createStore } from "botframework-webchat";
|
|
23
|
+
import createToastMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/toastMiddleware";
|
|
21
24
|
import { createWebChatTelemetry } from "../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger";
|
|
22
25
|
import { defaultAttachmentProps } from "../../webchatcontainerstateful/common/defaultProps/defaultAttachmentProps";
|
|
23
26
|
import { defaultMiddlewareLocalizedTexts } from "../../webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts";
|
|
@@ -28,9 +31,6 @@ import htmlPlayerMiddleware from "../../webchatcontainerstateful/webchatcontroll
|
|
|
28
31
|
import htmlTextMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware";
|
|
29
32
|
import preProcessingMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware";
|
|
30
33
|
import sanitizationMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware";
|
|
31
|
-
import DOMPurify from "dompurify";
|
|
32
|
-
import createMessageSequenceIdOverrideMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageSequenceIdOverrideMiddleware";
|
|
33
|
-
import createToastMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/toastMiddleware";
|
|
34
34
|
|
|
35
35
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
36
36
|
export const initWebChatComposer = (props, state, dispatch, chatSDK, endChat) => {
|
|
@@ -100,7 +100,11 @@ export const initWebChatComposer = (props, state, dispatch, chatSDK, endChat) =>
|
|
|
100
100
|
markdownRenderers.forEach(renderer => {
|
|
101
101
|
text = renderer.render(text);
|
|
102
102
|
});
|
|
103
|
-
|
|
103
|
+
const config = {
|
|
104
|
+
FORBID_TAGS: ["form", "button", "script", "div"],
|
|
105
|
+
FORBID_ATTR: ["action"]
|
|
106
|
+
};
|
|
107
|
+
text = DOMPurify.sanitize(text, config);
|
|
104
108
|
return text;
|
|
105
109
|
};
|
|
106
110
|
function postDomPurifyActivities() {
|
|
@@ -199,6 +199,12 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, state, props, params
|
|
|
199
199
|
exception: `Failed to setup startChat: ${error}`
|
|
200
200
|
}
|
|
201
201
|
});
|
|
202
|
+
BroadcastService.postMessage({
|
|
203
|
+
eventName: BroadcastEvent.OnWidgetError,
|
|
204
|
+
payload: {
|
|
205
|
+
errorMessage: error
|
|
206
|
+
}
|
|
207
|
+
});
|
|
202
208
|
isStartChatSuccessful = false;
|
|
203
209
|
throw error;
|
|
204
210
|
}
|
|
@@ -147,6 +147,12 @@ export const LiveChatWidgetStateful = props => {
|
|
|
147
147
|
}
|
|
148
148
|
return;
|
|
149
149
|
}
|
|
150
|
+
BroadcastService.postMessage({
|
|
151
|
+
eventName: BroadcastEvent.OnWidgetError,
|
|
152
|
+
payload: {
|
|
153
|
+
errorMessage: "Chat found in cache but invalid as the conversation status is inactive."
|
|
154
|
+
}
|
|
155
|
+
});
|
|
150
156
|
}
|
|
151
157
|
if (isChatValid === false) {
|
|
152
158
|
if (localState) {
|
|
@@ -266,6 +272,12 @@ export const LiveChatWidgetStateful = props => {
|
|
|
266
272
|
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
267
273
|
payload: ConversationState.OutOfOffice
|
|
268
274
|
});
|
|
275
|
+
BroadcastService.postMessage({
|
|
276
|
+
eventName: BroadcastEvent.OnWidgetError,
|
|
277
|
+
payload: {
|
|
278
|
+
errorMessage: "Out-of-office hours status is shown."
|
|
279
|
+
}
|
|
280
|
+
});
|
|
269
281
|
return;
|
|
270
282
|
}
|
|
271
283
|
BroadcastService.postMessage({
|
|
@@ -357,9 +369,16 @@ export const LiveChatWidgetStateful = props => {
|
|
|
357
369
|
type: LiveChatWidgetActionType.SET_CHAT_DISCONNECT_EVENT_RECEIVED,
|
|
358
370
|
payload: true
|
|
359
371
|
});
|
|
372
|
+
const desc = "Chat disconnected due to timeout, user went offline or blocked the device (including closing laptop)";
|
|
360
373
|
TelemetryHelper.logActionEvent(LogLevel.INFO, {
|
|
361
374
|
Event: TelemetryEvent.ChatDisconnectThreadEventReceived,
|
|
362
|
-
Description:
|
|
375
|
+
Description: desc
|
|
376
|
+
});
|
|
377
|
+
BroadcastService.postMessage({
|
|
378
|
+
eventName: BroadcastEvent.OnWidgetError,
|
|
379
|
+
payload: {
|
|
380
|
+
errorMessage: desc
|
|
381
|
+
}
|
|
363
382
|
});
|
|
364
383
|
}
|
|
365
384
|
});
|
|
@@ -80,7 +80,8 @@ export const createActivityMiddleware = (renderMarkdown, systemMessageStyleProps
|
|
|
80
80
|
}
|
|
81
81
|
if (isTagIncluded(card, Constants.systemMessageTag)) {
|
|
82
82
|
return handleSystemMessage(next, args, card, renderMarkdown, systemMessageStyleProps);
|
|
83
|
-
}
|
|
83
|
+
}
|
|
84
|
+
if (card.activity.text && card.activity.type === DirectLineActivityType.Message) {
|
|
84
85
|
if (!card.activity.channelData.isHtmlEncoded && card.activity.channelId === Constants.webchatChannelId) {
|
|
85
86
|
card.activity.text = escapeHtml(card.activity.text);
|
|
86
87
|
card.activity.channelData.isHtmlEncoded = true;
|
|
@@ -3,6 +3,8 @@ import { NotificationLevel } from "../enums/NotificationLevel";
|
|
|
3
3
|
import { WebChatActionType } from "../enums/WebChatActionType";
|
|
4
4
|
import { WebChatStoreLoader } from "../WebChatStoreLoader";
|
|
5
5
|
import { setFocusOnSendBox } from "../../../../common/utils";
|
|
6
|
+
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
7
|
+
import { BroadcastEvent } from "../../../../common/telemetry/TelemetryConstants";
|
|
6
8
|
export class NotificationHandler {
|
|
7
9
|
static notify(id, level, message) {
|
|
8
10
|
if (WebChatStoreLoader.store) {
|
|
@@ -28,6 +30,12 @@ export class NotificationHandler {
|
|
|
28
30
|
}
|
|
29
31
|
}
|
|
30
32
|
static notifyError(id, message) {
|
|
33
|
+
BroadcastService.postMessage({
|
|
34
|
+
eventName: BroadcastEvent.OnWidgetError,
|
|
35
|
+
payload: {
|
|
36
|
+
errorMessage: message
|
|
37
|
+
}
|
|
38
|
+
});
|
|
31
39
|
this.notify(id, NotificationLevel.Error, message);
|
|
32
40
|
}
|
|
33
41
|
static notifyWarning(id, message) {
|
|
@@ -53,7 +53,8 @@ export declare enum BroadcastEvent {
|
|
|
53
53
|
UpdateSessionDataForTelemetry = "UpdateSessionDataForTelemetry",
|
|
54
54
|
UpdateConversationDataForTelemetry = "UpdateConversationDataForTelemetry",
|
|
55
55
|
ContactIdNotFound = "ContactIdNotFound",
|
|
56
|
-
SyncMinimize = "SyncMinimize"
|
|
56
|
+
SyncMinimize = "SyncMinimize",
|
|
57
|
+
OnWidgetError = "OnWidgetError"
|
|
57
58
|
}
|
|
58
59
|
export declare enum TelemetryEvent {
|
|
59
60
|
CallAdded = "CallAdded",
|