@microsoft/omnichannel-chat-sdk 1.0.0 → 1.0.1-main.2d305f2

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 (39) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +48 -17
  3. package/lib/OmnichannelChatSDK.d.ts +6 -3
  4. package/lib/OmnichannelChatSDK.js +231 -99
  5. package/lib/OmnichannelChatSDK.js.map +1 -1
  6. package/lib/config/settings.d.ts +1 -1
  7. package/lib/config/settings.js +1 -1
  8. package/lib/config/settings.js.map +1 -1
  9. package/lib/core/ChatConfig.d.ts +4 -0
  10. package/lib/core/PostChatContext.d.ts +5 -0
  11. package/lib/core/PostChatContext.js +3 -0
  12. package/lib/core/PostChatContext.js.map +1 -0
  13. package/lib/core/messaging/ACSClient.js +1 -1
  14. package/lib/core/messaging/ACSClient.js.map +1 -1
  15. package/lib/external/ACSAdapter/createFormatEgressTagsMiddleware.d.ts +2 -0
  16. package/lib/external/ACSAdapter/createFormatEgressTagsMiddleware.js +31 -0
  17. package/lib/external/ACSAdapter/createFormatEgressTagsMiddleware.js.map +1 -0
  18. package/lib/external/ACSAdapter/createFormatIngressTagsMiddleware.d.ts +2 -0
  19. package/lib/external/ACSAdapter/createFormatIngressTagsMiddleware.js +25 -0
  20. package/lib/external/ACSAdapter/createFormatIngressTagsMiddleware.js.map +1 -0
  21. package/lib/telemetry/AriaTelemetry.js +5 -0
  22. package/lib/telemetry/AriaTelemetry.js.map +1 -1
  23. package/lib/telemetry/ScenarioMarker.d.ts +2 -0
  24. package/lib/telemetry/ScenarioMarker.js +7 -3
  25. package/lib/telemetry/ScenarioMarker.js.map +1 -1
  26. package/lib/telemetry/TelemetryEvent.d.ts +2 -1
  27. package/lib/telemetry/TelemetryEvent.js +1 -0
  28. package/lib/telemetry/TelemetryEvent.js.map +1 -1
  29. package/lib/tsconfig.tsbuildinfo +1017 -1305
  30. package/lib/utils/WebUtils.d.ts +3 -1
  31. package/lib/utils/WebUtils.js +8 -2
  32. package/lib/utils/WebUtils.js.map +1 -1
  33. package/lib/utils/locale.d.ts +3 -0
  34. package/lib/utils/locale.js +60 -0
  35. package/lib/utils/locale.js.map +1 -0
  36. package/lib/utils/loggers.d.ts +8 -0
  37. package/lib/utils/loggers.js +24 -0
  38. package/lib/utils/loggers.js.map +1 -1
  39. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -3,6 +3,26 @@ All notable changes to this project will be documented in this file.
3
3
 
4
4
  ## [Unreleased]
5
5
 
