@microsoft/omnichannel-chat-widget 1.8.4-main.7bdb634 → 1.8.4-main.9ae37a9

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 (94) hide show
  1. package/README.md +27 -0
  2. package/lib/cjs/common/Constants.js +3 -0
  3. package/lib/cjs/common/telemetry/AppInsightsEvents.js +14 -9
  4. package/lib/cjs/common/telemetry/TelemetryConstants.js +15 -2
  5. package/lib/cjs/common/telemetry/TelemetryManager.js +10 -7
  6. package/lib/cjs/common/telemetry/loggers/appInsightsLogger.js +26 -10
  7. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +16 -4
  8. package/lib/cjs/components/citationpanestateful/CitationPaneStateful.js +20 -1
  9. package/lib/cjs/components/headerstateful/HeaderStateful.js +8 -2
  10. package/lib/cjs/components/livechatwidget/common/ChatWidgetEvents.js +1 -1
  11. package/lib/cjs/components/livechatwidget/common/PersistentConversationHandler.js +26 -20
  12. package/lib/cjs/components/livechatwidget/common/defaultProps/defaultPersistentChatHistoryProps.js +1 -2
  13. package/lib/cjs/components/livechatwidget/common/endChat.js +21 -9
  14. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +9 -2
  15. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +3 -0
  16. package/lib/cjs/components/livechatwidget/common/renderSurveyHelpers.js +2 -2
  17. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +3 -3
  18. package/lib/cjs/components/livechatwidget/common/startChat.js +5 -1
  19. package/lib/cjs/components/livechatwidget/common/startChatErrorHandler.js +24 -4
  20. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +123 -28
  21. package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +31 -4
  22. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +12 -3
  23. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +30 -29
  24. package/lib/cjs/components/webchatcontainerstateful/common/activityConverters/convertPersistentChatHistoryMessageToActivity.js +8 -2
  25. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts.js +2 -1
  26. package/lib/cjs/components/webchatcontainerstateful/hooks/usePersistentChatHistory.js +1 -3
  27. package/lib/cjs/components/webchatcontainerstateful/interfaces/IExtendedChatConffig.js +1 -0
  28. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatEventSubscribers.js +6 -7
  29. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/ConversationDividerActivity.js +30 -1
  30. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LazyLoadActivity.js +21 -1
  31. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +7 -2
  32. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +1 -0
  33. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/citationsMiddleware.js +6 -1
  34. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/localizedStringsBotInitialsMiddleware.js +29 -7
  35. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +1 -0
  36. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +7 -1
  37. package/lib/cjs/contexts/createReducer.js +15 -0
  38. package/lib/cjs/firstresponselatency/FirstMessageTrackerFromBot.js +3 -2
  39. package/lib/cjs/firstresponselatency/FirstResponseLatencyTracker.js +6 -2
  40. package/lib/cjs/plugins/newMessageEventHandler.js +4 -1
  41. package/lib/esm/common/Constants.js +3 -0
  42. package/lib/esm/common/telemetry/AppInsightsEvents.js +14 -9
  43. package/lib/esm/common/telemetry/TelemetryConstants.js +13 -1
  44. package/lib/esm/common/telemetry/TelemetryManager.js +10 -7
  45. package/lib/esm/common/telemetry/loggers/appInsightsLogger.js +27 -11
  46. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +17 -5
  47. package/lib/esm/components/citationpanestateful/CitationPaneStateful.js +20 -1
  48. package/lib/esm/components/headerstateful/HeaderStateful.js +9 -3
  49. package/lib/esm/components/livechatwidget/common/ChatWidgetEvents.js +1 -1
  50. package/lib/esm/components/livechatwidget/common/PersistentConversationHandler.js +26 -20
  51. package/lib/esm/components/livechatwidget/common/defaultProps/defaultPersistentChatHistoryProps.js +1 -2
  52. package/lib/esm/components/livechatwidget/common/endChat.js +21 -9
  53. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +9 -2
  54. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +3 -0
  55. package/lib/esm/components/livechatwidget/common/renderSurveyHelpers.js +2 -2
  56. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +3 -3
  57. package/lib/esm/components/livechatwidget/common/startChat.js +7 -3
  58. package/lib/esm/components/livechatwidget/common/startChatErrorHandler.js +23 -4
  59. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +124 -29
  60. package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +33 -6
  61. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +13 -4
  62. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +30 -32
  63. package/lib/esm/components/webchatcontainerstateful/common/activityConverters/convertPersistentChatHistoryMessageToActivity.js +8 -2
  64. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts.js +2 -1
  65. package/lib/esm/components/webchatcontainerstateful/hooks/usePersistentChatHistory.js +1 -3
  66. package/lib/esm/components/webchatcontainerstateful/interfaces/IExtendedChatConffig.js +1 -0
  67. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatEventSubscribers.js +6 -7
  68. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/ConversationDividerActivity.js +30 -1
  69. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LazyLoadActivity.js +21 -1
  70. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +7 -2
  71. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +1 -0
  72. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/citationsMiddleware.js +6 -1
  73. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/localizedStringsBotInitialsMiddleware.js +29 -7
  74. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +1 -0
  75. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +7 -1
  76. package/lib/esm/contexts/createReducer.js +15 -0
  77. package/lib/esm/firstresponselatency/FirstMessageTrackerFromBot.js +3 -2
  78. package/lib/esm/firstresponselatency/FirstResponseLatencyTracker.js +6 -2
  79. package/lib/esm/plugins/newMessageEventHandler.js +4 -1
  80. package/lib/types/common/Constants.d.ts +3 -0
  81. package/lib/types/common/telemetry/TelemetryConstants.d.ts +12 -1
  82. package/lib/types/common/telemetry/interfaces/IInternalTelemetryData.d.ts +1 -0
  83. package/lib/types/components/livechatwidget/common/ChatWidgetEvents.d.ts +1 -1
  84. package/lib/types/components/livechatwidget/common/startChatErrorHandler.d.ts +1 -0
  85. package/lib/types/components/livechatwidget/interfaces/IPersistentChatHistoryProps.d.ts +5 -1
  86. package/lib/types/components/webchatcontainerstateful/interfaces/IExtendedChatConffig.d.ts +15 -0
  87. package/lib/types/components/webchatcontainerstateful/webchatcontroller/WebChatEventSubscribers.d.ts +1 -2
  88. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activities/LazyLoadActivity.d.ts +1 -1
  89. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +2 -1
  90. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/localizedStringsBotInitialsMiddleware.d.ts +1 -1
  91. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +1 -0
  92. package/lib/types/contexts/common/ILiveChatWidgetLocalizedTexts.d.ts +5 -0
  93. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +2 -1
  94. package/package.json +2 -2
