@microsoft/omnichannel-chat-widget 1.0.4-main.ade1159 → 1.0.4-main.b53b5ba
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 +1 -0
- package/lib/cjs/common/telemetry/TelemetryConstants.js +2 -1
- package/lib/cjs/common/utils.js +22 -2
- package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -6
- package/lib/cjs/components/livechatwidget/common/endChat.js +32 -43
- package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +7 -8
- package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +2 -1
- package/lib/cjs/components/livechatwidget/common/startChat.js +8 -7
- package/lib/cjs/components/livechatwidget/common/updateSessionDataForTelemetry.js +2 -1
- package/lib/esm/common/Constants.js +1 -0
- package/lib/esm/common/telemetry/TelemetryConstants.js +2 -1
- package/lib/esm/common/utils.js +20 -1
- package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -6
- package/lib/esm/components/livechatwidget/common/endChat.js +31 -41
- package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +7 -8
- package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +2 -1
- package/lib/esm/components/livechatwidget/common/startChat.js +9 -8
- package/lib/esm/components/livechatwidget/common/updateSessionDataForTelemetry.js +2 -1
- package/lib/types/common/Constants.d.ts +2 -1
- package/lib/types/common/telemetry/TelemetryConstants.d.ts +3 -2
- package/lib/types/common/utils.d.ts +1 -0
- package/lib/types/components/livechatwidget/common/endChat.d.ts +2 -3
- package/package.json +3 -4
|
@@ -189,6 +189,7 @@ let ChatSDKError;
|
|
|
189
189
|
exports.ChatSDKError = ChatSDKError;
|
|
190
190
|
(function (ChatSDKError) {
|
|
191
191
|
ChatSDKError["WidgetUseOutsideOperatingHour"] = "WidgetUseOutsideOperatingHour";
|
|
192
|
+
ChatSDKError["AuthContactIdNotFoundFailure"] = "AuthContactIdNotFoundFailure";
|
|
192
193
|
})(ChatSDKError || (exports.ChatSDKError = ChatSDKError = {}));
|
|
193
194
|
let EnvironmentVersion;
|
|
194
195
|
exports.EnvironmentVersion = EnvironmentVersion;
|
|
@@ -63,6 +63,7 @@ exports.BroadcastEvent = BroadcastEvent;
|
|
|
63
63
|
BroadcastEvent["HideChatVisibilityChangeEvent"] = "hideChatVisibilityChangeEvent";
|
|
64
64
|
BroadcastEvent["UpdateSessionDataForTelemetry"] = "UpdateSessionDataForTelemetry";
|
|
65
65
|
BroadcastEvent["UpdateConversationDataForTelemetry"] = "UpdateConversationDataForTelemetry";
|
|
66
|
+
BroadcastEvent["ContactIdNotFound"] = "ContactIdNotFound";
|
|
66
67
|
})(BroadcastEvent || (exports.BroadcastEvent = BroadcastEvent = {}));
|
|
67
68
|
let TelemetryEvent;
|
|
68
69
|
exports.TelemetryEvent = TelemetryEvent;
|
|
@@ -107,7 +108,7 @@ exports.TelemetryEvent = TelemetryEvent;
|
|
|
107
108
|
TelemetryEvent["ChatVisibilityChanged"] = "ChatVisibilityChanged";
|
|
108
109
|
TelemetryEvent["EndChatSucceeded"] = "EndChatSucceeded";
|
|
109
110
|
TelemetryEvent["EndChatFailed"] = "EndChatFailed";
|
|
110
|
-
TelemetryEvent["
|
|
111
|
+
TelemetryEvent["SettingCustomContext"] = "SettingCustomContext";
|
|
111
112
|
TelemetryEvent["WebChatLoaded"] = "WebChatLoaded";
|
|
112
113
|
TelemetryEvent["LCWChatButtonClicked"] = "LCWChatButtonClicked";
|
|
113
114
|
TelemetryEvent["LCWChatButtonShow"] = "LCWChatButtonShow";
|
package/lib/cjs/common/utils.js
CHANGED
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.setTabIndices = exports.setFocusOnSendBox = exports.setFocusOnElement = exports.preventFocusToMoveOutOfElement = exports.parseAdaptiveCardPayload = exports.newGuid = exports.isUndefinedOrEmpty = exports.isNullOrUndefined = exports.isNullOrEmptyString = exports.getWidgetEndChatEventName = exports.getWidgetCacheIdfromProps = exports.getWidgetCacheId = exports.getTimestampHourMinute = exports.getStateFromCache = exports.getLocaleDirection = exports.getIconText = exports.getDomain = exports.getConversationDetailsCall = exports.getBroadcastChannelName = exports.findParentFocusableElementsWithoutChildContainer = exports.findAllFocusableElement = exports.extractPreChatSurveyResponseValues = exports.escapeHtml = exports.debounceLeading = exports.createTimer = exports.changeLanguageCodeFormatForWebChat = exports.addDelayInMs = void 0;
|
|
6
|
+
exports.setTabIndices = exports.setFocusOnSendBox = exports.setFocusOnElement = exports.preventFocusToMoveOutOfElement = exports.parseAdaptiveCardPayload = exports.newGuid = exports.isUndefinedOrEmpty = exports.isNullOrUndefined = exports.isNullOrEmptyString = exports.getWidgetEndChatEventName = exports.getWidgetCacheIdfromProps = exports.getWidgetCacheId = exports.getTimestampHourMinute = exports.getStateFromCache = exports.getLocaleDirection = exports.getIconText = exports.getDomain = exports.getConversationDetailsCall = exports.getBroadcastChannelName = exports.findParentFocusableElementsWithoutChildContainer = exports.findAllFocusableElement = exports.extractPreChatSurveyResponseValues = exports.escapeHtml = exports.debounceLeading = exports.createTimer = exports.checkContactIdError = exports.changeLanguageCodeFormatForWebChat = exports.addDelayInMs = void 0;
|
|
7
7
|
var _Constants = require("./Constants");
|
|
8
8
|
var _TelemetryConstants = require("./telemetry/TelemetryConstants");
|
|
9
|
+
var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
|
|
9
10
|
var _DataStoreManager = require("./contextDataStore/DataStoreManager");
|
|
10
11
|
var _KeyCodes = require("./KeyCodes");
|
|
11
12
|
var _md5Typescript = require("md5-typescript");
|
|
@@ -385,8 +386,13 @@ const getConversationDetailsCall = async chatSDK => {
|
|
|
385
386
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
386
387
|
let conversationDetails = undefined;
|
|
387
388
|
try {
|
|
389
|
+
_TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
390
|
+
Event: _TelemetryConstants.TelemetryEvent.GetConversationDetailsCallStarted,
|
|
391
|
+
Description: "Conversation details call started"
|
|
392
|
+
});
|
|
388
393
|
conversationDetails = await chatSDK.getConversationDetails();
|
|
389
394
|
} catch (error) {
|
|
395
|
+
checkContactIdError(error);
|
|
390
396
|
_TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
|
|
391
397
|
Event: _TelemetryConstants.TelemetryEvent.GetConversationDetailsCallFailed,
|
|
392
398
|
ExceptionDetails: {
|
|
@@ -396,4 +402,18 @@ const getConversationDetailsCall = async chatSDK => {
|
|
|
396
402
|
}
|
|
397
403
|
return conversationDetails;
|
|
398
404
|
};
|
|
399
|
-
|
|
405
|
+
|
|
406
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
407
|
+
exports.getConversationDetailsCall = getConversationDetailsCall;
|
|
408
|
+
const checkContactIdError = e => {
|
|
409
|
+
if ((e === null || e === void 0 ? void 0 : e.message) === _Constants.ChatSDKError.AuthContactIdNotFoundFailure) {
|
|
410
|
+
const contactIdNotFoundErrorEvent = {
|
|
411
|
+
eventName: _TelemetryConstants.BroadcastEvent.ContactIdNotFound,
|
|
412
|
+
payload: {
|
|
413
|
+
error: e
|
|
414
|
+
}
|
|
415
|
+
};
|
|
416
|
+
_omnichannelChatComponents.BroadcastService.postMessage(contactIdNotFoundErrorEvent);
|
|
417
|
+
}
|
|
418
|
+
};
|
|
419
|
+
exports.checkContactIdError = checkContactIdError;
|
package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js
CHANGED
|
@@ -160,12 +160,13 @@ const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMess
|
|
|
160
160
|
const downloadTranscript = async (chatSDK, renderMarkDown, bannerMessageOnError, attachmentMessage, state) => {
|
|
161
161
|
var _state$domainStates, _state$domainStates2, _state$domainStates2$;
|
|
162
162
|
// Need to keep existing request id for scenarios when trnascript is downloaded after endchat
|
|
163
|
-
const
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
163
|
+
const liveChatContext = {
|
|
164
|
+
chatToken: state === null || state === void 0 ? void 0 : (_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : _state$domainStates.chatToken,
|
|
165
|
+
requestId: state === null || state === void 0 ? void 0 : (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : (_state$domainStates2$ = _state$domainStates2.chatToken) === null || _state$domainStates2$ === void 0 ? void 0 : _state$domainStates2$.requestId
|
|
166
|
+
};
|
|
167
|
+
let data = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getLiveChatTranscript({
|
|
168
|
+
liveChatContext
|
|
169
|
+
}));
|
|
169
170
|
if (typeof data === _Constants.Constants.String) {
|
|
170
171
|
data = JSON.parse(data);
|
|
171
172
|
}
|
|
@@ -3,23 +3,23 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.prepareEndChat = exports.
|
|
6
|
+
exports.prepareEndChat = exports.endChat = void 0;
|
|
7
|
+
var _Constants = require("../../../common/Constants");
|
|
7
8
|
var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
|
|
9
|
+
var _authHelper = require("./authHelper");
|
|
10
|
+
var _utils = require("../../../common/utils");
|
|
11
|
+
var _renderSurveyHelpers = require("./renderSurveyHelpers");
|
|
8
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 _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
|
|
12
16
|
var _WebChatStoreLoader = require("../../webchatcontainerstateful/webchatcontroller/WebChatStoreLoader");
|
|
13
17
|
var _defaultWebChatContainerStatefulProps = require("../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps");
|
|
14
|
-
var _utils = require("../../../common/utils");
|
|
15
|
-
var _authHelper = require("./authHelper");
|
|
16
|
-
var _renderSurveyHelpers = require("./renderSurveyHelpers");
|
|
17
|
-
var _Constants = require("../../../common/Constants");
|
|
18
18
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
19
19
|
const prepareEndChat = async (props, chatSDK, state, dispatch, setAdapter, setWebChatStyles, adapter, uwid) => {
|
|
20
20
|
try {
|
|
21
21
|
var _conversationDetails$, _state$domainStates, _state$domainStates2;
|
|
22
|
-
const conversationDetails = await
|
|
22
|
+
const conversationDetails = await (0, _utils.getConversationDetailsCall)(chatSDK);
|
|
23
23
|
|
|
24
24
|
// Use Case : When post chat is not configured
|
|
25
25
|
if ((conversationDetails === null || conversationDetails === void 0 ? void 0 : (_conversationDetails$ = conversationDetails.canRenderPostChat) === null || _conversationDetails$ === void 0 ? void 0 : _conversationDetails$.toLowerCase()) === _Constants.Constants.false) {
|
|
@@ -125,18 +125,12 @@ const endChat = async function (props, chatSDK, state, dispatch, setAdapter, set
|
|
|
125
125
|
}
|
|
126
126
|
});
|
|
127
127
|
} finally {
|
|
128
|
-
var _state$appStates3;
|
|
129
128
|
dispatch({
|
|
130
129
|
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_UNREAD_MESSAGE_COUNT,
|
|
131
130
|
payload: 0
|
|
132
131
|
});
|
|
133
|
-
//Always allow to close the chat for embedded mode irrespective of end chat errors
|
|
134
|
-
|
|
135
|
-
dispatch({
|
|
136
|
-
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
137
|
-
payload: _ConversationState.ConversationState.Closed
|
|
138
|
-
});
|
|
139
|
-
}
|
|
132
|
+
// Always allow to close the chat for embedded mode irrespective of end chat errors
|
|
133
|
+
closeChatWidget(dispatch, props, state);
|
|
140
134
|
}
|
|
141
135
|
}
|
|
142
136
|
if (postMessageToOtherTab && !(0, _utils.isNullOrEmptyString)(uwid)) {
|
|
@@ -150,10 +144,6 @@ const endChat = async function (props, chatSDK, state, dispatch, setAdapter, set
|
|
|
150
144
|
exports.endChat = endChat;
|
|
151
145
|
const endChatStateCleanUp = async dispatch => {
|
|
152
146
|
// Need to clear these states immediately when chat ended from OC.
|
|
153
|
-
dispatch({
|
|
154
|
-
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CUSTOM_CONTEXT,
|
|
155
|
-
payload: undefined
|
|
156
|
-
});
|
|
157
147
|
dispatch({
|
|
158
148
|
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
|
|
159
149
|
payload: undefined
|
|
@@ -202,6 +192,27 @@ const closeChatStateCleanUp = async dispatch => {
|
|
|
202
192
|
}
|
|
203
193
|
});
|
|
204
194
|
};
|
|
195
|
+
const closeChatWidget = (dispatch, props, state) => {
|
|
196
|
+
var _state$appStates3;
|
|
197
|
+
if (state !== null && state !== void 0 && (_state$appStates3 = state.appStates) !== null && _state$appStates3 !== void 0 && _state$appStates3.hideStartChatButton) {
|
|
198
|
+
var _props$controlProps2, _props$controlProps3;
|
|
199
|
+
// Only close chat if header is enabled for popout
|
|
200
|
+
// TODO : This condition needs to be removed eventually when the filler UX is ready for popout, removing this condition would show a blank screen for OOB Widget
|
|
201
|
+
if ((props === null || props === void 0 ? void 0 : (_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : _props$controlProps2.hideHeader) === undefined || (props === null || props === void 0 ? void 0 : (_props$controlProps3 = props.controlProps) === null || _props$controlProps3 === void 0 ? void 0 : _props$controlProps3.hideHeader) === false) {
|
|
202
|
+
dispatch({
|
|
203
|
+
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
204
|
+
payload: _ConversationState.ConversationState.Closed
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// Embedded chat
|
|
211
|
+
dispatch({
|
|
212
|
+
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
213
|
+
payload: _ConversationState.ConversationState.Closed
|
|
214
|
+
});
|
|
215
|
+
};
|
|
205
216
|
|
|
206
217
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
207
218
|
const handleAuthenticationIfEnabled = async (props, chatSDK) => {
|
|
@@ -239,28 +250,6 @@ const chatTokenCleanUp = async dispatch => {
|
|
|
239
250
|
|
|
240
251
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
241
252
|
const getEndChatEventName = async (chatSDK, props) => {
|
|
242
|
-
var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _props$
|
|
243
|
-
return (0, _utils.getWidgetEndChatEventName)(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC === void 0 ? void 0 : _chatSDK$omnichannelC.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC2 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC2 === void 0 ? void 0 : _chatSDK$omnichannelC2.widgetId, (props === null || props === void 0 ? void 0 : (_props$
|
|
244
|
-
};
|
|
245
|
-
|
|
246
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
247
|
-
const getConversationDetails = async chatSDK => {
|
|
248
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
249
|
-
let conversationDetails = undefined;
|
|
250
|
-
try {
|
|
251
|
-
_TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
252
|
-
Event: _TelemetryConstants.TelemetryEvent.GetConversationDetailsCallStarted,
|
|
253
|
-
Description: "Conversation details call started"
|
|
254
|
-
});
|
|
255
|
-
conversationDetails = await chatSDK.getConversationDetails();
|
|
256
|
-
} catch (error) {
|
|
257
|
-
_TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
|
|
258
|
-
Event: _TelemetryConstants.TelemetryEvent.GetConversationDetailsCallFailed,
|
|
259
|
-
ExceptionDetails: {
|
|
260
|
-
exception: `Get Conversation Details Call Failed : ${error}`
|
|
261
|
-
}
|
|
262
|
-
});
|
|
263
|
-
}
|
|
264
|
-
return conversationDetails;
|
|
265
|
-
};
|
|
266
|
-
exports.getConversationDetails = getConversationDetails;
|
|
253
|
+
var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _props$controlProps4;
|
|
254
|
+
return (0, _utils.getWidgetEndChatEventName)(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC === void 0 ? void 0 : _chatSDK$omnichannelC.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC2 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC2 === void 0 ? void 0 : _chatSDK$omnichannelC2.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps4 = props.controlProps) === null || _props$controlProps4 === void 0 ? void 0 : _props$controlProps4.widgetInstanceId) ?? "");
|
|
255
|
+
};
|
|
@@ -4,22 +4,26 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.initWebChatComposer = void 0;
|
|
7
|
+
var _Constants = require("../../../common/Constants");
|
|
7
8
|
var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
|
|
8
|
-
var
|
|
9
|
+
var _utils = require("../../../common/utils");
|
|
10
|
+
var _HyperlinkTextOverrideRenderer = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/markdownrenderers/HyperlinkTextOverrideRenderer"));
|
|
9
11
|
var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
|
|
10
12
|
var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
|
|
11
13
|
var _WebChatStoreLoader = require("../../webchatcontainerstateful/webchatcontroller/WebChatStoreLoader");
|
|
12
14
|
var _attachmentProcessingMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware"));
|
|
13
|
-
var _utils = require("../../../common/utils");
|
|
14
15
|
var _channelDataMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware"));
|
|
15
16
|
var _activityMiddleware = require("../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware");
|
|
16
17
|
var _attachmentMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware"));
|
|
17
18
|
var _attachmentUploadValidatorMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware"));
|
|
18
19
|
var _avatarMiddleware = require("../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware");
|
|
20
|
+
var _cardActionMiddleware = require("../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware");
|
|
19
21
|
var _conversationEndMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware"));
|
|
20
22
|
var _dataMaskingMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware"));
|
|
21
23
|
var _createMarkdown = require("./createMarkdown");
|
|
22
24
|
var _maxMessageSizeValidator = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator"));
|
|
25
|
+
var _messageTimestampMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware"));
|
|
26
|
+
var _botframeworkWebchat = require("botframework-webchat");
|
|
23
27
|
var _WebChatLogger = require("../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger");
|
|
24
28
|
var _defaultAttachmentProps = require("../../webchatcontainerstateful/common/defaultProps/defaultAttachmentProps");
|
|
25
29
|
var _defaultMiddlewareLocalizedTexts = require("../../webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts");
|
|
@@ -30,11 +34,6 @@ var _htmlPlayerMiddleware = _interopRequireDefault(require("../../webchatcontain
|
|
|
30
34
|
var _htmlTextMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware"));
|
|
31
35
|
var _preProcessingMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware"));
|
|
32
36
|
var _sanitizationMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware"));
|
|
33
|
-
var _cardActionMiddleware = require("../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware");
|
|
34
|
-
var _messageTimestampMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware"));
|
|
35
|
-
var _Constants = require("../../../common/Constants");
|
|
36
|
-
var _endChat = require("./endChat");
|
|
37
|
-
var _HyperlinkTextOverrideRenderer = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/markdownrenderers/HyperlinkTextOverrideRenderer"));
|
|
38
37
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
39
38
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
40
39
|
const initWebChatComposer = (props, state, dispatch, chatSDK) => {
|
|
@@ -53,7 +52,7 @@ const initWebChatComposer = (props, state, dispatch, chatSDK) => {
|
|
|
53
52
|
var _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _props$webChatContain5;
|
|
54
53
|
const conversationEndCallback = async () => {
|
|
55
54
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
56
|
-
const conversationDetails = await (0,
|
|
55
|
+
const conversationDetails = await (0, _utils.getConversationDetailsCall)(chatSDK);
|
|
57
56
|
if ((conversationDetails === null || conversationDetails === void 0 ? void 0 : conversationDetails.participantType) === _Constants.ParticipantType.Bot) {
|
|
58
57
|
dispatch({
|
|
59
58
|
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_ENDED_BY,
|
|
@@ -6,8 +6,8 @@ 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
9
|
var _utils = require("../../../common/utils");
|
|
10
|
+
var _authHelper = require("./authHelper");
|
|
11
11
|
var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
|
|
12
12
|
var _ConversationState = require("../../../contexts/common/ConversationState");
|
|
13
13
|
var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
|
|
@@ -75,6 +75,7 @@ const getChatReconnectContext = async (chatSDK, chatConfig, props, isAuthenticat
|
|
|
75
75
|
}
|
|
76
76
|
return reconnectChatContext;
|
|
77
77
|
} catch (error) {
|
|
78
|
+
(0, _utils.checkContactIdError)(error);
|
|
78
79
|
_TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
|
|
79
80
|
Event: _TelemetryConstants.TelemetryEvent.GetChatReconnectContextSDKCallFailed,
|
|
80
81
|
ExceptionDetails: {
|
|
@@ -140,6 +140,7 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, props, params, persi
|
|
|
140
140
|
await chatSDK.startChat(startChatOptionalParams);
|
|
141
141
|
isStartChatSuccessful = true;
|
|
142
142
|
} catch (error) {
|
|
143
|
+
(0, _utils.checkContactIdError)(error);
|
|
143
144
|
_TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
|
|
144
145
|
Event: _TelemetryConstants.TelemetryEvent.StartChatMethodException,
|
|
145
146
|
ExceptionDetails: {
|
|
@@ -299,14 +300,14 @@ const setCustomContextParams = async props => {
|
|
|
299
300
|
}
|
|
300
301
|
// Add custom context only for unauthenticated chat
|
|
301
302
|
const persistedState = (0, _utils.getStateFromCache)(widgetInstanceId);
|
|
302
|
-
|
|
303
|
-
|
|
303
|
+
const customContextLocal = (persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai8 = persistedState.domainStates) === null || _persistedState$domai8 === void 0 ? void 0 : _persistedState$domai8.customContext) ?? (props === null || props === void 0 ? void 0 : props.initialCustomContext);
|
|
304
|
+
if (customContextLocal) {
|
|
304
305
|
_TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
305
|
-
Event: _TelemetryConstants.TelemetryEvent.
|
|
306
|
+
Event: _TelemetryConstants.TelemetryEvent.SettingCustomContext,
|
|
306
307
|
Description: "Setting custom context for unauthenticated chat"
|
|
307
308
|
});
|
|
308
309
|
optionalParams = Object.assign({}, optionalParams, {
|
|
309
|
-
customContext:
|
|
310
|
+
customContext: customContextLocal
|
|
310
311
|
});
|
|
311
312
|
} else {
|
|
312
313
|
const customContextFromParent = await getInitContextParamsForPopout();
|
|
@@ -323,9 +324,9 @@ const canStartPopoutChat = async props => {
|
|
|
323
324
|
}
|
|
324
325
|
popoutWidgetInstanceId = (0, _utils.getWidgetCacheIdfromProps)(props, true);
|
|
325
326
|
if (!(0, _utils.isNullOrEmptyString)(popoutWidgetInstanceId)) {
|
|
326
|
-
var _persistedState$
|
|
327
|
+
var _persistedState$domai9, _persistedState$appSt2;
|
|
327
328
|
const persistedState = (0, _utils.getStateFromCache)(popoutWidgetInstanceId);
|
|
328
|
-
if (persistedState && !(0, _utils.isUndefinedOrEmpty)(persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$
|
|
329
|
+
if (persistedState && !(0, _utils.isUndefinedOrEmpty)(persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai9 = persistedState.domainStates) === null || _persistedState$domai9 === void 0 ? void 0 : _persistedState$domai9.liveChatContext) && (persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$appSt2 = persistedState.appStates) === null || _persistedState$appSt2 === void 0 ? void 0 : _persistedState$appSt2.conversationState) === _ConversationState.ConversationState.Active) {
|
|
329
330
|
// Initiate popout chat
|
|
330
331
|
_omnichannelChatComponents.BroadcastService.postMessage({
|
|
331
332
|
eventName: _TelemetryConstants.BroadcastEvent.InitiateStartChatInPopoutMode
|
|
@@ -351,7 +352,7 @@ const checkIfConversationStillValid = async (chatSDK, dispatch, state) => {
|
|
|
351
352
|
});
|
|
352
353
|
try {
|
|
353
354
|
chatSDK.requestId = requestIdFromCache;
|
|
354
|
-
conversationDetails = await
|
|
355
|
+
conversationDetails = await (0, _utils.getConversationDetailsCall)(chatSDK);
|
|
355
356
|
if (Object.keys(conversationDetails).length === 0) {
|
|
356
357
|
chatSDK.requestId = currentRequestId;
|
|
357
358
|
return false;
|
|
@@ -9,6 +9,7 @@ var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components
|
|
|
9
9
|
var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
|
|
10
10
|
var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
|
|
11
11
|
var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
|
|
12
|
+
var _utils = require("../../../common/utils");
|
|
12
13
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
13
14
|
const updateSessionDataForTelemetry = async (chatSDK, dispatch) => {
|
|
14
15
|
if (chatSDK) {
|
|
@@ -34,7 +35,7 @@ exports.updateSessionDataForTelemetry = updateSessionDataForTelemetry;
|
|
|
34
35
|
const updateConversationDataForTelemetry = async (chatSDK, dispatch) => {
|
|
35
36
|
if (chatSDK) {
|
|
36
37
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
37
|
-
const liveWorkItem = await
|
|
38
|
+
const liveWorkItem = await (0, _utils.getConversationDetailsCall)(chatSDK);
|
|
38
39
|
const telemetryData = _TelemetryHelper.TelemetryHelper.addConversationDataToTelemetry(liveWorkItem, _TelemetryManager.TelemetryManager.InternalTelemetryData);
|
|
39
40
|
dispatch({
|
|
40
41
|
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_TELEMETRY_DATA,
|
|
@@ -171,6 +171,7 @@ export let ElementType;
|
|
|
171
171
|
export let ChatSDKError;
|
|
172
172
|
(function (ChatSDKError) {
|
|
173
173
|
ChatSDKError["WidgetUseOutsideOperatingHour"] = "WidgetUseOutsideOperatingHour";
|
|
174
|
+
ChatSDKError["AuthContactIdNotFoundFailure"] = "AuthContactIdNotFoundFailure";
|
|
174
175
|
})(ChatSDKError || (ChatSDKError = {}));
|
|
175
176
|
export let EnvironmentVersion;
|
|
176
177
|
(function (EnvironmentVersion) {
|
|
@@ -58,6 +58,7 @@ export let BroadcastEvent;
|
|
|
58
58
|
BroadcastEvent["HideChatVisibilityChangeEvent"] = "hideChatVisibilityChangeEvent";
|
|
59
59
|
BroadcastEvent["UpdateSessionDataForTelemetry"] = "UpdateSessionDataForTelemetry";
|
|
60
60
|
BroadcastEvent["UpdateConversationDataForTelemetry"] = "UpdateConversationDataForTelemetry";
|
|
61
|
+
BroadcastEvent["ContactIdNotFound"] = "ContactIdNotFound";
|
|
61
62
|
})(BroadcastEvent || (BroadcastEvent = {}));
|
|
62
63
|
export let TelemetryEvent;
|
|
63
64
|
(function (TelemetryEvent) {
|
|
@@ -101,7 +102,7 @@ export let TelemetryEvent;
|
|
|
101
102
|
TelemetryEvent["ChatVisibilityChanged"] = "ChatVisibilityChanged";
|
|
102
103
|
TelemetryEvent["EndChatSucceeded"] = "EndChatSucceeded";
|
|
103
104
|
TelemetryEvent["EndChatFailed"] = "EndChatFailed";
|
|
104
|
-
TelemetryEvent["
|
|
105
|
+
TelemetryEvent["SettingCustomContext"] = "SettingCustomContext";
|
|
105
106
|
TelemetryEvent["WebChatLoaded"] = "WebChatLoaded";
|
|
106
107
|
TelemetryEvent["LCWChatButtonClicked"] = "LCWChatButtonClicked";
|
|
107
108
|
TelemetryEvent["LCWChatButtonShow"] = "LCWChatButtonShow";
|
package/lib/esm/common/utils.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
var _this = this;
|
|
2
|
-
import { AriaTelemetryConstants, Constants, LocaleConstants } from "./Constants";
|
|
2
|
+
import { AriaTelemetryConstants, ChatSDKError, Constants, LocaleConstants } from "./Constants";
|
|
3
3
|
import { BroadcastEvent, LogLevel, TelemetryEvent } from "./telemetry/TelemetryConstants";
|
|
4
|
+
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
4
5
|
import { DataStoreManager } from "./contextDataStore/DataStoreManager";
|
|
5
6
|
import { KeyCodes } from "./KeyCodes";
|
|
6
7
|
import { Md5 } from "md5-typescript";
|
|
@@ -353,8 +354,13 @@ export const getConversationDetailsCall = async chatSDK => {
|
|
|
353
354
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
354
355
|
let conversationDetails = undefined;
|
|
355
356
|
try {
|
|
357
|
+
TelemetryHelper.logSDKEvent(LogLevel.INFO, {
|
|
358
|
+
Event: TelemetryEvent.GetConversationDetailsCallStarted,
|
|
359
|
+
Description: "Conversation details call started"
|
|
360
|
+
});
|
|
356
361
|
conversationDetails = await chatSDK.getConversationDetails();
|
|
357
362
|
} catch (error) {
|
|
363
|
+
checkContactIdError(error);
|
|
358
364
|
TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
|
|
359
365
|
Event: TelemetryEvent.GetConversationDetailsCallFailed,
|
|
360
366
|
ExceptionDetails: {
|
|
@@ -363,4 +369,17 @@ export const getConversationDetailsCall = async chatSDK => {
|
|
|
363
369
|
});
|
|
364
370
|
}
|
|
365
371
|
return conversationDetails;
|
|
372
|
+
};
|
|
373
|
+
|
|
374
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
375
|
+
export const checkContactIdError = e => {
|
|
376
|
+
if ((e === null || e === void 0 ? void 0 : e.message) === ChatSDKError.AuthContactIdNotFoundFailure) {
|
|
377
|
+
const contactIdNotFoundErrorEvent = {
|
|
378
|
+
eventName: BroadcastEvent.ContactIdNotFound,
|
|
379
|
+
payload: {
|
|
380
|
+
error: e
|
|
381
|
+
}
|
|
382
|
+
};
|
|
383
|
+
BroadcastService.postMessage(contactIdNotFoundErrorEvent);
|
|
384
|
+
}
|
|
366
385
|
};
|
package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js
CHANGED
|
@@ -154,12 +154,13 @@ const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMess
|
|
|
154
154
|
export const downloadTranscript = async (chatSDK, renderMarkDown, bannerMessageOnError, attachmentMessage, state) => {
|
|
155
155
|
var _state$domainStates, _state$domainStates2, _state$domainStates2$;
|
|
156
156
|
// Need to keep existing request id for scenarios when trnascript is downloaded after endchat
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
157
|
+
const liveChatContext = {
|
|
158
|
+
chatToken: state === null || state === void 0 ? void 0 : (_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : _state$domainStates.chatToken,
|
|
159
|
+
requestId: state === null || state === void 0 ? void 0 : (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : (_state$domainStates2$ = _state$domainStates2.chatToken) === null || _state$domainStates2$ === void 0 ? void 0 : _state$domainStates2$.requestId
|
|
160
|
+
};
|
|
161
|
+
let data = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getLiveChatTranscript({
|
|
162
|
+
liveChatContext
|
|
163
|
+
}));
|
|
163
164
|
if (typeof data === Constants.String) {
|
|
164
165
|
data = JSON.parse(data);
|
|
165
166
|
}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
+
import { ConfirmationState, Constants, ConversationEndEntity } from "../../../common/Constants";
|
|
1
2
|
import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
|
|
3
|
+
import { getAuthClientFunction, handleAuthentication } from "./authHelper";
|
|
4
|
+
import { getConversationDetailsCall, getWidgetEndChatEventName, isNullOrEmptyString } from "../../../common/utils";
|
|
5
|
+
import { getPostChatContext, initiatePostChat } from "./renderSurveyHelpers";
|
|
2
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 { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
|
|
6
10
|
import { WebChatStoreLoader } from "../../webchatcontainerstateful/webchatcontroller/WebChatStoreLoader";
|
|
7
11
|
import { defaultWebChatContainerStatefulProps } from "../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps";
|
|
8
|
-
import { getWidgetEndChatEventName, isNullOrEmptyString } from "../../../common/utils";
|
|
9
|
-
import { getAuthClientFunction, handleAuthentication } from "./authHelper";
|
|
10
|
-
import { initiatePostChat, getPostChatContext } from "./renderSurveyHelpers";
|
|
11
|
-
import { Constants, ConversationEndEntity, ConfirmationState } from "../../../common/Constants";
|
|
12
12
|
|
|
13
13
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
14
14
|
const prepareEndChat = async (props, chatSDK, state, dispatch, setAdapter, setWebChatStyles, adapter, uwid) => {
|
|
15
15
|
try {
|
|
16
16
|
var _conversationDetails$, _state$domainStates, _state$domainStates2;
|
|
17
|
-
const conversationDetails = await
|
|
17
|
+
const conversationDetails = await getConversationDetailsCall(chatSDK);
|
|
18
18
|
|
|
19
19
|
// Use Case : When post chat is not configured
|
|
20
20
|
if ((conversationDetails === null || conversationDetails === void 0 ? void 0 : (_conversationDetails$ = conversationDetails.canRenderPostChat) === null || _conversationDetails$ === void 0 ? void 0 : _conversationDetails$.toLowerCase()) === Constants.false) {
|
|
@@ -119,18 +119,12 @@ const endChat = async function (props, chatSDK, state, dispatch, setAdapter, set
|
|
|
119
119
|
}
|
|
120
120
|
});
|
|
121
121
|
} finally {
|
|
122
|
-
var _state$appStates3;
|
|
123
122
|
dispatch({
|
|
124
123
|
type: LiveChatWidgetActionType.SET_UNREAD_MESSAGE_COUNT,
|
|
125
124
|
payload: 0
|
|
126
125
|
});
|
|
127
|
-
//Always allow to close the chat for embedded mode irrespective of end chat errors
|
|
128
|
-
|
|
129
|
-
dispatch({
|
|
130
|
-
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
131
|
-
payload: ConversationState.Closed
|
|
132
|
-
});
|
|
133
|
-
}
|
|
126
|
+
// Always allow to close the chat for embedded mode irrespective of end chat errors
|
|
127
|
+
closeChatWidget(dispatch, props, state);
|
|
134
128
|
}
|
|
135
129
|
}
|
|
136
130
|
if (postMessageToOtherTab && !isNullOrEmptyString(uwid)) {
|
|
@@ -143,10 +137,6 @@ const endChat = async function (props, chatSDK, state, dispatch, setAdapter, set
|
|
|
143
137
|
};
|
|
144
138
|
const endChatStateCleanUp = async dispatch => {
|
|
145
139
|
// Need to clear these states immediately when chat ended from OC.
|
|
146
|
-
dispatch({
|
|
147
|
-
type: LiveChatWidgetActionType.SET_CUSTOM_CONTEXT,
|
|
148
|
-
payload: undefined
|
|
149
|
-
});
|
|
150
140
|
dispatch({
|
|
151
141
|
type: LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
|
|
152
142
|
payload: undefined
|
|
@@ -195,6 +185,27 @@ const closeChatStateCleanUp = async dispatch => {
|
|
|
195
185
|
}
|
|
196
186
|
});
|
|
197
187
|
};
|
|
188
|
+
const closeChatWidget = (dispatch, props, state) => {
|
|
189
|
+
var _state$appStates3;
|
|
190
|
+
if (state !== null && state !== void 0 && (_state$appStates3 = state.appStates) !== null && _state$appStates3 !== void 0 && _state$appStates3.hideStartChatButton) {
|
|
191
|
+
var _props$controlProps2, _props$controlProps3;
|
|
192
|
+
// Only close chat if header is enabled for popout
|
|
193
|
+
// TODO : This condition needs to be removed eventually when the filler UX is ready for popout, removing this condition would show a blank screen for OOB Widget
|
|
194
|
+
if ((props === null || props === void 0 ? void 0 : (_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : _props$controlProps2.hideHeader) === undefined || (props === null || props === void 0 ? void 0 : (_props$controlProps3 = props.controlProps) === null || _props$controlProps3 === void 0 ? void 0 : _props$controlProps3.hideHeader) === false) {
|
|
195
|
+
dispatch({
|
|
196
|
+
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
197
|
+
payload: ConversationState.Closed
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// Embedded chat
|
|
204
|
+
dispatch({
|
|
205
|
+
type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
206
|
+
payload: ConversationState.Closed
|
|
207
|
+
});
|
|
208
|
+
};
|
|
198
209
|
|
|
199
210
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
200
211
|
const handleAuthenticationIfEnabled = async (props, chatSDK) => {
|
|
@@ -232,28 +243,7 @@ const chatTokenCleanUp = async dispatch => {
|
|
|
232
243
|
|
|
233
244
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
234
245
|
const getEndChatEventName = async (chatSDK, props) => {
|
|
235
|
-
var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _props$
|
|
236
|
-
return getWidgetEndChatEventName(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC === void 0 ? void 0 : _chatSDK$omnichannelC.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC2 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC2 === void 0 ? void 0 : _chatSDK$omnichannelC2.widgetId, (props === null || props === void 0 ? void 0 : (_props$
|
|
237
|
-
};
|
|
238
|
-
|
|
239
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
240
|
-
const getConversationDetails = async chatSDK => {
|
|
241
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
242
|
-
let conversationDetails = undefined;
|
|
243
|
-
try {
|
|
244
|
-
TelemetryHelper.logSDKEvent(LogLevel.INFO, {
|
|
245
|
-
Event: TelemetryEvent.GetConversationDetailsCallStarted,
|
|
246
|
-
Description: "Conversation details call started"
|
|
247
|
-
});
|
|
248
|
-
conversationDetails = await chatSDK.getConversationDetails();
|
|
249
|
-
} catch (error) {
|
|
250
|
-
TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
|
|
251
|
-
Event: TelemetryEvent.GetConversationDetailsCallFailed,
|
|
252
|
-
ExceptionDetails: {
|
|
253
|
-
exception: `Get Conversation Details Call Failed : ${error}`
|
|
254
|
-
}
|
|
255
|
-
});
|
|
256
|
-
}
|
|
257
|
-
return conversationDetails;
|
|
246
|
+
var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _props$controlProps4;
|
|
247
|
+
return getWidgetEndChatEventName(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC === void 0 ? void 0 : _chatSDK$omnichannelC.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC2 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC2 === void 0 ? void 0 : _chatSDK$omnichannelC2.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps4 = props.controlProps) === null || _props$controlProps4 === void 0 ? void 0 : _props$controlProps4.widgetInstanceId) ?? "");
|
|
258
248
|
};
|
|
259
|
-
export { prepareEndChat, endChat
|
|
249
|
+
export { prepareEndChat, endChat };
|
|
@@ -1,19 +1,23 @@
|
|
|
1
|
+
import { ConversationEndEntity, ParticipantType } from "../../../common/Constants";
|
|
1
2
|
import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
|
|
2
|
-
import {
|
|
3
|
+
import { changeLanguageCodeFormatForWebChat, getConversationDetailsCall } from "../../../common/utils";
|
|
4
|
+
import HyperlinkTextOverrideRenderer from "../../webchatcontainerstateful/webchatcontroller/markdownrenderers/HyperlinkTextOverrideRenderer";
|
|
3
5
|
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
4
6
|
import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
|
|
5
7
|
import { WebChatStoreLoader } from "../../webchatcontainerstateful/webchatcontroller/WebChatStoreLoader";
|
|
6
8
|
import attachmentProcessingMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware";
|
|
7
|
-
import { changeLanguageCodeFormatForWebChat } from "../../../common/utils";
|
|
8
9
|
import channelDataMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware";
|
|
9
10
|
import { createActivityMiddleware } from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware";
|
|
10
11
|
import createAttachmentMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware";
|
|
11
12
|
import createAttachmentUploadValidatorMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware";
|
|
12
13
|
import { createAvatarMiddleware } from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware";
|
|
14
|
+
import { createCardActionMiddleware } from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware";
|
|
13
15
|
import createConversationEndMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware";
|
|
14
16
|
import createDataMaskingMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware";
|
|
15
17
|
import { createMarkdown } from "./createMarkdown";
|
|
16
18
|
import createMaxMessageSizeValidator from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator";
|
|
19
|
+
import createMessageTimeStampMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware";
|
|
20
|
+
import { createStore } from "botframework-webchat";
|
|
17
21
|
import { createWebChatTelemetry } from "../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger";
|
|
18
22
|
import { defaultAttachmentProps } from "../../webchatcontainerstateful/common/defaultProps/defaultAttachmentProps";
|
|
19
23
|
import { defaultMiddlewareLocalizedTexts } from "../../webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts";
|
|
@@ -24,11 +28,6 @@ import htmlPlayerMiddleware from "../../webchatcontainerstateful/webchatcontroll
|
|
|
24
28
|
import htmlTextMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware";
|
|
25
29
|
import preProcessingMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware";
|
|
26
30
|
import sanitizationMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware";
|
|
27
|
-
import { createCardActionMiddleware } from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware";
|
|
28
|
-
import createMessageTimeStampMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware";
|
|
29
|
-
import { ConversationEndEntity, ParticipantType } from "../../../common/Constants";
|
|
30
|
-
import { getConversationDetails } from "./endChat";
|
|
31
|
-
import HyperlinkTextOverrideRenderer from "../../webchatcontainerstateful/webchatcontroller/markdownrenderers/HyperlinkTextOverrideRenderer";
|
|
32
31
|
|
|
33
32
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
34
33
|
export const initWebChatComposer = (props, state, dispatch, chatSDK) => {
|
|
@@ -47,7 +46,7 @@ export const initWebChatComposer = (props, state, dispatch, chatSDK) => {
|
|
|
47
46
|
var _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _props$webChatContain5;
|
|
48
47
|
const conversationEndCallback = async () => {
|
|
49
48
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
50
|
-
const conversationDetails = await
|
|
49
|
+
const conversationDetails = await getConversationDetailsCall(chatSDK);
|
|
51
50
|
if ((conversationDetails === null || conversationDetails === void 0 ? void 0 : conversationDetails.participantType) === ParticipantType.Bot) {
|
|
52
51
|
dispatch({
|
|
53
52
|
type: LiveChatWidgetActionType.SET_CONVERSATION_ENDED_BY,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "regenerator-runtime/runtime";
|
|
2
2
|
import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
|
|
3
|
+
import { checkContactIdError, isNullOrEmptyString, isNullOrUndefined } from "../../../common/utils";
|
|
3
4
|
import { handleAuthentication, removeAuthTokenProvider } from "./authHelper";
|
|
4
|
-
import { isNullOrEmptyString, isNullOrUndefined } from "../../../common/utils";
|
|
5
5
|
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
6
6
|
import { ConversationState } from "../../../contexts/common/ConversationState";
|
|
7
7
|
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
@@ -69,6 +69,7 @@ const getChatReconnectContext = async (chatSDK, chatConfig, props, isAuthenticat
|
|
|
69
69
|
}
|
|
70
70
|
return reconnectChatContext;
|
|
71
71
|
} catch (error) {
|
|
72
|
+
checkContactIdError(error);
|
|
72
73
|
TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
|
|
73
74
|
Event: TelemetryEvent.GetChatReconnectContextSDKCallFailed,
|
|
74
75
|
ExceptionDetails: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
|
|
2
2
|
import { ChatSDKError, Constants, LiveWorkItemState } from "../../../common/Constants";
|
|
3
|
-
import { createTimer, getStateFromCache, getWidgetCacheIdfromProps, isNullOrEmptyString, isUndefinedOrEmpty } from "../../../common/utils";
|
|
3
|
+
import { checkContactIdError, createTimer, getConversationDetailsCall, getStateFromCache, getWidgetCacheIdfromProps, isNullOrEmptyString, isUndefinedOrEmpty } from "../../../common/utils";
|
|
4
4
|
import { getAuthClientFunction, handleAuthentication } from "./authHelper";
|
|
5
5
|
import { ActivityStreamHandler } from "./ActivityStreamHandler";
|
|
6
6
|
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
@@ -133,6 +133,7 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, props, params, persi
|
|
|
133
133
|
await chatSDK.startChat(startChatOptionalParams);
|
|
134
134
|
isStartChatSuccessful = true;
|
|
135
135
|
} catch (error) {
|
|
136
|
+
checkContactIdError(error);
|
|
136
137
|
TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
|
|
137
138
|
Event: TelemetryEvent.StartChatMethodException,
|
|
138
139
|
ExceptionDetails: {
|
|
@@ -291,14 +292,14 @@ const setCustomContextParams = async props => {
|
|
|
291
292
|
}
|
|
292
293
|
// Add custom context only for unauthenticated chat
|
|
293
294
|
const persistedState = getStateFromCache(widgetInstanceId);
|
|
294
|
-
|
|
295
|
-
|
|
295
|
+
const customContextLocal = (persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai8 = persistedState.domainStates) === null || _persistedState$domai8 === void 0 ? void 0 : _persistedState$domai8.customContext) ?? (props === null || props === void 0 ? void 0 : props.initialCustomContext);
|
|
296
|
+
if (customContextLocal) {
|
|
296
297
|
TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
|
|
297
|
-
Event: TelemetryEvent.
|
|
298
|
+
Event: TelemetryEvent.SettingCustomContext,
|
|
298
299
|
Description: "Setting custom context for unauthenticated chat"
|
|
299
300
|
});
|
|
300
301
|
optionalParams = Object.assign({}, optionalParams, {
|
|
301
|
-
customContext:
|
|
302
|
+
customContext: customContextLocal
|
|
302
303
|
});
|
|
303
304
|
} else {
|
|
304
305
|
const customContextFromParent = await getInitContextParamsForPopout();
|
|
@@ -315,9 +316,9 @@ const canStartPopoutChat = async props => {
|
|
|
315
316
|
}
|
|
316
317
|
popoutWidgetInstanceId = getWidgetCacheIdfromProps(props, true);
|
|
317
318
|
if (!isNullOrEmptyString(popoutWidgetInstanceId)) {
|
|
318
|
-
var _persistedState$
|
|
319
|
+
var _persistedState$domai9, _persistedState$appSt2;
|
|
319
320
|
const persistedState = getStateFromCache(popoutWidgetInstanceId);
|
|
320
|
-
if (persistedState && !isUndefinedOrEmpty(persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$
|
|
321
|
+
if (persistedState && !isUndefinedOrEmpty(persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai9 = persistedState.domainStates) === null || _persistedState$domai9 === void 0 ? void 0 : _persistedState$domai9.liveChatContext) && (persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$appSt2 = persistedState.appStates) === null || _persistedState$appSt2 === void 0 ? void 0 : _persistedState$appSt2.conversationState) === ConversationState.Active) {
|
|
321
322
|
// Initiate popout chat
|
|
322
323
|
BroadcastService.postMessage({
|
|
323
324
|
eventName: BroadcastEvent.InitiateStartChatInPopoutMode
|
|
@@ -343,7 +344,7 @@ const checkIfConversationStillValid = async (chatSDK, dispatch, state) => {
|
|
|
343
344
|
});
|
|
344
345
|
try {
|
|
345
346
|
chatSDK.requestId = requestIdFromCache;
|
|
346
|
-
conversationDetails = await chatSDK
|
|
347
|
+
conversationDetails = await getConversationDetailsCall(chatSDK);
|
|
347
348
|
if (Object.keys(conversationDetails).length === 0) {
|
|
348
349
|
chatSDK.requestId = currentRequestId;
|
|
349
350
|
return false;
|
|
@@ -3,6 +3,7 @@ import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
|
3
3
|
import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
|
|
4
4
|
import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
|
|
5
5
|
import { TelemetryManager } from "../../../common/telemetry/TelemetryManager";
|
|
6
|
+
import { getConversationDetailsCall } from "../../../common/utils";
|
|
6
7
|
|
|
7
8
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
8
9
|
export const updateSessionDataForTelemetry = async (chatSDK, dispatch) => {
|
|
@@ -28,7 +29,7 @@ export const updateSessionDataForTelemetry = async (chatSDK, dispatch) => {
|
|
|
28
29
|
const updateConversationDataForTelemetry = async (chatSDK, dispatch) => {
|
|
29
30
|
if (chatSDK) {
|
|
30
31
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
31
|
-
const liveWorkItem = await chatSDK
|
|
32
|
+
const liveWorkItem = await getConversationDetailsCall(chatSDK);
|
|
32
33
|
const telemetryData = TelemetryHelper.addConversationDataToTelemetry(liveWorkItem, TelemetryManager.InternalTelemetryData);
|
|
33
34
|
dispatch({
|
|
34
35
|
type: LiveChatWidgetActionType.SET_TELEMETRY_DATA,
|
|
@@ -155,7 +155,8 @@ export declare enum ElementType {
|
|
|
155
155
|
CallingContainerSDK = "CallingContainerSDK"
|
|
156
156
|
}
|
|
157
157
|
export declare enum ChatSDKError {
|
|
158
|
-
WidgetUseOutsideOperatingHour = "WidgetUseOutsideOperatingHour"
|
|
158
|
+
WidgetUseOutsideOperatingHour = "WidgetUseOutsideOperatingHour",
|
|
159
|
+
AuthContactIdNotFoundFailure = "AuthContactIdNotFoundFailure"
|
|
159
160
|
}
|
|
160
161
|
export declare enum EnvironmentVersion {
|
|
161
162
|
prod = "prod",
|
|
@@ -51,7 +51,8 @@ export declare enum BroadcastEvent {
|
|
|
51
51
|
InitiateStartChatInPopoutMode = "InitiateStartChatInPopoutMode",
|
|
52
52
|
HideChatVisibilityChangeEvent = "hideChatVisibilityChangeEvent",
|
|
53
53
|
UpdateSessionDataForTelemetry = "UpdateSessionDataForTelemetry",
|
|
54
|
-
UpdateConversationDataForTelemetry = "UpdateConversationDataForTelemetry"
|
|
54
|
+
UpdateConversationDataForTelemetry = "UpdateConversationDataForTelemetry",
|
|
55
|
+
ContactIdNotFound = "ContactIdNotFound"
|
|
55
56
|
}
|
|
56
57
|
export declare enum TelemetryEvent {
|
|
57
58
|
CallAdded = "CallAdded",
|
|
@@ -94,7 +95,7 @@ export declare enum TelemetryEvent {
|
|
|
94
95
|
ChatVisibilityChanged = "ChatVisibilityChanged",
|
|
95
96
|
EndChatSucceeded = "EndChatSucceeded",
|
|
96
97
|
EndChatFailed = "EndChatFailed",
|
|
97
|
-
|
|
98
|
+
SettingCustomContext = "SettingCustomContext",
|
|
98
99
|
WebChatLoaded = "WebChatLoaded",
|
|
99
100
|
LCWChatButtonClicked = "LCWChatButtonClicked",
|
|
100
101
|
LCWChatButtonShow = "LCWChatButtonShow",
|
|
@@ -31,3 +31,4 @@ export declare const getBroadcastChannelName: (widgetId: string, widgetInstanceI
|
|
|
31
31
|
export declare const getWidgetCacheIdfromProps: (props: any, popoutChat?: boolean) => string;
|
|
32
32
|
export declare const debounceLeading: (fn: any, ms?: number) => (...args: any[]) => void;
|
|
33
33
|
export declare const getConversationDetailsCall: (chatSDK: any) => Promise<any>;
|
|
34
|
+
export declare const checkContactIdError: (e: any) => void;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { Dispatch } from "react";
|
|
2
2
|
import { ILiveChatWidgetAction } from "../../../contexts/common/ILiveChatWidgetAction";
|
|
3
|
-
import { ILiveChatWidgetProps } from "../interfaces/ILiveChatWidgetProps";
|
|
4
3
|
import { ILiveChatWidgetContext } from "../../../contexts/common/ILiveChatWidgetContext";
|
|
4
|
+
import { ILiveChatWidgetProps } from "../interfaces/ILiveChatWidgetProps";
|
|
5
5
|
declare const prepareEndChat: (props: ILiveChatWidgetProps, chatSDK: any, state: ILiveChatWidgetContext, dispatch: Dispatch<ILiveChatWidgetAction>, setAdapter: any, setWebChatStyles: any, adapter: any, uwid: string) => Promise<void>;
|
|
6
6
|
declare const endChat: (props: ILiveChatWidgetProps, chatSDK: any, state: ILiveChatWidgetContext, dispatch: Dispatch<ILiveChatWidgetAction>, setAdapter: any, setWebChatStyles: any, adapter: any, skipEndChatSDK?: boolean | undefined, skipCloseChat?: boolean | undefined, postMessageToOtherTab?: boolean | undefined, uwid?: string) => Promise<void>;
|
|
7
|
-
|
|
8
|
-
export { prepareEndChat, endChat, getConversationDetails };
|
|
7
|
+
export { prepareEndChat, endChat };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@microsoft/omnichannel-chat-widget",
|
|
3
|
-
"version": "1.0.4-main.
|
|
3
|
+
"version": "1.0.4-main.b53b5ba",
|
|
4
4
|
"description": "Microsoft Omnichannel Chat Widget",
|
|
5
5
|
"main": "lib/cjs/index.js",
|
|
6
6
|
"types": "lib/types/index.d.ts",
|
|
@@ -74,9 +74,8 @@
|
|
|
74
74
|
"webpack-cli": "^4.9.2"
|
|
75
75
|
},
|
|
76
76
|
"dependencies": {
|
|
77
|
-
"@
|
|
78
|
-
"@microsoft/omnichannel-chat-
|
|
79
|
-
"@microsoft/omnichannel-chat-sdk": "1.3.0",
|
|
77
|
+
"@microsoft/omnichannel-chat-components": "^1.0.1",
|
|
78
|
+
"@microsoft/omnichannel-chat-sdk": "^1.4.0",
|
|
80
79
|
"abort-controller-es5": "^2.0.1",
|
|
81
80
|
"dompurify": "^2.3.4",
|
|
82
81
|
"markdown-it": "^12.3.2",
|