@microsoft/omnichannel-chat-widget 1.7.4-main.a36bdf2 → 1.7.4-main.c715d8f

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.
@@ -21,6 +21,7 @@ class TelemetryHelper {
21
21
  case _TelemetryConstants.ScenarioType.WEBCHAT:
22
22
  return TelemetryHelper.conformToWebChatContract(level, input);
23
23
  case _TelemetryConstants.ScenarioType.OCCHATSDK:
24
+ case _TelemetryConstants.ScenarioType.SDK:
24
25
  return TelemetryHelper.conformToOCChatSDKContract(level, input);
25
26
  case _TelemetryConstants.ScenarioType.ACTIONS:
26
27
  return TelemetryHelper.conformToActionsContract(level, input);
@@ -156,6 +157,7 @@ class TelemetryHelper {
156
157
  event.TransactionId = payload.TransactionId;
157
158
  event.ElapsedTimeInMilliseconds = payload.ElapsedTimeInMilliseconds;
158
159
  event.ExceptionDetails = JSON.stringify(payload.ExceptionDetails);
160
+ event.Description = payload.Description;
159
161
  });
160
162
  }
161
163
  static addChatConfigDataToTelemetry(chatConfig, telemetryInternalData) {
@@ -88,6 +88,10 @@ const HeaderStateful = props => {
88
88
  text: "We're Offline"
89
89
  },
90
90
  onMinimizeClick: () => {
91
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
92
+ Event: _TelemetryConstants.TelemetryEvent.HeaderMinimizeButtonClicked,
93
+ Description: "Header Minimize button clicked."
94
+ });
91
95
  dispatch({
92
96
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_MINIMIZED,
93
97
  payload: true
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.prepareEndChat = exports.endVoiceVideoCallIfOngoing = exports.endChatStateCleanUp = exports.endChat = exports.closeChatStateCleanUp = exports.chatSDKStateCleanUp = exports.callingStateCleanUp = void 0;
7
- var _Constants = require("../../../common/Constants");
8
7
  var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
8
+ var _Constants = require("../../../common/Constants");
9
9
  var _utils = require("../../../common/utils");
10
10
  var _renderSurveyHelpers = require("./renderSurveyHelpers");
11
11
  var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
@@ -140,21 +140,25 @@ const prepareEndChat = async (props, chatSDK, state, dispatch, setAdapter, setWe
140
140
  exports.prepareEndChat = prepareEndChat;
141
141
  const endChat = async (props, chatSDK, state, dispatch, setAdapter, setWebChatStyles, adapter, skipEndChatSDK, skipCloseChat, postMessageToOtherTab) => {
142
142
  if (!skipEndChatSDK && chatSDK.conversation) {
143
+ var _inMemoryState$appSta;
144
+ const inMemoryState = (0, _createReducer.executeReducer)(state, {
145
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.GET_IN_MEMORY_STATE,
146
+ payload: null
147
+ });
148
+ const endChatOptionalParameters = {
149
+ isSessionEnded: inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$appSta = inMemoryState.appStates) === null || _inMemoryState$appSta === void 0 ? void 0 : _inMemoryState$appSta.chatDisconnectEventReceived
150
+ };
143
151
  try {
144
152
  _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
145
153
  Event: _TelemetryConstants.TelemetryEvent.EndChatSDKCall
146
154
  });
147
155
  //Get auth token again if chat continued for longer time, otherwise gets 401 error
148
156
  await (0, _authHelper.handleAuthentication)(chatSDK, props.chatConfig, props.getAuthToken);
149
- await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.endChat());
157
+ await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.endChat(endChatOptionalParameters));
150
158
  } catch (ex) {
151
- var _inMemoryState$appSta;
152
- const inMemoryState = (0, _createReducer.executeReducer)(state, {
153
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.GET_IN_MEMORY_STATE,
154
- payload: null
155
- });
159
+ var _inMemoryState$appSta2;
156
160
  // if the chat was disconnected or ended by the agent, we don't want to log the error
157
- if (!(inMemoryState !== null && inMemoryState !== void 0 && (_inMemoryState$appSta = inMemoryState.appStates) !== null && _inMemoryState$appSta !== void 0 && _inMemoryState$appSta.chatDisconnectEventReceived)) {
161
+ if (!(inMemoryState !== null && inMemoryState !== void 0 && (_inMemoryState$appSta2 = inMemoryState.appStates) !== null && _inMemoryState$appSta2 !== void 0 && _inMemoryState$appSta2.chatDisconnectEventReceived)) {
158
162
  _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
159
163
  Event: _TelemetryConstants.TelemetryEvent.EndChatSDKCallFailed,
160
164
  ExceptionDetails: {
@@ -171,7 +175,7 @@ const endChat = async (props, chatSDK, state, dispatch, setAdapter, setWebChatSt
171
175
  }
172
176
  postMessageToOtherTab = false;
173
177
  } finally {
174
- await endChatStateCleanUp(dispatch);
178
+ endChatStateCleanUp(dispatch);
175
179
  }
176
180
  }
177
181
  if (!skipCloseChat) {
@@ -377,14 +377,14 @@ const checkIfConversationStillValid = async (chatSDK, dispatch, state) => {
377
377
  try {
378
378
  chatSDK.requestId = requestIdFromCache;
379
379
  conversationDetails = await (0, _utils.getConversationDetailsCall)(chatSDK, liveChatContext);
380
- if (Object.keys(conversationDetails).length === 0) {
381
- return false;
382
- }
383
- if (conversationDetails.state === _Constants.LiveWorkItemState.Closed || conversationDetails.state === _Constants.LiveWorkItemState.WrapUp) {
380
+ if (Object.keys(conversationDetails).length === 0 || (0, _utils.isNullOrUndefined)(conversationDetails.state) || conversationDetails.state === _Constants.LiveWorkItemState.Closed || conversationDetails.state === _Constants.LiveWorkItemState.WrapUp) {
384
381
  dispatch({
385
382
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
386
383
  payload: undefined
387
384
  });
385
+ if (currentRequestId) {
386
+ chatSDK.requestId = currentRequestId;
387
+ }
388
388
  return false;
389
389
  }
390
390
  return true;
@@ -15,6 +15,7 @@ export class TelemetryHelper {
15
15
  case ScenarioType.WEBCHAT:
16
16
  return TelemetryHelper.conformToWebChatContract(level, input);
17
17
  case ScenarioType.OCCHATSDK:
18
+ case ScenarioType.SDK:
18
19
  return TelemetryHelper.conformToOCChatSDKContract(level, input);
19
20
  case ScenarioType.ACTIONS:
20
21
  return TelemetryHelper.conformToActionsContract(level, input);
@@ -150,6 +151,7 @@ export class TelemetryHelper {
150
151
  event.TransactionId = payload.TransactionId;
151
152
  event.ElapsedTimeInMilliseconds = payload.ElapsedTimeInMilliseconds;
152
153
  event.ExceptionDetails = JSON.stringify(payload.ExceptionDetails);
154
+ event.Description = payload.Description;
153
155
  });
154
156
  }
155
157
  static addChatConfigDataToTelemetry(chatConfig, telemetryInternalData) {
@@ -79,6 +79,10 @@ export const HeaderStateful = props => {
79
79
  text: "We're Offline"
80
80
  },
81
81
  onMinimizeClick: () => {
82
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
83
+ Event: TelemetryEvent.HeaderMinimizeButtonClicked,
84
+ Description: "Header Minimize button clicked."
85
+ });
82
86
  dispatch({
83
87
  type: LiveChatWidgetActionType.SET_MINIMIZED,
84
88
  payload: true
@@ -1,5 +1,5 @@
1
- import { ConfirmationState, Constants, ConversationEndEntity, ParticipantType, PrepareEndChatDescriptionConstants } from "../../../common/Constants";
2
1
  import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
2
+ import { ConfirmationState, Constants, ConversationEndEntity, ParticipantType, PrepareEndChatDescriptionConstants } from "../../../common/Constants";
3
3
  import { getConversationDetailsCall, getWidgetEndChatEventName } from "../../../common/utils";
4
4
  import { getPostChatContext, initiatePostChat } from "./renderSurveyHelpers";
5
5
  import { BroadcastService } from "@microsoft/omnichannel-chat-components";
@@ -134,21 +134,25 @@ const prepareEndChat = async (props, chatSDK, state, dispatch, setAdapter, setWe
134
134
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
135
135
  const endChat = async (props, chatSDK, state, dispatch, setAdapter, setWebChatStyles, adapter, skipEndChatSDK, skipCloseChat, postMessageToOtherTab) => {
136
136
  if (!skipEndChatSDK && chatSDK.conversation) {
137
+ var _inMemoryState$appSta;
138
+ const inMemoryState = executeReducer(state, {
139
+ type: LiveChatWidgetActionType.GET_IN_MEMORY_STATE,
140
+ payload: null
141
+ });
142
+ const endChatOptionalParameters = {
143
+ isSessionEnded: inMemoryState === null || inMemoryState === void 0 ? void 0 : (_inMemoryState$appSta = inMemoryState.appStates) === null || _inMemoryState$appSta === void 0 ? void 0 : _inMemoryState$appSta.chatDisconnectEventReceived
144
+ };
137
145
  try {
138
146
  TelemetryHelper.logSDKEvent(LogLevel.INFO, {
139
147
  Event: TelemetryEvent.EndChatSDKCall
140
148
  });
141
149
  //Get auth token again if chat continued for longer time, otherwise gets 401 error
142
150
  await handleAuthentication(chatSDK, props.chatConfig, props.getAuthToken);
143
- await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.endChat());
151
+ await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.endChat(endChatOptionalParameters));
144
152
  } catch (ex) {
145
- var _inMemoryState$appSta;
146
- const inMemoryState = executeReducer(state, {
147
- type: LiveChatWidgetActionType.GET_IN_MEMORY_STATE,
148
- payload: null
149
- });
153
+ var _inMemoryState$appSta2;
150
154
  // if the chat was disconnected or ended by the agent, we don't want to log the error
151
- if (!(inMemoryState !== null && inMemoryState !== void 0 && (_inMemoryState$appSta = inMemoryState.appStates) !== null && _inMemoryState$appSta !== void 0 && _inMemoryState$appSta.chatDisconnectEventReceived)) {
155
+ if (!(inMemoryState !== null && inMemoryState !== void 0 && (_inMemoryState$appSta2 = inMemoryState.appStates) !== null && _inMemoryState$appSta2 !== void 0 && _inMemoryState$appSta2.chatDisconnectEventReceived)) {
152
156
  TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
153
157
  Event: TelemetryEvent.EndChatSDKCallFailed,
154
158
  ExceptionDetails: {
@@ -165,7 +169,7 @@ const endChat = async (props, chatSDK, state, dispatch, setAdapter, setWebChatSt
165
169
  }
166
170
  postMessageToOtherTab = false;
167
171
  } finally {
168
- await endChatStateCleanUp(dispatch);
172
+ endChatStateCleanUp(dispatch);
169
173
  }
170
174
  }
171
175
  if (!skipCloseChat) {
@@ -1,6 +1,6 @@
1
1
  import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
2
2
  import { Constants, LiveWorkItemState, WidgetLoadCustomErrorString, WidgetLoadTelemetryMessage } from "../../../common/Constants";
3
- import { checkContactIdError, createTimer, getConversationDetailsCall, getStateFromCache, getWidgetCacheIdfromProps, isNullOrEmptyString, isUndefinedOrEmpty } from "../../../common/utils";
3
+ import { checkContactIdError, createTimer, getConversationDetailsCall, getStateFromCache, getWidgetCacheIdfromProps, isNullOrEmptyString, isNullOrUndefined, isUndefinedOrEmpty } from "../../../common/utils";
4
4
  import { getAuthClientFunction, handleAuthentication } from "./authHelper";
5
5
  import { handleChatReconnect, isPersistentEnabled, isReconnectEnabled } from "./reconnectChatHelper";
6
6
  import { handleStartChatError, logWidgetLoadComplete } from "./startChatErrorHandler";
@@ -369,14 +369,14 @@ const checkIfConversationStillValid = async (chatSDK, dispatch, state) => {
369
369
  try {
370
370
  chatSDK.requestId = requestIdFromCache;
371
371
  conversationDetails = await getConversationDetailsCall(chatSDK, liveChatContext);
372
- if (Object.keys(conversationDetails).length === 0) {
373
- return false;
374
- }
375
- if (conversationDetails.state === LiveWorkItemState.Closed || conversationDetails.state === LiveWorkItemState.WrapUp) {
372
+ if (Object.keys(conversationDetails).length === 0 || isNullOrUndefined(conversationDetails.state) || conversationDetails.state === LiveWorkItemState.Closed || conversationDetails.state === LiveWorkItemState.WrapUp) {
376
373
  dispatch({
377
374
  type: LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
378
375
  payload: undefined
379
376
  });
377
+ if (currentRequestId) {
378
+ chatSDK.requestId = currentRequestId;
379
+ }
380
380
  return false;
381
381
  }
382
382
  return true;
@@ -34,6 +34,7 @@ export interface OCChatSDKTelemetryData extends BaseTelemetryData {
34
34
  ElapsedTimeInMilliseconds?: number;
35
35
  TransactionId: string;
36
36
  ExceptionDetails?: object;
37
+ Description?: string;
37
38
  }
38
39
  export interface IC3ClientTelemetryData extends BaseTelemetryData {
39
40
  SubscriptionId?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@microsoft/omnichannel-chat-widget",
3
- "version": "1.7.4-main.a36bdf2",
3
+ "version": "1.7.4-main.c715d8f",
4
4
  "description": "Microsoft Omnichannel Chat Widget",
5
5
  "main": "lib/cjs/index.js",
6
6
  "types": "lib/types/index.d.ts",
@@ -74,8 +74,10 @@
74
74
  "webpack-cli": "^4.9.2"
75
75
  },
76
76
  "dependencies": {
77
+ "@azure/core-tracing": "^1.2.0",
77
78
  "@microsoft/omnichannel-chat-components": "1.1.5",
78
- "@microsoft/omnichannel-chat-sdk": "^1.10.1",
79
+ "@microsoft/omnichannel-chat-sdk": "^1.10.2",
80
+ "@opentelemetry/api": "^1.9.0",
79
81
  "abort-controller-es5": "^2.0.1",
80
82
  "dompurify": "^2.5.4",
81
83
  "markdown-it": "^12.3.2",