@@ -24,13 +24,13 @@ const setPostChatContextAndLoadSurvey = async (facadeChatSDK, dispatch, persiste
24
24
  const postChatEnabled = postChatConfig.postChatEnabled;
25
25
  if (postChatEnabled) {
26
26
  if (!persistedChat) {
27
- _TelemetryHelper.TelemetryHelper.logSDKEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
27
+ _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
28
28
  Event: _TelemetryConstants.TelemetryEvent.PostChatContextCallStarted,
29
29
  Description: _Constants.PostChatSurveyTelemetryMessage.PostChatContextCallStarted
30
30
  });
31
31
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
32
  const context = await facadeChatSDK.getPostChatSurveyContext();
33
- _TelemetryHelper.TelemetryHelper.logSDKEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
33
+ _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
34
34
  Event: _TelemetryConstants.TelemetryEvent.PostChatContextCallSucceed,
35
35
  Description: _Constants.PostChatSurveyTelemetryMessage.PostChatContextCallSucceed
36
36
  });
@@ -47,7 +47,7 @@ const setPostChatContextAndLoadSurvey = async (facadeChatSDK, dispatch, persiste
47
47
  }
48
48
  }
49
49
  } catch (ex) {
50
- _TelemetryHelper.TelemetryHelper.logSDKEventToAllTelemetry(_TelemetryConstants.LogLevel.ERROR, {
50
+ _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
51
51
  Event: _TelemetryConstants.TelemetryEvent.PostChatContextCallFailed,
52
52
  Description: _Constants.PostChatSurveyTelemetryMessage.PostChatContextCallFailed,
53
53
  ExceptionDetails: {
@@ -181,7 +181,10 @@ const initStartChat = async (facadeChatSDK, dispatch, setAdapter, state, props,
181
181
  _TelemetryManager.TelemetryTimers.WidgetLoadTimer = (0, _utils.createTimer)();
182
182
  _TelemetryHelper.TelemetryHelper.logLoadingEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
183
183
  Event: _TelemetryConstants.TelemetryEvent.WidgetLoadStarted,
184
- Description: "Widget start chat started."
184
+ Description: "Widget start chat started.",
185
+ CustomProperties: {
186
+ ConversationStage: _TelemetryConstants.ConversationStage.Initialization
187
+ }
185
188
  });
186
189
 
187
190
  //Check if chat retrieved from cache
@@ -209,6 +212,7 @@ const initStartChat = async (facadeChatSDK, dispatch, setAdapter, state, props,
209
212
  const startTime = new Date().getTime();
210
213
  (0, _FirstMessageTrackerFromBot.createTrackingForFirstMessage)();
211
214
  await facadeChatSDK.startChat(startChatOptionalParams);
215
+ (0, _startChatErrorHandler.logStartChatComplete)();
212
216
  isStartChatSuccessful = true;
213
217
  await createAdapterAndSubscribe(facadeChatSDK, dispatch, setAdapter, startTime, props);
214
218
  } catch (error) {
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.logWidgetLoadWithUnexpectedError = exports.logWidgetLoadComplete = exports.handleStartChatError = void 0;
6
+ exports.logWidgetLoadWithUnexpectedError = exports.logWidgetLoadComplete = exports.logStartChatComplete = exports.handleStartChatError = void 0;
7
7
  var _omnichannelChatSdk = require("@microsoft/omnichannel-chat-sdk");
8
8
  var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
9
9
  var _Constants = require("../../../common/Constants");
@@ -124,7 +124,10 @@ const logWidgetLoadFailed = ex => {
124
124
  Event: _TelemetryConstants.TelemetryEvent.WidgetLoadFailed,
125
125
  Description: "Widget load complete with error",
126
126
  ExceptionDetails: exDetails,
127
- ElapsedTimeInMilliseconds: _TelemetryManager.TelemetryTimers === null || _TelemetryManager.TelemetryTimers === void 0 ? void 0 : (_TelemetryTimers$Widg = _TelemetryManager.TelemetryTimers.WidgetLoadTimer) === null || _TelemetryTimers$Widg === void 0 ? void 0 : _TelemetryTimers$Widg.milliSecondsElapsed
127
+ ElapsedTimeInMilliseconds: _TelemetryManager.TelemetryTimers === null || _TelemetryManager.TelemetryTimers === void 0 ? void 0 : (_TelemetryTimers$Widg = _TelemetryManager.TelemetryTimers.WidgetLoadTimer) === null || _TelemetryTimers$Widg === void 0 ? void 0 : _TelemetryTimers$Widg.milliSecondsElapsed,
128
+ CustomProperties: {
129
+ ConversationStage: _TelemetryConstants.ConversationStage.Initialization
130
+ }
128
131
  });
129
132
  };
130
133
  const logWidgetLoadComplete = additionalMessage => {
@@ -140,6 +143,17 @@ const logWidgetLoadComplete = additionalMessage => {
140
143
  });
141
144
  };
142
145
  exports.logWidgetLoadComplete = logWidgetLoadComplete;
146
+ const logStartChatComplete = additionalMessage => {
147
+ let descriptionString = "Start chat complete";
148
+ if (additionalMessage) {
149
+ descriptionString += `. ${additionalMessage}`;
150
+ }
151
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
152
+ Event: _TelemetryConstants.TelemetryEvent.StartChatComplete,
153
+ Description: descriptionString
154
+ });
155
+ };
156
+ exports.logStartChatComplete = logStartChatComplete;
143
157
  const logWidgetLoadCompleteWithError = ex => {
144
158
  var _TelemetryTimers$Widg3;
145
159
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -156,7 +170,10 @@ const logWidgetLoadCompleteWithError = ex => {
156
170
  Event: _TelemetryConstants.TelemetryEvent.WidgetLoadFailed,
157
171
  Description: "Widget load complete with error",
158
172
  ExceptionDetails: exDetails,
159
- ElapsedTimeInMilliseconds: _TelemetryManager.TelemetryTimers === null || _TelemetryManager.TelemetryTimers === void 0 ? void 0 : (_TelemetryTimers$Widg3 = _TelemetryManager.TelemetryTimers.WidgetLoadTimer) === null || _TelemetryTimers$Widg3 === void 0 ? void 0 : _TelemetryTimers$Widg3.milliSecondsElapsed
173
+ ElapsedTimeInMilliseconds: _TelemetryManager.TelemetryTimers === null || _TelemetryManager.TelemetryTimers === void 0 ? void 0 : (_TelemetryTimers$Widg3 = _TelemetryManager.TelemetryTimers.WidgetLoadTimer) === null || _TelemetryTimers$Widg3 === void 0 ? void 0 : _TelemetryTimers$Widg3.milliSecondsElapsed,
174
+ CustomProperties: {
175
+ ConversationStage: _TelemetryConstants.ConversationStage.Initialization
176
+ }
160
177
  });
