@microsoft/omnichannel-chat-widget 0.1.0-main.3d1c026 → 0.1.0-main.47ede4d

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 (125) hide show
  1. package/README.md +227 -0
  2. package/lib/cjs/assets/Audios.js +8 -0
  3. package/lib/cjs/assets/Icons.js +28 -0
  4. package/lib/cjs/common/Constants.js +6 -0
  5. package/lib/cjs/common/contextDataStore/DataStoreManager.js +14 -0
  6. package/lib/cjs/{assets/assets.d.js → common/interfaces/IContextDataStore.js} +0 -0
  7. package/lib/cjs/common/telemetry/TelemetryConstants.js +25 -4
  8. package/lib/cjs/common/telemetry/TelemetryManager.js +7 -5
  9. package/lib/cjs/common/telemetry/defaultConfigs/defaultAriaConfig.js +1 -1
  10. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +24 -35
  11. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +2 -2
  12. package/lib/cjs/components/footerstateful/FooterStateful.js +3 -3
  13. package/lib/cjs/components/headerstateful/HeaderStateful.js +12 -3
  14. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +3 -4
  15. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +11 -7
  16. package/lib/cjs/components/livechatwidget/common/endChat.js +65 -53
  17. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +5 -0
  18. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +24 -12
  19. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +23 -5
  20. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +26 -24
  21. package/lib/cjs/components/livechatwidget/common/startChat.js +77 -27
  22. package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +3 -3
  23. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +37 -20
  24. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +1 -1
  25. package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +8 -0
  26. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +28 -11
  27. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +10 -4
  28. package/lib/cjs/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
  29. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +4 -0
  30. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +51 -73
  31. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +9 -46
  32. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +3 -1
  33. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
  34. package/lib/cjs/contexts/common/ConversationState.js +3 -2
  35. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +2 -0
  36. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +7 -2
  37. package/lib/cjs/contexts/createReducer.js +13 -3
  38. package/lib/cjs/controller/componentController.js +2 -2
  39. package/lib/cjs/plugins/newMessageEventHandler.js +102 -0
  40. package/lib/esm/assets/Audios.js +1 -0
  41. package/lib/esm/assets/Icons.js +11 -0
  42. package/lib/esm/common/Constants.js +6 -0
  43. package/lib/esm/common/contextDataStore/DataStoreManager.js +5 -0
  44. package/lib/esm/common/interfaces/IContextDataStore.js +1 -0
  45. package/lib/esm/common/telemetry/TelemetryConstants.js +21 -3
  46. package/lib/esm/common/telemetry/TelemetryManager.js +6 -5
  47. package/lib/esm/common/telemetry/defaultConfigs/defaultAriaConfig.js +1 -1
  48. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +22 -34
  49. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +2 -2
  50. package/lib/esm/components/footerstateful/FooterStateful.js +3 -3
  51. package/lib/esm/components/headerstateful/HeaderStateful.js +13 -4
  52. package/lib/esm/components/livechatwidget/common/createMarkdown.js +3 -3
  53. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +11 -9
  54. package/lib/esm/components/livechatwidget/common/endChat.js +64 -49
  55. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +3 -0
  56. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +21 -12
  57. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +20 -4
  58. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +23 -22
  59. package/lib/esm/components/livechatwidget/common/startChat.js +71 -23
  60. package/lib/esm/components/livechatwidget/common/startProactiveChat.js +5 -5
  61. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +33 -17
  62. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +1 -1
  63. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +6 -0
  64. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +26 -10
  65. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +9 -5
  66. package/lib/esm/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
  67. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +4 -0
  68. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +2 -12
  69. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +7 -44
  70. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
  71. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
  72. package/lib/esm/contexts/common/ConversationState.js +3 -2
  73. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +2 -0
  74. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +7 -2
  75. package/lib/esm/contexts/createReducer.js +13 -2
  76. package/lib/esm/controller/componentController.js +2 -2
  77. package/lib/esm/plugins/newMessageEventHandler.js +84 -0
  78. package/lib/types/assets/Audios.d.ts +1 -0
  79. package/lib/types/assets/Icons.d.ts +11 -0
  80. package/lib/types/common/Constants.d.ts +3 -0
  81. package/lib/types/common/contextDataStore/DataStoreManager.d.ts +4 -0
  82. package/lib/types/common/interfaces/IContextDataStore.d.ts +14 -0
  83. package/lib/types/common/telemetry/TelemetryConstants.d.ts +16 -1
  84. package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +4 -1
  85. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +4 -1
  86. package/lib/types/components/livechatwidget/common/endChat.d.ts +1 -1
  87. package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +1 -1
  88. package/lib/types/components/livechatwidget/common/startChat.d.ts +1 -1
  89. package/lib/types/components/livechatwidget/common/startProactiveChat.d.ts +2 -1
  90. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +3 -1
  91. package/lib/types/components/prechatsurveypanestateful/interfaces/IPreChatSurveyPaneStatefulParams.d.ts +1 -1
  92. package/lib/types/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.d.ts +3 -0
  93. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  94. package/lib/types/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.d.ts +1 -1
  95. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +0 -1
  96. package/lib/types/contexts/common/ConversationState.d.ts +3 -2
  97. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +1 -0
  98. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +3 -1
  99. package/lib/types/plugins/newMessageEventHandler.d.ts +2 -0
  100. package/package.json +5 -6
  101. package/lib/cjs/assets/audios/newMessageNotification.mp3 +0 -0
  102. package/lib/cjs/assets/icons/archiveIcon.svg +0 -3
  103. package/lib/cjs/assets/icons/audioIcon.svg +0 -6
  104. package/lib/cjs/assets/icons/blankIcon.svg +0 -6
  105. package/lib/cjs/assets/icons/excelIcon.svg +0 -6
  106. package/lib/cjs/assets/icons/imageIcon.svg +0 -6
  107. package/lib/cjs/assets/icons/oneNoteIcon.svg +0 -6
  108. package/lib/cjs/assets/icons/pdfIcon.svg +0 -6
  109. package/lib/cjs/assets/icons/powerpointIcon.svg +0 -6
  110. package/lib/cjs/assets/icons/videoIcon.svg +0 -6
  111. package/lib/cjs/assets/icons/visioIcon.svg +0 -6
  112. package/lib/cjs/assets/icons/wordIcon.svg +0 -6
  113. package/lib/esm/assets/assets.d.js +0 -0
  114. package/lib/esm/assets/audios/newMessageNotification.mp3 +0 -0
  115. package/lib/esm/assets/icons/archiveIcon.svg +0 -3
  116. package/lib/esm/assets/icons/audioIcon.svg +0 -6
  117. package/lib/esm/assets/icons/blankIcon.svg +0 -6
  118. package/lib/esm/assets/icons/excelIcon.svg +0 -6
  119. package/lib/esm/assets/icons/imageIcon.svg +0 -6
  120. package/lib/esm/assets/icons/oneNoteIcon.svg +0 -6
  121. package/lib/esm/assets/icons/pdfIcon.svg +0 -6
  122. package/lib/esm/assets/icons/powerpointIcon.svg +0 -6
  123. package/lib/esm/assets/icons/videoIcon.svg +0 -6
  124. package/lib/esm/assets/icons/visioIcon.svg +0 -6
  125. package/lib/esm/assets/icons/wordIcon.svg +0 -6
