@microsoft/omnichannel-chat-sdk 1.0.1-main.8af1160 → 1.0.1-main.ac4df50
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.
- package/CHANGELOG.md +16 -0
- package/README.md +47 -15
- package/lib/OmnichannelChatSDK.d.ts +5 -3
- package/lib/OmnichannelChatSDK.js +128 -22
- package/lib/OmnichannelChatSDK.js.map +1 -1
- package/lib/config/settings.d.ts +1 -1
- package/lib/config/settings.js +1 -1
- package/lib/config/settings.js.map +1 -1
- package/lib/core/ChatConfig.d.ts +4 -0
- package/lib/core/PostChatContext.d.ts +5 -0
- package/lib/core/PostChatContext.js +3 -0
- package/lib/core/PostChatContext.js.map +1 -0
- package/lib/core/messaging/ACSClient.js +1 -1
- package/lib/core/messaging/ACSClient.js.map +1 -1
- package/lib/external/ACSAdapter/createFormatEgressTagsMiddleware.d.ts +2 -0
- package/lib/external/ACSAdapter/createFormatEgressTagsMiddleware.js +31 -0
- package/lib/external/ACSAdapter/createFormatEgressTagsMiddleware.js.map +1 -0
- package/lib/external/ACSAdapter/createFormatIngressTagsMiddleware.d.ts +2 -0
- package/lib/external/ACSAdapter/createFormatIngressTagsMiddleware.js +25 -0
- package/lib/external/ACSAdapter/createFormatIngressTagsMiddleware.js.map +1 -0
- package/lib/telemetry/TelemetryEvent.d.ts +2 -1
- package/lib/telemetry/TelemetryEvent.js +1 -0
- package/lib/telemetry/TelemetryEvent.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1014 -1302
- package/lib/utils/locale.d.ts +3 -0
- package/lib/utils/locale.js +60 -0
- package/lib/utils/locale.js.map +1 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
@@ -3,6 +3,22 @@ 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
|
+
|
13
|
+
### Fix
|
14
|
+
- Add `acs_webchat-chat-adapter` middlewares to format `channelData.tags`
|
15
|
+
- Skip `session init` call on existing conversation
|
16
|
+
|
17
|
+
### Changed
|
18
|
+
- README: added examples on usages of the post chat APIs.
|
19
|
+
- Uptake [@azure/communication-chat@1.1.1](https://www.npmjs.com/package/@azure/communication-chat/v/1.1.1)
|
20
|
+
- 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)
|
21
|
+
|
6
22
|
## [1.0.0] - 2021-10-08
|
7
23
|
### Added
|
8
24
|
- 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 | ✔ |
|
39
|
-
| Co-browse | ✔ |
|
40
|
-
| Screen Sharing | ✔ |
|
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.
|
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.
|
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 = {
|
@@ -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,13 +13,13 @@ 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
|
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;
|
@@ -32,6 +32,7 @@ declare class OmnichannelChatSDK {
|
|
32
32
|
omnichannelConfig: OmnichannelConfig;
|
33
33
|
chatSDKConfig: ChatSDKConfig;
|
34
34
|
isInitialized: boolean;
|
35
|
+
localeId: string;
|
35
36
|
requestId: string;
|
36
37
|
private chatToken;
|
37
38
|
private liveChatConfig;
|
@@ -81,6 +82,7 @@ declare class OmnichannelChatSDK {
|
|
81
82
|
getLiveChatTranscript(): Promise<any>;
|
82
83
|
createChatAdapter(protocol?: string | null): Promise<unknown>;
|
83
84
|
getVoiceVideoCalling(params?: any): Promise<any>;
|
85
|
+
getPostChatSurveyContext(): Promise<any>;
|
84
86
|
private getIC3Client;
|
85
87
|
private getChatConfig;
|
86
88
|
private resolveIC3ClientUrl;
|
@@ -55,37 +55,40 @@ var __spreadArrays = (this && this.__spreadArrays) || function () {
|
|
55
55
|
return r;
|
56
56
|
};
|
57
57
|
Object.defineProperty(exports, "__esModule", { value: true });
|
58
|
+
var loggers_1 = require("./utils/loggers");
|
58
59
|
var ACSClient_1 = require("./core/messaging/ACSClient");
|
60
|
+
var ocsdk_1 = require("@microsoft/ocsdk");
|
61
|
+
var platform_1 = require("./utils/platform");
|
62
|
+
var SDKConfigValidators_1 = require("./validators/SDKConfigValidators");
|
59
63
|
var ACSParticipantDisplayName_1 = require("./core/messaging/ACSParticipantDisplayName");
|
60
64
|
var AMSFileManager_1 = require("./external/ACSAdapter/AMSFileManager");
|
61
65
|
var CallingOptionsOptionSetNumber_1 = require("./core/CallingOptionsOptionSetNumber");
|
62
66
|
var ChatAdapterProtocols_1 = require("./core/messaging/ChatAdapterProtocols");
|
63
67
|
var ConversationMode_1 = require("./core/ConversationMode");
|
64
|
-
var
|
65
|
-
var
|
66
|
-
var createOmnichannelMessage_1 = require("./utils/createOmnichannelMessage");
|
67
|
-
var createTelemetry_1 = require("./utils/createTelemetry");
|
68
|
-
var createVoiceVideoCalling_1 = require("./api/createVoiceVideoCalling");
|
69
|
-
var MessageTags_1 = require("./core/messaging/MessageTags");
|
68
|
+
var createFormatEgressTagsMiddleware_1 = require("./external/ACSAdapter/createFormatEgressTagsMiddleware");
|
69
|
+
var createFormatIngressTagsMiddleware_1 = require("./external/ACSAdapter/createFormatIngressTagsMiddleware");
|
70
70
|
var DeliveryMode_1 = require("@microsoft/omnichannel-ic3core/lib/model/DeliveryMode");
|
71
71
|
var FileSharingProtocolType_1 = require("@microsoft/omnichannel-ic3core/lib/model/FileSharingProtocolType");
|
72
72
|
var HostType_1 = require("@microsoft/omnichannel-ic3core/lib/interfaces/HostType");
|
73
|
-
var
|
74
|
-
var libraries_1 = require("./utils/libraries");
|
75
|
-
var LiveWorkItemState_1 = require("./core/LiveWorkItemState");
|
73
|
+
var omnichannel_ic3core_1 = require("@microsoft/omnichannel-ic3core");
|
76
74
|
var LiveChatVersion_1 = require("./core/LiveChatVersion");
|
77
|
-
var
|
75
|
+
var LiveWorkItemState_1 = require("./core/LiveWorkItemState");
|
78
76
|
var MessageContentType_1 = require("@microsoft/omnichannel-ic3core/lib/model/MessageContentType");
|
79
77
|
var MessageType_1 = require("@microsoft/omnichannel-ic3core/lib/model/MessageType");
|
80
78
|
var PersonType_1 = require("@microsoft/omnichannel-ic3core/lib/model/PersonType");
|
81
|
-
var platform_1 = require("./utils/platform");
|
82
79
|
var ProtocoleType_1 = require("@microsoft/omnichannel-ic3core/lib/interfaces/ProtocoleType");
|
83
80
|
var ScenarioMarker_1 = require("./telemetry/ScenarioMarker");
|
84
|
-
var ocsdk_1 = require("@microsoft/ocsdk");
|
85
|
-
var omnichannel_ic3core_1 = require("@microsoft/omnichannel-ic3core");
|
86
81
|
var TelemetryEvent_1 = require("./telemetry/TelemetryEvent");
|
82
|
+
var omnichannel_amsclient_1 = require("@microsoft/omnichannel-amsclient");
|
83
|
+
var createOmnichannelMessage_1 = require("./utils/createOmnichannelMessage");
|
84
|
+
var createTelemetry_1 = require("./utils/createTelemetry");
|
85
|
+
var createVoiceVideoCalling_1 = require("./api/createVoiceVideoCalling");
|
86
|
+
var MessageTags_1 = require("./core/messaging/MessageTags");
|
87
|
+
var locale_1 = require("./utils/locale");
|
88
|
+
var utilities_1 = require("./utils/utilities");
|
89
|
+
var libraries_1 = require("./utils/libraries");
|
90
|
+
var WebUtils_1 = require("./utils/WebUtils");
|
87
91
|
var OmnichannelConfigValidator_1 = require("./validators/OmnichannelConfigValidator");
|
88
|
-
var SDKConfigValidators_1 = require("./validators/SDKConfigValidators");
|
89
92
|
var OmnichannelChatSDK = /** @class */ (function () {
|
90
93
|
function OmnichannelChatSDK(omnichannelConfig, chatSDKConfig) {
|
91
94
|
if (chatSDKConfig === void 0) { chatSDKConfig = SDKConfigValidators_1.defaultChatSDKConfig; }
|
@@ -111,6 +114,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
111
114
|
);
|
112
115
|
this.isInitialized = false;
|
113
116
|
this.liveChatVersion = LiveChatVersion_1.default.V1;
|
117
|
+
this.localeId = locale_1.defaultLocaleId;
|
114
118
|
this.requestId = ocsdk_1.uuidv4();
|
115
119
|
this.chatToken = {};
|
116
120
|
this.liveChatConfig = {};
|
@@ -323,7 +327,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
323
327
|
};
|
324
328
|
throw Error(exceptionDetails.response);
|
325
329
|
case 4:
|
326
|
-
if (!(optionalParams.liveChatContext && !this.
|
330
|
+
if (!(optionalParams.liveChatContext && !this.reconnectId)) return [3 /*break*/, 6];
|
327
331
|
this.chatToken = optionalParams.liveChatContext.chatToken || {};
|
328
332
|
this.requestId = optionalParams.liveChatContext.requestId || ocsdk_1.uuidv4();
|
329
333
|
return [4 /*yield*/, this.getConversationDetails()];
|
@@ -368,6 +372,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
368
372
|
sessionInitOptionalParams = {
|
369
373
|
initContext: {}
|
370
374
|
};
|
375
|
+
sessionInitOptionalParams.initContext.locale = locale_1.getLocaleStringFromId(this.localeId);
|
371
376
|
if (this.isPersistentChat && !((_g = this.chatSDKConfig.persistentChat) === null || _g === void 0 ? void 0 : _g.disable)) {
|
372
377
|
sessionInitOptionalParams.reconnectId = this.reconnectId;
|
373
378
|
}
|
@@ -399,6 +404,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
399
404
|
if (this.authenticatedUserToken) {
|
400
405
|
sessionInitOptionalParams.authenticatedUserToken = this.authenticatedUserToken;
|
401
406
|
}
|
407
|
+
if (!!optionalParams.liveChatContext) return [3 /*break*/, 12];
|
402
408
|
_s.label = 9;
|
403
409
|
case 9:
|
404
410
|
_s.trys.push([9, 11, , 12]);
|
@@ -896,6 +902,13 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
896
902
|
sendMessageRequest = {
|
897
903
|
content: message.content,
|
898
904
|
};
|
905
|
+
sendMessageRequest.metadata = {
|
906
|
+
widgetId: this.omnichannelConfig.widgetId,
|
907
|
+
clientMessageId: Date.now().toString()
|
908
|
+
};
|
909
|
+
if (message.metadata) {
|
910
|
+
sendMessageRequest.metadata = __assign(__assign({}, sendMessageRequest.metadata), message.metadata);
|
911
|
+
}
|
899
912
|
_e.label = 1;
|
900
913
|
case 1:
|
901
914
|
_e.trys.push([1, 3, , 4]);
|
@@ -1278,7 +1291,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1278
1291
|
};
|
1279
1292
|
sendMessageRequest = {
|
1280
1293
|
content: '',
|
1281
|
-
metadata: __assign(__assign({}, fileIdsProperty), fileMetaProperty)
|
1294
|
+
metadata: __assign(__assign({ widgetId: this.omnichannelConfig.widgetId, clientMessageId: Date.now().toString() }, fileIdsProperty), fileMetaProperty)
|
1282
1295
|
};
|
1283
1296
|
messageToSend = {
|
1284
1297
|
content: "",
|
@@ -1504,16 +1517,20 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1504
1517
|
}
|
1505
1518
|
if (protocol === ChatAdapterProtocols_1.default.ACS || this.liveChatVersion === LiveChatVersion_1.default.V2) {
|
1506
1519
|
return [2 /*return*/, new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
1507
|
-
var featuresOption, acsAdapterCDNUrl;
|
1520
|
+
var egressMiddlewares, ingressMiddlewares, featuresOption, acsAdapterCDNUrl;
|
1508
1521
|
var _this = this;
|
1509
1522
|
var _a;
|
1510
1523
|
return __generator(this, function (_b) {
|
1511
1524
|
switch (_b.label) {
|
1512
1525
|
case 0:
|
1526
|
+
egressMiddlewares = [createFormatEgressTagsMiddleware_1.default()];
|
1527
|
+
ingressMiddlewares = [createFormatIngressTagsMiddleware_1.default()];
|
1513
1528
|
featuresOption = {
|
1514
|
-
enableAdaptiveCards:
|
1529
|
+
enableAdaptiveCards: true,
|
1515
1530
|
enableThreadMemberUpdateNotification: true,
|
1516
|
-
enableLeaveThreadOnWindowClosed: false
|
1531
|
+
enableLeaveThreadOnWindowClosed: false,
|
1532
|
+
egressMiddleware: egressMiddlewares,
|
1533
|
+
ingressMiddleware: ingressMiddlewares
|
1517
1534
|
};
|
1518
1535
|
acsAdapterCDNUrl = this.resolveChatAdapterUrl(protocol || ChatAdapterProtocols_1.default.ACS);
|
1519
1536
|
(_a = this.telemetry) === null || _a === void 0 ? void 0 : _a.setCDNPackages({
|
@@ -1525,7 +1542,8 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1525
1542
|
try {
|
1526
1543
|
var ChatAdapter = window.ChatAdapter; // eslint-disable-line @typescript-eslint/no-explicit-any
|
1527
1544
|
var fileManager = new AMSFileManager_1.default(_this.AMSClient, _this.acsAdapterLogger);
|
1528
|
-
var adapter = ChatAdapter.createACSAdapter(_this.chatToken.token, _this.chatToken.visitorId || 'teamsvisitor', _this.chatToken.chatId, _this.chatToken.acsEndpoint, fileManager, 1000, ACSParticipantDisplayName_1.default.Customer, undefined,
|
1545
|
+
var adapter = ChatAdapter.createACSAdapter(_this.chatToken.token, _this.chatToken.visitorId || 'teamsvisitor', _this.chatToken.chatId, _this.chatToken.acsEndpoint, fileManager, 1000, ACSParticipantDisplayName_1.default.Customer, undefined, undefined, // logger
|
1546
|
+
featuresOption);
|
1529
1547
|
resolve(adapter);
|
1530
1548
|
}
|
1531
1549
|
catch (_a) {
|
@@ -1659,6 +1677,92 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1659
1677
|
});
|
1660
1678
|
});
|
1661
1679
|
};
|
1680
|
+
OmnichannelChatSDK.prototype.getPostChatSurveyContext = function () {
|
1681
|
+
return __awaiter(this, void 0, void 0, function () {
|
1682
|
+
var conversationId, liveWSAndLiveChatEngJoin, msdyn_postconversationsurveyenable, msfp_sourcesurveyidentifier, postConversationSurveyOwnerId, liveWorkItemDetails, participantJoined, surveyInviteLinkRequest, optionalParams, surveyInviteLinkResponse, surveyInviteLink, formsProLocale, postChatContext, ex_1;
|
1683
|
+
return __generator(this, function (_a) {
|
1684
|
+
switch (_a.label) {
|
1685
|
+
case 0:
|
1686
|
+
this.scenarioMarker.startScenario(TelemetryEvent_1.default.GetPostChatSurveyContext, {
|
1687
|
+
RequestId: this.requestId
|
1688
|
+
});
|
1689
|
+
_a.label = 1;
|
1690
|
+
case 1:
|
1691
|
+
_a.trys.push([1, 6, , 7]);
|
1692
|
+
liveWSAndLiveChatEngJoin = this.liveChatConfig.LiveWSAndLiveChatEngJoin;
|
1693
|
+
msdyn_postconversationsurveyenable = liveWSAndLiveChatEngJoin.msdyn_postconversationsurveyenable, msfp_sourcesurveyidentifier = liveWSAndLiveChatEngJoin.msfp_sourcesurveyidentifier, postConversationSurveyOwnerId = liveWSAndLiveChatEngJoin.postConversationSurveyOwnerId;
|
1694
|
+
if (!msdyn_postconversationsurveyenable) return [3 /*break*/, 4];
|
1695
|
+
return [4 /*yield*/, this.OCClient.getLWIDetails(this.requestId)];
|
1696
|
+
case 2:
|
1697
|
+
liveWorkItemDetails = _a.sent();
|
1698
|
+
participantJoined = (liveWorkItemDetails === null || liveWorkItemDetails === void 0 ? void 0 : liveWorkItemDetails.CanRenderPostChat) && (liveWorkItemDetails === null || liveWorkItemDetails === void 0 ? void 0 : liveWorkItemDetails.CanRenderPostChat) === "True";
|
1699
|
+
conversationId = liveWorkItemDetails === null || liveWorkItemDetails === void 0 ? void 0 : liveWorkItemDetails.ConversationId;
|
1700
|
+
surveyInviteLinkRequest = {
|
1701
|
+
"FormId": msfp_sourcesurveyidentifier,
|
1702
|
+
"ConversationId": conversationId,
|
1703
|
+
"OCLocaleCode": locale_1.getLocaleStringFromId(this.localeId) || locale_1.getLocaleStringFromId(locale_1.defaultLocaleId)
|
1704
|
+
};
|
1705
|
+
optionalParams = {
|
1706
|
+
"requestId": this.requestId
|
1707
|
+
};
|
1708
|
+
if (this.authenticatedUserToken) {
|
1709
|
+
optionalParams.authenticatedUserToken = this.authenticatedUserToken;
|
1710
|
+
}
|
1711
|
+
return [4 /*yield*/, this.OCClient.getSurveyInviteLink(postConversationSurveyOwnerId, surveyInviteLinkRequest)];
|
1712
|
+
case 3:
|
1713
|
+
surveyInviteLinkResponse = _a.sent();
|
1714
|
+
surveyInviteLink = void 0, formsProLocale = void 0;
|
1715
|
+
if (surveyInviteLinkResponse != null) {
|
1716
|
+
if (surveyInviteLinkResponse.inviteList != null && surveyInviteLinkResponse.inviteList.length == 1) {
|
1717
|
+
surveyInviteLink = surveyInviteLinkResponse.inviteList[0].invitationLink;
|
1718
|
+
}
|
1719
|
+
else {
|
1720
|
+
this.scenarioMarker.failScenario(TelemetryEvent_1.default.GetPostChatSurveyContext, {
|
1721
|
+
ConversationId: conversationId,
|
1722
|
+
RequestId: this.requestId,
|
1723
|
+
ExceptionDetails: "Survey Invite link failed to send response."
|
1724
|
+
});
|
1725
|
+
return [2 /*return*/, Promise.reject("Survey Invite link failed to send response.")];
|
1726
|
+
}
|
1727
|
+
if (surveyInviteLinkResponse.formsProLocaleCode != null) {
|
1728
|
+
formsProLocale = surveyInviteLinkResponse.formsProLocaleCode;
|
1729
|
+
}
|
1730
|
+
postChatContext = {
|
1731
|
+
participantJoined: participantJoined,
|
1732
|
+
surveyInviteLink: surveyInviteLink,
|
1733
|
+
formsProLocale: formsProLocale
|
1734
|
+
};
|
1735
|
+
return [2 /*return*/, Promise.resolve(postChatContext)];
|
1736
|
+
}
|
1737
|
+
else {
|
1738
|
+
this.scenarioMarker.failScenario(TelemetryEvent_1.default.GetPostChatSurveyContext, {
|
1739
|
+
ConversationId: conversationId,
|
1740
|
+
RequestId: this.requestId,
|
1741
|
+
ExceptionDetails: "surveyInviteLinkResponse is null."
|
1742
|
+
});
|
1743
|
+
return [2 /*return*/, Promise.reject("surveyInviteLinkResponse is null.")];
|
1744
|
+
}
|
1745
|
+
return [3 /*break*/, 5];
|
1746
|
+
case 4:
|
1747
|
+
this.scenarioMarker.failScenario(TelemetryEvent_1.default.GetPostChatSurveyContext, {
|
1748
|
+
RequestId: this.requestId,
|
1749
|
+
ExceptionDetails: "Post Chat Survey is disabled. Please check the Omnichannel Administration Portal."
|
1750
|
+
});
|
1751
|
+
return [2 /*return*/, Promise.reject("Post Chat is disabled from admin side.")];
|
1752
|
+
case 5: return [3 /*break*/, 7];
|
1753
|
+
case 6:
|
1754
|
+
ex_1 = _a.sent();
|
1755
|
+
this.scenarioMarker.failScenario(TelemetryEvent_1.default.GetPostChatSurveyContext, {
|
1756
|
+
ConversationId: conversationId,
|
1757
|
+
RequestId: this.requestId,
|
1758
|
+
ExceptionDetails: JSON.stringify(ex_1)
|
1759
|
+
});
|
1760
|
+
return [2 /*return*/, Promise.reject("Retrieving post chat context failed " + JSON.stringify(ex_1))];
|
1761
|
+
case 7: return [2 /*return*/];
|
1762
|
+
}
|
1763
|
+
});
|
1764
|
+
});
|
1765
|
+
};
|
1662
1766
|
OmnichannelChatSDK.prototype.getIC3Client = function () {
|
1663
1767
|
return __awaiter(this, void 0, void 0, function () {
|
1664
1768
|
var IC3Client;
|
@@ -1744,7 +1848,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1744
1848
|
};
|
1745
1849
|
OmnichannelChatSDK.prototype.getChatConfig = function () {
|
1746
1850
|
return __awaiter(this, void 0, void 0, function () {
|
1747
|
-
var liveChatConfig, dataMaskingConfig, authSettings, liveWSAndLiveChatEngJoin, liveChatVersion, setting, preChatSurvey, msdyn_prechatenabled, msdyn_callingoptions, msdyn_conversationmode, msdyn_enablechatreconnect, isPreChatEnabled, isChatReconnectEnabled, token, exceptionDetails, _a, exceptionDetails, exceptionDetails, error_18;
|
1851
|
+
var liveChatConfig, dataMaskingConfig, authSettings, liveWSAndLiveChatEngJoin, liveChatVersion, chatWidgetLanguage, msdyn_localeid, setting, preChatSurvey, msdyn_prechatenabled, msdyn_callingoptions, msdyn_conversationmode, msdyn_enablechatreconnect, isPreChatEnabled, isChatReconnectEnabled, token, exceptionDetails, _a, exceptionDetails, exceptionDetails, error_18;
|
1748
1852
|
return __generator(this, function (_b) {
|
1749
1853
|
switch (_b.label) {
|
1750
1854
|
case 0:
|
@@ -1752,7 +1856,9 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1752
1856
|
return [4 /*yield*/, this.OCClient.getChatConfig()];
|
1753
1857
|
case 1:
|
1754
1858
|
liveChatConfig = _b.sent();
|
1755
|
-
dataMaskingConfig = liveChatConfig.DataMaskingInfo, authSettings = liveChatConfig.LiveChatConfigAuthSettings, liveWSAndLiveChatEngJoin = liveChatConfig.LiveWSAndLiveChatEngJoin, liveChatVersion = liveChatConfig.LiveChatVersion;
|
1859
|
+
dataMaskingConfig = liveChatConfig.DataMaskingInfo, authSettings = liveChatConfig.LiveChatConfigAuthSettings, liveWSAndLiveChatEngJoin = liveChatConfig.LiveWSAndLiveChatEngJoin, liveChatVersion = liveChatConfig.LiveChatVersion, chatWidgetLanguage = liveChatConfig.ChatWidgetLanguage;
|
1860
|
+
msdyn_localeid = chatWidgetLanguage.msdyn_localeid;
|
1861
|
+
this.localeId = msdyn_localeid || locale_1.defaultLocaleId;
|
1756
1862
|
this.liveChatVersion = liveChatVersion || LiveChatVersion_1.default.V1;
|
1757
1863
|
/* istanbul ignore next */
|
1758
1864
|
this.debug && console.log("[OmnichannelChatSDK][getChatConfig][liveChatVersion] " + this.liveChatVersion);
|