161
178
  };
162
179
  const logWidgetLoadWithUnexpectedError = ex => {
@@ -184,7 +201,10 @@ const logWidgetLoadWithUnexpectedError = ex => {
184
201
  Event: _TelemetryConstants.TelemetryEvent.WidgetLoadFailed,
185
202
  Description: "Widget load with unexpected error",
186
203
  ExceptionDetails: exDetails,
187
- ElapsedTimeInMilliseconds: _TelemetryManager.TelemetryTimers === null || _TelemetryManager.TelemetryTimers === void 0 ? void 0 : (_TelemetryTimers$Widg4 = _TelemetryManager.TelemetryTimers.WidgetLoadTimer) === null || _TelemetryTimers$Widg4 === void 0 ? void 0 : _TelemetryTimers$Widg4.milliSecondsElapsed
204
+ ElapsedTimeInMilliseconds: _TelemetryManager.TelemetryTimers === null || _TelemetryManager.TelemetryTimers === void 0 ? void 0 : (_TelemetryTimers$Widg4 = _TelemetryManager.TelemetryTimers.WidgetLoadTimer) === null || _TelemetryTimers$Widg4 === void 0 ? void 0 : _TelemetryTimers$Widg4.milliSecondsElapsed,
205
+ CustomProperties: {
206
+ ConversationStage: _TelemetryConstants.ConversationStage.Initialization
207
+ }
188
208
  });
189
209
  };
190
210
 
@@ -58,18 +58,22 @@ var _startProactiveChat = require("../common/startProactiveChat");
58
58
  var _useChatAdapterStore = _interopRequireDefault(require("../../../hooks/useChatAdapterStore"));
59
59
  var _useChatContextStore = _interopRequireDefault(require("../../../hooks/useChatContextStore"));
60
60
  var _useFacadeChatSDKStore = _interopRequireDefault(require("../../../hooks/useFacadeChatSDKStore"));
61
+ var _renderSurveyHelpers = require("../common/renderSurveyHelpers");
61
62
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
62
63
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
63
64
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
64
65
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
65
66
  let uiTimer;
66
67
  const LiveChatWidgetStateful = props => {
67
- var _props$webChatContain, _props$webChatContain2, _props$webChatContain3, _props$webChatContain4, _props$webChatContain5, _props$webChatContain6, _props$webChatContain7, _props$webChatContain8, _props$webChatContain9, _props$styleProps, _props$webChatContain10, _props$webChatContain11, _props$controlProps, _props$controlProps3, _state$appStates7, _props$webChatContain15, _state$appStates14, _props$webChatContain17, _props$webChatContain18, _props$controlProps12, _props$draggableChatW, _props$draggableChatW2, _props$draggableChatW3, _props$draggableChatW4, _props$draggableChatW5, _livechatProps$webCha, _livechatProps$styleP, _livechatProps$contro, _livechatProps$contro2, _livechatProps$compon, _livechatProps$contro3, _livechatProps$compon2, _livechatProps$contro4, _livechatProps$compon3, _livechatProps$contro5, _livechatProps$compon4, _livechatProps$contro6, _livechatProps$compon5, _livechatProps$contro7, _livechatProps$compon6, _livechatProps$contro8, _livechatProps$compon7, _livechatProps$contro9, _livechatProps$compon8, _livechatProps$contro10, _livechatProps$contro11, _livechatProps$compon9, _livechatProps$contro12, _livechatProps$compon10, _livechatProps$contro13, _livechatProps$compon11, _livechatProps$compon12, _livechatProps$compon13;
68
+ var _props$webChatContain, _props$webChatContain2, _props$webChatContain3, _props$webChatContain4, _props$webChatContain5, _props$webChatContain6, _props$webChatContain7, _props$webChatContain8, _props$webChatContain9, _props$styleProps, _props$webChatContain10, _props$webChatContain11, _props$controlProps, _props$controlProps3, _state$appStates7, _props$webChatContain15, _state$appStates8, _props$webChatContain17, _props$webChatContain18, _props$controlProps12, _props$draggableChatW, _props$draggableChatW2, _props$draggableChatW3, _props$draggableChatW4, _props$draggableChatW5, _livechatProps$webCha, _livechatProps$styleP, _livechatProps$contro, _livechatProps$contro2, _livechatProps$compon, _livechatProps$contro3, _livechatProps$compon2, _livechatProps$contro4, _livechatProps$compon3, _livechatProps$contro5, _livechatProps$compon4, _livechatProps$contro6, _livechatProps$compon5, _livechatProps$contro7, _livechatProps$compon6, _livechatProps$contro8, _livechatProps$compon7, _livechatProps$contro9, _livechatProps$compon8, _livechatProps$contro10, _livechatProps$contro11, _livechatProps$compon9, _livechatProps$contro12, _livechatProps$compon10, _livechatProps$contro13, _livechatProps$compon11, _livechatProps$compon12, _livechatProps$compon13;
68
69
  (0, _react2.useEffect)(() => {
69
70
  uiTimer = (0, _utils.createTimer)();
70
71
  _TelemetryHelper.TelemetryHelper.logLoadingEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
71
72
  Event: _TelemetryConstants.TelemetryEvent.UXLiveChatWidgetStart,
72
- Description: "Live chat widget loading started."
73
+ Description: "Live chat widget loading started.",
74
+ CustomProperties: {
75
+ ConversationStage: _TelemetryConstants.ConversationStage.Initialization
76
+ }
73
77
  });
74
78
  }, []);
