@microsoft/omnichannel-chat-widget 0.1.0-main.d5a92f2 → 0.1.0-main.d5e0dfe
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 +2 -2
- package/lib/cjs/common/telemetry/TelemetryHelper.js +2 -1
- package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +1 -1
- package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +1 -1
- package/lib/cjs/components/headerstateful/HeaderStateful.js +3 -1
- package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +59 -11
- package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +3 -6
- package/lib/cjs/components/livechatwidget/common/startChat.js +18 -9
- package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +8 -8
- package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +2 -0
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +1 -3
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +1 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +1 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +5 -6
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +2 -14
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +2 -11
- package/lib/cjs/plugins/newMessageEventHandler.js +4 -0
- package/lib/esm/common/Constants.js +2 -2
- package/lib/esm/common/telemetry/TelemetryHelper.js +2 -1
- package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +1 -1
- package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +1 -1
- package/lib/esm/components/headerstateful/HeaderStateful.js +3 -1
- package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +59 -11
- package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +4 -6
- package/lib/esm/components/livechatwidget/common/startChat.js +18 -9
- package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +9 -9
- package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +2 -0
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +1 -3
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +1 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +1 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +5 -6
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +2 -14
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +2 -11
- package/lib/esm/plugins/newMessageEventHandler.js +4 -0
- package/lib/types/common/telemetry/definitions/Contracts.d.ts +2 -0
- package/lib/types/common/telemetry/definitions/Payload.d.ts +1 -0
- package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +4 -0
- package/lib/types/components/livechatwidget/common/startChat.d.ts +2 -1
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.d.ts +1 -1
- package/package.json +3 -3
|
@@ -51,8 +51,8 @@ _defineProperty(Constants, "acsChannel", "ACS_CHANNEL");
|
|
|
51
51
|
_defineProperty(Constants, "publicMessageTag", "public");
|
|
52
52
|
_defineProperty(Constants, "supportedAdaptiveCardContentTypes", ["application/vnd.microsoft.card.adaptive", "application/vnd.microsoft.card.audio", "application/vnd.microsoft.card.hero", "application/vnd.microsoft.card.receipt", "application/vnd.microsoft.card.thumbnail", "application/vnd.microsoft.card.signin", "application/vnd.microsoft.card.oauth"]);
|
|
53
53
|
_defineProperty(Constants, "maxUploadFileSize", "500000");
|
|
54
|
-
_defineProperty(Constants, "imageRegex", /(\.)(jpeg|jpg|jiff|png|gif|bmp)$/i);
|
|
55
|
-
_defineProperty(Constants, "audioMediaRegex", /(\.)(aac|aiff|alac|flac|mp2|mp3|pcm|wav|wma)$/i);
|
|
54
|
+
_defineProperty(Constants, "imageRegex", /(\.)(jpeg|jpg|jiff|png|gif|bmp|webp)$/i);
|
|
55
|
+
_defineProperty(Constants, "audioMediaRegex", /(\.)(aac|aiff|alac|amr|flac|mp2|mp3|pcm|wav|wma)$/i);
|
|
56
56
|
_defineProperty(Constants, "videoMediaRegex", /(\.)(avchd|avi|flv|mpe|mpeg|mpg|mpv|mp4|m4p|m4v|mov|qt|swf|webm|wmv)$/i);
|
|
57
57
|
_defineProperty(Constants, "chromeSupportedInlineMediaRegex", /(\.)(aac|mp3|wav|mp4)$/i);
|
|
58
58
|
_defineProperty(Constants, "firefoxSupportedInlineMediaRegex", /(\.)(aac|flac|mp3|wav|mp4|mov)$/i);
|
|
@@ -62,6 +62,7 @@ class TelemetryHelper {
|
|
|
62
62
|
event.ElapsedTimeInMilliseconds = payload.ElapsedTimeInMilliseconds;
|
|
63
63
|
event.ExceptionDetails = JSON.stringify(payload.ExceptionDetails);
|
|
64
64
|
event.Description = payload.Description;
|
|
65
|
+
event.CustomProperties = JSON.stringify(payload.CustomProperties);
|
|
65
66
|
});
|
|
66
67
|
}
|
|
67
68
|
static conformToWebChatContract(level, input) {
|
|
@@ -167,7 +168,7 @@ class TelemetryHelper {
|
|
|
167
168
|
telemetryDataLocal.widgetId = telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.appId;
|
|
168
169
|
telemetryDataLocal.orgId = telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.orgId;
|
|
169
170
|
telemetryDataLocal.orgUrl = telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.orgUrl;
|
|
170
|
-
telemetryDataLocal.lcwRuntimeId = (0, _utils.newGuid)();
|
|
171
|
+
telemetryDataLocal.lcwRuntimeId = telemetryConfig.LCWRuntimeId ?? (0, _utils.newGuid)();
|
|
171
172
|
return telemetryDataLocal;
|
|
172
173
|
}
|
|
173
174
|
static addSessionDataToTelemetry(chatSession, telemetryInternalData) {
|
|
@@ -90,7 +90,7 @@ const ConfirmationPaneStateful = props => {
|
|
|
90
90
|
Event: _TelemetryConstants.TelemetryEvent.ConfirmationPaneLoaded
|
|
91
91
|
});
|
|
92
92
|
}, []);
|
|
93
|
-
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null,
|
|
93
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_DimLayer.DimLayer, {
|
|
94
94
|
brightness: (controlProps === null || controlProps === void 0 ? void 0 : controlProps.brightnessValueOnDim) ?? "0.2"
|
|
95
95
|
}), /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.ConfirmationPane, {
|
|
96
96
|
componentOverrides: props === null || props === void 0 ? void 0 : props.componentOverrides,
|
|
@@ -97,7 +97,7 @@ const EmailTranscriptPaneStateful = props => {
|
|
|
97
97
|
Event: _TelemetryConstants.TelemetryEvent.EmailTranscriptLoaded
|
|
98
98
|
});
|
|
99
99
|
}, [initialEmail]);
|
|
100
|
-
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null,
|
|
100
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_DimLayer.DimLayer, {
|
|
101
101
|
brightness: (controlProps === null || controlProps === void 0 ? void 0 : controlProps.brightnessValueOnDim) ?? "0.2"
|
|
102
102
|
}), /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.InputValidationPane, {
|
|
103
103
|
componentOverrides: props.componentOverrides,
|
|
@@ -30,6 +30,7 @@ const HeaderStateful = props => {
|
|
|
30
30
|
const [outOfOperatingHours, setOutOfOperatingHours] = (0, _react.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");
|
|
31
31
|
const outOfOfficeStyleProps = Object.assign({}, _defaultOutOfOfficeHeaderStyleProps.defaultOutOfOfficeHeaderStyleProps, outOfOfficeHeaderProps === null || outOfOfficeHeaderProps === void 0 ? void 0 : outOfOfficeHeaderProps.styleProps);
|
|
32
32
|
const conversationState = (0, _react.useRef)(state.appStates.conversationState);
|
|
33
|
+
const conversationEndedByAgent = (0, _react.useRef)(state.appStates.conversationEndedByAgent);
|
|
33
34
|
const controlProps = {
|
|
34
35
|
id: "oc-lcw-header",
|
|
35
36
|
dir: state.domainStates.globalDir,
|
|
@@ -49,7 +50,7 @@ const HeaderStateful = props => {
|
|
|
49
50
|
Event: _TelemetryConstants.TelemetryEvent.HeaderCloseButtonClicked,
|
|
50
51
|
Description: "Header Close button clicked."
|
|
51
52
|
});
|
|
52
|
-
if (conversationState.current === _ConversationState.ConversationState.Active) {
|
|
53
|
+
if (conversationState.current === _ConversationState.ConversationState.Active || conversationEndedByAgent.current) {
|
|
53
54
|
dispatch({
|
|
54
55
|
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_SHOW_CONFIRMATION,
|
|
55
56
|
payload: true
|
|
@@ -95,6 +96,7 @@ const HeaderStateful = props => {
|
|
|
95
96
|
if (state.appStates.conversationState) {
|
|
96
97
|
conversationState.current = state.appStates.conversationState;
|
|
97
98
|
}
|
|
99
|
+
conversationEndedByAgent.current = state.appStates.conversationEndedByAgent;
|
|
98
100
|
}, [state.appStates]);
|
|
99
101
|
return /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.Header, {
|
|
100
102
|
componentOverrides: headerProps === null || headerProps === void 0 ? void 0 : headerProps.componentOverrides,
|
|
@@ -13,9 +13,9 @@ var _activityMiddleware = require("../../../webchatcontainerstateful/webchatcont
|
|
|
13
13
|
var _attachmentMiddleware = _interopRequireDefault(require("../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware"));
|
|
14
14
|
var _avatarMiddleware = require("../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware");
|
|
15
15
|
var _createMarkdown = require("../createMarkdown");
|
|
16
|
+
var _WebChatLogger = require("../../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger");
|
|
16
17
|
var _groupActivitiesMiddleware = require("../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware");
|
|
17
18
|
var _typingIndicatorMiddleware = require("../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware");
|
|
18
|
-
var _WebChatLogger = require("../../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger");
|
|
19
19
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
20
|
/* eslint-disable @typescript-eslint/no-empty-function, @typescript-eslint/no-explicit-any */
|
|
21
21
|
|
|
@@ -413,6 +413,7 @@ const dummyDefaultProps = {
|
|
|
413
413
|
width: "90px",
|
|
414
414
|
cursor: "pointer",
|
|
415
415
|
overflow: "hidden",
|
|
416
|
+
padding: "0px",
|
|
416
417
|
whiteSpace: "nowrap"
|
|
417
418
|
},
|
|
418
419
|
subtitleStyleProps: {
|
|
@@ -420,6 +421,7 @@ const dummyDefaultProps = {
|
|
|
420
421
|
fontWeight: "200",
|
|
421
422
|
color: "#666",
|
|
422
423
|
overflow: "hidden",
|
|
424
|
+
padding: "0px",
|
|
423
425
|
fontFamily: "'Segoe UI',Arial,sans-serif",
|
|
424
426
|
display: "block",
|
|
425
427
|
alignItems: "center",
|
|
@@ -475,7 +477,6 @@ const dummyDefaultProps = {
|
|
|
475
477
|
cancelButtonText: "Cancel",
|
|
476
478
|
cancelButtonAriaLabel: "Cancel. Return to Chat",
|
|
477
479
|
brightnessValueOnDim: "0.2",
|
|
478
|
-
disableDimLayer: false,
|
|
479
480
|
onConfirm: () => {},
|
|
480
481
|
// Detailed implementation omitted
|
|
481
482
|
onCancel: () => {} // Detailed implementation omitted
|
|
@@ -483,20 +484,23 @@ const dummyDefaultProps = {
|
|
|
483
484
|
|
|
484
485
|
styleProps: {
|
|
485
486
|
generalStyleProps: {
|
|
487
|
+
display: "flex",
|
|
488
|
+
minHeight: "160px",
|
|
489
|
+
maxHeight: "300px",
|
|
490
|
+
boxSizing: "border-box",
|
|
486
491
|
backgroundColor: "#FFFFFF",
|
|
487
492
|
borderRadius: "2px",
|
|
488
493
|
color: "black",
|
|
489
494
|
fontFamily: "Segoe UI, Arial, sans-serif",
|
|
490
495
|
fontSize: "14px",
|
|
491
|
-
height: "160px",
|
|
492
496
|
padding: "10px 20px",
|
|
493
|
-
width: "262px",
|
|
494
497
|
position: "absolute",
|
|
495
498
|
justifyContent: "center",
|
|
496
499
|
alignItems: "center",
|
|
497
|
-
display: "flex",
|
|
498
500
|
flexFlow: "column",
|
|
499
|
-
zIndex: "9999"
|
|
501
|
+
zIndex: "9999",
|
|
502
|
+
left: "26px",
|
|
503
|
+
right: "26px"
|
|
500
504
|
},
|
|
501
505
|
titleStyleProps: {
|
|
502
506
|
color: "#323130",
|
|
@@ -518,10 +522,14 @@ const dummyDefaultProps = {
|
|
|
518
522
|
},
|
|
519
523
|
buttonGroupStyleProps: {
|
|
520
524
|
display: "flex",
|
|
525
|
+
width: "auto",
|
|
526
|
+
height: "auto",
|
|
527
|
+
boxSizing: "border-box",
|
|
521
528
|
flexFlow: "row",
|
|
522
529
|
justifyContent: "center",
|
|
523
530
|
alignItems: "center",
|
|
524
|
-
gap: "10px"
|
|
531
|
+
gap: "10px",
|
|
532
|
+
marginBottom: "10px"
|
|
525
533
|
},
|
|
526
534
|
confirmButtonStyleProps: {
|
|
527
535
|
backgroundColor: "rgba(9,72,159,1)",
|
|
@@ -626,7 +634,6 @@ const dummyDefaultProps = {
|
|
|
626
634
|
cancelButtonText: "Cancel",
|
|
627
635
|
cancelButtonAriaLabel: "Cancel",
|
|
628
636
|
brightnessValueOnDim: "0.2",
|
|
629
|
-
disableDimLayer: false,
|
|
630
637
|
onSend: undefined,
|
|
631
638
|
onCancel: undefined,
|
|
632
639
|
checkInput: undefined
|
|
@@ -1159,7 +1166,7 @@ const dummyDefaultProps = {
|
|
|
1159
1166
|
subtitleText: "Please take a moment to give us feedback about your chat experience. We are loading the survey for you now."
|
|
1160
1167
|
},
|
|
1161
1168
|
styleProps: {
|
|
1162
|
-
// ...[Existing
|
|
1169
|
+
// ...[Existing loading pane style props]
|
|
1163
1170
|
generalStyleProps: {
|
|
1164
1171
|
position: "initial",
|
|
1165
1172
|
width: "100%",
|
|
@@ -1190,6 +1197,47 @@ const dummyDefaultProps = {
|
|
|
1190
1197
|
},
|
|
1191
1198
|
isCustomerVoiceSurveyCompact: undefined
|
|
1192
1199
|
},
|
|
1200
|
+
preChatSurveyPaneProps: {
|
|
1201
|
+
controlProps: {
|
|
1202
|
+
id: "oc-lcw-prechatsurveypane-default",
|
|
1203
|
+
dir: "auto",
|
|
1204
|
+
hidePreChatSurveyPane: false,
|
|
1205
|
+
adaptiveCardHostConfig: "{\"fontFamily\":\"Segoe UI, Helvetica Neue, sans-serif\",\"containerStyles\":{\"default\":{\"foregroundColors\":{\"default\":{\"default\":\"#000000\"}},\"backgroundColor\":\"#FFFFFF\"}},\"actions\":{\"actionsOrientation\":\"Vertical\",\"actionAlignment\":\"stretch\"}}",
|
|
1206
|
+
payload: "{\"$schema\":\"http://adaptivecards.io/schemas/adaptive-card.json\",\"type\":\"AdaptiveCard\",\"version\":\"1.1\",\"body\":[{\"type\":\"TextBlock\",\"weight\":\"bolder\",\"text\":\"Please answer below questions.\"},{\"type\":\"Input.Text\",\"id\":\"1e5e4e7a-8f0b-ec11-b6e6-000d3a305d38\",\"label\":\"name pls?\",\"maxLength\":100,\"isRequired\":true,\"errorMessage\":\"Name is required\"},{\"type\":\"Input.Text\",\"id\":\"7f8f5d6d-995e-ec11-8f8f-000d3a31376e\",\"label\":\"multi\\nmulti\\nmulti\",\"style\":\"text\",\"isMultiline\":true,\"maxLength\":250},{\"type\":\"Input.ChoiceSet\",\"id\":\"e4bdf7cb-995e-ec11-8f8f-000d3a31376e\",\"label\":\"options\",\"isMultiSelect\":false,\"value\":\"1\",\"style\":\"compact\",\"choices\":[{\"title\":\"one\",\"value\":\"1\"},{\"title\":\"two\",\"value\":\"2\"},{\"title\":\"three\",\"value\":\"3\"}]},{\"type\":\"Input.Toggle\",\"id\":\"b26011d2-995e-ec11-8f8f-000d3a31376e\",\"title\":\"consent\",\"valueOn\":\"True\",\"valueOff\":\"False\",\"value\":\"false\"},{\"type\":\"TextBlock\",\"isSubtle\":true,\"text\":\"Fields marked with * are mandatory.\",\"wrap\":true}],\"actions\":[{\"type\":\"Action.Submit\",\"title\":\"Submit\",\"data\":{\"Type\":\"InputSubmit\"}}]}",
|
|
1207
|
+
onSubmit: function () {} // Detailed implementation omitted
|
|
1208
|
+
},
|
|
1209
|
+
|
|
1210
|
+
styleProps: {
|
|
1211
|
+
generalStyleProps: {
|
|
1212
|
+
borderStyle: "solid",
|
|
1213
|
+
borderRadius: "4px",
|
|
1214
|
+
borderWidth: "3px",
|
|
1215
|
+
backgroundColor: "#FFFFFF",
|
|
1216
|
+
borderColor: "#F1F1F1",
|
|
1217
|
+
overflowY: "auto",
|
|
1218
|
+
height: "inherit",
|
|
1219
|
+
width: "inherit"
|
|
1220
|
+
},
|
|
1221
|
+
customButtonStyleProps: {
|
|
1222
|
+
backgroundColor: "rgb(49, 95, 162)",
|
|
1223
|
+
color: "#FFFFFF",
|
|
1224
|
+
fontFamily: "Segoe UI, Arial, sans-serif",
|
|
1225
|
+
fontSize: "15px",
|
|
1226
|
+
height: "48px"
|
|
1227
|
+
},
|
|
1228
|
+
adaptiveCardContainerStyleProps: {
|
|
1229
|
+
border: "1px solid #ECECEC",
|
|
1230
|
+
borderRadius: "4px",
|
|
1231
|
+
margin: "3%"
|
|
1232
|
+
},
|
|
1233
|
+
customTextInputStyleProps: {
|
|
1234
|
+
height: "20px"
|
|
1235
|
+
},
|
|
1236
|
+
customMultilineTextInputStyleProps: {
|
|
1237
|
+
height: "52px"
|
|
1238
|
+
}
|
|
1239
|
+
}
|
|
1240
|
+
},
|
|
1193
1241
|
proactiveChatPaneProps: {
|
|
1194
1242
|
componentOverrides: {
|
|
1195
1243
|
title: undefined,
|
|
@@ -1568,10 +1616,10 @@ const dummyDefaultProps = {
|
|
|
1568
1616
|
padding: "0px 10px 0 10px"
|
|
1569
1617
|
},
|
|
1570
1618
|
userMessageBoxStyles: {
|
|
1571
|
-
maxWidth: "
|
|
1619
|
+
maxWidth: "90%"
|
|
1572
1620
|
},
|
|
1573
1621
|
systemMessageBoxStyles: {
|
|
1574
|
-
maxWidth: "
|
|
1622
|
+
maxWidth: "90%"
|
|
1575
1623
|
},
|
|
1576
1624
|
typingIndicatorStyleProps: {
|
|
1577
1625
|
marginLeft: "10px",
|
|
@@ -6,12 +6,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.isReconnectEnabled = exports.handleChatReconnect = exports.getChatReconnectContext = void 0;
|
|
7
7
|
require("regenerator-runtime/runtime");
|
|
8
8
|
var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
|
|
9
|
+
var _authHelper = require("./authHelper");
|
|
10
|
+
var _utils = require("../../../common/utils");
|
|
9
11
|
var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
|
|
10
12
|
var _ConversationState = require("../../../contexts/common/ConversationState");
|
|
11
13
|
var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
|
|
12
14
|
var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
|
|
13
|
-
var _authHelper = require("./authHelper");
|
|
14
|
-
var _utils = require("../../../common/utils");
|
|
15
15
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
16
16
|
const handleChatReconnect = async (chatSDK, props, dispatch, setAdapter, initStartChat, state) => {
|
|
17
17
|
var _props$chatConfig, _props$chatConfig$Liv;
|
|
@@ -84,10 +84,7 @@ const getChatReconnectContext = async (chatSDK, chatConfig, props, isAuthenticat
|
|
|
84
84
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
85
85
|
exports.getChatReconnectContext = getChatReconnectContext;
|
|
86
86
|
const setReconnectIdAndStartChat = async (isAuthenticatedChat, chatSDK, props, dispatch, setAdapter, reconnectId, initStartChat) => {
|
|
87
|
-
if (isAuthenticatedChat) {
|
|
88
|
-
// Get auth token for for getting chat reconnect context
|
|
89
|
-
await (0, _authHelper.handleAuthentication)(chatSDK, props.chatConfig, props.getAuthToken);
|
|
90
|
-
} else {
|
|
87
|
+
if (!isAuthenticatedChat) {
|
|
91
88
|
const startUnauthenticatedReconnectChat = {
|
|
92
89
|
eventName: _TelemetryConstants.BroadcastEvent.StartUnauthenticatedReconnectChat
|
|
93
90
|
};
|
|
@@ -4,8 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.setPreChatAndInitiateChat = exports.prepareStartChat = exports.initStartChat = exports.checkIfConversationStillValid = void 0;
|
|
7
|
-
var _Constants = require("../../../common/Constants");
|
|
8
7
|
var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
|
|
8
|
+
var _Constants = require("../../../common/Constants");
|
|
9
|
+
var _utils = require("../../../common/utils");
|
|
10
|
+
var _authHelper = require("./authHelper");
|
|
11
|
+
var _ActivityStreamHandler = require("./ActivityStreamHandler");
|
|
12
|
+
var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
|
|
9
13
|
var _ConversationState = require("../../../contexts/common/ConversationState");
|
|
10
14
|
var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
|
|
11
15
|
var _NotificationHandler = require("../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler");
|
|
@@ -14,13 +18,9 @@ var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
|
|
|
14
18
|
var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
|
|
15
19
|
var _createAdapter = require("./createAdapter");
|
|
16
20
|
var _newMessageEventHandler = require("../../../plugins/newMessageEventHandler");
|
|
17
|
-
var
|
|
21
|
+
var _reconnectChatHelper = require("./reconnectChatHelper");
|
|
18
22
|
var _setPostChatContextAndLoadSurvey = require("./setPostChatContextAndLoadSurvey");
|
|
19
23
|
var _updateSessionDataForTelemetry = require("./updateSessionDataForTelemetry");
|
|
20
|
-
var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
|
|
21
|
-
var _ActivityStreamHandler = require("./ActivityStreamHandler");
|
|
22
|
-
var _authHelper = require("./authHelper");
|
|
23
|
-
var _reconnectChatHelper = require("./reconnectChatHelper");
|
|
24
24
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
25
25
|
let optionalParams = {};
|
|
26
26
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -84,7 +84,10 @@ const setPreChatAndInitiateChat = async (chatSDK, dispatch, setAdapter, isProact
|
|
|
84
84
|
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
85
85
|
payload: _ConversationState.ConversationState.Loading
|
|
86
86
|
});
|
|
87
|
-
|
|
87
|
+
const optionalParams = {
|
|
88
|
+
isProactiveChat
|
|
89
|
+
};
|
|
90
|
+
await initStartChat(chatSDK, props === null || props === void 0 ? void 0 : props.chatConfig, props === null || props === void 0 ? void 0 : props.getAuthToken, dispatch, setAdapter, optionalParams);
|
|
88
91
|
};
|
|
89
92
|
|
|
90
93
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -120,10 +123,16 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
|
|
|
120
123
|
});
|
|
121
124
|
}
|
|
122
125
|
try {
|
|
126
|
+
var _window$Microsoft, _window$Microsoft$Dyn, _window$Microsoft$Dyn2, _window$Microsoft$Dyn3;
|
|
123
127
|
// Set custom context params
|
|
124
128
|
setCustomContextParams(chatSDK);
|
|
125
|
-
|
|
126
|
-
|
|
129
|
+
const defaultOptionalParams = {
|
|
130
|
+
sendDefaultInitContext: true,
|
|
131
|
+
isProactiveChat: !!(params !== null && params !== void 0 && params.isProactiveChat),
|
|
132
|
+
portalContactId: (_window$Microsoft = window.Microsoft) === null || _window$Microsoft === void 0 ? void 0 : (_window$Microsoft$Dyn = _window$Microsoft.Dynamic365) === null || _window$Microsoft$Dyn === void 0 ? void 0 : (_window$Microsoft$Dyn2 = _window$Microsoft$Dyn.Portal) === null || _window$Microsoft$Dyn2 === void 0 ? void 0 : (_window$Microsoft$Dyn3 = _window$Microsoft$Dyn2.User) === null || _window$Microsoft$Dyn3 === void 0 ? void 0 : _window$Microsoft$Dyn3.contactId
|
|
133
|
+
};
|
|
134
|
+
const startChatOptionalParams = Object.assign({}, params, optionalParams, defaultOptionalParams);
|
|
135
|
+
await chatSDK.startChat(startChatOptionalParams);
|
|
127
136
|
isStartChatSuccessful = true;
|
|
128
137
|
} catch (error) {
|
|
129
138
|
_TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
|
|
@@ -8,15 +8,18 @@ var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants"
|
|
|
8
8
|
var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
|
|
9
9
|
var _react = require("@fluentui/react");
|
|
10
10
|
var _react2 = _interopRequireWildcard(require("react"));
|
|
11
|
-
var _utils = require("../../../common/utils");
|
|
12
11
|
var _startChat = require("../common/startChat");
|
|
12
|
+
var _utils = require("../../../common/utils");
|
|
13
|
+
var _endChat = require("../common/endChat");
|
|
13
14
|
var _componentController = require("../../../controller/componentController");
|
|
15
|
+
var _ActivityStreamHandler = require("../common/ActivityStreamHandler");
|
|
14
16
|
var _CallingContainerStateful = _interopRequireDefault(require("../../callingcontainerstateful/CallingContainerStateful"));
|
|
15
17
|
var _ChatButtonStateful = _interopRequireDefault(require("../../chatbuttonstateful/ChatButtonStateful"));
|
|
16
18
|
var _botframeworkWebchat = require("botframework-webchat");
|
|
17
19
|
var _ConfirmationPaneStateful = _interopRequireDefault(require("../../confirmationpanestateful/ConfirmationPaneStateful"));
|
|
18
20
|
var _ConversationState = require("../../../contexts/common/ConversationState");
|
|
19
21
|
var _DataStoreManager = require("../../../common/contextDataStore/DataStoreManager");
|
|
22
|
+
var _Constants = require("../../../common/Constants");
|
|
20
23
|
var _EmailTranscriptPaneStateful = _interopRequireDefault(require("../../emailtranscriptpanestateful/EmailTranscriptPaneStateful"));
|
|
21
24
|
var _HeaderStateful = _interopRequireDefault(require("../../headerstateful/HeaderStateful"));
|
|
22
25
|
var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
|
|
@@ -32,24 +35,21 @@ var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
|
|
|
32
35
|
var _WebChatContainerStateful = _interopRequireDefault(require("../../webchatcontainerstateful/WebChatContainerStateful"));
|
|
33
36
|
var _createFooter = require("../common/createFooter");
|
|
34
37
|
var _createInternetConnectionChangeHandler = require("../common/createInternetConnectionChangeHandler");
|
|
38
|
+
var _defaultClientDataStoreProvider = require("../../../common/storage/default/defaultClientDataStoreProvider");
|
|
39
|
+
var _defaultScrollBarProps = require("../common/defaultProps/defaultScrollBarProps");
|
|
35
40
|
var _defaultWebChatContainerStatefulProps = require("../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps");
|
|
36
41
|
var _disposeTelemetryLoggers = require("../common/disposeTelemetryLoggers");
|
|
37
|
-
var _endChat = require("../common/endChat");
|
|
38
42
|
var _getGeneralStylesForButton = require("../common/getGeneralStylesForButton");
|
|
39
43
|
var _initCallingSdk = require("../common/initCallingSdk");
|
|
40
44
|
var _initConfirmationPropsComposer = require("../common/initConfirmationPropsComposer");
|
|
41
45
|
var _initWebChatComposer = require("../common/initWebChatComposer");
|
|
46
|
+
var _defaultCacheManager = require("../../../common/storage/default/defaultCacheManager");
|
|
42
47
|
var _registerTelemetryLoggers = require("../common/registerTelemetryLoggers");
|
|
43
48
|
var _setPostChatContextAndLoadSurvey = require("../common/setPostChatContextAndLoadSurvey");
|
|
44
49
|
var _startProactiveChat = require("../common/startProactiveChat");
|
|
45
50
|
var _useChatAdapterStore = _interopRequireDefault(require("../../../hooks/useChatAdapterStore"));
|
|
46
51
|
var _useChatContextStore = _interopRequireDefault(require("../../../hooks/useChatContextStore"));
|
|
47
52
|
var _useChatSDKStore = _interopRequireDefault(require("../../../hooks/useChatSDKStore"));
|
|
48
|
-
var _ActivityStreamHandler = require("../common/ActivityStreamHandler");
|
|
49
|
-
var _defaultCacheManager = require("../../../common/storage/default/defaultCacheManager");
|
|
50
|
-
var _defaultClientDataStoreProvider = require("../../../common/storage/default/defaultClientDataStoreProvider");
|
|
51
|
-
var _defaultScrollBarProps = require("../common/defaultProps/defaultScrollBarProps");
|
|
52
|
-
var _Constants = require("../../../common/Constants");
|
|
53
53
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
54
54
|
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); }
|
|
55
55
|
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; }
|
|
@@ -103,7 +103,7 @@ const LiveChatWidgetStateful = props => {
|
|
|
103
103
|
};
|
|
104
104
|
} else {
|
|
105
105
|
activeCachedChatExist = false;
|
|
106
|
-
optionalParams =
|
|
106
|
+
optionalParams = {};
|
|
107
107
|
}
|
|
108
108
|
};
|
|
109
109
|
|
package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js
CHANGED
|
@@ -12,6 +12,7 @@ const FileAttachmentIconMap = {
|
|
|
12
12
|
"aac": _Icons.AudioIcon,
|
|
13
13
|
"aiff": _Icons.AudioIcon,
|
|
14
14
|
"alac": _Icons.AudioIcon,
|
|
15
|
+
"amr": _Icons.AudioIcon,
|
|
15
16
|
"avchd": _Icons.VideoIcon,
|
|
16
17
|
"avi": _Icons.VideoIcon,
|
|
17
18
|
"bmp": _Icons.ImageIcon,
|
|
@@ -50,6 +51,7 @@ const FileAttachmentIconMap = {
|
|
|
50
51
|
"vsdx": _Icons.VisioIcon,
|
|
51
52
|
"wav": _Icons.AudioIcon,
|
|
52
53
|
"webm": _Icons.VideoIcon,
|
|
54
|
+
"webp": _Icons.ImageIcon,
|
|
53
55
|
"wma": _Icons.AudioIcon,
|
|
54
56
|
"wmv": _Icons.VideoIcon,
|
|
55
57
|
"xls": _Icons.ExcelIcon,
|
|
@@ -57,9 +57,7 @@ const activityStatusMiddleware = () => next => args => {
|
|
|
57
57
|
style: {
|
|
58
58
|
padding: "2px"
|
|
59
59
|
}
|
|
60
|
-
}, sendState === _SendStatus.SendStatus.Sending && /*#__PURE__*/_react.default.createElement(_SendingTimestamp.SendingTimestamp, {
|
|
61
|
-
args: args
|
|
62
|
-
}), sendState === _SendStatus.SendStatus.SendFailed && /*#__PURE__*/_react.default.createElement(_NotDeliveredTimestamp.NotDeliveredTimestamp, {
|
|
60
|
+
}, sendState === _SendStatus.SendStatus.Sending && /*#__PURE__*/_react.default.createElement(_SendingTimestamp.SendingTimestamp, null), sendState === _SendStatus.SendStatus.SendFailed && /*#__PURE__*/_react.default.createElement(_NotDeliveredTimestamp.NotDeliveredTimestamp, {
|
|
63
61
|
args: args
|
|
64
62
|
}), sendState === _SendStatus.SendStatus.Sent && /*#__PURE__*/_react.default.createElement(_DeliveredTimestamp.DeliveredTimestamp, {
|
|
65
63
|
args: args,
|
|
@@ -236,7 +236,8 @@ const createAttachmentMiddleware = enableInlinePlaying => {
|
|
|
236
236
|
renderer: next
|
|
237
237
|
});
|
|
238
238
|
}
|
|
239
|
-
|
|
239
|
+
const isUnknownImageObject = contentType.toLowerCase().includes("image") && !imageExtension;
|
|
240
|
+
if (fileExtension === "txt" || isUnknownImageObject) {
|
|
240
241
|
return /*#__PURE__*/_react.default.createElement(Attachment, {
|
|
241
242
|
iconData: iconData,
|
|
242
243
|
textCard: patchAttachment(card, {
|
|
@@ -33,14 +33,13 @@ const DeliveredTimestamp = _ref => {
|
|
|
33
33
|
} = args;
|
|
34
34
|
return /*#__PURE__*/_react.default.createElement(_react2.Stack, {
|
|
35
35
|
style: contentStyles,
|
|
36
|
+
dir: dir
|
|
37
|
+
}, role === _DirectLineSenderRole.DirectLineSenderRole.Bot && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
|
|
36
38
|
dir: dir,
|
|
37
|
-
horizontal: true
|
|
38
|
-
}, role === _DirectLineSenderRole.DirectLineSenderRole.Bot && /*#__PURE__*/_react.default.createElement("span", {
|
|
39
39
|
"aria-hidden": "false"
|
|
40
|
-
}, name), role === _DirectLineSenderRole.DirectLineSenderRole.
|
|
40
|
+
}, name, " - ", (0, _utils.getTimestampHourMinute)(timestamp))), role === _DirectLineSenderRole.DirectLineSenderRole.User && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
|
|
41
|
+
"aria-hidden": "false",
|
|
41
42
|
dir: dir
|
|
42
|
-
}, " ", (0, _utils.getTimestampHourMinute)(timestamp)
|
|
43
|
-
"aria-hidden": "false"
|
|
44
|
-
}, ((_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));
|
|
43
|
+
}, " ", (0, _utils.getTimestampHourMinute)(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)));
|
|
45
44
|
};
|
|
46
45
|
exports.DeliveredTimestamp = DeliveredTimestamp;
|
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.NotDeliveredTimestamp = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
-
var _Constants = require("../../../../../../common/Constants");
|
|
9
8
|
var _KeyCodes = require("../../../../../../common/KeyCodes");
|
|
10
9
|
var _react2 = require("@fluentui/react");
|
|
11
10
|
var _defaultMiddlewareLocalizedTexts = require("../../../../common/defaultProps/defaultMiddlewareLocalizedTexts");
|
|
@@ -57,9 +56,8 @@ const NotDeliveredTimestamp = _ref => {
|
|
|
57
56
|
timestampWebChatNodes[1].innerText = (0, _utils.getTimestampHourMinute)(timestamp);
|
|
58
57
|
}
|
|
59
58
|
}, [timestampRef]);
|
|
60
|
-
const onRetryClick = (0, _react.useCallback)(async
|
|
59
|
+
const onRetryClick = (0, _react.useCallback)(async () => {
|
|
61
60
|
var _activity$channelData;
|
|
62
|
-
removeNotDeliveredTimestamp(event);
|
|
63
61
|
activity.previousClientActivityID = (_activity$channelData = activity.channelData) === null || _activity$channelData === void 0 ? void 0 : _activity$channelData.clientActivityID;
|
|
64
62
|
await postActivity(activity);
|
|
65
63
|
focus("sendBox");
|
|
@@ -67,19 +65,9 @@ const NotDeliveredTimestamp = _ref => {
|
|
|
67
65
|
const onRetryKeyEnter = event => {
|
|
68
66
|
if (event.code === _KeyCodes.KeyCodes.ENTER) {
|
|
69
67
|
event.preventDefault();
|
|
70
|
-
onRetryClick(
|
|
68
|
+
onRetryClick();
|
|
71
69
|
}
|
|
72
70
|
};
|
|
73
|
-
const removeNotDeliveredTimestamp = event => {
|
|
74
|
-
let parent = event.target.parentElement;
|
|
75
|
-
while (parent.tagName !== _Constants.HtmlAttributeNames.listItem) {
|
|
76
|
-
parent = parent.parentElement;
|
|
77
|
-
if (parent.tagName === _Constants.HtmlAttributeNames.unorderedList) {
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
parent.parentNode.removeChild(parent);
|
|
82
|
-
};
|
|
83
71
|
return /*#__PURE__*/_react.default.createElement(_react2.Stack, {
|
|
84
72
|
style: contentStyles,
|
|
85
73
|
dir: dir,
|
|
@@ -8,30 +8,21 @@ 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 _utils = require("../../../../../../common/utils");
|
|
12
11
|
var _ = require("../../../../../..");
|
|
13
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
13
|
/* eslint @typescript-eslint/no-explicit-any: "off" */
|
|
15
|
-
const SendingTimestamp =
|
|
14
|
+
const SendingTimestamp = () => {
|
|
16
15
|
var _state$domainStates$r, _state$domainStates$r2, _state$domainStates$m;
|
|
17
|
-
let {
|
|
18
|
-
args
|
|
19
|
-
} = _ref;
|
|
20
16
|
const [state] = (0, _.useChatContextStore)();
|
|
21
17
|
const dir = ((_state$domainStates$r = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r === void 0 ? void 0 : _state$domainStates$r.timestampDir) ?? state.domainStates.globalDir;
|
|
22
18
|
const contentStyles = {
|
|
23
19
|
..._defaultTimestampContentStyles.defaultTimestampContentStyles,
|
|
24
20
|
...((_state$domainStates$r2 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r2 === void 0 ? void 0 : _state$domainStates$r2.timestampContentStyleProps)
|
|
25
21
|
};
|
|
26
|
-
const {
|
|
27
|
-
activity: {
|
|
28
|
-
timestamp
|
|
29
|
-
}
|
|
30
|
-
} = args;
|
|
31
22
|
return /*#__PURE__*/_react.default.createElement(_react2.Stack, {
|
|
32
23
|
style: contentStyles,
|
|
33
24
|
dir: dir,
|
|
34
25
|
horizontal: true
|
|
35
|
-
}, /*#__PURE__*/_react.default.createElement("span", null, " ", (
|
|
26
|
+
}, /*#__PURE__*/_react.default.createElement("span", null, " ", ((_state$domainStates$m = state.domainStates.middlewareLocalizedTexts) === null || _state$domainStates$m === void 0 ? void 0 : _state$domainStates$m.MIDDLEWARE_MESSAGE_SENDING) ?? _defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts.MIDDLEWARE_MESSAGE_SENDING, " "));
|
|
36
27
|
};
|
|
37
28
|
exports.SendingTimestamp = SendingTimestamp;
|
|
@@ -45,6 +45,10 @@ const createOnNewAdapterActivityHandler = (chatId, userId) => {
|
|
|
45
45
|
if (activity !== null && activity !== void 0 && (_activity$channelData5 = activity.channelData) !== null && _activity$channelData5 !== void 0 && (_activity$channelData6 = _activity$channelData5.tags) !== null && _activity$channelData6 !== void 0 && _activity$channelData6.includes(_Constants.Constants.systemMessageTag)) {
|
|
46
46
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
47
47
|
payload.messageType = _Constants.Constants.systemMessageTag;
|
|
48
|
+
_TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
49
|
+
Event: _TelemetryConstants.TelemetryEvent.MessageReceived,
|
|
50
|
+
Description: "System message received"
|
|
51
|
+
});
|
|
48
52
|
} else {
|
|
49
53
|
var _activity$channelData7, _activity$channelData8, _activity$channelData9;
|
|
50
54
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -44,8 +44,8 @@ _defineProperty(Constants, "acsChannel", "ACS_CHANNEL");
|
|
|
44
44
|
_defineProperty(Constants, "publicMessageTag", "public");
|
|
45
45
|
_defineProperty(Constants, "supportedAdaptiveCardContentTypes", ["application/vnd.microsoft.card.adaptive", "application/vnd.microsoft.card.audio", "application/vnd.microsoft.card.hero", "application/vnd.microsoft.card.receipt", "application/vnd.microsoft.card.thumbnail", "application/vnd.microsoft.card.signin", "application/vnd.microsoft.card.oauth"]);
|
|
46
46
|
_defineProperty(Constants, "maxUploadFileSize", "500000");
|
|
47
|
-
_defineProperty(Constants, "imageRegex", /(\.)(jpeg|jpg|jiff|png|gif|bmp)$/i);
|
|
48
|
-
_defineProperty(Constants, "audioMediaRegex", /(\.)(aac|aiff|alac|flac|mp2|mp3|pcm|wav|wma)$/i);
|
|
47
|
+
_defineProperty(Constants, "imageRegex", /(\.)(jpeg|jpg|jiff|png|gif|bmp|webp)$/i);
|
|
48
|
+
_defineProperty(Constants, "audioMediaRegex", /(\.)(aac|aiff|alac|amr|flac|mp2|mp3|pcm|wav|wma)$/i);
|
|
49
49
|
_defineProperty(Constants, "videoMediaRegex", /(\.)(avchd|avi|flv|mpe|mpeg|mpg|mpv|mp4|m4p|m4v|mov|qt|swf|webm|wmv)$/i);
|
|
50
50
|
_defineProperty(Constants, "chromeSupportedInlineMediaRegex", /(\.)(aac|mp3|wav|mp4)$/i);
|
|
51
51
|
_defineProperty(Constants, "firefoxSupportedInlineMediaRegex", /(\.)(aac|flac|mp3|wav|mp4|mov)$/i);
|
|
@@ -56,6 +56,7 @@ export class TelemetryHelper {
|
|
|
56
56
|
event.ElapsedTimeInMilliseconds = payload.ElapsedTimeInMilliseconds;
|
|
57
57
|
event.ExceptionDetails = JSON.stringify(payload.ExceptionDetails);
|
|
58
58
|
event.Description = payload.Description;
|
|
59
|
+
event.CustomProperties = JSON.stringify(payload.CustomProperties);
|
|
59
60
|
});
|
|
60
61
|
}
|
|
61
62
|
static conformToWebChatContract(level, input) {
|
|
@@ -161,7 +162,7 @@ export class TelemetryHelper {
|
|
|
161
162
|
telemetryDataLocal.widgetId = telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.appId;
|
|
162
163
|
telemetryDataLocal.orgId = telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.orgId;
|
|
163
164
|
telemetryDataLocal.orgUrl = telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.orgUrl;
|
|
164
|
-
telemetryDataLocal.lcwRuntimeId = newGuid();
|
|
165
|
+
telemetryDataLocal.lcwRuntimeId = telemetryConfig.LCWRuntimeId ?? newGuid();
|
|
165
166
|
return telemetryDataLocal;
|
|
166
167
|
}
|
|
167
168
|
static addSessionDataToTelemetry(chatSession, telemetryInternalData) {
|
|
@@ -82,7 +82,7 @@ export const ConfirmationPaneStateful = props => {
|
|
|
82
82
|
Event: TelemetryEvent.ConfirmationPaneLoaded
|
|
83
83
|
});
|
|
84
84
|
}, []);
|
|
85
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null,
|
|
85
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DimLayer, {
|
|
86
86
|
brightness: (controlProps === null || controlProps === void 0 ? void 0 : controlProps.brightnessValueOnDim) ?? "0.2"
|
|
87
87
|
}), /*#__PURE__*/React.createElement(ConfirmationPane, {
|
|
88
88
|
componentOverrides: props === null || props === void 0 ? void 0 : props.componentOverrides,
|
|
@@ -88,7 +88,7 @@ export const EmailTranscriptPaneStateful = props => {
|
|
|
88
88
|
Event: TelemetryEvent.EmailTranscriptLoaded
|
|
89
89
|
});
|
|
90
90
|
}, [initialEmail]);
|
|
91
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null,
|
|
91
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DimLayer, {
|
|
92
92
|
brightness: (controlProps === null || controlProps === void 0 ? void 0 : controlProps.brightnessValueOnDim) ?? "0.2"
|
|
93
93
|
}), /*#__PURE__*/React.createElement(InputValidationPane, {
|
|
94
94
|
componentOverrides: props.componentOverrides,
|
|
@@ -21,6 +21,7 @@ export const HeaderStateful = props => {
|
|
|
21
21
|
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");
|
|
22
22
|
const outOfOfficeStyleProps = Object.assign({}, defaultOutOfOfficeHeaderStyleProps, outOfOfficeHeaderProps === null || outOfOfficeHeaderProps === void 0 ? void 0 : outOfOfficeHeaderProps.styleProps);
|
|
23
23
|
const conversationState = useRef(state.appStates.conversationState);
|
|
24
|
+
const conversationEndedByAgent = useRef(state.appStates.conversationEndedByAgent);
|
|
24
25
|
const controlProps = {
|
|
25
26
|
id: "oc-lcw-header",
|
|
26
27
|
dir: state.domainStates.globalDir,
|
|
@@ -40,7 +41,7 @@ export const HeaderStateful = props => {
|
|
|
40
41
|
Event: TelemetryEvent.HeaderCloseButtonClicked,
|
|
41
42
|
Description: "Header Close button clicked."
|
|
42
43
|
});
|
|
43
|
-
if (conversationState.current === ConversationState.Active) {
|
|
44
|
+
if (conversationState.current === ConversationState.Active || conversationEndedByAgent.current) {
|
|
44
45
|
dispatch({
|
|
45
46
|
type: LiveChatWidgetActionType.SET_SHOW_CONFIRMATION,
|
|
46
47
|
payload: true
|
|
@@ -86,6 +87,7 @@ export const HeaderStateful = props => {
|
|
|
86
87
|
if (state.appStates.conversationState) {
|
|
87
88
|
conversationState.current = state.appStates.conversationState;
|
|
88
89
|
}
|
|
90
|
+
conversationEndedByAgent.current = state.appStates.conversationEndedByAgent;
|
|
89
91
|
}, [state.appStates]);
|
|
90
92
|
return /*#__PURE__*/React.createElement(Header, {
|
|
91
93
|
componentOverrides: headerProps === null || headerProps === void 0 ? void 0 : headerProps.componentOverrides,
|
|
@@ -9,9 +9,9 @@ import { createActivityMiddleware } from "../../../webchatcontainerstateful/webc
|
|
|
9
9
|
import createAttachmentMiddleware from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware";
|
|
10
10
|
import { createAvatarMiddleware } from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware";
|
|
11
11
|
import { createMarkdown } from "../createMarkdown";
|
|
12
|
+
import { createWebChatTelemetry } from "../../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger";
|
|
12
13
|
import { groupActivitiesMiddleware } from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware";
|
|
13
14
|
import { typingIndicatorMiddleware } from "../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware";
|
|
14
|
-
import { createWebChatTelemetry } from "../../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger";
|
|
15
15
|
|
|
16
16
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
17
17
|
export const dummyDefaultProps = {
|
|
@@ -407,6 +407,7 @@ export const dummyDefaultProps = {
|
|
|
407
407
|
width: "90px",
|
|
408
408
|
cursor: "pointer",
|
|
409
409
|
overflow: "hidden",
|
|
410
|
+
padding: "0px",
|
|
410
411
|
whiteSpace: "nowrap"
|
|
411
412
|
},
|
|
412
413
|
subtitleStyleProps: {
|
|
@@ -414,6 +415,7 @@ export const dummyDefaultProps = {
|
|
|
414
415
|
fontWeight: "200",
|
|
415
416
|
color: "#666",
|
|
416
417
|
overflow: "hidden",
|
|
418
|
+
padding: "0px",
|
|
417
419
|
fontFamily: "'Segoe UI',Arial,sans-serif",
|
|
418
420
|
display: "block",
|
|
419
421
|
alignItems: "center",
|
|
@@ -469,7 +471,6 @@ export const dummyDefaultProps = {
|
|
|
469
471
|
cancelButtonText: "Cancel",
|
|
470
472
|
cancelButtonAriaLabel: "Cancel. Return to Chat",
|
|
471
473
|
brightnessValueOnDim: "0.2",
|
|
472
|
-
disableDimLayer: false,
|
|
473
474
|
onConfirm: () => {},
|
|
474
475
|
// Detailed implementation omitted
|
|
475
476
|
onCancel: () => {} // Detailed implementation omitted
|
|
@@ -477,20 +478,23 @@ export const dummyDefaultProps = {
|
|
|
477
478
|
|
|
478
479
|
styleProps: {
|
|
479
480
|
generalStyleProps: {
|
|
481
|
+
display: "flex",
|
|
482
|
+
minHeight: "160px",
|
|
483
|
+
maxHeight: "300px",
|
|
484
|
+
boxSizing: "border-box",
|
|
480
485
|
backgroundColor: "#FFFFFF",
|
|
481
486
|
borderRadius: "2px",
|
|
482
487
|
color: "black",
|
|
483
488
|
fontFamily: "Segoe UI, Arial, sans-serif",
|
|
484
489
|
fontSize: "14px",
|
|
485
|
-
height: "160px",
|
|
486
490
|
padding: "10px 20px",
|
|
487
|
-
width: "262px",
|
|
488
491
|
position: "absolute",
|
|
489
492
|
justifyContent: "center",
|
|
490
493
|
alignItems: "center",
|
|
491
|
-
display: "flex",
|
|
492
494
|
flexFlow: "column",
|
|
493
|
-
zIndex: "9999"
|
|
495
|
+
zIndex: "9999",
|
|
496
|
+
left: "26px",
|
|
497
|
+
right: "26px"
|
|
494
498
|
},
|
|
495
499
|
titleStyleProps: {
|
|
496
500
|
color: "#323130",
|
|
@@ -512,10 +516,14 @@ export const dummyDefaultProps = {
|
|
|
512
516
|
},
|
|
513
517
|
buttonGroupStyleProps: {
|
|
514
518
|
display: "flex",
|
|
519
|
+
width: "auto",
|
|
520
|
+
height: "auto",
|
|
521
|
+
boxSizing: "border-box",
|
|
515
522
|
flexFlow: "row",
|
|
516
523
|
justifyContent: "center",
|
|
517
524
|
alignItems: "center",
|
|
518
|
-
gap: "10px"
|
|
525
|
+
gap: "10px",
|
|
526
|
+
marginBottom: "10px"
|
|
519
527
|
},
|
|
520
528
|
confirmButtonStyleProps: {
|
|
521
529
|
backgroundColor: "rgba(9,72,159,1)",
|
|
@@ -620,7 +628,6 @@ export const dummyDefaultProps = {
|
|
|
620
628
|
cancelButtonText: "Cancel",
|
|
621
629
|
cancelButtonAriaLabel: "Cancel",
|
|
622
630
|
brightnessValueOnDim: "0.2",
|
|
623
|
-
disableDimLayer: false,
|
|
624
631
|
onSend: undefined,
|
|
625
632
|
onCancel: undefined,
|
|
626
633
|
checkInput: undefined
|
|
@@ -1153,7 +1160,7 @@ export const dummyDefaultProps = {
|
|
|
1153
1160
|
subtitleText: "Please take a moment to give us feedback about your chat experience. We are loading the survey for you now."
|
|
1154
1161
|
},
|
|
1155
1162
|
styleProps: {
|
|
1156
|
-
// ...[Existing
|
|
1163
|
+
// ...[Existing loading pane style props]
|
|
1157
1164
|
generalStyleProps: {
|
|
1158
1165
|
position: "initial",
|
|
1159
1166
|
width: "100%",
|
|
@@ -1184,6 +1191,47 @@ export const dummyDefaultProps = {
|
|
|
1184
1191
|
},
|
|
1185
1192
|
isCustomerVoiceSurveyCompact: undefined
|
|
1186
1193
|
},
|
|
1194
|
+
preChatSurveyPaneProps: {
|
|
1195
|
+
controlProps: {
|
|
1196
|
+
id: "oc-lcw-prechatsurveypane-default",
|
|
1197
|
+
dir: "auto",
|
|
1198
|
+
hidePreChatSurveyPane: false,
|
|
1199
|
+
adaptiveCardHostConfig: "{\"fontFamily\":\"Segoe UI, Helvetica Neue, sans-serif\",\"containerStyles\":{\"default\":{\"foregroundColors\":{\"default\":{\"default\":\"#000000\"}},\"backgroundColor\":\"#FFFFFF\"}},\"actions\":{\"actionsOrientation\":\"Vertical\",\"actionAlignment\":\"stretch\"}}",
|
|
1200
|
+
payload: "{\"$schema\":\"http://adaptivecards.io/schemas/adaptive-card.json\",\"type\":\"AdaptiveCard\",\"version\":\"1.1\",\"body\":[{\"type\":\"TextBlock\",\"weight\":\"bolder\",\"text\":\"Please answer below questions.\"},{\"type\":\"Input.Text\",\"id\":\"1e5e4e7a-8f0b-ec11-b6e6-000d3a305d38\",\"label\":\"name pls?\",\"maxLength\":100,\"isRequired\":true,\"errorMessage\":\"Name is required\"},{\"type\":\"Input.Text\",\"id\":\"7f8f5d6d-995e-ec11-8f8f-000d3a31376e\",\"label\":\"multi\\nmulti\\nmulti\",\"style\":\"text\",\"isMultiline\":true,\"maxLength\":250},{\"type\":\"Input.ChoiceSet\",\"id\":\"e4bdf7cb-995e-ec11-8f8f-000d3a31376e\",\"label\":\"options\",\"isMultiSelect\":false,\"value\":\"1\",\"style\":\"compact\",\"choices\":[{\"title\":\"one\",\"value\":\"1\"},{\"title\":\"two\",\"value\":\"2\"},{\"title\":\"three\",\"value\":\"3\"}]},{\"type\":\"Input.Toggle\",\"id\":\"b26011d2-995e-ec11-8f8f-000d3a31376e\",\"title\":\"consent\",\"valueOn\":\"True\",\"valueOff\":\"False\",\"value\":\"false\"},{\"type\":\"TextBlock\",\"isSubtle\":true,\"text\":\"Fields marked with * are mandatory.\",\"wrap\":true}],\"actions\":[{\"type\":\"Action.Submit\",\"title\":\"Submit\",\"data\":{\"Type\":\"InputSubmit\"}}]}",
|
|
1201
|
+
onSubmit: function () {} // Detailed implementation omitted
|
|
1202
|
+
},
|
|
1203
|
+
|
|
1204
|
+
styleProps: {
|
|
1205
|
+
generalStyleProps: {
|
|
1206
|
+
borderStyle: "solid",
|
|
1207
|
+
borderRadius: "4px",
|
|
1208
|
+
borderWidth: "3px",
|
|
1209
|
+
backgroundColor: "#FFFFFF",
|
|
1210
|
+
borderColor: "#F1F1F1",
|
|
1211
|
+
overflowY: "auto",
|
|
1212
|
+
height: "inherit",
|
|
1213
|
+
width: "inherit"
|
|
1214
|
+
},
|
|
1215
|
+
customButtonStyleProps: {
|
|
1216
|
+
backgroundColor: "rgb(49, 95, 162)",
|
|
1217
|
+
color: "#FFFFFF",
|
|
1218
|
+
fontFamily: "Segoe UI, Arial, sans-serif",
|
|
1219
|
+
fontSize: "15px",
|
|
1220
|
+
height: "48px"
|
|
1221
|
+
},
|
|
1222
|
+
adaptiveCardContainerStyleProps: {
|
|
1223
|
+
border: "1px solid #ECECEC",
|
|
1224
|
+
borderRadius: "4px",
|
|
1225
|
+
margin: "3%"
|
|
1226
|
+
},
|
|
1227
|
+
customTextInputStyleProps: {
|
|
1228
|
+
height: "20px"
|
|
1229
|
+
},
|
|
1230
|
+
customMultilineTextInputStyleProps: {
|
|
1231
|
+
height: "52px"
|
|
1232
|
+
}
|
|
1233
|
+
}
|
|
1234
|
+
},
|
|
1187
1235
|
proactiveChatPaneProps: {
|
|
1188
1236
|
componentOverrides: {
|
|
1189
1237
|
title: undefined,
|
|
@@ -1562,10 +1610,10 @@ export const dummyDefaultProps = {
|
|
|
1562
1610
|
padding: "0px 10px 0 10px"
|
|
1563
1611
|
},
|
|
1564
1612
|
userMessageBoxStyles: {
|
|
1565
|
-
maxWidth: "
|
|
1613
|
+
maxWidth: "90%"
|
|
1566
1614
|
},
|
|
1567
1615
|
systemMessageBoxStyles: {
|
|
1568
|
-
maxWidth: "
|
|
1616
|
+
maxWidth: "90%"
|
|
1569
1617
|
},
|
|
1570
1618
|
typingIndicatorStyleProps: {
|
|
1571
1619
|
marginLeft: "10px",
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import "regenerator-runtime/runtime";
|
|
2
2
|
import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
|
|
3
|
+
import { handleAuthentication, removeAuthTokenProvider } from "./authHelper";
|
|
4
|
+
import { isNullOrEmptyString, isNullOrUndefined } from "../../../common/utils";
|
|
3
5
|
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
4
6
|
import { ConversationState } from "../../../contexts/common/ConversationState";
|
|
5
7
|
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
6
8
|
import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
|
|
7
|
-
|
|
8
|
-
import { isNullOrEmptyString, isNullOrUndefined } from "../../../common/utils";
|
|
9
|
+
|
|
9
10
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
10
11
|
const handleChatReconnect = async (chatSDK, props, dispatch, setAdapter, initStartChat, state) => {
|
|
11
12
|
var _props$chatConfig, _props$chatConfig$Liv;
|
|
@@ -76,10 +77,7 @@ const getChatReconnectContext = async (chatSDK, chatConfig, props, isAuthenticat
|
|
|
76
77
|
|
|
77
78
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
78
79
|
const setReconnectIdAndStartChat = async (isAuthenticatedChat, chatSDK, props, dispatch, setAdapter, reconnectId, initStartChat) => {
|
|
79
|
-
if (isAuthenticatedChat) {
|
|
80
|
-
// Get auth token for for getting chat reconnect context
|
|
81
|
-
await handleAuthentication(chatSDK, props.chatConfig, props.getAuthToken);
|
|
82
|
-
} else {
|
|
80
|
+
if (!isAuthenticatedChat) {
|
|
83
81
|
const startUnauthenticatedReconnectChat = {
|
|
84
82
|
eventName: BroadcastEvent.StartUnauthenticatedReconnectChat
|
|
85
83
|
};
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
import { ChatSDKError, LiveWorkItemState } from "../../../common/Constants";
|
|
2
1
|
import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
|
|
2
|
+
import { ChatSDKError, LiveWorkItemState } from "../../../common/Constants";
|
|
3
|
+
import { createTimer, getStateFromCache, isUndefinedOrEmpty } from "../../../common/utils";
|
|
4
|
+
import { getAuthClientFunction, handleAuthentication } from "./authHelper";
|
|
5
|
+
import { ActivityStreamHandler } from "./ActivityStreamHandler";
|
|
6
|
+
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
3
7
|
import { ConversationState } from "../../../contexts/common/ConversationState";
|
|
4
8
|
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
5
9
|
import { NotificationHandler } from "../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler";
|
|
@@ -8,13 +12,9 @@ import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
|
|
|
8
12
|
import { TelemetryTimers } from "../../../common/telemetry/TelemetryManager";
|
|
9
13
|
import { createAdapter } from "./createAdapter";
|
|
10
14
|
import { createOnNewAdapterActivityHandler } from "../../../plugins/newMessageEventHandler";
|
|
11
|
-
import {
|
|
15
|
+
import { handleChatReconnect } from "./reconnectChatHelper";
|
|
12
16
|
import { setPostChatContextAndLoadSurvey } from "./setPostChatContextAndLoadSurvey";
|
|
13
17
|
import { updateSessionDataForTelemetry } from "./updateSessionDataForTelemetry";
|
|
14
|
-
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
15
|
-
import { ActivityStreamHandler } from "./ActivityStreamHandler";
|
|
16
|
-
import { getAuthClientFunction, handleAuthentication } from "./authHelper";
|
|
17
|
-
import { handleChatReconnect } from "./reconnectChatHelper";
|
|
18
18
|
|
|
19
19
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
20
20
|
let optionalParams = {};
|
|
@@ -78,7 +78,10 @@ const setPreChatAndInitiateChat = async (chatSDK, dispatch, setAdapter, isProact
|
|
|
78
78
|
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
79
79
|
payload: ConversationState.Loading
|
|
80
80
|
});
|
|
81
|
-
|
|
81
|
+
const optionalParams = {
|
|
82
|
+
isProactiveChat
|
|
83
|
+
};
|
|
84
|
+
await initStartChat(chatSDK, props === null || props === void 0 ? void 0 : props.chatConfig, props === null || props === void 0 ? void 0 : props.getAuthToken, dispatch, setAdapter, optionalParams);
|
|
82
85
|
};
|
|
83
86
|
|
|
84
87
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -113,10 +116,16 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
|
|
|
113
116
|
});
|
|
114
117
|
}
|
|
115
118
|
try {
|
|
119
|
+
var _window$Microsoft, _window$Microsoft$Dyn, _window$Microsoft$Dyn2, _window$Microsoft$Dyn3;
|
|
116
120
|
// Set custom context params
|
|
117
121
|
setCustomContextParams(chatSDK);
|
|
118
|
-
|
|
119
|
-
|
|
122
|
+
const defaultOptionalParams = {
|
|
123
|
+
sendDefaultInitContext: true,
|
|
124
|
+
isProactiveChat: !!(params !== null && params !== void 0 && params.isProactiveChat),
|
|
125
|
+
portalContactId: (_window$Microsoft = window.Microsoft) === null || _window$Microsoft === void 0 ? void 0 : (_window$Microsoft$Dyn = _window$Microsoft.Dynamic365) === null || _window$Microsoft$Dyn === void 0 ? void 0 : (_window$Microsoft$Dyn2 = _window$Microsoft$Dyn.Portal) === null || _window$Microsoft$Dyn2 === void 0 ? void 0 : (_window$Microsoft$Dyn3 = _window$Microsoft$Dyn2.User) === null || _window$Microsoft$Dyn3 === void 0 ? void 0 : _window$Microsoft$Dyn3.contactId
|
|
126
|
+
};
|
|
127
|
+
const startChatOptionalParams = Object.assign({}, params, optionalParams, defaultOptionalParams);
|
|
128
|
+
await chatSDK.startChat(startChatOptionalParams);
|
|
120
129
|
isStartChatSuccessful = true;
|
|
121
130
|
} catch (error) {
|
|
122
131
|
TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
|
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
2
|
import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
|
|
3
|
-
import { BroadcastService,
|
|
3
|
+
import { BroadcastService, BroadcastServiceInitialize, decodeComponentString } from "@microsoft/omnichannel-chat-components";
|
|
4
4
|
import { Stack } from "@fluentui/react";
|
|
5
5
|
import React, { useEffect, useRef, useState } from "react";
|
|
6
|
-
import { createTimer, getBroadcastChannelName, getLocaleDirection, getStateFromCache, getWidgetCacheId, getWidgetEndChatEventName, isNullOrEmptyString, isUndefinedOrEmpty } from "../../../common/utils";
|
|
7
6
|
import { checkIfConversationStillValid, initStartChat, prepareStartChat, setPreChatAndInitiateChat } from "../common/startChat";
|
|
7
|
+
import { createTimer, getBroadcastChannelName, getLocaleDirection, getStateFromCache, getWidgetCacheId, getWidgetEndChatEventName, isNullOrEmptyString, isUndefinedOrEmpty } from "../../../common/utils";
|
|
8
|
+
import { endChat, prepareEndChat } from "../common/endChat";
|
|
8
9
|
import { shouldShowCallingContainer, shouldShowChatButton, shouldShowConfirmationPane, shouldShowEmailTranscriptPane, shouldShowHeader, shouldShowLoadingPane, shouldShowOutOfOfficeHoursPane, shouldShowPostChatLoadingPane, shouldShowPostChatSurveyPane, shouldShowPreChatSurveyPane, shouldShowProactiveChatPane, shouldShowReconnectChatPane, shouldShowWebChatContainer } from "../../../controller/componentController";
|
|
10
|
+
import { ActivityStreamHandler } from "../common/ActivityStreamHandler";
|
|
9
11
|
import CallingContainerStateful from "../../callingcontainerstateful/CallingContainerStateful";
|
|
10
12
|
import ChatButtonStateful from "../../chatbuttonstateful/ChatButtonStateful";
|
|
11
13
|
import { Components } from "botframework-webchat";
|
|
12
14
|
import ConfirmationPaneStateful from "../../confirmationpanestateful/ConfirmationPaneStateful";
|
|
13
15
|
import { ConversationState } from "../../../contexts/common/ConversationState";
|
|
14
16
|
import { DataStoreManager } from "../../../common/contextDataStore/DataStoreManager";
|
|
17
|
+
import { E2VVOptions } from "../../../common/Constants";
|
|
15
18
|
import { ElementType } from "@microsoft/omnichannel-chat-components";
|
|
16
19
|
import EmailTranscriptPaneStateful from "../../emailtranscriptpanestateful/EmailTranscriptPaneStateful";
|
|
17
20
|
import HeaderStateful from "../../headerstateful/HeaderStateful";
|
|
@@ -28,24 +31,21 @@ import { TelemetryTimers } from "../../../common/telemetry/TelemetryManager";
|
|
|
28
31
|
import WebChatContainerStateful from "../../webchatcontainerstateful/WebChatContainerStateful";
|
|
29
32
|
import { createFooter } from "../common/createFooter";
|
|
30
33
|
import { createInternetConnectionChangeHandler } from "../common/createInternetConnectionChangeHandler";
|
|
34
|
+
import { defaultClientDataStoreProvider } from "../../../common/storage/default/defaultClientDataStoreProvider";
|
|
35
|
+
import { defaultScrollBarProps } from "../common/defaultProps/defaultScrollBarProps";
|
|
31
36
|
import { defaultWebChatContainerStatefulProps } from "../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps";
|
|
32
37
|
import { disposeTelemetryLoggers } from "../common/disposeTelemetryLoggers";
|
|
33
|
-
import { endChat, prepareEndChat } from "../common/endChat";
|
|
34
38
|
import { getGeneralStylesForButton } from "../common/getGeneralStylesForButton";
|
|
35
39
|
import { initCallingSdk } from "../common/initCallingSdk";
|
|
36
40
|
import { initConfirmationPropsComposer } from "../common/initConfirmationPropsComposer";
|
|
37
41
|
import { initWebChatComposer } from "../common/initWebChatComposer";
|
|
42
|
+
import { registerBroadcastServiceForLocalStorage } from "../../../common/storage/default/defaultCacheManager";
|
|
38
43
|
import { registerTelemetryLoggers } from "../common/registerTelemetryLoggers";
|
|
39
44
|
import { setPostChatContextAndLoadSurvey } from "../common/setPostChatContextAndLoadSurvey";
|
|
40
45
|
import { startProactiveChat } from "../common/startProactiveChat";
|
|
41
46
|
import useChatAdapterStore from "../../../hooks/useChatAdapterStore";
|
|
42
47
|
import useChatContextStore from "../../../hooks/useChatContextStore";
|
|
43
48
|
import useChatSDKStore from "../../../hooks/useChatSDKStore";
|
|
44
|
-
import { ActivityStreamHandler } from "../common/ActivityStreamHandler";
|
|
45
|
-
import { registerBroadcastServiceForLocalStorage } from "../../../common/storage/default/defaultCacheManager";
|
|
46
|
-
import { defaultClientDataStoreProvider } from "../../../common/storage/default/defaultClientDataStoreProvider";
|
|
47
|
-
import { defaultScrollBarProps } from "../common/defaultProps/defaultScrollBarProps";
|
|
48
|
-
import { E2VVOptions } from "../../../common/Constants";
|
|
49
49
|
export const LiveChatWidgetStateful = props => {
|
|
50
50
|
var _props$webChatContain, _props$styleProps, _chatSDK$omnichannelC, _props$controlProps, _props$controlProps2, _props$webChatContain3, _props$webChatContain4, _props$styleProps2, _props$controlProps13, _props$controlProps14, _props$componentOverr, _props$controlProps15, _props$componentOverr2, _props$controlProps16, _props$componentOverr3, _props$controlProps17, _props$componentOverr4, _props$controlProps18, _props$componentOverr5, _props$controlProps19, _props$componentOverr6, _props$controlProps20, _props$componentOverr7, _props$controlProps21, _props$controlProps22, _props$componentOverr8, _props$controlProps23, _props$componentOverr9, _props$controlProps24, _props$componentOverr10, _props$componentOverr11, _props$componentOverr12;
|
|
51
51
|
const [state, dispatch] = useChatContextStore();
|
|
@@ -95,7 +95,7 @@ export const LiveChatWidgetStateful = props => {
|
|
|
95
95
|
};
|
|
96
96
|
} else {
|
|
97
97
|
activeCachedChatExist = false;
|
|
98
|
-
optionalParams =
|
|
98
|
+
optionalParams = {};
|
|
99
99
|
}
|
|
100
100
|
};
|
|
101
101
|
|
package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js
CHANGED
|
@@ -6,6 +6,7 @@ const FileAttachmentIconMap = {
|
|
|
6
6
|
"aac": AudioIcon,
|
|
7
7
|
"aiff": AudioIcon,
|
|
8
8
|
"alac": AudioIcon,
|
|
9
|
+
"amr": AudioIcon,
|
|
9
10
|
"avchd": VideoIcon,
|
|
10
11
|
"avi": VideoIcon,
|
|
11
12
|
"bmp": ImageIcon,
|
|
@@ -44,6 +45,7 @@ const FileAttachmentIconMap = {
|
|
|
44
45
|
"vsdx": VisioIcon,
|
|
45
46
|
"wav": AudioIcon,
|
|
46
47
|
"webm": VideoIcon,
|
|
48
|
+
"webp": ImageIcon,
|
|
47
49
|
"wma": AudioIcon,
|
|
48
50
|
"wmv": VideoIcon,
|
|
49
51
|
"xls": ExcelIcon,
|
|
@@ -51,9 +51,7 @@ export const activityStatusMiddleware = () => next => args => {
|
|
|
51
51
|
style: {
|
|
52
52
|
padding: "2px"
|
|
53
53
|
}
|
|
54
|
-
}, sendState === SendStatus.Sending && /*#__PURE__*/React.createElement(SendingTimestamp, {
|
|
55
|
-
args: args
|
|
56
|
-
}), sendState === SendStatus.SendFailed && /*#__PURE__*/React.createElement(NotDeliveredTimestamp, {
|
|
54
|
+
}, sendState === SendStatus.Sending && /*#__PURE__*/React.createElement(SendingTimestamp, null), sendState === SendStatus.SendFailed && /*#__PURE__*/React.createElement(NotDeliveredTimestamp, {
|
|
57
55
|
args: args
|
|
58
56
|
}), sendState === SendStatus.Sent && /*#__PURE__*/React.createElement(DeliveredTimestamp, {
|
|
59
57
|
args: args,
|
|
@@ -229,7 +229,8 @@ const createAttachmentMiddleware = enableInlinePlaying => {
|
|
|
229
229
|
renderer: next
|
|
230
230
|
});
|
|
231
231
|
}
|
|
232
|
-
|
|
232
|
+
const isUnknownImageObject = contentType.toLowerCase().includes("image") && !imageExtension;
|
|
233
|
+
if (fileExtension === "txt" || isUnknownImageObject) {
|
|
233
234
|
return /*#__PURE__*/React.createElement(Attachment, {
|
|
234
235
|
iconData: iconData,
|
|
235
236
|
textCard: patchAttachment(card, {
|
|
@@ -27,13 +27,12 @@ export const DeliveredTimestamp = _ref => {
|
|
|
27
27
|
} = args;
|
|
28
28
|
return /*#__PURE__*/React.createElement(Stack, {
|
|
29
29
|
style: contentStyles,
|
|
30
|
+
dir: dir
|
|
31
|
+
}, role === DirectLineSenderRole.Bot && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
|
|
30
32
|
dir: dir,
|
|
31
|
-
horizontal: true
|
|
32
|
-
}, role === DirectLineSenderRole.Bot && /*#__PURE__*/React.createElement("span", {
|
|
33
33
|
"aria-hidden": "false"
|
|
34
|
-
}, name), role === DirectLineSenderRole.
|
|
34
|
+
}, name, " - ", getTimestampHourMinute(timestamp))), role === DirectLineSenderRole.User && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
|
|
35
|
+
"aria-hidden": "false",
|
|
35
36
|
dir: dir
|
|
36
|
-
}, " ", getTimestampHourMinute(timestamp)
|
|
37
|
-
"aria-hidden": "false"
|
|
38
|
-
}, ((_state$domainStates$m = state.domainStates.middlewareLocalizedTexts) === null || _state$domainStates$m === void 0 ? void 0 : _state$domainStates$m.MIDDLEWARE_MESSAGE_DELIVERED) ?? defaultMiddlewareLocalizedTexts.MIDDLEWARE_MESSAGE_DELIVERED));
|
|
37
|
+
}, " ", getTimestampHourMinute(timestamp), " - ", ((_state$domainStates$m = state.domainStates.middlewareLocalizedTexts) === null || _state$domainStates$m === void 0 ? void 0 : _state$domainStates$m.MIDDLEWARE_MESSAGE_DELIVERED) ?? defaultMiddlewareLocalizedTexts.MIDDLEWARE_MESSAGE_DELIVERED)));
|
|
39
38
|
};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import React, { useCallback, useEffect, useRef } from "react";
|
|
2
|
-
import { HtmlAttributeNames } from "../../../../../../common/Constants";
|
|
3
2
|
import { KeyCodes } from "../../../../../../common/KeyCodes";
|
|
4
3
|
import { Stack } from "@fluentui/react";
|
|
5
4
|
import { defaultMiddlewareLocalizedTexts } from "../../../../common/defaultProps/defaultMiddlewareLocalizedTexts";
|
|
@@ -50,9 +49,8 @@ export const NotDeliveredTimestamp = _ref => {
|
|
|
50
49
|
timestampWebChatNodes[1].innerText = getTimestampHourMinute(timestamp);
|
|
51
50
|
}
|
|
52
51
|
}, [timestampRef]);
|
|
53
|
-
const onRetryClick = useCallback(async
|
|
52
|
+
const onRetryClick = useCallback(async () => {
|
|
54
53
|
var _activity$channelData;
|
|
55
|
-
removeNotDeliveredTimestamp(event);
|
|
56
54
|
activity.previousClientActivityID = (_activity$channelData = activity.channelData) === null || _activity$channelData === void 0 ? void 0 : _activity$channelData.clientActivityID;
|
|
57
55
|
await postActivity(activity);
|
|
58
56
|
focus("sendBox");
|
|
@@ -60,19 +58,9 @@ export const NotDeliveredTimestamp = _ref => {
|
|
|
60
58
|
const onRetryKeyEnter = event => {
|
|
61
59
|
if (event.code === KeyCodes.ENTER) {
|
|
62
60
|
event.preventDefault();
|
|
63
|
-
onRetryClick(
|
|
61
|
+
onRetryClick();
|
|
64
62
|
}
|
|
65
63
|
};
|
|
66
|
-
const removeNotDeliveredTimestamp = event => {
|
|
67
|
-
let parent = event.target.parentElement;
|
|
68
|
-
while (parent.tagName !== HtmlAttributeNames.listItem) {
|
|
69
|
-
parent = parent.parentElement;
|
|
70
|
-
if (parent.tagName === HtmlAttributeNames.unorderedList) {
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
parent.parentNode.removeChild(parent);
|
|
75
|
-
};
|
|
76
64
|
return /*#__PURE__*/React.createElement(Stack, {
|
|
77
65
|
style: contentStyles,
|
|
78
66
|
dir: dir,
|
|
@@ -2,29 +2,20 @@ import React from "react";
|
|
|
2
2
|
import { Stack } from "@fluentui/react";
|
|
3
3
|
import { defaultMiddlewareLocalizedTexts } from "../../../../common/defaultProps/defaultMiddlewareLocalizedTexts";
|
|
4
4
|
import { defaultTimestampContentStyles } from "../defaultStyles/defaultTimestampContentStyles";
|
|
5
|
-
import { getTimestampHourMinute } from "../../../../../../common/utils";
|
|
6
5
|
import { useChatContextStore } from "../../../../../..";
|
|
7
6
|
|
|
8
7
|
/* eslint @typescript-eslint/no-explicit-any: "off" */
|
|
9
|
-
export const SendingTimestamp =
|
|
8
|
+
export const SendingTimestamp = () => {
|
|
10
9
|
var _state$domainStates$r, _state$domainStates$r2, _state$domainStates$m;
|
|
11
|
-
let {
|
|
12
|
-
args
|
|
13
|
-
} = _ref;
|
|
14
10
|
const [state] = useChatContextStore();
|
|
15
11
|
const dir = ((_state$domainStates$r = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r === void 0 ? void 0 : _state$domainStates$r.timestampDir) ?? state.domainStates.globalDir;
|
|
16
12
|
const contentStyles = {
|
|
17
13
|
...defaultTimestampContentStyles,
|
|
18
14
|
...((_state$domainStates$r2 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r2 === void 0 ? void 0 : _state$domainStates$r2.timestampContentStyleProps)
|
|
19
15
|
};
|
|
20
|
-
const {
|
|
21
|
-
activity: {
|
|
22
|
-
timestamp
|
|
23
|
-
}
|
|
24
|
-
} = args;
|
|
25
16
|
return /*#__PURE__*/React.createElement(Stack, {
|
|
26
17
|
style: contentStyles,
|
|
27
18
|
dir: dir,
|
|
28
19
|
horizontal: true
|
|
29
|
-
}, /*#__PURE__*/React.createElement("span", null, " ",
|
|
20
|
+
}, /*#__PURE__*/React.createElement("span", null, " ", ((_state$domainStates$m = state.domainStates.middlewareLocalizedTexts) === null || _state$domainStates$m === void 0 ? void 0 : _state$domainStates$m.MIDDLEWARE_MESSAGE_SENDING) ?? defaultMiddlewareLocalizedTexts.MIDDLEWARE_MESSAGE_SENDING, " "));
|
|
30
21
|
};
|
|
@@ -39,6 +39,10 @@ export const createOnNewAdapterActivityHandler = (chatId, userId) => {
|
|
|
39
39
|
if (activity !== null && activity !== void 0 && (_activity$channelData5 = activity.channelData) !== null && _activity$channelData5 !== void 0 && (_activity$channelData6 = _activity$channelData5.tags) !== null && _activity$channelData6 !== void 0 && _activity$channelData6.includes(Constants.systemMessageTag)) {
|
|
40
40
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
41
41
|
payload.messageType = Constants.systemMessageTag;
|
|
42
|
+
TelemetryHelper.logActionEvent(LogLevel.INFO, {
|
|
43
|
+
Event: TelemetryEvent.MessageReceived,
|
|
44
|
+
Description: "System message received"
|
|
45
|
+
});
|
|
42
46
|
} else {
|
|
43
47
|
var _activity$channelData7, _activity$channelData8, _activity$channelData9;
|
|
44
48
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -32,6 +32,8 @@ export interface LoadContract extends BaseContract {
|
|
|
32
32
|
export interface ActionsContract extends BaseContract {
|
|
33
33
|
Event?: string;
|
|
34
34
|
ActionType?: string;
|
|
35
|
+
Description?: string;
|
|
36
|
+
CustomProperties?: any;
|
|
35
37
|
}
|
|
36
38
|
export interface IC3ClientContract extends BaseContract {
|
|
37
39
|
Event?: string;
|
|
@@ -72,6 +72,7 @@ export interface ActionTelemetryData extends BaseTelemetryData {
|
|
|
72
72
|
ActionType?: string;
|
|
73
73
|
ExceptionDetails?: object;
|
|
74
74
|
Description?: string;
|
|
75
|
+
CustomProperties?: any;
|
|
75
76
|
}
|
|
76
77
|
export interface CallingTelemetryData extends BaseTelemetryData {
|
|
77
78
|
CallId?: string;
|
|
@@ -3,8 +3,9 @@ import { Dispatch } from "react";
|
|
|
3
3
|
import { ILiveChatWidgetAction } from "../../../contexts/common/ILiveChatWidgetAction";
|
|
4
4
|
import { ILiveChatWidgetContext } from "../../../contexts/common/ILiveChatWidgetContext";
|
|
5
5
|
import { ILiveChatWidgetProps } from "../interfaces/ILiveChatWidgetProps";
|
|
6
|
+
import StartChatOptionalParams from "@microsoft/omnichannel-chat-sdk/lib/core/StartChatOptionalParams";
|
|
6
7
|
declare const prepareStartChat: (props: ILiveChatWidgetProps, chatSDK: any, state: ILiveChatWidgetContext, dispatch: Dispatch<ILiveChatWidgetAction>, setAdapter: any) => Promise<void>;
|
|
7
8
|
declare const setPreChatAndInitiateChat: (chatSDK: any, dispatch: Dispatch<ILiveChatWidgetAction>, setAdapter: any, isProactiveChat?: boolean | undefined, proactiveChatEnablePrechatState?: boolean | undefined, state?: ILiveChatWidgetContext | undefined, props?: ILiveChatWidgetProps | undefined) => Promise<void>;
|
|
8
|
-
declare const initStartChat: (chatSDK: any, chatConfig: ChatConfig | undefined, getAuthToken: ((authClientFunction?: string | undefined) => Promise<string | null>) | undefined, dispatch: Dispatch<ILiveChatWidgetAction>, setAdapter: any, params?:
|
|
9
|
+
declare const initStartChat: (chatSDK: any, chatConfig: ChatConfig | undefined, getAuthToken: ((authClientFunction?: string | undefined) => Promise<string | null>) | undefined, dispatch: Dispatch<ILiveChatWidgetAction>, setAdapter: any, params?: StartChatOptionalParams | undefined, persistedState?: any) => Promise<void>;
|
|
9
10
|
declare const checkIfConversationStillValid: (chatSDK: any, props: any, requestId: any, dispatch: Dispatch<ILiveChatWidgetAction>) => Promise<boolean>;
|
|
10
11
|
export { prepareStartChat, initStartChat, setPreChatAndInitiateChat, checkIfConversationStillValid };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SendingTimestamp: (
|
|
1
|
+
export declare const SendingTimestamp: () => JSX.Element;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@microsoft/omnichannel-chat-widget",
|
|
3
|
-
"version": "0.1.0-main.
|
|
3
|
+
"version": "0.1.0-main.d5e0dfe",
|
|
4
4
|
"description": "Microsoft Omnichannel Chat Widget",
|
|
5
5
|
"main": "lib/cjs/index.js",
|
|
6
6
|
"types": "lib/types/index.d.ts",
|
|
@@ -74,8 +74,8 @@
|
|
|
74
74
|
},
|
|
75
75
|
"dependencies": {
|
|
76
76
|
"@fluentui/react": "^8.49.1",
|
|
77
|
-
"@microsoft/omnichannel-chat-components": "0.1.0-main.
|
|
78
|
-
"@microsoft/omnichannel-chat-sdk": "1.
|
|
77
|
+
"@microsoft/omnichannel-chat-components": "0.1.0-main.501b425",
|
|
78
|
+
"@microsoft/omnichannel-chat-sdk": "1.2.1-main.aaf8f21",
|
|
79
79
|
"abort-controller-es5": "^2.0.1",
|
|
80
80
|
"dompurify": "^2.3.4",
|
|
81
81
|
"markdown-it": "^12.3.2",
|