6
+ ### Added
7
+ - Add `getPostChatSurveyContext` API method
8
+ - Add `GetPostChatSurveyContext` telemetry event
9
+ - Add `widgetId` & `clientMessageId` as metadata on sending message
10
+ - Update `ChatConfig` interface with `LiveChatVersion`, `allowedFileExtensions` & `maxUploadFileSize` properties
11
+ - Add ability to automatically detect locale from chat config
12
+ - Add `runtimeId` attribute in `OmnichannelChatSDK` & `ChatSDKRuntimeId` field in telemetry
13
+ - Add ability to automatically pass locale from chat config on calling `ChatSDK.emailLiveChatTranscript()`
14
+
15
+ ### Fix
16
+ - Add `acs_webchat-chat-adapter` middlewares to format `channelData.tags`
17
+ - Skip `session init` call on existing conversation
18
+ - Fix `chat reconnect` not ending the conversation on calling `ChatSDK.endChat()`
19
+ - Fix on messaging client not sending heartbeat on new conversations subsequent to the first conversation
20
+
21
+ ### Changed
22
+ - README: added examples on usages of the post chat APIs.
23
+ - Uptake [@azure/communication-chat@1.1.1](https://www.npmjs.com/package/@azure/communication-chat/v/1.1.1)
24
+ - Uptake [acs_webchat-chat-adapter@0.0.35-beta.2](https://unpkg.com/acs_webchat-chat-adapter@0.0.35-beta.2/dist/chat-adapter.js)
25
+
6
26
  ## [1.0.0] - 2021-10-08
7
27
  ### Added
8
28
  - Add `GetAuthToken` & `GetPreChatSurvey` telemetry events
package/README.md CHANGED
@@ -14,7 +14,7 @@ Please make sure you have a chat widget configured before using this package or
14
14
  - [Installation on React Native](#installation-on-react-native)
15
15
  - [API Reference](#api-reference)
16
16
  - [API Examples](#api-examples)
17
- - [Sample Apps](samples/)
17
+ - [Sample Apps](https://github.com/microsoft/omnichannel-chat-sdk-samples)
18
18
  - [Common Scenarios](#common-scenarios)
19
19
  - [Feature Comparisons](#feature-comparisons)
20
20
  - [Telemetry](#telemetry)
@@ -35,14 +35,12 @@ Omnichannel offers an live chat widget (LCW) by default. You can use the Chat SD
35
35
  | Bring Your Own Widget | ❌ | ✔ | |
36
36
  | Web Support | ✔ | ✔ |
37
37
  | React Native Support | ❌ | ✔ |
38
- | Escalation to Voice & Video | ✔ | Web Only |
39
- | Co-browse | ✔ | Web Only |
40
- | Screen Sharing | ✔ | Web Only |
38
+ | Escalation to Voice & Video | ✔ | | Only supported on Web |
39
+ | Co-browse | ✔ | 3rd party add-on | Only supported on Web |
40
+ | Screen Sharing | ✔ | 3rd party add-on | Only supported on Web |
41
41
  | Authenticated Chat | ✔ | ✔ |
42
42
  | Pre-chat Survey | ✔ | ✔ |
43
- | Post-chat Survey | ✔ | |
44
- | Queue Position | ✔ | ✔ |
45
- | Average Wait Time | ✔ | ✔ |
43
+ | Post-chat Survey | ✔ | |
46
44
  | Download Transcript | ✔ | ✔ |
47
45
  | Email Transcript | ✔ | ✔ |
48
46
  | Data Masking | ✔ | ✔ |
@@ -52,6 +50,8 @@ Omnichannel offers an live chat widget (LCW) by default. You can use the Chat SD
52
50
  | Persistent Chat | ✔ | ✔ |
53
51
  | Chat Reconnect | ✔ | ✔ |
54
52
  | Operating Hours | ✔ | ✔ |
53
+ | Queue Position | ✔ | ✔ | No SDK method. Handled as *system message* |
54
+ | Average Wait Time | ✔ | ✔ | No SDK method. Handled as *system message* |
55
55
 
56
56
  **\*** BYOI: Bring Your Own Implementation
57
57
 
@@ -65,7 +65,26 @@ Omnichannel offers an live chat widget (LCW) by default. You can use the Chat SD
65
65
 
66
66
  The following steps will be required to run Omnichannel Chat SDK on React Native:
67
67
 
68
- 1. Run `npm install node-libs-react-native --save-dev`
68
+ 1. Install `node-libs-react-native`
69
+ ```
70
+ npm install node-libs-react-native --save-dev
71
+ ```
72
+
73
+ 1. Install `react-native-randomBytes`
74
+ ```
75
+ npm install react-native-randombytes --save-dev
76
+ ```
77
+
78
+ 1. Install `react-native-get-random-values`
79
+ ```
80
+ npm install react-native-get-random-values --save-dev
81
+ ```
82
+
83
+ 1. Install `react-native-url-polyfill`
84
+ ```
85
+ npm install react-native-url-polyfill --save-dev
86
+ ```
87
+
69
88
  1. Update *metro.config.js* to use React Native compatible Node Core modules
70
89
  ```ts
71
90
  module.exports = {
@@ -80,14 +99,11 @@ The following steps will be required to run Omnichannel Chat SDK on React Native
80
99
  };
81
100
  ```
82
101
 
83
- 1. Import 'node-libs-react-native/globals' on top of your entry point file
102
+ 1. Add following *import* on top of your entry point file
84
103
  ```ts
85
104
  import 'node-libs-react-native/globals';
86
- ```
87
-
88
- 1. Install `react-native-randomBytes`
89
- ```
90
- npm install react-native-randombytes --save-dev
105
+ import 'react-native-get-random-values';
106
+ import 'react-native-url-polyfill';
91
107
  ```
92
108
 
93
109
  ## API Reference
@@ -116,7 +132,8 @@ The following steps will be required to run Omnichannel Chat SDK on React Native
116
132
  | OmnichannelChatSDK.uploadFileAttachment() | Send file attachment | |
117
133
  | OmnichannelChatSDK.downloadFileAttachment() | Download file attachment | |
118
134
  | OmnichannelChatSDK.createChatAdapter() | Get IC3Adapter | **Web only** |
119
- | OmnichannelChatSDK.getVoiceVideoCalling() | Get VoiceVideoCall SDK for Escalation to Voice & Video| **Web only** |
135
+ | OmnichannelChatSDK.getVoiceVideoCalling() | Get VoiceVideoCall SDK for Escalation to Voice & Video | **Web only** |
136
+ | OmnichannelChatSDK.getPostChatSurveyContext() | Get post chat survey link, survey locale, and whether an agent has joined the survey | |
120
137
 
121
138
  ## API examples
122
139
 
@@ -194,6 +211,21 @@ The following steps will be required to run Omnichannel Chat SDK on React Native
194
211
  const preChatSurvey = await getPreChatSurvey(parseToJSON); // Adaptive Cards payload data as string
195
212
  ```
196
213
 
214
+ ### Get PostChat Survey
215
+ ```ts
216
+ try {
217
+ const context = await chatSDK.getPostChatSurveyContext();
218
+ if (context.participantJoined) { // participantJoined will be true if an agent has joined the conversation, or a bot has joined the conversation and the bot survey flag has been turned on on the admin side.
219
+ // formsProLocale is the default language you have set on the CustomerVoice portal. You can override this url parameter with any locale that CustomerVoice supports.
220
+ // If "&lang=" is not set on the url, the locale will be English.
221
+ const linkToSend = context.surveyInviteLink + "&lang=" + context.formsProLocale;
222
+ // This link is accessible and will redirect to the survey page. Use it as you see fit.
223
+ }
224
+ } catch (ex) {
225
+ // If the post chat should not be shown by any reason (e.g. post chat is not enabled), promise will be rejected.
226
+ }
227
+ ```
228
+
197
229
  ### Start Chat
198
230
  ```ts
199
231
  const customContext = {
@@ -303,8 +335,7 @@ The following steps will be required to run Omnichannel Chat SDK on React Native
303
335
  ```ts
304
336
  const body = {
305
337
  emailAddress: 'contoso@microsoft.com',
306
- attachmentMessage: 'Attachment Message',
307
- locale: 'en-us'
338
+ attachmentMessage: 'Attachment Message'
308
339
  };
309
340
  await chatSDK.emailLiveChatTranscript(body);
310
341
  ```
@@ -1,11 +1,11 @@
1
1
  import ACSClient from "./core/messaging/ACSClient";
2
+ import { ParticipantsRemovedEvent } from '@azure/communication-signaling';
2
3
  import ChatConfig from "./core/ChatConfig";
3
4
  import ChatReconnectContext from "./core/ChatReconnectContext";
4
5
  import ChatReconnectOptionalParams from "./core/ChatReconnectOptionalParams";
5
6
  import ChatSDKConfig from "./core/ChatSDKConfig";
6
7
  import ChatSDKMessage from "./core/messaging/ChatSDKMessage";
7
8
  import ChatTranscriptBody from "./core/ChatTranscriptBody";
8
- import { ParticipantsRemovedEvent } from '@azure/communication-signaling';
9
9
  import FileMetadata from "@microsoft/omnichannel-amsclient/lib/FileMetadata";
10
10
  import FramedClient from "@microsoft/omnichannel-amsclient/lib/FramedClient";
11
11
  import FramedlessClient from "@microsoft/omnichannel-amsclient/lib/FramedlessClient";
@@ -13,16 +13,17 @@ import IChatToken from "./external/IC3Adapter/IChatToken";
13
13
  import IFileInfo from "@microsoft/omnichannel-ic3core/lib/interfaces/IFileInfo";
14
14
  import IFileMetadata from "@microsoft/omnichannel-ic3core/lib/model/IFileMetadata";
15
15
  import IMessage from "@microsoft/omnichannel-ic3core/lib/model/IMessage";
16
- import OmnichannelConfig from "./core/OmnichannelConfig";
17
16
  import IRawMessage from "@microsoft/omnichannel-ic3core/lib/model/IRawMessage";
18
17
  import IRawThread from "@microsoft/omnichannel-ic3core/lib/interfaces/IRawThread";
19
18
  import LiveChatContext from "./core/LiveChatContext";
20
19
  import LiveWorkItemDetails from "./core/LiveWorkItemDetails";
21
- import OnNewMessageOptionalParams from "./core/messaging/OnNewMessageOptionalParams";
20
+ import OmnichannelConfig from "./core/OmnichannelConfig";
22
21
  import OmnichannelMessage from "./core/messaging/OmnichannelMessage";
22
+ import OnNewMessageOptionalParams from "./core/messaging/OnNewMessageOptionalParams";
23
23
  import StartChatOptionalParams from "./core/StartChatOptionalParams";
24
24
  declare class OmnichannelChatSDK {
25
25
  private debug;
26
+ runtimeId: string;
26
27
  OCSDKProvider: unknown;
27
28
  IC3SDKProvider: unknown;
28
29
  OCClient: any;
@@ -32,6 +33,7 @@ declare class OmnichannelChatSDK {
32
33
  omnichannelConfig: OmnichannelConfig;
33
34
  chatSDKConfig: ChatSDKConfig;
34
35
  isInitialized: boolean;
36
+ localeId: string;
35
37
  requestId: string;
36
38
  private chatToken;
37
39
  private liveChatConfig;
@@ -81,6 +83,7 @@ declare class OmnichannelChatSDK {
81
83
  getLiveChatTranscript(): Promise<any>;
82
84
  createChatAdapter(protocol?: string | null): Promise<unknown>;
83
85
  getVoiceVideoCalling(params?: any): Promise<any>;
86
+ getPostChatSurveyContext(): Promise<any>;
84
87
  private getIC3Client;
85
88
  private getChatConfig;
86
89
  private resolveIC3ClientUrl;