@microsoft/omnichannel-chat-widget 0.1.0-main.1a61ea0 → 0.1.0-main.47ede4d
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/README.md +227 -0
- package/lib/cjs/assets/Audios.js +8 -0
- package/lib/cjs/assets/Icons.js +28 -0
- package/lib/cjs/common/Constants.js +6 -0
- package/lib/cjs/common/contextDataStore/DataStoreManager.js +14 -0
- package/lib/cjs/{assets/assets.d.js → common/interfaces/IContextDataStore.js} +0 -0
- package/lib/cjs/common/telemetry/TelemetryConstants.js +25 -3
- package/lib/cjs/common/telemetry/TelemetryHelper.js +9 -4
- package/lib/cjs/common/telemetry/TelemetryManager.js +18 -8
- package/lib/cjs/common/telemetry/defaultConfigs/defaultAriaConfig.js +3 -3
- package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +14 -1
- package/lib/cjs/common/telemetry/loggers/consoleLogger.js +3 -0
- package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +24 -35
- package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +2 -2
- package/lib/cjs/components/footerstateful/FooterStateful.js +3 -3
- package/lib/cjs/components/headerstateful/HeaderStateful.js +12 -3
- package/lib/cjs/components/livechatwidget/common/createMarkdown.js +3 -4
- package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +38 -33
- package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +14 -0
- package/lib/cjs/components/livechatwidget/common/endChat.js +65 -49
- package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +5 -0
- package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +26 -9
- package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +23 -7
- package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +26 -24
- package/lib/cjs/components/livechatwidget/common/startChat.js +77 -27
- package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +3 -3
- package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +45 -18
- package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +1 -1
- package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +8 -0
- package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +28 -11
- package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +10 -4
- package/lib/cjs/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
- package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +4 -0
- package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +51 -73
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +9 -46
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +3 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
- package/lib/cjs/contexts/common/ConversationState.js +3 -2
- package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +3 -0
- package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +9 -3
- package/lib/cjs/contexts/createReducer.js +20 -3
- package/lib/cjs/controller/componentController.js +2 -2
- package/lib/cjs/plugins/newMessageEventHandler.js +102 -0
- package/lib/esm/assets/Audios.js +1 -0
- package/lib/esm/assets/Icons.js +11 -0
- package/lib/esm/common/Constants.js +6 -0
- package/lib/esm/common/contextDataStore/DataStoreManager.js +5 -0
- package/lib/esm/common/interfaces/IContextDataStore.js +1 -0
- package/lib/esm/common/telemetry/TelemetryConstants.js +21 -2
- package/lib/esm/common/telemetry/TelemetryHelper.js +9 -4
- package/lib/esm/common/telemetry/TelemetryManager.js +13 -8
- package/lib/esm/common/telemetry/defaultConfigs/defaultAriaConfig.js +3 -3
- package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +14 -1
- package/lib/esm/common/telemetry/loggers/consoleLogger.js +3 -0
- package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +22 -34
- package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +2 -2
- package/lib/esm/components/footerstateful/FooterStateful.js +3 -3
- package/lib/esm/components/headerstateful/HeaderStateful.js +13 -4
- package/lib/esm/components/livechatwidget/common/createMarkdown.js +3 -3
- package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +36 -33
- package/lib/esm/components/livechatwidget/common/disposeTelemetryLoggers.js +4 -0
- package/lib/esm/components/livechatwidget/common/endChat.js +64 -45
- package/lib/esm/components/livechatwidget/common/initCallingSdk.js +3 -0
- package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +23 -9
- package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +20 -3
- package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +23 -22
- package/lib/esm/components/livechatwidget/common/startChat.js +71 -23
- package/lib/esm/components/livechatwidget/common/startProactiveChat.js +5 -5
- package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +40 -17
- package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +1 -1
- package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +6 -0
- package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +26 -10
- package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +9 -5
- package/lib/esm/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
- package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +4 -0
- package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +2 -12
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +7 -44
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
- package/lib/esm/contexts/common/ConversationState.js +3 -2
- package/lib/esm/contexts/common/LiveChatWidgetActionType.js +3 -0
- package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +9 -3
- package/lib/esm/contexts/createReducer.js +20 -2
- package/lib/esm/controller/componentController.js +2 -2
- package/lib/esm/plugins/newMessageEventHandler.js +84 -0
- package/lib/types/assets/Audios.d.ts +1 -0
- package/lib/types/assets/Icons.d.ts +11 -0
- package/lib/types/common/Constants.d.ts +3 -0
- package/lib/types/common/contextDataStore/DataStoreManager.d.ts +4 -0
- package/lib/types/common/interfaces/IContextDataStore.d.ts +14 -0
- package/lib/types/common/telemetry/TelemetryConstants.d.ts +17 -1
- package/lib/types/common/telemetry/TelemetryManager.d.ts +1 -0
- package/lib/types/common/telemetry/definitions/Contracts.d.ts +3 -0
- package/lib/types/common/telemetry/definitions/Payload.d.ts +3 -0
- package/lib/types/common/telemetry/interfaces/IChatSDKLogger.d.ts +1 -0
- package/lib/types/common/telemetry/interfaces/IInternalTelemetryData.d.ts +2 -0
- package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +12 -0
- package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +4 -1
- package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +4 -1
- package/lib/types/components/livechatwidget/common/disposeTelemetryLoggers.d.ts +1 -0
- package/lib/types/components/livechatwidget/common/endChat.d.ts +1 -1
- package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +1 -1
- package/lib/types/components/livechatwidget/common/startChat.d.ts +1 -1
- package/lib/types/components/livechatwidget/common/startProactiveChat.d.ts +2 -1
- package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +2 -0
- package/lib/types/components/prechatsurveypanestateful/interfaces/IPreChatSurveyPaneStatefulParams.d.ts +1 -1
- package/lib/types/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.d.ts +3 -0
- package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
- package/lib/types/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.d.ts +1 -1
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +0 -1
- package/lib/types/contexts/common/ConversationState.d.ts +3 -2
- package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +2 -0
- package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +4 -1
- package/lib/types/plugins/newMessageEventHandler.d.ts +2 -0
- package/package.json +7 -6
- package/lib/cjs/assets/audios/newMessageNotification.mp3 +0 -0
- package/lib/cjs/assets/icons/archiveIcon.svg +0 -3
- package/lib/cjs/assets/icons/audioIcon.svg +0 -6
- package/lib/cjs/assets/icons/blankIcon.svg +0 -6
- package/lib/cjs/assets/icons/excelIcon.svg +0 -6
- package/lib/cjs/assets/icons/imageIcon.svg +0 -6
- package/lib/cjs/assets/icons/oneNoteIcon.svg +0 -6
- package/lib/cjs/assets/icons/pdfIcon.svg +0 -6
- package/lib/cjs/assets/icons/powerpointIcon.svg +0 -6
- package/lib/cjs/assets/icons/videoIcon.svg +0 -6
- package/lib/cjs/assets/icons/visioIcon.svg +0 -6
- package/lib/cjs/assets/icons/wordIcon.svg +0 -6
- package/lib/esm/assets/assets.d.js +0 -0
- package/lib/esm/assets/audios/newMessageNotification.mp3 +0 -0
- package/lib/esm/assets/icons/archiveIcon.svg +0 -3
- package/lib/esm/assets/icons/audioIcon.svg +0 -6
- package/lib/esm/assets/icons/blankIcon.svg +0 -6
- package/lib/esm/assets/icons/excelIcon.svg +0 -6
- package/lib/esm/assets/icons/imageIcon.svg +0 -6
- package/lib/esm/assets/icons/oneNoteIcon.svg +0 -6
- package/lib/esm/assets/icons/pdfIcon.svg +0 -6
- package/lib/esm/assets/icons/powerpointIcon.svg +0 -6
- package/lib/esm/assets/icons/videoIcon.svg +0 -6
- package/lib/esm/assets/icons/visioIcon.svg +0 -6
- package/lib/esm/assets/icons/wordIcon.svg +0 -6
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
|
|
2
|
-
import React, { useEffect, useState } from "react";
|
|
2
|
+
import React, { useEffect, useRef, useState } from "react";
|
|
3
3
|
import { ConversationState } from "../../contexts/common/ConversationState";
|
|
4
4
|
import { Header } from "@microsoft/omnichannel-chat-components";
|
|
5
5
|
import { LiveChatWidgetActionType } from "../../contexts/common/LiveChatWidgetActionType";
|
|
@@ -21,6 +21,7 @@ export const HeaderStateful = props => {
|
|
|
21
21
|
|
|
22
22
|
const [outOfOperatingHours, setOutOfOperatingHours] = useState(((_state$domainStates$l = state.domainStates.liveChatConfig) === null || _state$domainStates$l === void 0 ? void 0 : (_state$domainStates$l2 = _state$domainStates$l.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l2 === void 0 ? void 0 : _state$domainStates$l2.OutOfOperatingHours) === "True");
|
|
23
23
|
const outOfOfficeStyleProps = Object.assign({}, defaultOutOfOfficeHeaderStyleProps, outOfOfficeHeaderProps === null || outOfOfficeHeaderProps === void 0 ? void 0 : outOfOfficeHeaderProps.styleProps);
|
|
24
|
+
const conversationState = useRef(state.appStates.conversationState);
|
|
24
25
|
const controlProps = {
|
|
25
26
|
id: "oc-lcw-header",
|
|
26
27
|
dir: state.domainStates.globalDir,
|
|
@@ -40,17 +41,21 @@ export const HeaderStateful = props => {
|
|
|
40
41
|
Description: "Header Close button clicked."
|
|
41
42
|
});
|
|
42
43
|
|
|
43
|
-
if (
|
|
44
|
+
if (conversationState.current === ConversationState.Active) {
|
|
44
45
|
dispatch({
|
|
45
46
|
type: LiveChatWidgetActionType.SET_SHOW_CONFIRMATION,
|
|
46
47
|
payload: true
|
|
47
48
|
});
|
|
48
|
-
} else if (
|
|
49
|
+
} else if (conversationState.current === ConversationState.Postchat) {
|
|
49
50
|
dispatch({
|
|
50
51
|
type: LiveChatWidgetActionType.SET_SHOULD_SHOW_POST_CHAT,
|
|
51
52
|
payload: false
|
|
52
53
|
});
|
|
53
54
|
await endChat(adapter);
|
|
55
|
+
} else if (conversationState.current === ConversationState.InActive) {
|
|
56
|
+
const skipEndChatSDK = true;
|
|
57
|
+
const skipCloseChat = false;
|
|
58
|
+
await endChat(adapter, skipEndChatSDK, skipCloseChat);
|
|
54
59
|
}
|
|
55
60
|
|
|
56
61
|
dispatch({
|
|
@@ -82,7 +87,11 @@ export const HeaderStateful = props => {
|
|
|
82
87
|
if (state.appStates.outsideOperatingHours) {
|
|
83
88
|
setOutOfOperatingHours(true);
|
|
84
89
|
}
|
|
85
|
-
|
|
90
|
+
|
|
91
|
+
if (state.appStates.conversationState) {
|
|
92
|
+
conversationState.current = state.appStates.conversationState;
|
|
93
|
+
}
|
|
94
|
+
}, [state.appStates]);
|
|
86
95
|
return /*#__PURE__*/React.createElement(Header, {
|
|
87
96
|
componentOverrides: headerProps === null || headerProps === void 0 ? void 0 : headerProps.componentOverrides,
|
|
88
97
|
controlProps: outOfOperatingHours || state.appStates.conversationState === ConversationState.OutOfOffice ? outOfOfficeControlProps : controlProps,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import MarkdownIt from "markdown-it";
|
|
2
|
-
import MarkdownSlack from "slack-markdown-it";
|
|
3
2
|
import MarkdownItForInline from "markdown-it-for-inline";
|
|
4
3
|
import { defaultMarkdownLocalizedTexts } from "../../webchatcontainerstateful/common/defaultProps/defaultMarkdownLocalizedTexts";
|
|
5
4
|
import { Constants } from "../../../common/Constants"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -12,8 +11,9 @@ export const createMarkdown = (disableMarkdownMessageFormatting, disableNewLineM
|
|
|
12
11
|
html: true,
|
|
13
12
|
linkify: true,
|
|
14
13
|
breaks: !disableNewLineMarkdownSupport
|
|
15
|
-
});
|
|
16
|
-
markdown.use(MarkdownSlack);
|
|
14
|
+
}); // ToDo: Commenting below usage of plugin until deferred bug is resolved: https://github.com/mayashavin/markdown-it-slack/issues/1
|
|
15
|
+
// markdown.use(MarkdownSlack);
|
|
16
|
+
// Markdown override for open link in new tab
|
|
17
17
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any, quotes
|
|
18
18
|
|
|
19
19
|
markdown.use(MarkdownItForInline, "url_new_win", "link_open", function (tokens, idx, env) {
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-empty-function, @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { ChatReconnectIconBase64, CloseChatButtonIconBase64, ModernChatIconBase64, ProactiveChatBannerBase64 } from "@microsoft/omnichannel-chat-components";
|
|
2
3
|
import MockAdapter from "../../../webchatcontainerstateful/common/mockadapter";
|
|
4
|
+
import { NewMessageNotificationSoundBase64 } from "../../../../assets/Audios";
|
|
3
5
|
import { WebChatStoreLoader } from "../../../webchatcontainerstateful/webchatcontroller/WebChatStoreLoader";
|
|
4
6
|
import { activityStatusMiddleware } from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware";
|
|
5
7
|
import { createActivityMiddleware } from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware";
|
|
@@ -11,7 +13,7 @@ import { typingIndicatorMiddleware } from "../../../webchatcontainerstateful/web
|
|
|
11
13
|
|
|
12
14
|
export const dummyDefaultProps = {
|
|
13
15
|
audioNotificationProps: {
|
|
14
|
-
audioSrc:
|
|
16
|
+
audioSrc: NewMessageNotificationSoundBase64
|
|
15
17
|
},
|
|
16
18
|
callingContainerProps: {
|
|
17
19
|
controlProps: {
|
|
@@ -132,7 +134,7 @@ export const dummyDefaultProps = {
|
|
|
132
134
|
id: "oc-lcw-CurrentCall-timer",
|
|
133
135
|
showHours: false,
|
|
134
136
|
timerStyles: {
|
|
135
|
-
color: "
|
|
137
|
+
color: "#FFFFFF",
|
|
136
138
|
textAlign: "center",
|
|
137
139
|
backgroundColor: "#3d3c3c",
|
|
138
140
|
height: "45px",
|
|
@@ -163,8 +165,8 @@ export const dummyDefaultProps = {
|
|
|
163
165
|
},
|
|
164
166
|
audioCallButtonStyleProps: {
|
|
165
167
|
borderRadius: "50%",
|
|
166
|
-
color: "
|
|
167
|
-
backgroundColor: "
|
|
168
|
+
color: "#FFFFFF",
|
|
169
|
+
backgroundColor: "#008000",
|
|
168
170
|
lineHeight: "40px",
|
|
169
171
|
height: "40px",
|
|
170
172
|
width: "40px",
|
|
@@ -175,8 +177,8 @@ export const dummyDefaultProps = {
|
|
|
175
177
|
},
|
|
176
178
|
videoCallButtonStyleProps: {
|
|
177
179
|
borderRadius: "50%",
|
|
178
|
-
color: "
|
|
179
|
-
backgroundColor: "
|
|
180
|
+
color: "#FFFFFF",
|
|
181
|
+
backgroundColor: "#008000",
|
|
180
182
|
lineHeight: "40px",
|
|
181
183
|
height: "40px",
|
|
182
184
|
width: "40px",
|
|
@@ -191,8 +193,8 @@ export const dummyDefaultProps = {
|
|
|
191
193
|
},
|
|
192
194
|
declineCallButtonStyleProps: {
|
|
193
195
|
borderRadius: "50%",
|
|
194
|
-
color: "
|
|
195
|
-
backgroundColor: "
|
|
196
|
+
color: "#FFFFFF",
|
|
197
|
+
backgroundColor: "#DC0000",
|
|
196
198
|
lineHeight: "40px",
|
|
197
199
|
height: "40px",
|
|
198
200
|
width: "40px",
|
|
@@ -201,12 +203,12 @@ export const dummyDefaultProps = {
|
|
|
201
203
|
},
|
|
202
204
|
incomingCallTitleStyleProps: {
|
|
203
205
|
margin: "0 5px",
|
|
204
|
-
color: "
|
|
206
|
+
color: "#FFFFFF",
|
|
205
207
|
fontSize: 12,
|
|
206
208
|
fontFamily: "Segoe UI, Arial, sans-serif"
|
|
207
209
|
},
|
|
208
210
|
itemFocusStyleProps: {
|
|
209
|
-
outline: "2px solid
|
|
211
|
+
outline: "2px solid #FFFFFF"
|
|
210
212
|
}
|
|
211
213
|
},
|
|
212
214
|
currentCallStyleProps: {
|
|
@@ -218,7 +220,7 @@ export const dummyDefaultProps = {
|
|
|
218
220
|
},
|
|
219
221
|
micButtonStyleProps: {
|
|
220
222
|
borderRadius: "2px",
|
|
221
|
-
color: "
|
|
223
|
+
color: "#FFFFFF",
|
|
222
224
|
backgroundColor: "#3d3c3c",
|
|
223
225
|
height: "45px",
|
|
224
226
|
width: "50px",
|
|
@@ -229,7 +231,7 @@ export const dummyDefaultProps = {
|
|
|
229
231
|
},
|
|
230
232
|
videoOffButtonStyleProps: {
|
|
231
233
|
borderRadius: "2px",
|
|
232
|
-
color: "
|
|
234
|
+
color: "#FFFFFF",
|
|
233
235
|
backgroundColor: "#3d3c3c",
|
|
234
236
|
height: "45px",
|
|
235
237
|
width: "50px",
|
|
@@ -243,8 +245,8 @@ export const dummyDefaultProps = {
|
|
|
243
245
|
},
|
|
244
246
|
endCallButtonStyleProps: {
|
|
245
247
|
borderRadius: "2px",
|
|
246
|
-
color: "
|
|
247
|
-
backgroundColor: "
|
|
248
|
+
color: "#FFFFFF",
|
|
249
|
+
backgroundColor: "#DC0000",
|
|
248
250
|
lineHeight: "50px",
|
|
249
251
|
height: "45px",
|
|
250
252
|
width: "50px",
|
|
@@ -253,7 +255,7 @@ export const dummyDefaultProps = {
|
|
|
253
255
|
currentCallTimerStyleProps: {
|
|
254
256
|
borderRadius: "2px",
|
|
255
257
|
margin: "1px",
|
|
256
|
-
color: "
|
|
258
|
+
color: "#FFFFFF",
|
|
257
259
|
paddingTop: "18px",
|
|
258
260
|
fontSize: 12,
|
|
259
261
|
fontFamily: "Segoe UI, Arial, sans-serif",
|
|
@@ -366,7 +368,7 @@ export const dummyDefaultProps = {
|
|
|
366
368
|
margin: "-2px -2px -2px -3px",
|
|
367
369
|
justifyContent: "center",
|
|
368
370
|
backgroundSize: "65% 65%",
|
|
369
|
-
backgroundImage:
|
|
371
|
+
backgroundImage: `url(${ModernChatIconBase64})`,
|
|
370
372
|
display: "flex",
|
|
371
373
|
backgroundRepeat: "no-repeat",
|
|
372
374
|
backgroundPosition: "center"
|
|
@@ -475,7 +477,7 @@ export const dummyDefaultProps = {
|
|
|
475
477
|
},
|
|
476
478
|
styleProps: {
|
|
477
479
|
generalStyleProps: {
|
|
478
|
-
backgroundColor: "
|
|
480
|
+
backgroundColor: "#FFFFFF",
|
|
479
481
|
borderRadius: "2px",
|
|
480
482
|
color: "black",
|
|
481
483
|
fontFamily: "Segoe UI, Arial, sans-serif",
|
|
@@ -517,7 +519,7 @@ export const dummyDefaultProps = {
|
|
|
517
519
|
},
|
|
518
520
|
confirmButtonStyleProps: {
|
|
519
521
|
backgroundColor: "rgba(9,72,159,1)",
|
|
520
|
-
color: "
|
|
522
|
+
color: "#FFFFFF",
|
|
521
523
|
fontFamily: "Segoe UI, Arial, sans-serif",
|
|
522
524
|
fontSize: "14px",
|
|
523
525
|
fontWeight: "500",
|
|
@@ -531,7 +533,7 @@ export const dummyDefaultProps = {
|
|
|
531
533
|
border: "2px dotted #000"
|
|
532
534
|
},
|
|
533
535
|
cancelButtonStyleProps: {
|
|
534
|
-
backgroundColor: "
|
|
536
|
+
backgroundColor: "#FFFFFF",
|
|
535
537
|
fontFamily: "Segoe UI, Arial, sans-serif",
|
|
536
538
|
fontSize: "14px",
|
|
537
539
|
fontWeight: "500",
|
|
@@ -887,7 +889,7 @@ export const dummyDefaultProps = {
|
|
|
887
889
|
},
|
|
888
890
|
headerIconProps: {
|
|
889
891
|
id: "oc-lcw-header-icon",
|
|
890
|
-
src:
|
|
892
|
+
src: ModernChatIconBase64,
|
|
891
893
|
alt: "Chat Icon",
|
|
892
894
|
className: undefined
|
|
893
895
|
},
|
|
@@ -916,16 +918,16 @@ export const dummyDefaultProps = {
|
|
|
916
918
|
fontSize: 16,
|
|
917
919
|
fontFamily: "Segoe UI, Arial, sans-serif",
|
|
918
920
|
fontWeight: "450",
|
|
919
|
-
color: "
|
|
921
|
+
color: "#FFFFFF",
|
|
920
922
|
padding: "3px 0"
|
|
921
923
|
},
|
|
922
924
|
minimizeButtonStyleProps: {
|
|
923
|
-
color: "
|
|
925
|
+
color: "#FFFFFF",
|
|
924
926
|
margin: "5px 0",
|
|
925
927
|
fontSize: "12px"
|
|
926
928
|
},
|
|
927
929
|
closeButtonStyleProps: {
|
|
928
|
-
color: "
|
|
930
|
+
color: "#FFFFFF",
|
|
929
931
|
margin: "5px 0",
|
|
930
932
|
fontSize: "12px"
|
|
931
933
|
},
|
|
@@ -1012,7 +1014,7 @@ export const dummyDefaultProps = {
|
|
|
1012
1014
|
alignSelf: "auto"
|
|
1013
1015
|
},
|
|
1014
1016
|
iconImageProps: {
|
|
1015
|
-
src: "
|
|
1017
|
+
src: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxnIGZpbHRlcj0idXJsKCNmaWx0ZXIwX2lpKSI+DQo8cGF0aCBkPSJNMTUuMTk3MSAxNi4yNzI1VjI1Ljg1MjRDMTUuMTk3MSAyNy4zODExIDE1Ljg0MDEgMjcuNTIwMSAxNi45ODMyIDI3LjUyMDFMMjYuNzA4NCAyNy41NjQ5TDMxLjAwMzkgMzIuMzEyM1YyNy41NjQ5SDMxLjg5N0MzMi4xNzQzIDI3LjU2MzcgMzIuNDQ4NyAyNy41MDc3IDMyLjcwNDUgMjcuNDAwMUMzMi45NjAzIDI3LjI5MjQgMzMuMTkyNSAyNy4xMzUzIDMzLjM4NzggMjYuOTM3NUMzMy41ODMxIDI2LjczOTggMzMuNzM3NyAyNi41MDU0IDMzLjg0MjcgMjYuMjQ3N0MzMy45NDc4IDI1Ljk5IDM0LjAwMTMgMjUuNzE0IDM0LjAwMDEgMjUuNDM1NVYxNi4zMDM4QzM0LjAwMTMgMTYuMDI1NCAzMy45NDc4IDE1Ljc0OTQgMzMuODQyNyAxNS40OTE3QzMzLjczNzcgMTUuMjM0IDMzLjU4MzEgMTQuOTk5NiAzMy4zODc4IDE0LjgwMThDMzMuMTkyNSAxNC42MDQxIDMyLjk2MDMgMTQuNDQ2OSAzMi43MDQ1IDE0LjMzOTNDMzIuNDQ4NyAxNC4yMzE2IDMyLjE3NDMgMTQuMTc1NiAzMS44OTcgMTQuMTc0NEwxNy4zMDQ3IDE0LjE0MzFDMTcuMDI2OSAxNC4xNDM3IDE2Ljc1MiAxNC4xOTkyIDE2LjQ5NTcgMTQuMzA2NkMxNi4yMzk0IDE0LjQxNCAxNi4wMDY3IDE0LjU3MTEgMTUuODEwOSAxNC43Njg5QzE1LjYxNTIgMTQuOTY2NyAxNS40NjAyIDE1LjIwMTMgMTUuMzU0OCAxNS40NTkzQzE1LjI0OTUgMTUuNzE3MyAxNS4xOTU5IDE1Ljk5MzYgMTUuMTk3MSAxNi4yNzI1WiIgZmlsbD0iI0Q2RDZENiIvPg0KPC9nPg0KPGcgZmlsdGVyPSJ1cmwoI2ZpbHRlcjFfZGlpKSI+DQo8cGF0aCBkPSJNMjcuODczNSA2LjY5ODg3VjE4Ljg0MDlDMjcuODczNSAyMC43Nzg1IDI3LjA1NzIgMjAuOTU0NiAyNS42MDU4IDIwLjk1NDZMMTMuMjU4IDIxLjAxMTRMNy44MDQxNCAyNy4wMjg1VjIxLjAxMTRINi42NzAyN0M2LjMxODEyIDIxLjAwOTkgNS45Njk3MSAyMC45Mzg5IDUuNjQ0OTMgMjAuODAyNUM1LjMyMDE2IDIwLjY2NjEgNS4wMjUzOCAyMC40NjY4IDQuNzc3NDIgMjAuMjE2MkM0LjUyOTQ2IDE5Ljk2NTYgNC4zMzMxOSAxOS42Njg1IDQuMTk5OCAxOS4zNDE5QzQuMDY2NDIgMTkuMDE1MiAzLjk5ODUzIDE4LjY2NTUgNC4wMDAwMiAxOC4zMTI1VjYuNzM4NjRDMy45OTg1MyA2LjM4NTcxIDQuMDY2NDIgNi4wMzU5NSA0LjE5OTggNS43MDkzMUM0LjMzMzE5IDUuMzgyNjcgNC41Mjk0NiA1LjA4NTU3IDQuNzc3NDIgNC44MzQ5NUM1LjAyNTM4IDQuNTg0MzQgNS4zMjAxNiA0LjM4NTEzIDUuNjQ0OTMgNC4yNDg2OUM1Ljk2OTcxIDQuMTEyMjUgNi4zMTgxMiA0LjA0MTI2IDYuNjcwMjcgNC4wMzk3N0wyNS4xOTc2IDRDMjUuNTUwMiA0LjAwMDc0IDI1Ljg5OTMgNC4wNzExOCAyNi4yMjQ3IDQuMjA3MjlDMjYuNTUwMSA0LjM0MzM5IDI2Ljg0NTYgNC41NDI0OSAyNy4wOTQxIDQuNzkzMThDMjcuMzQyNyA1LjA0Mzg2IDI3LjUzOTUgNS4zNDEyMiAyNy42NzMyIDUuNjY4MjNDMjcuODA3IDUuOTk1MjMgMjcuODc1IDYuMzQ1NDYgMjcuODczNSA2LjY5ODg3WiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyKSIvPg0KPC9nPg0KPGRlZnM+DQo8ZmlsdGVyIGlkPSJmaWx0ZXIwX2lpIiB4PSIxNS4xOTcxIiB5PSIxNC4xNDMxIiB3aWR0aD0iMTguODAzMSIgaGVpZ2h0PSIxOC4xNjkzIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+DQo8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwIiByZXN1bHQ9IkJhY2tncm91bmRJbWFnZUZpeCIvPg0KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz4NCjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPg0KPGZlT2Zmc2V0IGR4PSItMC4yIiBkeT0iLTAuMiIvPg0KPGZlQ29tcG9zaXRlIGluMj0iaGFyZEFscGhhIiBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgazI9Ii0xIiBrMz0iMSIvPg0KPGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAuMTcgMCIvPg0KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbjI9InNoYXBlIiByZXN1bHQ9ImVmZmVjdDFfaW5uZXJTaGFkb3ciLz4NCjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPg0KPGZlT2Zmc2V0IGR4PSItMC41IiBkeT0iLTAuNSIvPg0KPGZlQ29tcG9zaXRlIGluMj0iaGFyZEFscGhhIiBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgazI9Ii0xIiBrMz0iMSIvPg0KPGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAuMTYgMCIvPg0KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbjI9ImVmZmVjdDFfaW5uZXJTaGFkb3ciIHJlc3VsdD0iZWZmZWN0Ml9pbm5lclNoYWRvdyIvPg0KPC9maWx0ZXI+DQo8ZmlsdGVyIGlkPSJmaWx0ZXIxX2RpaSIgeD0iMCIgeT0iMCIgd2lkdGg9IjM5Ljg3MzYiIGhlaWdodD0iMzkuMDI4NSIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiPg0KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4NCjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIi8+DQo8ZmVPZmZzZXQgZHg9IjQiIGR5PSI0Ii8+DQo8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSI0Ii8+DQo8ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMC4yNSAwIi8+DQo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluMj0iQmFja2dyb3VuZEltYWdlRml4IiByZXN1bHQ9ImVmZmVjdDFfZHJvcFNoYWRvdyIvPg0KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJlZmZlY3QxX2Ryb3BTaGFkb3ciIHJlc3VsdD0ic2hhcGUiLz4NCjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPg0KPGZlT2Zmc2V0IGR4PSItMiIgZHk9Ii0yIi8+DQo8ZmVDb21wb3NpdGUgaW4yPSJoYXJkQWxwaGEiIG9wZXJhdG9yPSJhcml0aG1ldGljIiBrMj0iLTEiIGszPSIxIi8+DQo8ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMC4xNyAwIi8+DQo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluMj0ic2hhcGUiIHJlc3VsdD0iZWZmZWN0Ml9pbm5lclNoYWRvdyIvPg0KPGZlQ29sb3JNYXRyaXggaW49IlNvdXJjZUFscGhhIiB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDAiIHJlc3VsdD0iaGFyZEFscGhhIi8+DQo8ZmVPZmZzZXQgZHg9Ii0xIiBkeT0iLTEiLz4NCjxmZUNvbXBvc2l0ZSBpbjI9ImhhcmRBbHBoYSIgb3BlcmF0b3I9ImFyaXRobWV0aWMiIGsyPSItMSIgazM9IjEiLz4NCjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwLjE2IDAiLz4NCjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW4yPSJlZmZlY3QyX2lubmVyU2hhZG93IiByZXN1bHQ9ImVmZmVjdDNfaW5uZXJTaGFkb3ciLz4NCjwvZmlsdGVyPg0KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyIiB4MT0iLTAuMzk1MDAxIiB5MT0iMjMuMTI4MiIgeDI9IjIwLjEwNTgiIHkyPSIzNy44NDc0IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+DQo8c3RvcCBzdG9wLWNvbG9yPSIjRUZFRkVGIi8+DQo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IndoaXRlIi8+DQo8L2xpbmVhckdyYWRpZW50Pg0KPC9kZWZzPg0KPC9zdmc+DQo=",
|
|
1016
1018
|
imageFit: 0,
|
|
1017
1019
|
width: "86px",
|
|
1018
1020
|
height: "86px",
|
|
@@ -1087,7 +1089,7 @@ export const dummyDefaultProps = {
|
|
|
1087
1089
|
titleStyleProps: {
|
|
1088
1090
|
// ...[Existing chat button title style props]
|
|
1089
1091
|
margin: "0 0 0 10px",
|
|
1090
|
-
color: "
|
|
1092
|
+
color: "#FFFFFF"
|
|
1091
1093
|
}
|
|
1092
1094
|
}
|
|
1093
1095
|
},
|
|
@@ -1220,7 +1222,7 @@ export const dummyDefaultProps = {
|
|
|
1220
1222
|
},
|
|
1221
1223
|
headerContainerStyleProps: {
|
|
1222
1224
|
backgroundColor: "rgb(49, 95, 162)",
|
|
1223
|
-
backgroundImage:
|
|
1225
|
+
backgroundImage: `url(${ProactiveChatBannerBase64})`,
|
|
1224
1226
|
backgroundPosition: "initial",
|
|
1225
1227
|
backgroundRepeat: "no-repeat",
|
|
1226
1228
|
borderTopLeftRadius: "inherit",
|
|
@@ -1248,7 +1250,7 @@ export const dummyDefaultProps = {
|
|
|
1248
1250
|
fontWeight: "600"
|
|
1249
1251
|
},
|
|
1250
1252
|
closeButtonStyleProps: {
|
|
1251
|
-
backgroundImage:
|
|
1253
|
+
backgroundImage: `url(${CloseChatButtonIconBase64})`,
|
|
1252
1254
|
backgroundPosition: "center",
|
|
1253
1255
|
backgroundRepeat: "no-repeat",
|
|
1254
1256
|
color: "#605e5c",
|
|
@@ -1371,7 +1373,7 @@ export const dummyDefaultProps = {
|
|
|
1371
1373
|
lineHeight: "19px"
|
|
1372
1374
|
},
|
|
1373
1375
|
iconStyleProps: {
|
|
1374
|
-
backgroundImage:
|
|
1376
|
+
backgroundImage: `url(${ChatReconnectIconBase64})`,
|
|
1375
1377
|
backgroundPosition: "center",
|
|
1376
1378
|
backgroundRepeat: "no-repeat",
|
|
1377
1379
|
backgroundSize: "200px",
|
|
@@ -1453,7 +1455,7 @@ export const dummyDefaultProps = {
|
|
|
1453
1455
|
bubbleBackground: "#315FA2",
|
|
1454
1456
|
bubbleBorderRadius: 4,
|
|
1455
1457
|
bubbleBorderWidth: 0,
|
|
1456
|
-
bubbleFromUserBackground: "
|
|
1458
|
+
bubbleFromUserBackground: "#FFFFFF",
|
|
1457
1459
|
bubbleFromUserBorderRadius: 4,
|
|
1458
1460
|
bubbleFromUserBorderWidth: 1,
|
|
1459
1461
|
bubbleFromUserTextColor: "Black",
|
|
@@ -1461,7 +1463,7 @@ export const dummyDefaultProps = {
|
|
|
1461
1463
|
bubbleMaxWidth: 250,
|
|
1462
1464
|
bubbleMinHeight: 34,
|
|
1463
1465
|
bubbleMinWidth: 20,
|
|
1464
|
-
bubbleTextColor: "
|
|
1466
|
+
bubbleTextColor: "#FFFFFF",
|
|
1465
1467
|
hideSendBox: false,
|
|
1466
1468
|
hideUploadButton: true,
|
|
1467
1469
|
primaryFont: "Segoe UI, Arial, sans-serif",
|
|
@@ -1470,7 +1472,7 @@ export const dummyDefaultProps = {
|
|
|
1470
1472
|
sendBoxTextWrap: true,
|
|
1471
1473
|
sendBoxHeight: 60,
|
|
1472
1474
|
sendBoxMaxHeight: 96,
|
|
1473
|
-
sendBoxBackground: "
|
|
1475
|
+
sendBoxBackground: "#FFFFFF",
|
|
1474
1476
|
showAvatarInGroup: true,
|
|
1475
1477
|
suggestedActionsStackedHeight: 125,
|
|
1476
1478
|
suggestedActionsStackedOverflow: "scroll",
|
|
@@ -1581,7 +1583,7 @@ export const dummyDefaultProps = {
|
|
|
1581
1583
|
fontWeight: 600,
|
|
1582
1584
|
fontSize: "13px",
|
|
1583
1585
|
lineHeight: "18px",
|
|
1584
|
-
color: "
|
|
1586
|
+
color: "#FFFFFF",
|
|
1585
1587
|
paddingTop: "7px",
|
|
1586
1588
|
WebkitUserSelect: "none",
|
|
1587
1589
|
MozUserSelect: "none",
|
|
@@ -1685,5 +1687,6 @@ export const dummyDefaultProps = {
|
|
|
1685
1687
|
PRECHAT_REQUIRED_FIELD_MISSING_MESSAGE: "{0} field is required",
|
|
1686
1688
|
MARKDOWN_EXTERNAL_LINK_ALT: "Opens in a new window; external."
|
|
1687
1689
|
}
|
|
1688
|
-
}
|
|
1690
|
+
},
|
|
1691
|
+
telemetryConfig: undefined
|
|
1689
1692
|
};
|
|
@@ -1,53 +1,72 @@
|
|
|
1
|
-
import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
|
|
1
|
+
import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
|
|
2
|
+
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
2
3
|
import { ConversationState } from "../../../contexts/common/ConversationState";
|
|
3
4
|
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
4
|
-
import { NotificationHandler } from "../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler";
|
|
5
|
-
import { NotificationScenarios } from "../../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios";
|
|
6
5
|
import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
|
|
7
6
|
import { WebChatStoreLoader } from "../../webchatcontainerstateful/webchatcontroller/WebChatStoreLoader";
|
|
8
|
-
import { defaultWebChatContainerStatefulProps } from "../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps";
|
|
9
|
-
import { BroadcastService } from "@microsoft/omnichannel-chat-components"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7
|
+
import { defaultWebChatContainerStatefulProps } from "../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
10
8
|
|
|
11
|
-
export const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter) => {
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
export const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat) => {
|
|
10
|
+
if (!skipEndChatSDK) {
|
|
11
|
+
try {
|
|
12
|
+
TelemetryHelper.logSDKEvent(LogLevel.INFO, {
|
|
13
|
+
Event: TelemetryEvent.EndChatSDKCall
|
|
14
|
+
});
|
|
15
|
+
await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.endChat());
|
|
16
|
+
} catch (ex) {
|
|
17
|
+
TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
|
|
18
|
+
Event: TelemetryEvent.EndChatSDKCallFailed,
|
|
19
|
+
ExceptionDetails: {
|
|
20
|
+
exception: ex
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (!skipCloseChat) {
|
|
27
|
+
try {
|
|
28
|
+
var _props$webChatContain;
|
|
14
29
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
30
|
+
adapter === null || adapter === void 0 ? void 0 : adapter.end();
|
|
31
|
+
setAdapter(undefined);
|
|
32
|
+
setWebChatStyles({ ...defaultWebChatContainerStatefulProps.webChatStyles,
|
|
33
|
+
...((_props$webChatContain = props.webChatContainerProps) === null || _props$webChatContain === void 0 ? void 0 : _props$webChatContain.webChatStyles)
|
|
34
|
+
});
|
|
35
|
+
WebChatStoreLoader.store = null;
|
|
36
|
+
dispatch({
|
|
37
|
+
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
38
|
+
payload: ConversationState.Closed
|
|
39
|
+
});
|
|
40
|
+
dispatch({
|
|
41
|
+
type: LiveChatWidgetActionType.SET_CONVERSATION_ENDED_BY_AGENT,
|
|
42
|
+
payload: false
|
|
43
|
+
});
|
|
44
|
+
dispatch({
|
|
45
|
+
type: LiveChatWidgetActionType.SET_RECONNECT_ID,
|
|
46
|
+
payload: undefined
|
|
47
|
+
});
|
|
48
|
+
dispatch({
|
|
49
|
+
type: LiveChatWidgetActionType.SET_AUDIO_NOTIFICATION,
|
|
50
|
+
payload: null
|
|
51
|
+
});
|
|
52
|
+
dispatch({
|
|
53
|
+
type: LiveChatWidgetActionType.SET_CHAT_TOKEN,
|
|
54
|
+
payload: undefined
|
|
55
|
+
});
|
|
56
|
+
dispatch({
|
|
57
|
+
type: LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
|
|
58
|
+
payload: undefined
|
|
59
|
+
});
|
|
60
|
+
BroadcastService.postMessage({
|
|
61
|
+
eventName: BroadcastEvent.EndChat
|
|
62
|
+
});
|
|
63
|
+
} catch (error) {
|
|
64
|
+
TelemetryHelper.logActionEvent(LogLevel.ERROR, {
|
|
65
|
+
Event: TelemetryEvent.CloseChatMethodException,
|
|
66
|
+
ExceptionDetails: {
|
|
67
|
+
exception: `Failed to endChat: ${error}`
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
52
71
|
}
|
|
53
72
|
};
|
|
@@ -8,6 +8,9 @@ export const initCallingSdk = async (chatSDK, setVoiceVideoCallingSDK) => {
|
|
|
8
8
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
9
9
|
const callingSDK = await chatSDK.getVoiceVideoCalling();
|
|
10
10
|
setVoiceVideoCallingSDK(callingSDK);
|
|
11
|
+
TelemetryHelper.logCallingEvent(LogLevel.INFO, {
|
|
12
|
+
Event: TelemetryEvent.CallingSDKLoadSuccess
|
|
13
|
+
});
|
|
11
14
|
return true;
|
|
12
15
|
}
|
|
13
16
|
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
|
|
1
2
|
import { createStore } from "botframework-webchat";
|
|
3
|
+
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
2
4
|
import { ConversationState } from "../../../contexts/common/ConversationState";
|
|
3
5
|
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
4
6
|
import { PostChatSurveyMode } from "../../postchatsurveypanestateful/enums/PostChatSurveyMode";
|
|
7
|
+
import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
|
|
5
8
|
import { WebChatStoreLoader } from "../../webchatcontainerstateful/webchatcontroller/WebChatStoreLoader";
|
|
6
9
|
import attachmentProcessingMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware";
|
|
7
10
|
import { changeLanguageCodeFormatForWebChat } from "../../../common/utils";
|
|
@@ -22,8 +25,7 @@ import gifUploadMiddleware from "../../webchatcontainerstateful/webchatcontrolle
|
|
|
22
25
|
import htmlPlayerMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware";
|
|
23
26
|
import htmlTextMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware";
|
|
24
27
|
import preProcessingMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware";
|
|
25
|
-
import sanitizationMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware";
|
|
26
|
-
import { setPostChatContextAndLoadSurvey } from "./setPostChatContextAndLoadSurvey"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
|
+
import sanitizationMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
29
|
|
|
28
30
|
export const initWebChatComposer = (props, chatSDK, state, dispatch, setWebChatStyles) => {
|
|
29
31
|
var _props$webChatContain, _props$webChatContain2, _props$webChatContain3, _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _state$domainStates$l4, _state$domainStates$l8, _state$domainStates$l9, _props$webChatContain7, _props$webChatContain8, _state$domainStates$r, _state$domainStates$r2, _props$webChatContain9, _props$webChatContain10, _state$domainStates$r3, _state$domainStates$r4, _props$webChatContain11, _props$webChatContain12, _defaultWebChatContai, _props$webChatContain13, _props$webChatContain14, _props$webChatContain15, _props$webChatContain16, _state$domainStates$r5, _state$domainStates$r6, _props$webChatContain17, _props$webChatContain18, _defaultWebChatContai2, _props$webChatContain19, _props$webChatContain20, _defaultWebChatContai3, _props$webChatContain21;
|
|
@@ -45,6 +47,11 @@ export const initWebChatComposer = (props, chatSDK, state, dispatch, setWebChatS
|
|
|
45
47
|
const conversationEndCallback = async () => {
|
|
46
48
|
var _props$webChatContain4, _props$webChatContain5;
|
|
47
49
|
|
|
50
|
+
TelemetryHelper.logActionEvent(LogLevel.INFO, {
|
|
51
|
+
Event: TelemetryEvent.ConversationEndedThreadEventReceived,
|
|
52
|
+
Description: "Conversation is ended by agent side or by timeout."
|
|
53
|
+
});
|
|
54
|
+
|
|
48
55
|
if ((props === null || props === void 0 ? void 0 : (_props$webChatContain4 = props.webChatContainerProps) === null || _props$webChatContain4 === void 0 ? void 0 : (_props$webChatContain5 = _props$webChatContain4.renderingMiddlewareProps) === null || _props$webChatContain5 === void 0 ? void 0 : _props$webChatContain5.hideSendboxOnConversationEnd) !== false) {
|
|
49
56
|
setWebChatStyles(styles => {
|
|
50
57
|
return { ...styles,
|
|
@@ -53,16 +60,23 @@ export const initWebChatComposer = (props, chatSDK, state, dispatch, setWebChatS
|
|
|
53
60
|
});
|
|
54
61
|
}
|
|
55
62
|
|
|
56
|
-
if (isPostChatEnabled === "true"
|
|
63
|
+
if (isPostChatEnabled === "true") {
|
|
64
|
+
if (postChatSurveyMode === PostChatSurveyMode.Embed) {
|
|
65
|
+
const loadPostChatEvent = {
|
|
66
|
+
eventName: BroadcastEvent.LoadPostChatSurvey
|
|
67
|
+
};
|
|
68
|
+
BroadcastService.postMessage(loadPostChatEvent);
|
|
69
|
+
} else if (postChatSurveyMode === PostChatSurveyMode.Link) {
|
|
70
|
+
dispatch({
|
|
71
|
+
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
72
|
+
payload: ConversationState.InActive
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
} else {
|
|
57
76
|
dispatch({
|
|
58
|
-
type: LiveChatWidgetActionType.
|
|
77
|
+
type: LiveChatWidgetActionType.SET_CONVERSATION_ENDED_BY_AGENT,
|
|
59
78
|
payload: true
|
|
60
79
|
});
|
|
61
|
-
dispatch({
|
|
62
|
-
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
63
|
-
payload: ConversationState.Loading
|
|
64
|
-
});
|
|
65
|
-
await setPostChatContextAndLoadSurvey(chatSDK, dispatch, true);
|
|
66
80
|
}
|
|
67
81
|
|
|
68
82
|
dispatch({
|
|
@@ -1,13 +1,22 @@
|
|
|
1
|
-
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
2
1
|
import { RegisterLoggers, TelemetryManager } from "../../../common/telemetry/TelemetryManager";
|
|
2
|
+
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
3
3
|
import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
|
|
4
|
+
import { version as chatComponentVersion } from "@microsoft/omnichannel-chat-components/package.json";
|
|
5
|
+
import { version as chatSdkVersion } from "@microsoft/omnichannel-chat-sdk/package.json";
|
|
4
6
|
import { defaultAriaConfig } from "../../../common/telemetry/defaultConfigs/defaultAriaConfig";
|
|
5
7
|
import { defaultInternalTelemetryData } from "../../../common/telemetry/defaultConfigs/defaultTelemetryInternalData";
|
|
6
8
|
import { defaultTelemetryConfiguration } from "../../../common/telemetry/defaultConfigs/defaultTelemetryConfiguration";
|
|
7
|
-
import packageInfo from "@microsoft/omnichannel-chat-sdk/package.json";
|
|
8
9
|
export const registerTelemetryLoggers = (props, dispatch) => {
|
|
9
10
|
var _props$liveChatContex, _props$liveChatContex2;
|
|
10
11
|
|
|
12
|
+
let widgetPackageInfo;
|
|
13
|
+
|
|
14
|
+
try {
|
|
15
|
+
widgetPackageInfo = require("@microsoft/omnichannel-chat-widget/package.json");
|
|
16
|
+
} catch (error) {
|
|
17
|
+
widgetPackageInfo = "0.0.0-0";
|
|
18
|
+
}
|
|
19
|
+
|
|
11
20
|
const telemetryConfig = { ...defaultTelemetryConfiguration,
|
|
12
21
|
...props.telemetryConfig
|
|
13
22
|
};
|
|
@@ -17,6 +26,8 @@ export const registerTelemetryLoggers = (props, dispatch) => {
|
|
|
17
26
|
|
|
18
27
|
TelemetryManager.InternalTelemetryData = (_props$liveChatContex3 = props.liveChatContextFromCache) === null || _props$liveChatContex3 === void 0 ? void 0 : (_props$liveChatContex4 = _props$liveChatContex3.domainStates) === null || _props$liveChatContex4 === void 0 ? void 0 : _props$liveChatContex4.telemetryInternalData;
|
|
19
28
|
} else {
|
|
29
|
+
var _props$chatSDK, _props$chatSDK$omnich, _props$chatSDK2, _props$chatSDK2$omnic, _props$chatSDK3, _props$chatSDK3$omnic;
|
|
30
|
+
|
|
20
31
|
let telemetryData = { ...defaultInternalTelemetryData,
|
|
21
32
|
telemetryConfig: Object.assign({}, defaultTelemetryConfiguration, telemetryConfig),
|
|
22
33
|
ariaConfig: Object.assign({}, defaultAriaConfig, telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.ariaConfigurations)
|
|
@@ -27,7 +38,13 @@ export const registerTelemetryLoggers = (props, dispatch) => {
|
|
|
27
38
|
}
|
|
28
39
|
|
|
29
40
|
telemetryData = TelemetryHelper.addWidgetDataToTelemetry(telemetryConfig, telemetryData);
|
|
30
|
-
telemetryData.OCChatSDKVersion =
|
|
41
|
+
telemetryData.OCChatSDKVersion = chatSdkVersion;
|
|
42
|
+
telemetryData.chatComponentVersion = chatComponentVersion;
|
|
43
|
+
telemetryData.chatWidgetVersion = widgetPackageInfo;
|
|
44
|
+
telemetryData.orgId = (_props$chatSDK = props.chatSDK) === null || _props$chatSDK === void 0 ? void 0 : (_props$chatSDK$omnich = _props$chatSDK.omnichannelConfig) === null || _props$chatSDK$omnich === void 0 ? void 0 : _props$chatSDK$omnich.orgId;
|
|
45
|
+
telemetryData.widgetId = (_props$chatSDK2 = props.chatSDK) === null || _props$chatSDK2 === void 0 ? void 0 : (_props$chatSDK2$omnic = _props$chatSDK2.omnichannelConfig) === null || _props$chatSDK2$omnic === void 0 ? void 0 : _props$chatSDK2$omnic.widgetId;
|
|
46
|
+
telemetryData.orgUrl = (_props$chatSDK3 = props.chatSDK) === null || _props$chatSDK3 === void 0 ? void 0 : (_props$chatSDK3$omnic = _props$chatSDK3.omnichannelConfig) === null || _props$chatSDK3$omnic === void 0 ? void 0 : _props$chatSDK3$omnic.orgUrl;
|
|
47
|
+
TelemetryManager.InternalTelemetryData = telemetryData;
|
|
31
48
|
dispatch({
|
|
32
49
|
type: LiveChatWidgetActionType.SET_TELEMETRY_DATA,
|
|
33
50
|
payload: telemetryData
|
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
|
|
2
|
+
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
3
|
+
import { ConversationState } from "../../../contexts/common/ConversationState";
|
|
2
4
|
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
3
|
-
import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
|
|
4
|
-
import { ConversationState } from "../../../contexts/common/ConversationState"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
5
|
+
import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
5
6
|
|
|
6
|
-
export const setPostChatContextAndLoadSurvey = async (chatSDK, dispatch,
|
|
7
|
+
export const setPostChatContextAndLoadSurvey = async (chatSDK, dispatch, persistedChat) => {
|
|
7
8
|
try {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
if (!persistedChat) {
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
11
|
+
const context = await chatSDK.getPostChatSurveyContext();
|
|
12
|
+
TelemetryHelper.logSDKEvent(LogLevel.INFO, {
|
|
13
|
+
Event: TelemetryEvent.PostChatContextCallSucceed,
|
|
14
|
+
Description: "Postchat context call succeed."
|
|
15
|
+
});
|
|
16
|
+
dispatch({
|
|
17
|
+
type: LiveChatWidgetActionType.SET_POST_CHAT_CONTEXT,
|
|
18
|
+
payload: context
|
|
19
|
+
});
|
|
20
|
+
}
|
|
18
21
|
} catch (ex) {
|
|
19
22
|
TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
|
|
20
23
|
Event: TelemetryEvent.PostChatContextCallFailed,
|
|
@@ -22,19 +25,17 @@ export const setPostChatContextAndLoadSurvey = async (chatSDK, dispatch, loadSur
|
|
|
22
25
|
exception: ex
|
|
23
26
|
}
|
|
24
27
|
});
|
|
25
|
-
}
|
|
26
|
-
/* -true: setPostChatContextAndLoadSurvey is called after passing all checks from ConfirmationPane and endChatMiddleware in usual scenario.
|
|
27
|
-
-false: Below if condition is needed for multi-tab scenarios. So when agent ends a chat and customer has opened chat in multiple tabs,
|
|
28
|
-
all tabs should show post chat survey as per existing functionality. But when an agent end a conversation, Omnichannel SDK
|
|
29
|
-
getPostChatSurveyContext returns as invalid conversation. To avoid that, caching the survey url is needed after chat starts and
|
|
30
|
-
in this case loadSurvey is false
|
|
31
|
-
*/
|
|
28
|
+
} // eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
32
29
|
|
|
33
30
|
|
|
34
|
-
|
|
31
|
+
BroadcastService.getMessageByEventName("LoadPostChatSurvey").subscribe(msg => {
|
|
32
|
+
dispatch({
|
|
33
|
+
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
34
|
+
payload: ConversationState.Loading
|
|
35
|
+
});
|
|
35
36
|
dispatch({
|
|
36
37
|
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
37
38
|
payload: ConversationState.Postchat
|
|
38
39
|
});
|
|
39
|
-
}
|
|
40
|
+
});
|
|
40
41
|
};
|