package/README.md ADDED
@@ -0,0 +1,227 @@
1
+ # Omnichannel Live Chat Widget UI Components
2
+
3
+ ![Release CI](https://github.com/microsoft/omnichannel-chat-widget/workflows/chat-components-release/badge.svg) [![npm version](https://badge.fury.io/js/%40microsoft%2Fomnichannel-chat-components.svg)](https://badge.fury.io/js/%40microsoft%2Fomnichannel-chat-components.svg) ![npm](https://img.shields.io/npm/dm/@microsoft/omnichannel-chat-components)\
4
+ ![Release CI](https://github.com/microsoft/omnichannel-chat-widget/workflows/chat-widget-release/badge.svg) [![npm version](https://badge.fury.io/js/%40microsoft%2Fomnichannel-chat-widget.svg)](https://badge.fury.io/js/%40microsoft%2Fomnichannel-chat-widget.svg) ![npm](https://img.shields.io/npm/dm/@microsoft/omnichannel-chat-widget)
5
+
6
+ [@microsoft/omnichannel-chat-widget](https://www.npmjs.com/package/@microsoft/omnichannel-chat-widget) is a React-based UI component library which allows you to build your own live chat widget experience using [@microsoft/omnichannel-chat-sdk](https://www.npmjs.com/package/@microsoft/omnichannel-chat-sdk).
7
+
8
+ ## Table of Contents
9
+
10
+ 1. [Introduction](#introduction)
11
+ 1. [Installation](#installation)
12
+ 1. [Example Usage](#example-usage)
13
+ 1. [Components](#components)
14
+ 1. [See Also](#see-also)
15
+
16
+ ## Introduction
17
+
18
+ Omnichannel Live Chat Widget UI Components offers a re-usable component-based library to help create a custom chat widget that can be connected to the Dynamics 365 Customer Service experience.
19
+
20
+ For more information about Live Chat Widget, see [here](https://docs.microsoft.com/en-us/dynamics365/customer-service/set-up-chat-widget).
21
+
22
+ ## Installation
23
+
24
+ ```powershell
25
+ npm i @microsoft/omnichannel-chat-sdk
26
+ npm i @microsoft/omnichannel-chat-widget
27
+ ```
28
+
29
+ or
30
+
31
+ ```powershell
32
+ yarn add @microsoft/omnichannel-chat-sdk
33
+ yarn add @microsoft/omnichannel-chat-widget
34
+ ```
35
+
36
+ The repo also contains the ```@microsoft/omnichannel-chat-components``` package, which is a collection of UI components. The ```@microsoft/omnichannel-chat-widget``` package is an integration of the Chat SDK and the UI components. To install the UI components separately, do
37
+
38
+ ```powershell
39
+ npm i @microsoft/omnichannel-chat-components
40
+ ```
41
+
42
+ or
43
+
44
+ ```powershell
45
+ yarn add @microsoft/omnichannel-chat-components
46
+ ```
47
+
48
+ ## Example Usage
49
+
50
+ The basic example below takes in the ```<LiveChatWidget/>``` component along with the Chat SDK to create a customized Omnichannel chat widget.
51
+ > :warning: The Chat SDK has to be **_initialized_** before being passed in.
52
+
53
+ ```js
54
+ import * as React from "react";
55
+
56
+ import { LiveChatWidget } from "@microsoft/omnichannel-chat-widget";
57
+ import { OmnichannelChatSDK } from "@microsoft/omnichannel-chat-sdk";
58
+ import ReactDOM from "react-dom";
59
+ //Below version numbers will help us to troubleshoot issues with specific package
60
+ import { version as chatSdkVersion } from "@microsoft/omnichannel-chat-sdk/package.json";
61
+ import { version as chatWidgetVersion } from "../package.json";
62
+ import { version as chatComponentVersion } from "@microsoft/omnichannel-chat-components/package.json";
63
+
64
+ const render = async () => {
65
+ const omnichannelConfig = {
66
+ orgId: "00000000-0000-0000-0000-000000000000", // dummy config
67
+ orgUrl: "https://www.org-url.com", // dummy config
68
+ widgetId: "00000000-0000-0000-0000-000000000000" // dummy config
69
+ };
70
+ const chatSDK = new OmnichannelChatSDK(omnichannelConfig);
71
+ await chatSDK.initialize(); // mandatory
72
+ const chatConfig = await chatSDK.getLiveChatConfig();
73
+ const liveChatWidgetProps = {
74
+ styleProps: {
75
+ generalStyles: {
76
+ width: "700px",
77
+ height: "800px"
78
+ }
79
+ },
80
+ headerProps: {
81
+ controlProps: {
82
+ hideMinimizeButton: true
83
+ }
84
+ },
85
+ chatSDK: chatSDK, // mandatory
86
+ chatConfig: chatConfig // mandatory
87
+ };
88
+
89
+ ReactDOM.render(
90
+ <LiveChatWidget {...liveChatWidgetProps}/>,
91
+ document.getElementById("my-container")
92
+ );
93
+ };
94
+
95
+ render();
96
+ ```
97
+
98
+ A sample widget can be found in this repo [here](https://github.com/microsoft/omnichannel-chat-widget/tree/main/chat-widget/sample). To build it, do ```yarn build-sample``` or ```yarn build-sample:dev``` from project root.
99
+
100
+ ## Components
101
+
102
+ ### Stateless UI Components
103
+
104
+ These are components that are included in the ```@microsoft/omnichannel-chat-components``` package.
105
+
106
+ | Component | Usage | Interface |
107
+ | ----- | -------- | ----- |
108
+ | CallingContainerPane | The container for voice and video feature in the chat widget | [ICallingContainerProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/callingcontainer/interfaces/ICallingContainerProps.ts) |
109
+ | ChatButton | The button that appears on the user's portal that is designed to be the entry point for the user to initate chat | [IChatButtonProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/chatbutton/interfaces/IChatButtonProps.ts) |
110
+ | CommandButton | A customizable button component that can be injected to the header and/or footer | [ICommandButtonProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/common/interfaces/ICommandButtonProps.ts)|
111
+ | ConfirmationPane | The default pane used when the Header close button is launched | [IConfirmationPaneProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/confirmationpane/interfaces/IConfirmationPaneProps.ts) |
112
+ | Footer | The bottom container of the chat containing the download transcript, notification sound and email transcript buttons by default. | [IFooterProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/footer/interfaces/IFooterProps.ts) |
113
+ | Header | The top container of the chat containing the default minimize, close and title of the chat widget | [IHeaderProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/header/interfaces/IHeaderProps.ts) |
114
+ | InputValidationPane | A pop-up input pane with validation. In the default widget this is used as part of [EmailTranscriptPane](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-widget/src/components/emailtranscriptpanestateful/interfaces/IEmailTranscriptPaneProps.ts) | [IInputValidationPaneProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/inputvalidationpane/interfaces/IInputValidationPaneProps.ts) |
115
+ | LoadingPane | The default pane used after the chat button is clicked and before the chat loads completely | [ILoadingPaneProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/loadingpane/interfaces/ILoadingPaneProps.ts) |
116
+ | OutOfOfficeHoursPane | The pane that is displayed when the chat is outside of operating hours set on admin side | [IOOOHPaneProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/outofofficehourspane/interfaces/IOOOHPaneProps.ts) |
117
+ | PostChatSurveyPane | The pane that holds the [Customer Voice](https://dynamics.microsoft.com/en-us/customer-voice/overview/) survey which would be used by the customer to input their chat experience, provide user ratings etc. It uses an IFrame to render the survey URL fetched from `getPostChatSurveyContext` call from [OmniChannel ChatSDK](https://github.com/microsoft/omnichannel-chat-sdk#get-postchat-survey). | [IPostChatSurveyPaneProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/postchatsurveypane/interfaces/IPostChatSurveyPaneProps.ts) |
118
+ | PreChatSurveyPane | The pane that holds the form which would be used by the customer to input helpful information for using the Support Chat before starting up the Chat Process. Makes use of [AdaptiveCards](https://adaptivecards.io/) | [IPreChatSurveyPaneProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/prechatsurveypane/interfaces/IPreChatSurveyPaneProps.ts) |
119
+ | ProactiveChatSurveyPane | A pane that holds more information than a normal chat button and can be configured to proactively pop up | [IProactiveChatPaneProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/proactivechatpane/interfaces/IProactiveChatPaneProps.ts) |
120
+ | ReconnectChatPane | The pane that shows up when the customer is re-connecting to the chat to add additional conversation | [IReconnectChatPaneProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/reconnectchatpane/interfaces/IReconnectChatPaneProps.ts) |
121
+
122
+ > :warning: Because the components extend Microsoft's [Fluent UI](https://developer.microsoft.com/en-us/fluentui#/) components, the base interface for all the ```styleProps``` in the above table is [IStyle](https://github.com/microsoft/fluentui/blob/master/packages/merge-styles/src/IStyle.ts), which extends the [IRawStyleBase](https://docs.microsoft.com/en-us/javascript/api/merge-styles/irawstylebase?view=office-ui-fabric-react-latest) interface, which is the most useful reference.
123
+
124
+ ### Stateful Components
125
+
126
+ | Component | Default Usage | Interface |
127
+ | ----- | -------- | ----- |
128
+ | WebChatContainer | The default wrapper around BotFramework's [WebChat](https://github.com/microsoft/BotFramework-WebChat), which is the message container we are using | [IWebChatContainerStatefulProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-widget/src/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.ts) |
129
+ | LiveChatWidget | The default widget that stitches the UI components with Chat SDK | [ILiveChatWidgetProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-widget/src/components/livechatwidget/interfaces/ILiveChatWidgetProps.ts) |
130
+
131
+ Some of the interfaces listed in the Stateless table have Stateful counterparts defined in the ```@microsoft/omnichannel-chat-widget``` package. For example, [IConfirmationPaneStatefulProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-widget/src/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulProps.ts) extends [IConfirmationPaneProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/confirmationpane/interfaces/IConfirmationPaneProps.ts) with additional attributes that only makes sense in the stateful context.
132
+
133
+ ### Default Props
134
+
135
+ For a list of all default props used in the default stateful widget, please see [here](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-widget/src/components/livechatwidget/common/defaultProps/dummyDefaultProps.ts). If you want to change a default prop, you need to explicitly set it and parse the object as the argument to ```<LiveChatWidget/>```
136
+
137
+ ### Custom Components
138
+
139
+ There are two ways to custom the components provided in the library - 1) Replacing components using ComponentOverrides, and 2) Adding custom components in header and footer.
140
+
141
+ #### ComponentOverrides
142
+
143
+ Most sub-components and the default panes provided can be overriden. Components have "componentOverrides" as part of props interface, which consists of ReactNodes or strings for each part of the component. For example, the "ProactiveChatPane" component has a close button, and the close button can be overriden by creating a custom react node and setting it to the "closeButton" attribute of "componentOverrides" interface that is part of the props.
144
+
145
+ ```js
146
+ const customButton = (
147
+ <button style={{
148
+ background: "green",
149
+ height: "80px",
150
+ margin: "30px 15px 0 0",
151
+ padding: "10px",
152
+ width: "160px"
153
+ }}>
154
+ This is a custom button
155
+ </button>
156
+ );
157
+
158
+ const liveChatWidgetProps = {
159
+ proactiveChatPaneProps: {
160
+ componentOverrides: {
161
+ closeButton: customButton
162
+ };
163
+ };
164
+ }
165
+ ```
166
+
167
+ #### Custom Components in Header and Footer
168
+
169
+ Header's and Footer's child components consist of three parts:
170
+
171
+ 1. "leftGroup" - adding child components at the left of the Header/Footer
172
+ 1. "middleGroup" - adding child components in the middle of the Header/Footer
173
+ 1. "rightGroup" - adding child components at the right of the Header/Footer
174
+
175
+ By default Header has the header icon and title on the left and minimize and close buttons on the right, and Footer has Download Transcript and Email Transcript buttons on the left and audio notification button on the right. These components can be overriden with [ComponentOverrides](#ComponentOverrides). In addition, other custom child components can be added to both Header and Footer by creating custom react nodes and adding them to attributes "leftGroup", "middleGroup" or "rightGroup" of "controlProps".
176
+
177
+ ```js
178
+ const buttonStyleProps: IButtonStyles = {
179
+ root: {
180
+ color: "blue",
181
+ height: 25,
182
+ width: 25,
183
+ }
184
+ };
185
+
186
+ const calendarIcon: IIconProps = { iconName: "Calendar" };
187
+ const calendarIconButton = <IconButton
188
+ key="calendarIconButton"
189
+ iconProps={calendarIcon}
190
+ styles={buttonStyleProps}
191
+ title="Calendar">
192
+ </IconButton>;
193
+
194
+ const emojiIcon: IIconProps = { iconName: "Emoji2" };
195
+ const emojiIconButton = <IconButton
196
+ key="emojiIconButton"
197
+ iconProps={emojiIcon}
198
+ styles={buttonStyleProps}
199
+ title="Sentiment">
200
+ </IconButton>;
201
+
202
+ const uploadIcon: IIconProps = { iconName: "Upload" };
203
+ const uploadIconButton = <IconButton
204
+ key="uploadIconButton"
205
+ iconProps={uploadIcon}
206
+ styles={buttonStyleProps}
207
+ title="Upload">
208
+ </IconButton>;
209
+
210
+ const customizedFooterProp: IFooterProps = {
211
+ controlProps: {
212
+ leftGroup: { children: [uploadIconButton] },
213
+ middleGroup: { children: [calendarIconButton] },
214
+ rightGroup: { children: [emojiIconButton] }
215
+ }
216
+ };
217
+ ```
218
+
219
+ > :pushpin: Note that [WebChat hooks](https://github.com/microsoft/BotFramework-WebChat/blob/main/docs/HOOKS.md) can also be used in any custom components.
220
+
221
+ ## See Also
222
+
223
+ [Telemetry](https://github.com/microsoft/omnichannel-chat-widget/blob/main/docs/Telemetry.md)\
224
+ [Create LCW widget with Webpack5 and TypeScript](https://github.com/microsoft/omnichannel-chat-widget/blob/main/docs/BuildingUsingWebpack5.md)\
225
+ [Omnichannel Features](https://github.com/microsoft/omnichannel-chat-widget/blob/main/docs/Features.md)\
226
+ [How to Add Visual Regression Tests](https://github.com/microsoft/omnichannel-chat-widget/blob/main/docs/VisualRegressionTestingGuide.md)\
227
+ [Security](https://github.com/microsoft/omnichannel-chat-widget/blob/main/SECURITY.md)
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.NewMessageNotificationSoundBase64 = void 0;
7
+ const NewMessageNotificationSoundBase64 = "data:audio/mpeg;base64,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0rlIUnJlGQpRBEtCcG6zF7JKWFk2UR4nALwGqXKtYouCKfOcxZdb9fN7v9kbuitnYwADd4/2tAAoy8zDRoQneMhEwy2AjKB6xlpUcdNxCu6ETljCEY10OdK5SFJyZRkKUQRLQnBusxeySlhZNlEeJwC8BqlyrWKLginznMWXW/Xze7/ZG7or2iIK3+1sgAD0p+KqlpFbwoDMvBAEYeenYGsCFzhe3JgqDoVYtsDhixLnXfEdFGhEzUwxBAHa6iF0LuT4W0tszkvwB6B6zNyJBPTrQY5lQX2or9G0RBW/2tkAAelPxVUtIreFAZl4IAjDz07A1gQucL25MFQdCrFtgcMWJc674joo0ImamGIIA7XUQuhdyfC2ltmcl+APQPWZuRIJ6daDHMqC+1FfoGh1ERN5n/60ADdOliyF5yshWlHYqWneWxIkiFcSW5M3M1jr9kXtq4oXDDg4NnSAJu//+5IAw4ACwBhTe1h6TlgDCm9rD0nKXF1Hre3pMUuLqPW9vSYzTSyNOJMxS1Ep2/O4IDFrapSwJOf3t+/1////+0OoiJvM//WgAbp0sWQvOVkK0o7FS07y2JEkQriS3Jm5msdfsi9tXFC4YcHBs6QBN3maaWRpxJmKWolO353BAYtbVKWBJz+9v3+vewkq/7WgAATSMoCBDCRFBICRMuIYuSmEBJ5IEi0XxA56mxJ5NP4QxJcvl3vxPpZKhXHO4sjg1l8TycewFQ8O1cAaq63HxBQutc2rewkq/7WgAATSMoCBDCRFBICRMuIYuSmEBJ5IEi0XxA56mxJ5NP4QxJcvl3vxPpZKhXHO4sjg1l8TycewFQ8O1cAaq63HxBQutc2o3rAD3+2oAAGCfSVgNCxBAe2IQlFNGND6kpgquVYxKhqRSFYdzwcp8CjjLtNxoUB6zJxGS31ErCAtFdHj0azBhSpL//////////////////////////////////////////////////////////////////////////////////////uSANeAAm0X1Hs4wkxKIvqPZxhJiWBjR63t6TEsDGj1vb0m///////////////////////////////////////////////////////////////////////////////3rAD3+2oAAGCfSVgNCxBAe2IQlFNGND6kpgquVYxKhqRSFYdzwcp8CjjLtNxoUB6zJxGS31ErCAtFdHj0azBhSpK+wkq/7WgAASwBygOhdwKivAdAqcHGACcKkzawRcdFR2M4nMZ4QYZ+6PWIc6FS2o+aWaDEa3GApbDuFhKYd0oovsJKv+1oAAEsAcoDoXcCorwHQKnBxgAnCpM2sEXHRUdjOJzGeEGGfuj1iHOhUtqPmlmgxGtxgKWw7hYSmHdKKL7CS9/tQAABvBYcsow9BRJcwBwEizwDX0IGnZz+5SnLOXTvf3jGoBVlsf3HKOXqki3XsvABktTfH//////////////////////////////////////////////////////////////////////////////////////////////////7kgD/gAXiGNJrGHpMQcMaTWMPSYgAWUen7ecxAAso9P285v///////////////////////////////////////////////////////////////////////////////////////////////////////////////77CS9/tQAABvBYcsow9BRJcwBwEizwDX0IGnZz+5SnLOXTvf3jGoBVlsf3HKOXqki3XsvABktTfGbwEG720AAAflahxWtTVMcKEEs5rjqxISAOjCL97vw5N1Pvc1XB0RRPCk5pspYKPVv0tgk1qHDSObwEG720AAAflahxWtTVMcKEEs5rjqxISAOjCL97vw5N1Pvc1XB0RRPCk5pspYKPVv0tgk1qHDSO/skrfbUAAAc4qRFcEADJh2wITwoFE7zfkoRwgxbHL/ztc3jyemuWVpHUDElKscnC5WHDSMdf/////////////////////////////////////////////////////////////////////////////////////////////////////+5IA/4AGqBdSa1hiTjiC6k1rDEnHCF1DrOWJOOELqHWcsSf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////f2SVvtqAAAOcVIiuCABkw7YEJ4UCid5vyUI4QYtjl/52ubx5PTXLK0jqBiSlWOThcrDhpGOpsgQrtJAAABl1nCY5dwwnawgLC3D2x/RGM+gi+FvDOV0lPg0qhm4yIhVKq8v93/pJ5UZmyBCu0kAAAGXWcJjl3DCdrCAsLcPbH9EYz6CL4W8M5XSU+DSqGbjIiFUqry/3f+knlRkv9CI29tAAAFHxlpwlZDA/QGQhIDxFQkBISBIe//2u1sfaioIgPA0hh7hV+/6kGiemv////////////////////////////////////////////////////////////////////////////////////////////////////////////uSAP+ABxUXUetZWk41ouo9aytJxlhbP6xhJzDLC2f1jCTm//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v9CI29tAAAFHxlpwlZDA/QGQhIDxFQkBISBIe//2u1sfaioIgPA0hh7hV+/6kGiemr/SlP9bQAABdoF1qAFywAQBQTMgVOB/XtIADaNjGdJnhDkv1cos1GpzWas8NPf9wkzV/pSn+toAAAu0C61AC5YAIAoJmQKnA/r2kABtGxjOkzwhyX6uUWajU5rNWeGnv+4SZom0KKusgAAAFplGchOwKjJy3AzyZ6qlw6ENtwfw/ftDKoJeJ9D6v53//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7kAD/gAdEFlFp+UnOMQLKLT8pOcY0WUes5Mc4xoso9ZyY5/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////m0KKusgAAAFplGchOwKjJy3AzyZ6qlw6ENtwfw/ftDKoJeJ9D6v52/0pXbWgAAAc7ADtq2CEKYgFOiCV6tsn6BQq+qG5vvO6pQpGJ639lHv9KV21oAAAHOwA7atghCmIBToglerbJ+gUKvqhub7zuqUKRiet/ZR3awSrJ4AAd0/jX1MAaFiAJKIDjhGj7gkcsHX+d5Uz57V1bT36Ylf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7kgD/gAg0DU/p+Rk+J4Gp/T8jJ8UAWUesZEcwoAso9YyI5v//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3awSrJ4AAd0/jX1MAaFiAJKIDjhGj7gkcsHX+d5Uz57V1bT36YlZdSlaLIAAABva4xDJr7qELgHoTpIQioeVVYCmcjLuL0FrhQjLqUrRZAAAAN7XGIZNfdQhcA9CdJCEVDyqrAUzkZdxegtcKESbUpTWiAAAAfSvOQg4JhIcxEm3DZXsiwvKT8v8zrsdX/p/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5IA/4AIghbOYxkRzCZC2cxjIjmEdCU/pecEsI6Ep/S84Jb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5tSlNaIAAAB9K85CDgmEhzESbcNleyLC8pPy/zOux1f+kIlgIocHFAAAA/fsh1j8dMLBDM4jPVMOCggkZrPrKtkOOCX6AiWAihwcUAAAD9+yHWPx0wsEMziM9Uw4KCCRms+sq2Q44JfoCskDN5gBwAAAP3jeSgDXYABRUdScti0IEw0XbxoI7P9P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////uSAP+ACKoJ0Gn5wSwhQToNPzglhHglMefnBKCPBKY8/" + "OCU//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////hWSBm8wA4AAAH7xvJQBrsAAoqOpOWxaECYaLt40Edn+lHhABJh3tAAAAp44rCHDmcsYd4yIYRK4zjpDNHYsu8T5ApaAhaJNTHOhd2iP5NRIeBYHI63gyPCACTDvaAAABTxxWEOHM5Yw7xkQwiVxnHSGaOxZd4nyBS0BC0SamOdC7tEfyaiQ8CwOR1vBjbtdYxXicOI0COLSEeEVIyiD5Kgv5kJdZZpUX/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7kgD/gAeNCE55+cEoIKEJzz84JQa8PS3s4ebo14elvZw83f////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////m3a6xivE4cRoEcWkI8IqRlEHyVBfzIS6yzSogAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+5IA/4ALFQlIoY95KhshKRQx7yVAAAEuAAAAIAAAJcAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw=";
8
+ exports.NewMessageNotificationSoundBase64 = NewMessageNotificationSoundBase64;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.WordIcon = exports.VisioIcon = exports.VideoIcon = exports.PowerpointIcon = exports.PDFIcon = exports.OneNoteIcon = exports.ImageIcon = exports.ExcelIcon = exports.BlankIcon = exports.AudioIcon = exports.ArchiveIcon = void 0;
7
+ const ArchiveIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDQ4IDIwNDgiIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjEycHgiPg0KPHBhdGggZD0iTTE3OTIgMHEyNyAwIDUwIDEwdDQwIDI3IDI4IDQxIDEwIDUwdjQ4MHEwIDQ1LTkgNzd0LTI0IDU4LTMxIDQ2LTMxIDQwLTIzIDQ0LTEwIDU1djk5MnEwIDI3LTEwIDUwdC0yNyA0MC00MSAyOC01MCAxMEgyNTZWMGgxNTM2ek02NDAgMTI4djM4NGgyNTZWMTI4SDY0MHptMTAyNCA4MDBxMC0zMS05LTU0dC0yNC00NC0zMS00MS0zMS00NS0yMy01OC0xMC03OFYxMjhoLTUxMnY1MTJINzY4djEyOEg2NDBWNjQwSDUxMlYxMjhIMzg0djE3OTJoMzg0di0xMjhoMTI4djEyOGg3NjhWOTI4em0xMjgtODAwaC0xMjh2NDgwcTAgMjQgNCA0MnQxMyAzMyAyMCAyOSAyNyAzMnExNS0xNyAyNi0zMXQyMC0zMCAxMy0zMyA1LTQyVjEyOHpNNjQwIDg5NmgxMjh2MTI4SDY0MFY4OTZ6bTAgMjU2aDEyOHYxMjhINjQwdi0xMjh6bTAgMjU2aDEyOHYxMjhINjQwdi0xMjh6bTEyOCAyNTZ2MTI4SDY0MHYtMTI4aDEyOHptMC03NjhWNzY4aDEyOHYxMjhINzY4em0wIDI1NnYtMTI4aDEyOHYxMjhINzY4em0wIDI1NnYtMTI4aDEyOHYxMjhINzY4em0wIDI1NnYtMTI4aDEyOHYxMjhINzY4eiIgLz4NCjwvc3ZnPg==";
8
+ exports.ArchiveIcon = ArchiveIcon;
9
+ const AudioIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik0xNzkyIDE0MDhxMCA2Mi0yOSAxMDl0LTc2IDgwLTEwNCA1MC0xMTEgMTdxLTU0IDAtMTExLTE3dC0xMDMtNDktNzYtODAtMzAtMTEwcTAtNjEgMjktMTA5dDc2LTgwIDEwNC01MCAxMTEtMTdxNTEgMCAxMDAgMTJ0OTIgMzlWMjI2TDc2OCA0NTB2MTIxNHEwIDYyLTI5IDEwOXQtNzYgODAtMTA0IDUwLTExMSAxN3EtNTQgMC0xMTEtMTd0LTEwMy00OS03Ni04MC0zMC0xMTBxMC02MSAyOS0xMDl0NzYtODAgMTA0LTUwIDExMS0xN3E1MSAwIDEwMCAxMnQ5MiAzOVYzNTBMMTc5MiA2MnYxMzQ2eiIgLz4NCjwvc3ZnPg==";
10
+ exports.AudioIcon = AudioIcon;
11
+ const BlankIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik01NDkgMGgxMjQzdjE3NTVsLTI5MyAyOTNIMjU2VjI5M0w1NDkgMHptMTExNSAxNzAxVjEyOEg2MDNMMzg0IDM0N3YxNTczaDEwNjFsMjE5LTIxOXoiIC8+DQo8L3N2Zz4=";
12
+ exports.BlankIcon = BlankIcon;
13
+ const ExcelIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik0yMDQ4IDQ3NXYxNDQ1cTAgMjctMTAgNTB0LTI3IDQwLTQxIDI4LTUwIDEwSDY0MHEtMjcgMC01MC0xMHQtNDAtMjctMjgtNDEtMTAtNTB2LTI1NkgxMTVxLTI0IDAtNDQtOXQtMzctMjUtMjUtMzYtOS00NVY2MjdxMC0yNCA5LTQ0dDI1LTM3IDM2LTI1IDQ1LTloMzk3VjEyOHEwLTI3IDEwLTUwdDI3LTQwIDQxLTI4IDUwLTEwaDkzM3EyNiAwIDQ5IDl0NDIgMjhsMzQ3IDM0N3ExOCAxOCAyNyA0MXQxMCA1MHptLTM4NC0yNTZ2MTY1aDE2NWwtMTY1LTE2NXpNMjYxIDE0MjRoMTg5cTItNCAxMi0yM3QyNS00NSAyOS01NSAyOS01MyAyMy00MSAxMC0xN3EyNyA1OSA2MCAxMTh0NjUgMTE2aDE4N2wtMjA5LTMzOSAyMDUtMzMzSDcwN3EtMzEgNTctNjAgMTE0dC02MyAxMTJxLTI5LTU3LTU3LTExM3QtNTctMTEzSDI3OWwxOTkgMzM1LTIxNyAzMzd6bTM3OSA0OTZoMTI4MFY1MTJoLTI1NnEtMjcgMC01MC0xMHQtNDAtMjctMjgtNDEtMTAtNTBWMTI4SDY0MHYzODRoMzk3cTI0IDAgNDQgOXQzNyAyNSAyNSAzNiA5IDQ1djkyMnEwIDI0LTkgNDR0LTI1IDM3LTM2IDI1LTQ1IDlINjQwdjI1NnptNjQwLTEwMjRWNzY4aDUxMnYxMjhoLTUxMnptMCAyNTZ2LTEyOGg1MTJ2MTI4aC01MTJ6bTAgMjU2di0xMjhoNTEydjEyOGgtNTEyeiIgLz4NCjwvc3ZnPg==";
14
+ exports.ExcelIcon = ExcelIcon;
15
+ const ImageIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik0yNTYgMTkyMGgxNTM2djEyOEgxMjhWMGgxMTE1bDU0OSA1NDl2OTFoLTY0MFYxMjhIMjU2djE3OTJ6TTEyODAgNTEyaDI5M2wtMjkzLTI5M3YyOTN6bTc2OCAyNTZ2MTAyNEg2NDBWNzY4aDE0MDh6TTc2OCA4OTZ2NDIxbDMyMC0zMTkgNDE2IDQxNiAxNjAtMTYwIDI1NiAyNTZWODk2SDc2OHptOTg3IDc2OGgxMzlsLTIzMC0yMzAtNjkgNzAgMTYwIDE2MHptLTk4NyAwaDgwNWwtNDg1LTQ4Ni0zMjAgMzIxdjE2NXptOTYwLTUxMnEtMjYgMC00NS0xOXQtMTktNDVxMC0yNiAxOS00NXQ0NS0xOXEyNiAwIDQ1IDE5dDE5IDQ1cTAgMjYtMTkgNDV0LTQ1IDE5eiIgLz4NCjwvc3ZnPg==";
16
+ exports.ImageIcon = ImageIcon;
17
+ const OneNoteIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik0xOTYzIDEyOHEzNSAwIDYwIDI1dDI1IDYwdjE2MjJxMCAzNS0yNSA2MHQtNjAgMjVINTk3cS0zNSAwLTYwLTI1dC0yNS02MHYtMjk5SDg1cS0zNSAwLTYwLTI1dC0yNS02MFY1OTdxMC0zNSAyNS02MHQ2MC0yNWg0MjdWMjEzcTAtMzUgMjUtNjB0NjAtMjVoMTM2NnpNMzg5IDkzOWwyNDIgNDIwaDE1MlY2ODlINjM1djQyOUw0MDIgNjg5SDI0MXY2NzBoMTQ4VjkzOXptMTUzMSA4NTN2LTI1NmgtMjU2djI1NmgyNTZ6bTAtMzg0di0yNTZoLTI1NnYyNTZoMjU2em0wLTM4NFY3NjhoLTI1NnYyNTZoMjU2em0wLTM4NFYyNTZINjQwdjI1NmgyOTlxMzUgMCA2MCAyNXQyNSA2MHY4NTRxMCAzNS0yNSA2MHQtNjAgMjVINjQwdjI1Nmg4OTZWNjQwaDM4NHoiIC8+DQo8L3N2Zz4=";
18
+ exports.OneNoteIcon = OneNoteIcon;
19
+ const PDFIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik0xOTIwIDE2NjRoLTEyOHYzODRIMTI4di0zODRIMFY2NDBoMTI4VjBoMTI0M2w0MjEgNDIxdjIxOWgxMjh2MTAyNHpNMTQwOCAzODRoMTY1bC0xNjUtMTY1djE2NXpNMjU2IDY0MGgxNDA4VjUxMmgtMzg0VjEyOEgyNTZ2NTEyem0xNDA4IDEwMjRIMjU2djI1NmgxNDA4di0yNTZ6bTEyOC04OTZIMTI4djc2OGgxNjY0Vjc2OHpNNDQ4IDg5NnE0MCAwIDc1IDE1dDYxIDQxIDQxIDYxIDE1IDc1cTAgNDAtMTUgNzV0LTQxIDYxLTYxIDQxLTc1IDE1aC02NHYxMjhIMjU2Vjg5NmgxOTJ6bTAgMjU2cTI2IDAgNDUtMTl0MTktNDVxMC0yNi0xOS00NXQtNDUtMTloLTY0djEyOGg2NHptNDQ4LTI1NnE1MyAwIDk5IDIwdDgyIDU1IDU1IDgxIDIwIDEwMHEwIDUzLTIwIDk5dC01NSA4Mi04MSA1NS0xMDAgMjBINzY4Vjg5NmgxMjh6bTAgMzg0cTI3IDAgNTAtMTB0NDAtMjcgMjgtNDEgMTAtNTBxMC0yNy0xMC01MHQtMjctNDAtNDEtMjgtNTAtMTB2MjU2em0zODQtMzg0aDMyMHYxMjhoLTE5MnYxMjhoMTkydjEyOGgtMTkydjEyOGgtMTI4Vjg5NnoiIC8+DQo8L3N2Zz4=";
20
+ exports.PDFIcon = PDFIcon;
21
+ const PowerpointIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik0yMDQ4IDQ3NXYxNDQ1cTAgMjctMTAgNTB0LTI3IDQwLTQxIDI4LTUwIDEwSDY0MHEtMjcgMC01MC0xMHQtNDAtMjctMjgtNDEtMTAtNTB2LTI1NkgxMTVxLTI0IDAtNDQtOXQtMzctMjUtMjUtMzYtOS00NVY2MjdxMC0yNCA5LTQ0dDI1LTM3IDM2LTI1IDQ1LTloMzk3VjEyOHEwLTI3IDEwLTUwdDI3LTQwIDQxLTI4IDUwLTEwaDkzM3EyNiAwIDQ5IDl0NDIgMjhsMzQ3IDM0N3ExOCAxOCAyNyA0MXQxMCA1MHptLTM4NC0yNTZ2MTY1aDE2NWwtMTY1LTE2NXpNMzY4IDc1MnY2NzJoMTUwdi0yMjZoMTAwcTUyIDAgOTctMTV0NzgtNDYgNTMtNzIgMjAtOTdxMC01Ni0xNy05N3QtNTAtNjctNzYtMzktOTctMTNIMzY4em0xNTUyIDExNjhWNTEyaC0yNTZxLTI3IDAtNTAtMTB0LTQwLTI3LTI4LTQxLTEwLTUwVjEyOEg2NDB2Mzg0aDM5N3EyNCAwIDQ0IDl0MzcgMjUgMjUgMzYgOSA0NXY5MjJxMCAyNC05IDQ0dC0yNSAzNy0zNiAyNS00NSA5SDY0MHYyNTZoMTI4MHpNMTUzNiA2NDBxNzkgMCAxNDkgMzB0MTIyIDgyIDgzIDEyMyAzMCAxNDloLTM4NFY2NDB6bS0xMjggMTI4djM4NGgzODRxMCA4MC0zMCAxNDl0LTgyIDEyMi0xMjMgODMtMTQ5IDMwcS0zMyAwLTY1LTZ0LTYzLTE4Vjc5MnEzMS0xMSA2My0xN3Q2NS03em0tODA0IDMwMGgtODZWODgzaDkwcTQ3IDAgNzQgMjB0MjcgNzBxMCA1Mi0yOCA3M3QtNzcgMjJ6IiAvPg0KPC9zdmc+";
22
+ exports.PowerpointIcon = PowerpointIcon;
23
+ const VideoIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik0wIDI1NmgyMDQ4djE0MDhIMFYyNTZ6bTI1NiAxMjgwdi0xMjhIMTI4djEyOGgxMjh6bTAtMjU2di0xMjhIMTI4djEyOGgxMjh6bTAtMjU2Vjg5NkgxMjh2MTI4aDEyOHptMC0yNTZWNjQwSDEyOHYxMjhoMTI4em0wLTI1NlYzODRIMTI4djEyOGgxMjh6bTE0MDggNzg2VjM4NEgzODR2ODIzbDQxMS01NDkgNzQxIDg3OC0zMjktNTU4IDEzNy0xMzcgMzIwIDQ1N3ptMjU2IDIzOHYtMTI4aC0xMjh2MTI4aDEyOHptMC0yNTZ2LTEyOGgtMTI4djEyOGgxMjh6bTAtMjU2Vjg5NmgtMTI4djEyOGgxMjh6bTAtMjU2VjY0MGgtMTI4djEyOGgxMjh6bTAtMjU2VjM4NGgtMTI4djEyOGgxMjh6IiAvPg0KPC9zdmc+";
24
+ exports.VideoIcon = VideoIcon;
25
+ const VisioIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik0yMDQ4IDQ3NXYxNDQ1cTAgMjctMTAgNTB0LTI3IDQwLTQxIDI4LTUwIDEwSDY0MHEtMjcgMC01MC0xMHQtNDAtMjctMjgtNDEtMTAtNTB2LTI1NkgxMTVxLTI0IDAtNDQtOXQtMzctMjUtMjUtMzYtOS00NVY2MjdxMC0yNCA5LTQ0dDI1LTM3IDM2LTI1IDQ1LTloMzk3VjEyOHEwLTI3IDEwLTUwdDI3LTQwIDQxLTI4IDUwLTEwaDkzM3EyNiAwIDQ5IDl0NDIgMjhsMzQ3IDM0N3ExOCAxOCAyNyA0MXQxMCA1MHptLTM4NC0yNTZ2MTY1aDE2NWwtMTY1LTE2NXpNNDkzIDE0MjRoMTYzbDI1NS02NzJINzQ1bC0xNDcgNDI3cS01IDE2LTEwIDMxdC0xMSAzMXEtNDEtMTIzLTgyLTI0NHQtODQtMjQ1SDI0MWwyNDggNjYyIDQgMTB6bTE0NyA0OTZoMTI4MFY1MTJoLTI1NnEtMjcgMC01MC0xMHQtNDAtMjctMjgtNDEtMTAtNTBWMTI4SDY0MHYzODRoMzk3cTI0IDAgNDQgOXQzNyAyNSAyNSAzNiA5IDQ1djkyMnEwIDI0LTkgNDR0LTI1IDM3LTM2IDI1LTQ1IDlINjQwdjI1NnptOTYwLTEyODBsMTkyIDE5Mi0xMjggMTI4djQ0OGgtMjU2djEyOGgtMTI4di0zODRoMTI4djEyOGgxMjhWOTYwbC0xMjgtMTI4IDE5Mi0xOTJ6IiAvPg0KPC9zdmc+";
26
+ exports.VisioIcon = VisioIcon;
27
+ const WordIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik0yMDQ4IDQ3NXYxNDQ1cTAgMjctMTAgNTB0LTI3IDQwLTQxIDI4LTUwIDEwSDY0MHEtMjcgMC01MC0xMHQtNDAtMjctMjgtNDEtMTAtNTB2LTI1NkgxMTVxLTI0IDAtNDQtOXQtMzctMjUtMjUtMzYtOS00NVY2MjdxMC0yNCA5LTQ0dDI1LTM3IDM2LTI1IDQ1LTloMzk3VjEyOHEwLTI3IDEwLTUwdDI3LTQwIDQxLTI4IDUwLTEwaDkzM3EyNiAwIDQ5IDl0NDIgMjhsMzQ3IDM0N3ExOCAxOCAyNyA0MXQxMCA1MHptLTM4NC0yNTZ2MTY1aDE2NWwtMTY1LTE2NXpNMzIwIDE0MjRoMTYxcTItOCA5LTQzdDE4LTgzIDIxLTEwMyAyMi0xMDEgMTYtNzYgOC0zMWw3IDMwcTcgMzAgMTcgNzd0MjMgMTAwIDIzIDEwMyAxOSA4NCAxMCA0M2gxNjBsMTQ4LTY3Mkg4MzRsLTgwIDQzOC0xMDAtNDM4SDUwMmwtOTYgNDQwLTg2LTQ0MEgxNzBsMTUwIDY3MnptMzIwIDQ5NmgxMjgwVjUxMmgtMjU2cS0yNyAwLTUwLTEwdC00MC0yNy0yOC00MS0xMC01MFYxMjhINjQwdjM4NGgzOTdxMjQgMCA0NCA5dDM3IDI1IDI1IDM2IDkgNDV2OTIycTAgMjQtOSA0NHQtMjUgMzctMzYgMjUtNDUgOUg2NDB2MjU2em02NDAtMTAyNFY3NjhoNTEydjEyOGgtNTEyem0wIDI1NnYtMTI4aDUxMnYxMjhoLTUxMnptMCAyNTZ2LTEyOGg1MTJ2MTI4aC01MTJ6IiAvPg0KPC9zdmc+";
28
+ exports.WordIcon = WordIcon;
@@ -17,8 +17,12 @@ _defineProperty(Constants, "systemMessageTag", "system");
17
17
 
18
18
  _defineProperty(Constants, "userMessageTag", "user");
19
19
 
20
+ _defineProperty(Constants, "historyMessageTag", "history");
21
+
20
22
  _defineProperty(Constants, "agentEndConversationMessageTag", "agentendconversation");
21
23
 
24
+ _defineProperty(Constants, "supervisorForceCloseMessageTag", "supervisorforceclosedconversation");
25
+
22
26
  _defineProperty(Constants, "receivedMessageClassName", "ms_lcw_webchat_received_message");
23
27
 
24
28
  _defineProperty(Constants, "sentMessageClassName", "ms_lcw_webchat_sent_message");
@@ -41,6 +45,8 @@ _defineProperty(Constants, "false", "false");
41
45
 
42
46
  _defineProperty(Constants, "maximumUnreadMessageCount", 99);
43
47
 
48
+ _defineProperty(Constants, "widgetStateDataKey", "LcwChatWidgetState");
49
+
44
50
  _defineProperty(Constants, "channelIdKey", "ChannelId-");
45
51
 
46
52
  _defineProperty(Constants, "ChannelId", "lcw");
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DataStoreManager = void 0;
7
+
8
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
+
10
+ class DataStoreManager {}
11
+
12
+ exports.DataStoreManager = DataStoreManager;
13
+
14
+ _defineProperty(DataStoreManager, "clientDataStore", void 0);
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.TelemetryEvent = exports.TelemetryConstants = exports.ScenarioType = exports.LogLevel = void 0;
6
+ exports.TelemetryEvent = exports.TelemetryConstants = exports.ScenarioType = exports.LogLevel = exports.BroadcastEvent = void 0;
7
7
  let ScenarioType;
8
8
  exports.ScenarioType = ScenarioType;
9
9
 
@@ -20,7 +20,8 @@ exports.ScenarioType = ScenarioType;
20
20
  ScenarioType["ACS_ADAPTER"] = "LCW_ACSAdapterEvents";
21
21
  })(ScenarioType || (exports.ScenarioType = ScenarioType = {}));
22
22
 
23
- let LogLevel;
23
+ let LogLevel; // Events used in certain functionalities that are not being logged
24
+
24
25
  exports.LogLevel = LogLevel;
25
26
 
26
27
  (function (LogLevel) {
@@ -30,6 +31,23 @@ exports.LogLevel = LogLevel;
30
31
  LogLevel["ERROR"] = "ERROR";
31
32
  })(LogLevel || (exports.LogLevel = LogLevel = {}));
32
33
 
34
+ let BroadcastEvent; // Events being logged
35
+
36
+ exports.BroadcastEvent = BroadcastEvent;
37
+
38
+ (function (BroadcastEvent) {
39
+ BroadcastEvent["LoadPostChatSurvey"] = "LoadPostChatSurvey";
40
+ BroadcastEvent["EndChat"] = "EndChat";
41
+ BroadcastEvent["NewMessageNotification"] = "NewMessageNotification";
42
+ BroadcastEvent["UnreadMessageCount"] = "UnreadMessageCount";
43
+ BroadcastEvent["ChatWidgetStateChanged"] = "ChatWidgetStateChanged";
44
+ BroadcastEvent["ProactiveChatStartChat"] = "ProactiveChatStartChat";
45
+ BroadcastEvent["ProactiveChatStartPopoutChat"] = "ProactiveChatStartPopoutChat";
46
+ BroadcastEvent["InvalidAdaptiveCardFormat"] = "InvalidAdaptiveCardFormat";
47
+ BroadcastEvent["NewMessageSent"] = "NewMessageSent";
48
+ BroadcastEvent["NewMessageReceived"] = "NewMessageReceived";
49
+ })(BroadcastEvent || (exports.BroadcastEvent = BroadcastEvent = {}));
50
+
33
51
  let TelemetryEvent;
34
52
  exports.TelemetryEvent = TelemetryEvent;
35
53
 
@@ -115,6 +133,8 @@ exports.TelemetryEvent = TelemetryEvent;
115
133
  TelemetryEvent["SendTypingIndicatorSucceeded"] = "SendTypingIndicatorSucceeded";
116
134
  TelemetryEvent["SendTypingIndicatorFailed"] = "SendTypingIndicatorFailed";
117
135
  TelemetryEvent["PreChatSurveyStartChatMethodFailed"] = "PreChatSurveyStartChatMethodFailed";
136
+ TelemetryEvent["ChatAlreadyTriggered"] = "ChatAlreadyTriggered";
137
+ TelemetryEvent["StartProactiveChatEventReceived"] = "StartProactiveChatEventReceived";
118
138
  TelemetryEvent["StartProactiveChatMethodFailed"] = "StartProactiveChatMethodFailed";
119
139
  TelemetryEvent["ProactiveChatAccepted"] = "ProactiveChatAccepted";
120
140
  TelemetryEvent["ProactiveChatRejected"] = "ProactiveChatRejected";
@@ -123,13 +143,13 @@ exports.TelemetryEvent = TelemetryEvent;
123
143
  TelemetryEvent["ReconnectChatContinueConversation"] = "ReconnectChatContinueConversation";
124
144
  TelemetryEvent["ReconnectChatStartNewConversation"] = "ReconnectChatStartNewConversation";
125
145
  TelemetryEvent["ReconnectChatMinimize"] = "ReconnectChatMinimize";
126
- TelemetryEvent["ChatWidgetStateChanged"] = "ChatWidgetStateChanged";
146
+ TelemetryEvent["MessageSent"] = "MessageSent";
147
+ TelemetryEvent["MessageReceived"] = "MessageReceived";
127
148
  })(TelemetryEvent || (exports.TelemetryEvent = TelemetryEvent = {}));
128
149
 
129
150
  class TelemetryConstants {
130
151
  static map(eventTypeOrScenarioType) {
131
152
  switch (eventTypeOrScenarioType) {
132
- case TelemetryEvent.StartChatSDKCall:
133
153
  case TelemetryEvent.ParseAdaptiveCardFailed:
134
154
  return ScenarioType.CONFIG_VALIDATION;
135
155
 
@@ -168,6 +188,7 @@ class TelemetryConstants {
168
188
  case TelemetryEvent.HeaderMinimizeButtonClicked:
169
189
  return ScenarioType.ACTIONS;
170
190
 
191
+ case TelemetryEvent.StartChatSDKCall:
171
192
  case TelemetryEvent.StartChatMethodException:
172
193
  case TelemetryEvent.CloseChatMethodException:
173
194
  case TelemetryEvent.StartProactiveChatMethodFailed:
@@ -13,6 +13,8 @@ var _ariaTelemetryLogger = require("./loggers/ariaTelemetryLogger");
13
13
 
14
14
  var _consoleLogger = require("./loggers/consoleLogger");
15
15
 
16
+ var _defaultAriaConfig = require("./defaultConfigs/defaultAriaConfig");
17
+
16
18
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
17
19
 
18
20
  class TelemetryTimers {}
@@ -45,25 +47,25 @@ const RegisterLoggers = () => {
45
47
  const registerLoggers = () => {
46
48
  var _TelemetryManager$Int, _TelemetryManager$Int2, _TelemetryManager$Int3, _TelemetryManager$Int4, _TelemetryManager$Int5, _TelemetryManager$Int6, _TelemetryManager$Int7, _TelemetryManager$Int8;
47
49
 
48
- if (!((_TelemetryManager$Int = TelemetryManager.InternalTelemetryData) !== null && _TelemetryManager$Int !== void 0 && (_TelemetryManager$Int2 = _TelemetryManager$Int.telemetryConfig) !== null && _TelemetryManager$Int2 !== void 0 && _TelemetryManager$Int2.disableConsoleLog) || !((_TelemetryManager$Int3 = TelemetryManager.InternalTelemetryData) !== null && _TelemetryManager$Int3 !== void 0 && (_TelemetryManager$Int4 = _TelemetryManager$Int3.telemetryConfig) !== null && _TelemetryManager$Int4 !== void 0 && _TelemetryManager$Int4.telemetryDisabled)) {
50
+ if (((_TelemetryManager$Int = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int === void 0 ? void 0 : (_TelemetryManager$Int2 = _TelemetryManager$Int.telemetryConfig) === null || _TelemetryManager$Int2 === void 0 ? void 0 : _TelemetryManager$Int2.disableConsoleLog) === false || ((_TelemetryManager$Int3 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int3 === void 0 ? void 0 : (_TelemetryManager$Int4 = _TelemetryManager$Int3.telemetryConfig) === null || _TelemetryManager$Int4 === void 0 ? void 0 : _TelemetryManager$Int4.telemetryDisabled) === false) {
49
51
  _omnichannelChatComponents.BroadcastService.getAnyMessage().subscribe(event => {
50
- if (event.payload && event.eventName !== _TelemetryConstants.TelemetryEvent.ChatWidgetStateChanged) {
52
+ if (event.payload && event.eventName in _TelemetryConstants.TelemetryEvent) {
51
53
  logTelemetry(event);
52
54
  }
53
55
  });
54
56
  }
55
57
 
56
- if (!((_TelemetryManager$Int5 = TelemetryManager.InternalTelemetryData) !== null && _TelemetryManager$Int5 !== void 0 && (_TelemetryManager$Int6 = _TelemetryManager$Int5.telemetryConfig) !== null && _TelemetryManager$Int6 !== void 0 && _TelemetryManager$Int6.disableConsoleLog)) {
58
+ if (((_TelemetryManager$Int5 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int5 === void 0 ? void 0 : (_TelemetryManager$Int6 = _TelemetryManager$Int5.telemetryConfig) === null || _TelemetryManager$Int6 === void 0 ? void 0 : _TelemetryManager$Int6.disableConsoleLog) === false) {
57
59
  loggers.push((0, _consoleLogger.consoleLogger)());
58
60
  }
59
61
 
60
- if (!((_TelemetryManager$Int7 = TelemetryManager.InternalTelemetryData) !== null && _TelemetryManager$Int7 !== void 0 && (_TelemetryManager$Int8 = _TelemetryManager$Int7.telemetryConfig) !== null && _TelemetryManager$Int8 !== void 0 && _TelemetryManager$Int8.telemetryDisabled)) {
62
+ if (((_TelemetryManager$Int7 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int7 === void 0 ? void 0 : (_TelemetryManager$Int8 = _TelemetryManager$Int7.telemetryConfig) === null || _TelemetryManager$Int8 === void 0 ? void 0 : _TelemetryManager$Int8.telemetryDisabled) === false) {
61
63
  var _TelemetryManager$Int9, _TelemetryManager$Int18, _TelemetryManager$Int19;
62
64
 
63
65
  if ((_TelemetryManager$Int9 = TelemetryManager.InternalTelemetryData) !== null && _TelemetryManager$Int9 !== void 0 && _TelemetryManager$Int9.ariaConfig) {
64
66
  var _TelemetryManager$Int10, _TelemetryManager$Int11, _TelemetryManager$Int12, _TelemetryManager$Int13, _TelemetryManager$Int14, _TelemetryManager$Int15, _TelemetryManager$Int16, _TelemetryManager$Int17;
65
67
 
66
- loggers.push((0, _ariaTelemetryLogger.ariaTelemetryLogger)(((_TelemetryManager$Int10 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int10 === void 0 ? void 0 : (_TelemetryManager$Int11 = _TelemetryManager$Int10.ariaConfig) === null || _TelemetryManager$Int11 === void 0 ? void 0 : _TelemetryManager$Int11.ariaTelemetryKey) ?? "", ((_TelemetryManager$Int12 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int12 === void 0 ? void 0 : (_TelemetryManager$Int13 = _TelemetryManager$Int12.ariaConfig) === null || _TelemetryManager$Int13 === void 0 ? void 0 : _TelemetryManager$Int13.disableCookieUsage) ?? false, ((_TelemetryManager$Int14 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int14 === void 0 ? void 0 : (_TelemetryManager$Int15 = _TelemetryManager$Int14.ariaConfig) === null || _TelemetryManager$Int15 === void 0 ? void 0 : _TelemetryManager$Int15.collectorUriForTelemetry) ?? "", ((_TelemetryManager$Int16 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int16 === void 0 ? void 0 : (_TelemetryManager$Int17 = _TelemetryManager$Int16.ariaConfig) === null || _TelemetryManager$Int17 === void 0 ? void 0 : _TelemetryManager$Int17.ariaTelemetryApplicationName) ?? "OmniChannelProd_Web"));
68
+ loggers.push((0, _ariaTelemetryLogger.ariaTelemetryLogger)(((_TelemetryManager$Int10 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int10 === void 0 ? void 0 : (_TelemetryManager$Int11 = _TelemetryManager$Int10.ariaConfig) === null || _TelemetryManager$Int11 === void 0 ? void 0 : _TelemetryManager$Int11.ariaTelemetryKey) ?? _defaultAriaConfig.defaultAriaConfig.ariaTelemetryKey, ((_TelemetryManager$Int12 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int12 === void 0 ? void 0 : (_TelemetryManager$Int13 = _TelemetryManager$Int12.ariaConfig) === null || _TelemetryManager$Int13 === void 0 ? void 0 : _TelemetryManager$Int13.disableCookieUsage) ?? _defaultAriaConfig.defaultAriaConfig.disableCookieUsage, ((_TelemetryManager$Int14 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int14 === void 0 ? void 0 : (_TelemetryManager$Int15 = _TelemetryManager$Int14.ariaConfig) === null || _TelemetryManager$Int15 === void 0 ? void 0 : _TelemetryManager$Int15.collectorUriForTelemetry) ?? _defaultAriaConfig.defaultAriaConfig.collectorUriForTelemetry, ((_TelemetryManager$Int16 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int16 === void 0 ? void 0 : (_TelemetryManager$Int17 = _TelemetryManager$Int16.ariaConfig) === null || _TelemetryManager$Int17 === void 0 ? void 0 : _TelemetryManager$Int17.ariaTelemetryApplicationName) ?? _defaultAriaConfig.defaultAriaConfig.ariaTelemetryApplicationName));
67
69
  }
68
70
 
69
71
  const customLoggers = (_TelemetryManager$Int18 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int18 === void 0 ? void 0 : (_TelemetryManager$Int19 = _TelemetryManager$Int18.telemetryConfig) === null || _TelemetryManager$Int19 === void 0 ? void 0 : _TelemetryManager$Int19.telemetryLoggers;
@@ -7,7 +7,7 @@ exports.defaultAriaConfig = void 0;
7
7
  const defaultAriaConfig = {
8
8
  collectorUriForTelemetry: "",
9
9
  ariaTelemetryKey: "c7655518acf1403f93ff6b9f77942f0a-d01a02fd-6b50-4de3-a566-62eda11f93bc-7083",
10
- ariaTelemetryApplicationName: "",
10
+ ariaTelemetryApplicationName: "D365_Omnichannel_Client_Public_Prod",
11
11
  disableCookieUsage: true
12
12
  };
13
13
  exports.defaultAriaConfig = defaultAriaConfig;
@@ -7,12 +7,12 @@ exports.default = exports.ConfirmationPaneStateful = void 0;
7
7
 
8
8
  var _TelemetryConstants = require("../../common/telemetry/TelemetryConstants");
9
9
 
10
+ var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
11
+
10
12
  var _react = _interopRequireWildcard(require("react"));
11
13
 
12
14
  var _utils = require("../../common/utils");
13
15
 
14
- var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
15
-
16
16
  var _Constants = require("../../common/Constants");
17
17
 
18
18
  var _ConversationState = require("../../contexts/common/ConversationState");
@@ -46,14 +46,14 @@ const ConfirmationPaneStateful = props => {
46
46
  var _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _state$domainStates$l4;
47
47
 
48
48
  const initialTabIndexMap = new Map();
49
- let elements = [];
49
+ let elements = []; // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
+
51
+ const chatSDK = (0, _useChatSDKStore.default)();
50
52
  const [state, dispatch] = (0, _useChatContextStore.default)();
51
53
  const {
52
- setPostChatContext,
53
54
  endChat
54
55
  } = props; // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
-
56
- const chatSDK = (0, _useChatSDKStore.default)(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
56
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
57
57
 
58
58
  const [adapter] = (0, _useChatAdapterStore.default)();
59
59
  const isPostChatEnabled = (_state$domainStates$l = state.domainStates.liveChatConfig) === null || _state$domainStates$l === void 0 ? void 0 : (_state$domainStates$l2 = _state$domainStates$l.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l2 === void 0 ? void 0 : _state$domainStates$l2.msdyn_postconversationsurveyenable;
@@ -62,7 +62,7 @@ const ConfirmationPaneStateful = props => {
62
62
  id: "oc-lcw-confirmation-pane",
63
63
  dir: state.domainStates.globalDir,
64
64
  onConfirm: async () => {
65
- _TelemetryHelper.TelemetryHelper.logConfigDataEvent(_TelemetryConstants.LogLevel.INFO, {
65
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
66
66
  Event: _TelemetryConstants.TelemetryEvent.ConfirmationConfirmButtonClicked,
67
67
  Description: "Confirmation pane Confirm button clicked"
68
68
  });
@@ -73,39 +73,28 @@ const ConfirmationPaneStateful = props => {
73
73
  });
74
74
 
75
75
  try {
76
- //ToDo: End Chat before PostChat Context and conversation Details is set once the getPostChatContext request ID fetch issue is fixed
77
- const conversationDetails = await chatSDK.getConversationDetails(); // ToDo: Replace with CanRenderPostChat once available in conversationDetails API response
78
-
79
- if (isPostChatEnabled === "true" && postChatSurveyMode === _PostChatSurveyMode.PostChatSurveyMode.Embed && conversationDetails.canRenderPostChat === _Constants.Constants.truePascal) {
80
- dispatch({
81
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_SHOULD_SHOW_POST_CHAT,
82
- payload: true
83
- });
84
- dispatch({
85
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
86
- payload: _ConversationState.ConversationState.Loading
87
- });
88
- await setPostChatContext();
89
-
90
- if (state.domainStates.postChatContext) {
76
+ // check agent has joined conversation
77
+ const conversationDetails = await chatSDK.getConversationDetails();
78
+
79
+ if (isPostChatEnabled === "true" && (conversationDetails === null || conversationDetails === void 0 ? void 0 : conversationDetails.canRenderPostChat) === _Constants.Constants.truePascal) {
80
+ if (postChatSurveyMode === _PostChatSurveyMode.PostChatSurveyMode.Embed) {
81
+ const loadPostChatEvent = {
82
+ eventName: _TelemetryConstants.BroadcastEvent.LoadPostChatSurvey
83
+ };
84
+
85
+ _omnichannelChatComponents.BroadcastService.postMessage(loadPostChatEvent);
86
+ } else if (postChatSurveyMode === _PostChatSurveyMode.PostChatSurveyMode.Link) {
87
+ const skipEndChatSDK = false;
88
+ const skipCloseChat = true;
89
+ await endChat(adapter, skipEndChatSDK, skipCloseChat);
91
90
  dispatch({
92
91
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
93
- payload: _ConversationState.ConversationState.Postchat
92
+ payload: _ConversationState.ConversationState.InActive
94
93
  });
95
94
  }
96
95
  } else {
97
96
  (0, _utils.setTabIndices)(elements, initialTabIndexMap, true);
98
-
99
- try {
100
- await endChat(adapter);
101
- } catch (error) {
102
- _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
103
- Event: _TelemetryConstants.TelemetryEvent.CloseChatMethodException,
104
- ExceptionDetails: {
105
- exception: `Failed to endChat: ${error}`
106
- }
107
- });
108
- }
97
+ await endChat(adapter);
109
98
  }
110
99
  } catch (ex) {
111
100
  _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
@@ -119,7 +108,7 @@ const ConfirmationPaneStateful = props => {
119
108
  }
120
109
  },
121
110
  onCancel: () => {
122
- _TelemetryHelper.TelemetryHelper.logConfigDataEvent(_TelemetryConstants.LogLevel.INFO, {
111
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
123
112
  Event: _TelemetryConstants.TelemetryEvent.ConfirmationCancelButtonClicked,
124
113
  Description: "Confirmation pane Cancel button clicked."
125
114
  });