75
79
  const [state, dispatch] = (0, _useChatContextStore.default)();
@@ -322,7 +326,7 @@ const LiveChatWidgetStateful = props => {
322
326
  });
323
327
  });
324
328
  _omnichannelChatComponents.BroadcastService.getMessageByEventName(_TelemetryConstants.BroadcastEvent.StartProactiveChat).subscribe(msg => {
325
- _TelemetryHelper.TelemetryHelper.logActionEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
329
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
326
330
  Event: _TelemetryConstants.TelemetryEvent.StartProactiveChatEventReceived,
327
331
  Description: "Start proactive chat event received."
328
332
  });
@@ -448,7 +452,7 @@ const LiveChatWidgetStateful = props => {
448
452
  payload: msg === null || msg === void 0 ? void 0 : (_msg$payload8 = msg.payload) === null || _msg$payload8 === void 0 ? void 0 : _msg$payload8.customContext
449
453
  });
450
454
  }
451
- _TelemetryHelper.TelemetryHelper.logActionEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
455
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
452
456
  Event: _TelemetryConstants.TelemetryEvent.StartChatEventReceived,
453
457
  Description: "Start chat event received."
454
458
  });
@@ -495,18 +499,91 @@ const LiveChatWidgetStateful = props => {
495
499
  return;
496
500
  }
497
501
  });
502
+ const handleInitiateEndChatForPersistentChat = async (msg, conversationDetails) => {
503
+ var _msg$payload10, _msg$payload11, _msg$payload12;
504
+ //If the payload does NOT include the skipSessionCloseForPersistentChat flag, default is false. Upon receiving the customer event, always ending session from C2.
505
+ const skipSessionCloseForPersistentChat = typeof (msg === null || msg === void 0 ? void 0 : (_msg$payload10 = msg.payload) === null || _msg$payload10 === void 0 ? void 0 : _msg$payload10[_Constants.Constants.SkipSessionCloseForPersistentChatFlag]) === _Constants.Constants.String && (msg === null || msg === void 0 ? void 0 : (_msg$payload11 = msg.payload) === null || _msg$payload11 === void 0 ? void 0 : _msg$payload11[_Constants.Constants.SkipSessionCloseForPersistentChatFlag]).toLowerCase() === _Constants.Constants.true || (msg === null || msg === void 0 ? void 0 : (_msg$payload12 = msg.payload) === null || _msg$payload12 === void 0 ? void 0 : _msg$payload12[_Constants.Constants.SkipSessionCloseForPersistentChatFlag]) === true;
506
+ _TelemetryHelper.TelemetryHelper.logSDKEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
507
+ Event: _TelemetryConstants.TelemetryEvent.EndChatEventReceived,
508
+ Description: "Processing initiateEndChat for persistent chat",
509
+ CustomProperties: {
510
+ conversationDetails
511
+ }
512
+ });
513
+ const conversationState = conversationDetails === null || conversationDetails === void 0 ? void 0 : conversationDetails.state;
514
+ if (conversationState !== _Constants.LiveWorkItemState.Closed && conversationState !== _Constants.LiveWorkItemState.WrapUp) {
515
+ if (skipSessionCloseForPersistentChat) {
516
+ var _conversationDetails$;
517
+ if (((_conversationDetails$ = conversationDetails.canRenderPostChat) === null || _conversationDetails$ === void 0 ? void 0 : _conversationDetails$.toLowerCase()) === "true") {
518
+ var _state$domainStates3;
519
+ _TelemetryHelper.TelemetryHelper.logSDKEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
520
+ Event: _TelemetryConstants.TelemetryEvent.EndChatEventReceived,
521
+ Description: "Processing initiateEndChat, fetching postChatContext"
522
+ });
523
+ const postchatContext = (await (0, _renderSurveyHelpers.getPostChatContext)(facadeChatSDK, state, dispatch)) ?? (state === null || state === void 0 ? void 0 : (_state$domainStates3 = state.domainStates) === null || _state$domainStates3 === void 0 ? void 0 : _state$domainStates3.postChatContext);
524
+ if (postchatContext) {
525
+ _TelemetryHelper.TelemetryHelper.logSDKEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
526
+ Event: _TelemetryConstants.TelemetryEvent.EndChatEventReceived,
527
+ Description: "Processing initiateEndChat, initiatePostChat",
528
+ CustomProperties: {
529
+ postchatContext
530
+ }
531
+ });
532
+ await (0, _renderSurveyHelpers.initiatePostChat)(props, conversationDetails, state, dispatch, postchatContext);
533
+ }
534
+ }
535
+ } else {
536
+ const skipEndChatSDK = false;
537
+ const skipCloseChat = false;
538
+ _TelemetryHelper.TelemetryHelper.logSDKEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
539
+ Event: _TelemetryConstants.TelemetryEvent.EndChatEventReceived,
540
+ Description: "Processing initiateEndChat, trigger endChat"
541
+ });
542
+ await (0, _endChat.endChat)(props, facadeChatSDK, state, dispatch, setAdapter, setWebChatStyles, adapter, skipEndChatSDK, skipCloseChat);
543
+ }
544
+ }
545
+ //if conversation already closed, it is safe to unmount it upon receiving the closeChat event
546
+ else {
547
+ _omnichannelChatComponents.BroadcastService.postMessage({
548
+ eventName: _TelemetryConstants.BroadcastEvent.CloseChat
549
+ });
550
+ }
551
+ };
498
552
 
