@microsoft/omnichannel-chat-widget 1.0.4-main.d4abfe6 → 1.0.4

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.
Files changed (23) hide show
  1. package/lib/cjs/common/Constants.js +1 -0
  2. package/lib/cjs/common/telemetry/TelemetryConstants.js +1 -0
  3. package/lib/cjs/common/utils.js +22 -2
  4. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -6
  5. package/lib/cjs/components/livechatwidget/common/endChat.js +7 -29
  6. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +7 -8
  7. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +2 -1
  8. package/lib/cjs/components/livechatwidget/common/startChat.js +2 -1
  9. package/lib/cjs/components/livechatwidget/common/updateSessionDataForTelemetry.js +2 -1
  10. package/lib/esm/common/Constants.js +1 -0
  11. package/lib/esm/common/telemetry/TelemetryConstants.js +1 -0
  12. package/lib/esm/common/utils.js +20 -1
  13. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -6
  14. package/lib/esm/components/livechatwidget/common/endChat.js +6 -27
  15. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +7 -8
  16. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +2 -1
  17. package/lib/esm/components/livechatwidget/common/startChat.js +3 -2
  18. package/lib/esm/components/livechatwidget/common/updateSessionDataForTelemetry.js +2 -1
  19. package/lib/types/common/Constants.d.ts +2 -1
  20. package/lib/types/common/telemetry/TelemetryConstants.d.ts +2 -1
  21. package/lib/types/common/utils.d.ts +1 -0
  22. package/lib/types/components/livechatwidget/common/endChat.d.ts +2 -3
  23. 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;
@@ -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
- exports.getConversationDetailsCall = getConversationDetailsCall;
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;
@@ -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 existingRequestId = chatSDK.requestId;
164
- chatSDK.chatToken = state === null || state === void 0 ? void 0 : (_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : _state$domainStates.chatToken;
165
- chatSDK.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
- let data = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getLiveChatTranscript());
167
- // This is used for allowing to start next chat
168
- chatSDK.requestId = existingRequestId;
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.getConversationDetails = exports.endChat = void 0;
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 getConversationDetails(chatSDK);
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) {
@@ -252,26 +252,4 @@ const chatTokenCleanUp = async dispatch => {
252
252
  const getEndChatEventName = async (chatSDK, props) => {
253
253
  var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _props$controlProps4;
254
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
- };
256
-
257
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
258
- const getConversationDetails = async chatSDK => {
259
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
260
- let conversationDetails = undefined;
261
- try {
262
- _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
263
- Event: _TelemetryConstants.TelemetryEvent.GetConversationDetailsCallStarted,
264
- Description: "Conversation details call started"
265
- });
266
- conversationDetails = await chatSDK.getConversationDetails();
267
- } catch (error) {
268
- _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
269
- Event: _TelemetryConstants.TelemetryEvent.GetConversationDetailsCallFailed,
270
- ExceptionDetails: {
271
- exception: `Get Conversation Details Call Failed : ${error}`
272
- }
273
- });
274
- }
275
- return conversationDetails;
276
- };
277
- exports.getConversationDetails = getConversationDetails;
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 _botframeworkWebchat = require("botframework-webchat");
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, _endChat.getConversationDetails)(chatSDK);
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: {
@@ -351,7 +352,7 @@ const checkIfConversationStillValid = async (chatSDK, dispatch, state) => {
351
352
  });
352
353
  try {
353
354
  chatSDK.requestId = requestIdFromCache;
354
- conversationDetails = await chatSDK.getConversationDetails();
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 chatSDK.getConversationDetails();
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) {
@@ -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
  };
@@ -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 existingRequestId = chatSDK.requestId;
158
- chatSDK.chatToken = state === null || state === void 0 ? void 0 : (_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : _state$domainStates.chatToken;
159
- chatSDK.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
- let data = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getLiveChatTranscript());
161
- // This is used for allowing to start next chat
162
- chatSDK.requestId = existingRequestId;
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 getConversationDetails(chatSDK);
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) {
@@ -246,25 +246,4 @@ const getEndChatEventName = async (chatSDK, props) => {
246
246
  var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _props$controlProps4;
247
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) ?? "");
248
248
  };
249
-
250
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
251
- const getConversationDetails = async chatSDK => {
252
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
253
- let conversationDetails = undefined;
254
- try {
255
- TelemetryHelper.logSDKEvent(LogLevel.INFO, {
256
- Event: TelemetryEvent.GetConversationDetailsCallStarted,
257
- Description: "Conversation details call started"
258
- });
259
- conversationDetails = await chatSDK.getConversationDetails();
260
- } catch (error) {
261
- TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
262
- Event: TelemetryEvent.GetConversationDetailsCallFailed,
263
- ExceptionDetails: {
264
- exception: `Get Conversation Details Call Failed : ${error}`
265
- }
266
- });
267
- }
268
- return conversationDetails;
269
- };
270
- export { prepareEndChat, endChat, getConversationDetails };
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 { createStore } from "botframework-webchat";
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 getConversationDetails(chatSDK);
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: {
@@ -343,7 +344,7 @@ const checkIfConversationStillValid = async (chatSDK, dispatch, state) => {
343
344
  });
344
345
  try {
345
346
  chatSDK.requestId = requestIdFromCache;
346
- conversationDetails = await chatSDK.getConversationDetails();
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.getConversationDetails();
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",
@@ -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
- declare const getConversationDetails: (chatSDK: any) => Promise<any>;
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.d4abfe6",
3
+ "version": "1.0.4",
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
- "@fluentui/react": "^8.49.1",
78
- "@microsoft/omnichannel-chat-components": "1.0.1",
79
- "@microsoft/omnichannel-chat-sdk": "1.3.0",
77
+ "@microsoft/omnichannel-chat-components": "^1.0.1",
78
+ "@microsoft/omnichannel-chat-sdk": "1.4.1",
80
79
  "abort-controller-es5": "^2.0.1",
81
80
  "dompurify": "^2.3.4",
82
81
  "markdown-it": "^12.3.2",