499
553
  // End chat
500
- _omnichannelChatComponents.BroadcastService.getMessageByEventName(_TelemetryConstants.BroadcastEvent.InitiateEndChat).subscribe(async () => {
554
+ _omnichannelChatComponents.BroadcastService.getMessageByEventName(_TelemetryConstants.BroadcastEvent.InitiateEndChat).subscribe(async msg => {
501
555
  _TelemetryHelper.TelemetryHelper.logSDKEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
502
556
  Event: _TelemetryConstants.TelemetryEvent.EndChatEventReceived,
503
- Description: "Received InitiateEndChat BroadcastEvent."
557
+ Description: "Received InitiateEndChat BroadcastEvent.",
558
+ CustomProperties: {
559
+ ConversationStage: _TelemetryConstants.ConversationStage.ConversationEnd,
560
+ payload: msg === null || msg === void 0 ? void 0 : msg.payload
561
+ }
504
562
  });
505
-
506
- // This is to ensure to get latest state from cache in multitab
563
+ const conversationDetails = await (0, _utils.getConversationDetailsCall)(facadeChatSDK);
564
+ const {
565
+ chatConfig
566
+ } = props;
567
+ const isPersistent = (0, _reconnectChatHelper.isPersistentEnabled)(chatConfig);
568
+ _TelemetryHelper.TelemetryHelper.logSDKEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
569
+ Event: _TelemetryConstants.TelemetryEvent.EndChatEventReceived,
570
+ Description: "Processing initiateEndChat, fetched conversation details",
571
+ CustomProperties: {
572
+ conversationDetails,
573
+ isPersistent
574
+ }
575
+ });
576
+ if (isPersistent && conversationDetails) {
577
+ await handleInitiateEndChatForPersistentChat(msg, conversationDetails);
578
+ return;
579
+ }
507
580
  const persistedState = (0, _utils.getStateFromCache)((0, _utils.getWidgetCacheIdfromProps)(props));
508
581
  if (persistedState && persistedState.appStates.conversationState === _ConversationState.ConversationState.Active) {
509
- // We need to simulate states for closing chat, in order to messup with close confirmation pane.
582
+ _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
583
+ Event: _TelemetryConstants.TelemetryEvent.PrepareEndChat,
584
+ Description: _Constants.PrepareEndChatDescriptionConstants.InitiateEndChatReceivedActiveChat
585
+ });
586
+ //We need to simulate states for closing chat, in order to messup with close confirmation pane.
510
587
  dispatch({
511
588
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONFIRMATION_STATE,
512
589
  payload: _Constants.ConfirmationState.Ok
@@ -526,11 +603,8 @@ const LiveChatWidgetStateful = props => {
526
603
  Event: _TelemetryConstants.TelemetryEvent.PrepareEndChat,
527
604
  Description: _Constants.PrepareEndChatDescriptionConstants.InitiateEndChatReceived
528
605
  });
529
- (0, _endChat.endChat)(props, facadeChatSDK, state, dispatch, setAdapter, setWebChatStyles, adapter, skipEndChatSDK, skipCloseChat);
606
+ await (0, _endChat.endChat)(props, facadeChatSDK, state, dispatch, setAdapter, setWebChatStyles, adapter, skipEndChatSDK, skipCloseChat);
530
607
  }
531
- _omnichannelChatComponents.BroadcastService.postMessage({
532
- eventName: _TelemetryConstants.BroadcastEvent.CloseChat
533
- });
534
608
  });
535
609
 
536
610
  // End chat on browser unload
@@ -541,8 +615,8 @@ const LiveChatWidgetStateful = props => {
541
615
  // Listen to end chat event from other tabs
542
616
  const endChatEventName = (0, _utils.getWidgetEndChatEventName)((_facadeChatSDK$getCha3 = facadeChatSDK.getChatSDK()) === null || _facadeChatSDK$getCha3 === void 0 ? void 0 : (_facadeChatSDK$getCha4 = _facadeChatSDK$getCha3.omnichannelConfig) === null || _facadeChatSDK$getCha4 === void 0 ? void 0 : _facadeChatSDK$getCha4.orgId, (_facadeChatSDK$getCha5 = facadeChatSDK.getChatSDK()) === null || _facadeChatSDK$getCha5 === void 0 ? void 0 : (_facadeChatSDK$getCha6 = _facadeChatSDK$getCha5.omnichannelConfig) === null || _facadeChatSDK$getCha6 === void 0 ? void 0 : _facadeChatSDK$getCha6.widgetId, ((_props$controlProps11 = props.controlProps) === null || _props$controlProps11 === void 0 ? void 0 : _props$controlProps11.widgetInstanceId) ?? "");
543
617
  _omnichannelChatComponents.BroadcastService.getMessageByEventName(endChatEventName).subscribe(msg => {
544
- var _msg$payload10;
545
- if ((msg === null || msg === void 0 ? void 0 : (_msg$payload10 = msg.payload) === null || _msg$payload10 === void 0 ? void 0 : _msg$payload10.runtimeId) !== _TelemetryManager.TelemetryManager.InternalTelemetryData.lcwRuntimeId) {
618
+ var _msg$payload13;
619
+ if ((msg === null || msg === void 0 ? void 0 : (_msg$payload13 = msg.payload) === null || _msg$payload13 === void 0 ? void 0 : _msg$payload13.runtimeId) !== _TelemetryManager.TelemetryManager.InternalTelemetryData.lcwRuntimeId) {
546
620
  _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
547
621
  Event: _TelemetryConstants.TelemetryEvent.PrepareEndChat,
548
622
  Description: "Received EndChat BroadcastEvent from other tabs. Closing this chat."
@@ -584,8 +658,8 @@ const LiveChatWidgetStateful = props => {
584
658
 
585
659
  // Retrieve convId
586
660
  _omnichannelChatComponents.BroadcastService.getMessageByEventName(_TelemetryConstants.BroadcastEvent.UpdateConversationDataForTelemetry).subscribe(msg => {
587
- var _msg$payload11, _msg$payload11$liveWo;
588
- if ((_msg$payload11 = msg.payload) !== null && _msg$payload11 !== void 0 && (_msg$payload11$liveWo = _msg$payload11.liveWorkItem) !== null && _msg$payload11$liveWo !== void 0 && _msg$payload11$liveWo.conversationId) {
661
+ var _msg$payload14, _msg$payload14$liveWo;
662
+ if ((_msg$payload14 = msg.payload) !== null && _msg$payload14 !== void 0 && (_msg$payload14$liveWo = _msg$payload14.liveWorkItem) !== null && _msg$payload14$liveWo !== void 0 && _msg$payload14$liveWo.conversationId) {
589
663
  setConversationId(msg.payload.liveWorkItem.conversationId);
590
664
  }
591
665
  });
@@ -703,14 +777,22 @@ const LiveChatWidgetStateful = props => {
703
777
  }
704
778
  }, [state.domainStates.confirmationState]);
705
779
  (0, _react2.useEffect)(() => {
706
- var _state$appStates8, _state$appStates9, _state$appStates10, _state$appStates11, _state$appStates12, _state$appStates13;
780
+ var _inMemoryState$appSta7, _inMemoryState$appSta8, _inMemoryState$appSta9, _inMemoryState$appSta10, _inMemoryState$appSta11, _inMemoryState$appSta12, _inMemoryState$appSta13;
781
+ const inMemoryState = (0, _createReducer.executeReducer)(state, {
782
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.GET_IN_MEMORY_STATE,
783
+ payload: null
784
+ });
707
785
  // Do not process anything during initialization
708
- if ((state === null || state === void 0 ? void 0 : (_state$appStates8 = state.appStates) === null || _state$appStates8 === void 0 ? void 0 : _state$appStates8.conversationEndedBy) === _Constants.ConversationEndEntity.NotSet) {
786
+ if ((inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$appSta7 = inMemoryState.appStates) === null || _inMemoryState$appSta7 === void 0 ? void 0 : _inMemoryState$appSta7.conversationEndedBy) === _Constants.ConversationEndEntity.NotSet) {
787
+ _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
788
+ Event: _TelemetryConstants.TelemetryEvent.PrepareEndChat,
789
+ Description: "conversationEndedBy is not set"
790
+ });
709
791
  return;
710
792
  }
711
793
 
712
794
  // If start chat failed, and C2 is trying to close chat widget
713
- if (state !== null && state !== void 0 && (_state$appStates9 = state.appStates) !== null && _state$appStates9 !== void 0 && _state$appStates9.startChatFailed || (state === null || state === void 0 ? void 0 : (_state$appStates10 = state.appStates) === null || _state$appStates10 === void 0 ? void 0 : _state$appStates10.conversationState) === _ConversationState.ConversationState.Postchat) {
795
+ if (inMemoryState !== null && inMemoryState !== void 0 && (_inMemoryState$appSta8 = inMemoryState.appStates) !== null && _inMemoryState$appSta8 !== void 0 && _inMemoryState$appSta8.startChatFailed || (inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$appSta9 = inMemoryState.appStates) === null || _inMemoryState$appSta9 === void 0 ? void 0 : _inMemoryState$appSta9.conversationState) === _ConversationState.ConversationState.Postchat) {
714
796
  _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
715
797
  Event: _TelemetryConstants.TelemetryEvent.PrepareEndChat,
716
798
  Description: _Constants.PrepareEndChatDescriptionConstants.CustomerCloseChatOnFailureOrPostChat
@@ -720,7 +802,7 @@ const LiveChatWidgetStateful = props => {
720
802
  }
721
803
 
722
804
  // Scenario -> Chat was InActive and closing the chat (Refresh scenario on post chat)
723
- if ((state === null || state === void 0 ? void 0 : (_state$appStates11 = state.appStates) === null || _state$appStates11 === void 0 ? void 0 : _state$appStates11.conversationState) === _ConversationState.ConversationState.InActive) {
805
+ if ((inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$appSta10 = inMemoryState.appStates) === null || _inMemoryState$appSta10 === void 0 ? void 0 : _inMemoryState$appSta10.conversationState) === _ConversationState.ConversationState.InActive) {
724
806
  _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
725
807
  Event: _TelemetryConstants.TelemetryEvent.PrepareEndChat,
726
808
  Description: _Constants.PrepareEndChatDescriptionConstants.CustomerCloseInactiveChat
@@ -728,11 +810,11 @@ const LiveChatWidgetStateful = props => {
728
810
  (0, _endChat.endChat)(props, facadeChatSDK, state, dispatch, setAdapter, setWebChatStyles, adapter, false, false, true);
729
811
  return;
730
812
  }
731
- const isConversationalSurveyEnabled = state.appStates.isConversationalSurveyEnabled;
813
+ const isConversationalSurveyEnabled = inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$appSta11 = inMemoryState.appStates) === null || _inMemoryState$appSta11 === void 0 ? void 0 : _inMemoryState$appSta11.isConversationalSurveyEnabled;
732
814
 
733
815
  // In conversational survey, we need to check post chat survey logics before we set ConversationState to InActive
734
816
  // Hence setting ConversationState to InActive will be done later in the post chat flows
735
- if (!isConversationalSurveyEnabled && ((state === null || state === void 0 ? void 0 : (_state$appStates12 = state.appStates) === null || _state$appStates12 === void 0 ? void 0 : _state$appStates12.conversationEndedBy) === _Constants.ConversationEndEntity.Agent || (state === null || state === void 0 ? void 0 : (_state$appStates13 = state.appStates) === null || _state$appStates13 === void 0 ? void 0 : _state$appStates13.conversationEndedBy) === _Constants.ConversationEndEntity.Bot)) {
817
+ if (!isConversationalSurveyEnabled && (inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$appSta12 = inMemoryState.appStates) === null || _inMemoryState$appSta12 === void 0 ? void 0 : _inMemoryState$appSta12.conversationEndedBy) === _Constants.ConversationEndEntity.Agent || (inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$appSta13 = inMemoryState.appStates) === null || _inMemoryState$appSta13 === void 0 ? void 0 : _inMemoryState$appSta13.conversationEndedBy) === _Constants.ConversationEndEntity.Bot) {
736
818
  dispatch({
737
819
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
738
820
  payload: _ConversationState.ConversationState.InActive
@@ -740,8 +822,8 @@ const LiveChatWidgetStateful = props => {
740
822
  }
741
823
 
742
824
  // All other cases
743
- (0, _endChat.prepareEndChat)(props, facadeChatSDK, state, dispatch, setAdapter, setWebChatStyles, adapter);
744
- }, [state === null || state === void 0 ? void 0 : (_state$appStates14 = state.appStates) === null || _state$appStates14 === void 0 ? void 0 : _state$appStates14.conversationEndedBy]);
825
+ (0, _endChat.prepareEndChat)(props, facadeChatSDK, inMemoryState, dispatch, setAdapter, setWebChatStyles, adapter);
826
+ }, [state === null || state === void 0 ? void 0 : (_state$appStates8 = state.appStates) === null || _state$appStates8 === void 0 ? void 0 : _state$appStates8.conversationEndedBy]);
745
827
 
746
828
  // Publish chat widget state
747
829
  (0, _react2.useEffect)(() => {
@@ -773,13 +855,13 @@ const LiveChatWidgetStateful = props => {
773
855
 
774
856
  // Handle Chat disconnect cases
775
857
  (0, _react2.useEffect)(() => {
776
- var _inMemoryState$appSta7;
858
+ var _inMemoryState$appSta14;
777
859
  const inMemoryState = (0, _createReducer.executeReducer)(state, {
778
860
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.GET_IN_MEMORY_STATE,
779
861
  payload: null
780
862
  });
781
863
  (0, _chatDisconnectHelper.handleChatDisconnect)(props, inMemoryState, setWebChatStyles);
782
- const chatDisconnectState = inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$appSta7 = inMemoryState.appStates) === null || _inMemoryState$appSta7 === void 0 ? void 0 : _inMemoryState$appSta7.chatDisconnectEventReceived;
864
+ const chatDisconnectState = inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$appSta14 = inMemoryState.appStates) === null || _inMemoryState$appSta14 === void 0 ? void 0 : _inMemoryState$appSta14.chatDisconnectEventReceived;
783
865
  if (chatDisconnectState && adapter) {
784
866
  try {
785
867
  adapter.end();
@@ -805,7 +887,10 @@ const LiveChatWidgetStateful = props => {
805
887
  _TelemetryHelper.TelemetryHelper.logLoadingEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
806
888
  Event: _TelemetryConstants.TelemetryEvent.UXLiveChatWidgetCompleted,
807
889
  Description: "Live chat widget loading completed.",
808
- ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed
890
+ ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed,
891
+ CustomProperties: {
892
+ ConversationStage: _TelemetryConstants.ConversationStage.Initialization
893
+ }
809
894
  });
810
895
  }, []);
811
896
  const initiateEndChatOnBrowserUnload = () => {
@@ -875,6 +960,16 @@ const LiveChatWidgetStateful = props => {
875
960
  bubbleTextColor
876
961
  }), [webChatStyles, bubbleBackground, bubbleTextColor]);
877
962
 
963
+ // React to dynamic bot avatar initials updates from context
964
+ (0, _react2.useEffect)(() => {
965
+ if (state.domainStates.botAvatarInitials && state.domainStates.botAvatarInitials !== webChatStyles.botAvatarInitials) {
966
+ setWebChatStyles(styles => ({
967
+ ...styles,
968
+ botAvatarInitials: state.domainStates.botAvatarInitials
969
+ }));
970
+ }
971
+ }, [state.domainStates.botAvatarInitials]);
972
+
878
973
  // WebChat's Composer can only be rendered if a directLine object is defined
879
974
  return directLine && /*#__PURE__*/_react2.default.createElement(_react2.default.Fragment, null, /*#__PURE__*/_react2.default.createElement("style", null, `
880
975
  #oc-lcw .webchat__basic-transcript__scrollable::-webkit-scrollbar {
@@ -18,6 +18,7 @@ var _isValidSurveyUrl = _interopRequireDefault(require("./common/isValidSurveyUr
18
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
19
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
20
20
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
+ let uiTimer;
21
22
  const generateSurveyInviteLink = function (surveyInviteLink, isEmbed, locale, compact, customerVoiceSurveyCorrelationId) {
22
23
  let showMultiLingual = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
23
24
  const surveyLinkParams = new URLSearchParams({
@@ -31,6 +32,16 @@ const generateSurveyInviteLink = function (surveyInviteLink, isEmbed, locale, co
31
32
  };
32
33
  const PostChatSurveyPaneStateful = props => {
33
34
  var _props$styleProps, _state$appStates, _props$controlProps;
35
+ (0, _react.useEffect)(() => {
36
+ uiTimer = (0, _utils.createTimer)();
37
+ _TelemetryHelper.TelemetryHelper.logLoadingEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
38
+ Event: _TelemetryConstants.TelemetryEvent.UXPostChatPaneStarted,
39
+ Description: "Postchat survey pane loading started.",
40
+ CustomProperties: {
41
+ ConversationStage: _TelemetryConstants.ConversationStage.ConversationEnd
42
+ }
43
+ });
44
+ }, []);
34
45
  const [state] = (0, _useChatContextStore.default)();
35
46
  const generalStyleProps = Object.assign({}, _defaultgeneralPostChatSurveyPaneStyleProps.defaultGeneralPostChatSurveyPaneStyleProps, (_props$styleProps = props.styleProps) === null || _props$styleProps === void 0 ? void 0 : _props$styleProps.generalStyleProps, {
36
47
  display: state.appStates.isMinimized ? "none" : "contents"
@@ -81,7 +92,14 @@ const PostChatSurveyPaneStateful = props => {
81
92
  _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
82
93
  Event: _TelemetryConstants.TelemetryEvent.PostChatSurveyLoaded
83
94
  });
84
-
95
+ _TelemetryHelper.TelemetryHelper.logLoadingEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
96
+ Event: _TelemetryConstants.TelemetryEvent.UXPostChatPaneCompleted,
97
+ ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed,
98
+ Description: "Postchat survey pane loading completed.",
99
+ CustomProperties: {
100
+ ConversationStage: _TelemetryConstants.ConversationStage.ConversationEnd
101
+ }
102
+ });
85
103
  //Customer Voice Telemetry Events
86
104
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
87
105
  window.addEventListener("message", message => {
@@ -94,16 +112,22 @@ const PostChatSurveyPaneStateful = props => {
94
112
  Event: _TelemetryConstants.TelemetryEvent.CustomerVoiceResponsePageLoaded
95
113
  });
96
114
  } else if (data === _CustomerVoiceEvents.CustomerVoiceEvents.FormResponseSubmitted) {
97
- _TelemetryHelper.TelemetryHelper.logActionEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
115
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
98
116
  Event: _TelemetryConstants.TelemetryEvent.CustomerVoiceFormResponseSubmitted,
99
- Description: "Customer Voice form response submitted."
117
+ Description: "Customer Voice form response submitted.",
118
+ CustomProperties: {
119
+ ConversationStage: _TelemetryConstants.ConversationStage.ConversationEnd
120
+ }
100
121
  });
101
122
  } else if (data === _CustomerVoiceEvents.CustomerVoiceEvents.FormResponseError) {
102
- _TelemetryHelper.TelemetryHelper.logActionEventToAllTelemetry(_TelemetryConstants.LogLevel.ERROR, {
123
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
103
124
  Event: _TelemetryConstants.TelemetryEvent.CustomerVoiceFormResponseError,
104
125
  Description: "Customer Voice form response error.",
105
126
  ExceptionDetails: {
106
127
  message: "Customer Voice form response error."
128
+ },
129
+ CustomProperties: {
130
+ ConversationStage: _TelemetryConstants.ConversationStage.ConversationEnd
107
131
  }
108
132
  });
109
133
  } else if (typeof data === "string" && data.startsWith(_CustomerVoiceEvents.CustomerVoiceEvents.FormsError)) {
@@ -112,6 +136,9 @@ const PostChatSurveyPaneStateful = props => {
112
136
  Description: "Customer Voice failed to load with forms error.",
113
137
  ExceptionDetails: {
114
138
  message: `Customer Voice forms error details: ${data}`
139
+ },
140
+ CustomProperties: {
141
+ ConversationStage: _TelemetryConstants.ConversationStage.ConversationEnd
115
142
  }
116
143
  });
117
144
  }
@@ -28,7 +28,10 @@ const PreChatSurveyPaneStateful = props => {
28
28
  uiTimer = (0, _utils.createTimer)();
29
29
  _TelemetryHelper.TelemetryHelper.logLoadingEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
30
30
  Event: _TelemetryConstants.TelemetryEvent.UXPrechatPaneStart,
31
- Description: "Prechat survey pane loading started."
31
+ Description: "Prechat survey pane loading started.",
32
+ CustomProperties: {
33
+ ConversationStage: _TelemetryConstants.ConversationStage.Initialization
34
+ }
32
35
  });
33
36
  }, []);
34
37
 
@@ -79,7 +82,10 @@ const PreChatSurveyPaneStateful = props => {
79
82
  onSubmit: async values => {
80
83
  _TelemetryHelper.TelemetryHelper.logActionEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
81
84
  Event: _TelemetryConstants.TelemetryEvent.PrechatSubmitted,
82
- Description: "Prechat survey submitted."
85
+ Description: "Prechat survey submitted.",
86
+ CustomProperties: {
87
+ ConversationStage: _TelemetryConstants.ConversationStage.Initialization
88
+ }
83
89
  });
84
90
  dispatch({
85
91
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
@@ -153,7 +159,10 @@ const PreChatSurveyPaneStateful = props => {
153
159
  _TelemetryHelper.TelemetryHelper.logLoadingEventToAllTelemetry(_TelemetryConstants.LogLevel.INFO, {
154
160
  Event: _TelemetryConstants.TelemetryEvent.UXPrechatPaneCompleted,
155
161
  ElapsedTimeInMilliseconds: uiTimer.milliSecondsElapsed,
156
- Description: "Prechat survey pane loading completed."
162
+ Description: "Prechat survey pane loading completed.",
163
+ CustomProperties: {
164
+ ConversationStage: _TelemetryConstants.ConversationStage.Initialization
165
+ }
157
166
  });
158
167
  }, []);
159
168