@microsoft/omnichannel-chat-sdk 1.11.3-main.7a14964 → 1.11.3-main.8729b5c
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/README.md +49 -22
- package/lib/OmnichannelChatSDK.d.ts +9 -0
- package/lib/OmnichannelChatSDK.js +116 -82
- package/lib/OmnichannelChatSDK.js.map +1 -1
- package/lib/external/OCSDK/IOCSDKLogData.d.ts +1 -0
- package/lib/telemetry/AriaTelemetry.js +1 -0
- package/lib/telemetry/AriaTelemetry.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/utils/AMSClientUtils.js +2 -1
- package/lib/utils/AMSClientUtils.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
@@ -150,7 +150,11 @@ npm install @microsoft/omnichannel-chat-sdk --save
|
|
150
150
|
|
151
151
|
## Installation on React Native
|
152
152
|
|
153
|
-
|
153
|
+
***Important Note:***
|
154
|
+
- For React Native versions **0.71 and above**: Steps 1, 2, 3 are **required only for iOS**. Not needed for Android.
|
155
|
+
- For React Native versions **below 0.71**: Steps 1, 2, 3 are **required for both Android and iOS**.
|
156
|
+
|
157
|
+
### Steps
|
154
158
|
|
155
159
|
1. Install `node-libs-react-native`
|
156
160
|
|
@@ -158,46 +162,69 @@ The following steps will be required to run Omnichannel Chat SDK on React Native
|
|
158
162
|
npm install node-libs-react-native --save-dev
|
159
163
|
```
|
160
164
|
|
161
|
-
|
162
|
-
|
165
|
+
2. Install `react-native-randombytes`
|
163
166
|
```console
|
164
167
|
npm install react-native-randombytes --save-dev
|
165
168
|
```
|
166
169
|
|
167
|
-
|
168
|
-
|
170
|
+
3. Install `react-native-get-random-values`
|
169
171
|
```console
|
170
172
|
npm install react-native-get-random-values --save-dev
|
171
173
|
```
|
172
|
-
|
173
|
-
|
174
|
+
|
175
|
+
4. Install `react-native-url-polyfill`
|
174
176
|
|
175
177
|
```console
|
176
178
|
npm install react-native-url-polyfill --save-dev
|
177
179
|
```
|
178
180
|
|
179
|
-
|
181
|
+
5. Install `@azure/core-asynciterator-polyfill`
|
180
182
|
|
181
183
|
```console
|
182
184
|
npm install @azure/core-asynciterator-polyfill --save-dev
|
183
185
|
```
|
184
|
-
|
185
|
-
|
186
|
-
|
186
|
+
**iOS and Android Platforms**
|
187
|
+
|
188
|
+
| React Native Version | Libraries | iOS | Android |
|
189
|
+
| ----------------------- | -------------------------------- | --------- | ----------- |
|
190
|
+
| 0.71 and above | | | |
|
191
|
+
| | node-libs-react-native | ✅ Yes | ❌ No |
|
192
|
+
| | react-native-randombytes | ✅ Yes | ❌ No |
|
193
|
+
| | react-native-get-random-values | ✅ Yes | ❌ No |
|
194
|
+
| | react-native-url-polyfill | ✅ Yes | ✅ Yes |
|
195
|
+
| | @azure/core-asynciterator-polyfill | ✅ Yes | ✅ Yes |
|
196
|
+
|
197
|
+
Below 0.71 version you need to add all above libraries.
|
198
|
+
|
199
|
+
**Required file changes**
|
200
|
+
1. In metro.config.js
|
201
|
+
- Update *metro.config.js* to use React Native compatible Node Core modules.
|
187
202
|
```ts
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
}
|
203
|
+
const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config');
|
204
|
+
const nodeLibs = require('node-libs-react-native'); // Import node-libs-react-native
|
205
|
+
const config = {
|
206
|
+
resolver: {
|
207
|
+
extraNodeModules: {
|
208
|
+
...nodeLibs,
|
209
|
+
net: require.resolve('node-libs-react-native/mock/net'),
|
210
|
+
tls: require.resolve('node-libs-react-native/mock/tls'),
|
211
|
+
},
|
212
|
+
},
|
197
213
|
};
|
198
214
|
```
|
199
|
-
|
200
|
-
|
215
|
+
- If you encounter a crypto issue for iOS (e.g. error "crypto.getRandomValues() not supported") you should install crypto-browserify and stream-browserify, then add the following lines to your *metro.config.js* file.
|
216
|
+
|
217
|
+
```ts
|
218
|
+
const config = {
|
219
|
+
resolver: {
|
220
|
+
extraNodeModules: {
|
221
|
+
crypto: require.resolve("crypto-browserify"),
|
222
|
+
stream: require.resolve("stream-browserify"),
|
223
|
+
},
|
224
|
+
},
|
225
|
+
};
|
226
|
+
```
|
227
|
+
2. Add the following *import* on top of your entry point file
|
201
228
|
|
202
229
|
```ts
|
203
230
|
import 'node-libs-react-native/globals';
|
@@ -163,5 +163,14 @@ declare class OmnichannelChatSDK {
|
|
163
163
|
private updateChatToken;
|
164
164
|
private setAuthTokenProvider;
|
165
165
|
private useCoreServicesOrgUrlIfNotSet;
|
166
|
+
/**
|
167
|
+
* Handles cleanup of failed conversation join attempts.
|
168
|
+
* Only cleans up conversations that were freshly created and failed to join.
|
169
|
+
*
|
170
|
+
* @param error - The error that occurred during conversation join
|
171
|
+
* @param optionalParams - Start chat optional parameters
|
172
|
+
* @private
|
173
|
+
*/
|
174
|
+
private handleConversationJoinFailure;
|
166
175
|
}
|
167
176
|
export default OmnichannelChatSDK;
|
@@ -68,7 +68,7 @@ var locale_1 = require("./utils/locale");
|
|
68
68
|
var exceptionThrowers_1 = require("./utils/exceptionThrowers");
|
69
69
|
var utilities_1 = require("./utils/utilities");
|
70
70
|
var WebUtils_1 = require("./utils/WebUtils");
|
71
|
-
var
|
71
|
+
var AMSClientUtils_1 = require("./utils/AMSClientUtils");
|
72
72
|
var SDKConfigValidators_1 = require("./validators/SDKConfigValidators");
|
73
73
|
var ACSParticipantDisplayName_1 = require("./core/messaging/ACSParticipantDisplayName");
|
74
74
|
var AMSClientLoadStates_1 = require("./utils/AMSClientLoadStates");
|
@@ -102,13 +102,13 @@ var location_1 = require("./utils/location");
|
|
102
102
|
var internalUtils_1 = require("./utils/internalUtils");
|
103
103
|
var loggerUtils_1 = require("./utils/loggerUtils");
|
104
104
|
var parsers_1 = require("./utils/parsers");
|
105
|
+
var platform_1 = require("./utils/platform");
|
105
106
|
var retrieveCollectorUri_1 = require("./telemetry/retrieveCollectorUri");
|
106
107
|
var setOcUserAgent_1 = require("./utils/setOcUserAgent");
|
107
108
|
var startPolling_1 = require("./commands/startPolling");
|
108
109
|
var stopPolling_1 = require("./commands/stopPolling");
|
109
110
|
var urlResolvers_1 = require("./utils/urlResolvers");
|
110
111
|
var OmnichannelConfigValidator_1 = require("./validators/OmnichannelConfigValidator");
|
111
|
-
var AMSClientUtils_1 = require("./utils/AMSClientUtils");
|
112
112
|
var OmnichannelChatSDK = /** @class */ (function () {
|
113
113
|
function OmnichannelChatSDK(omnichannelConfig, chatSDKConfig) {
|
114
114
|
if (chatSDKConfig === void 0) { chatSDKConfig = SDKConfigValidators_1.defaultChatSDKConfig; }
|
@@ -778,7 +778,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
778
778
|
};
|
779
779
|
OmnichannelChatSDK.prototype.startChat = function () {
|
780
780
|
return __awaiter(this, arguments, void 0, function (optionalParams) {
|
781
|
-
var shouldReinitIC3Client, _a, reconnectableChatsParams, reconnectableChatsResponse, e_6, telemetryData, conversationDetails, telemetryData, telemetryData, e_7, telemetryData, sessionInitOptionalParams, location_2, sessionInitPromise, createConversationPromise, messagingClientPromise, attachmentClientPromise;
|
781
|
+
var shouldReinitIC3Client, _a, reconnectableChatsParams, reconnectableChatsResponse, e_6, telemetryData, conversationDetails, telemetryData, telemetryData, e_7, telemetryData, sessionInitOptionalParams, location_2, sessionInitPromise, createConversationPromise, messagingClientPromise, attachmentClientPromise, error_4;
|
782
782
|
var _this = this;
|
783
783
|
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
784
784
|
if (optionalParams === void 0) { optionalParams = {}; }
|
@@ -917,7 +917,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
917
917
|
_o.label = 18;
|
918
918
|
case 18:
|
919
919
|
sessionInitPromise = function () { return __awaiter(_this, void 0, void 0, function () {
|
920
|
-
var
|
920
|
+
var error_5, telemetryData;
|
921
921
|
var _a, _b, _c;
|
922
922
|
return __generator(this, function (_d) {
|
923
923
|
switch (_d.label) {
|
@@ -931,23 +931,23 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
931
931
|
_d.sent();
|
932
932
|
return [3 /*break*/, 4];
|
933
933
|
case 3:
|
934
|
-
|
934
|
+
error_5 = _d.sent();
|
935
935
|
telemetryData = {
|
936
936
|
RequestId: this.requestId,
|
937
937
|
ChatId: this.chatToken.chatId,
|
938
938
|
};
|
939
939
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
940
|
-
if ((
|
941
|
-
exceptionThrowers_1.default.throwWidgetUseOutsideOperatingHour(
|
940
|
+
if ((error_5 === null || error_5 === void 0 ? void 0 : error_5.isAxiosError) && ((_c = (_b = (_a = error_5.response) === null || _a === void 0 ? void 0 : _a.headers) === null || _b === void 0 ? void 0 : _b.errorcode) === null || _c === void 0 ? void 0 : _c.toString()) === OmnichannelErrorCodes_1.default.WidgetUseOutsideOperatingHour.toString()) {
|
941
|
+
exceptionThrowers_1.default.throwWidgetUseOutsideOperatingHour(error_5, this.scenarioMarker, TelemetryEvent_1.default.StartChat, telemetryData);
|
942
942
|
}
|
943
|
-
exceptionThrowers_1.default.throwConversationInitializationFailure(
|
943
|
+
exceptionThrowers_1.default.throwConversationInitializationFailure(error_5, this.scenarioMarker, TelemetryEvent_1.default.StartChat, telemetryData);
|
944
944
|
return [3 /*break*/, 4];
|
945
945
|
case 4: return [2 /*return*/];
|
946
946
|
}
|
947
947
|
});
|
948
948
|
}); };
|
949
949
|
createConversationPromise = function () { return __awaiter(_this, void 0, void 0, function () {
|
950
|
-
var chatToken,
|
950
|
+
var chatToken, error_6, telemetryData;
|
951
951
|
var _a, _b, _c;
|
952
952
|
return __generator(this, function (_d) {
|
953
953
|
switch (_d.label) {
|
@@ -965,23 +965,23 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
965
965
|
}
|
966
966
|
return [3 /*break*/, 4];
|
967
967
|
case 3:
|
968
|
-
|
968
|
+
error_6 = _d.sent();
|
969
969
|
telemetryData = {
|
970
970
|
RequestId: this.requestId,
|
971
971
|
ChatId: this.chatToken.chatId,
|
972
972
|
};
|
973
973
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
974
|
-
if ((
|
975
|
-
exceptionThrowers_1.default.throwWidgetUseOutsideOperatingHour(
|
974
|
+
if ((error_6 === null || error_6 === void 0 ? void 0 : error_6.isAxiosError) && ((_c = (_b = (_a = error_6.response) === null || _a === void 0 ? void 0 : _a.headers) === null || _b === void 0 ? void 0 : _b.errorcode) === null || _c === void 0 ? void 0 : _c.toString()) === OmnichannelErrorCodes_1.default.WidgetUseOutsideOperatingHour.toString()) {
|
975
|
+
exceptionThrowers_1.default.throwWidgetUseOutsideOperatingHour(error_6, this.scenarioMarker, TelemetryEvent_1.default.StartChat, telemetryData);
|
976
976
|
}
|
977
|
-
exceptionThrowers_1.default.throwConversationInitializationFailure(
|
977
|
+
exceptionThrowers_1.default.throwConversationInitializationFailure(error_6, this.scenarioMarker, TelemetryEvent_1.default.StartChat, telemetryData);
|
978
978
|
return [3 /*break*/, 4];
|
979
979
|
case 4: return [2 /*return*/];
|
980
980
|
}
|
981
981
|
});
|
982
982
|
}); };
|
983
983
|
messagingClientPromise = function () { return __awaiter(_this, void 0, void 0, function () {
|
984
|
-
var chatAdapterConfig,
|
984
|
+
var chatAdapterConfig, error_7, telemetryData, _a, error_8, telemetryData, error_9, telemetryData, _b, error_10, telemetryData;
|
985
985
|
var _c, _d;
|
986
986
|
return __generator(this, function (_e) {
|
987
987
|
switch (_e.label) {
|
@@ -1005,12 +1005,12 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1005
1005
|
_e.sent();
|
1006
1006
|
return [3 /*break*/, 4];
|
1007
1007
|
case 3:
|
1008
|
-
|
1008
|
+
error_7 = _e.sent();
|
1009
1009
|
telemetryData = {
|
1010
1010
|
RequestId: this.requestId,
|
1011
1011
|
ChatId: this.chatToken.chatId,
|
1012
1012
|
};
|
1013
|
-
exceptionThrowers_1.default.throwMessagingClientInitializationFailure(
|
1013
|
+
exceptionThrowers_1.default.throwMessagingClientInitializationFailure(error_7, this.scenarioMarker, TelemetryEvent_1.default.StartChat, telemetryData);
|
1014
1014
|
return [3 /*break*/, 4];
|
1015
1015
|
case 4:
|
1016
1016
|
_e.trys.push([4, 6, , 7]);
|
@@ -1028,12 +1028,12 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1028
1028
|
});
|
1029
1029
|
return [3 /*break*/, 7];
|
1030
1030
|
case 6:
|
1031
|
-
|
1031
|
+
error_8 = _e.sent();
|
1032
1032
|
telemetryData = {
|
1033
1033
|
RequestId: this.requestId,
|
1034
1034
|
ChatId: this.chatToken.chatId,
|
1035
1035
|
};
|
1036
|
-
exceptionThrowers_1.default.throwMessagingClientConversationJoinFailure(
|
1036
|
+
exceptionThrowers_1.default.throwMessagingClientConversationJoinFailure(error_8, this.scenarioMarker, TelemetryEvent_1.default.StartChat, telemetryData);
|
1037
1037
|
return [3 /*break*/, 7];
|
1038
1038
|
case 7: return [3 /*break*/, 14];
|
1039
1039
|
case 8:
|
@@ -1047,12 +1047,12 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1047
1047
|
_e.sent();
|
1048
1048
|
return [3 /*break*/, 11];
|
1049
1049
|
case 10:
|
1050
|
-
|
1050
|
+
error_9 = _e.sent();
|
1051
1051
|
telemetryData = {
|
1052
1052
|
RequestId: this.requestId,
|
1053
1053
|
ChatId: this.chatToken.chatId,
|
1054
1054
|
};
|
1055
|
-
exceptionThrowers_1.default.throwMessagingClientInitializationFailure(
|
1055
|
+
exceptionThrowers_1.default.throwMessagingClientInitializationFailure(error_9, this.scenarioMarker, TelemetryEvent_1.default.StartChat, telemetryData);
|
1056
1056
|
return [3 /*break*/, 11];
|
1057
1057
|
case 11:
|
1058
1058
|
_e.trys.push([11, 13, , 14]);
|
@@ -1066,19 +1066,19 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1066
1066
|
});
|
1067
1067
|
return [3 /*break*/, 14];
|
1068
1068
|
case 13:
|
1069
|
-
|
1069
|
+
error_10 = _e.sent();
|
1070
1070
|
telemetryData = {
|
1071
1071
|
RequestId: this.requestId,
|
1072
1072
|
ChatId: this.chatToken.chatId,
|
1073
1073
|
};
|
1074
|
-
exceptionThrowers_1.default.throwMessagingClientConversationJoinFailure(
|
1074
|
+
exceptionThrowers_1.default.throwMessagingClientConversationJoinFailure(error_10, this.scenarioMarker, TelemetryEvent_1.default.StartChat, telemetryData);
|
1075
1075
|
return [3 /*break*/, 14];
|
1076
1076
|
case 14: return [2 /*return*/];
|
1077
1077
|
}
|
1078
1078
|
});
|
1079
1079
|
}); };
|
1080
1080
|
attachmentClientPromise = function () { return __awaiter(_this, void 0, void 0, function () {
|
1081
|
-
var amsClient,
|
1081
|
+
var amsClient, error_11, telemetryData;
|
1082
1082
|
return __generator(this, function (_a) {
|
1083
1083
|
switch (_a.label) {
|
1084
1084
|
case 0:
|
@@ -1098,12 +1098,12 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1098
1098
|
_a.label = 3;
|
1099
1099
|
case 3: return [3 /*break*/, 5];
|
1100
1100
|
case 4:
|
1101
|
-
|
1101
|
+
error_11 = _a.sent();
|
1102
1102
|
telemetryData = {
|
1103
1103
|
RequestId: this.requestId,
|
1104
1104
|
ChatId: this.chatToken.chatId,
|
1105
1105
|
};
|
1106
|
-
exceptionThrowers_1.default.throwMessagingClientInitializationFailure(
|
1106
|
+
exceptionThrowers_1.default.throwMessagingClientInitializationFailure(error_11, this.scenarioMarker, TelemetryEvent_1.default.StartChat, telemetryData);
|
1107
1107
|
return [3 /*break*/, 5];
|
1108
1108
|
case 5: return [2 /*return*/];
|
1109
1109
|
}
|
@@ -1118,9 +1118,23 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1118
1118
|
case 21:
|
1119
1119
|
_o.sent(); // Await the session initialization
|
1120
1120
|
_o.label = 22;
|
1121
|
-
case 22:
|
1121
|
+
case 22:
|
1122
|
+
_o.trys.push([22, 24, , 26]);
|
1123
|
+
return [4 /*yield*/, Promise.all([messagingClientPromise(), attachmentClientPromise()])];
|
1122
1124
|
case 23:
|
1123
1125
|
_o.sent();
|
1126
|
+
return [3 /*break*/, 26];
|
1127
|
+
case 24:
|
1128
|
+
error_4 = _o.sent();
|
1129
|
+
// If conversation joining fails after conversation was created, clean up the conversation
|
1130
|
+
// Only cleanup conversations that were freshly created (not existing ones being reconnected to)
|
1131
|
+
return [4 /*yield*/, this.handleConversationJoinFailure(error_4, optionalParams)];
|
1132
|
+
case 25:
|
1133
|
+
// If conversation joining fails after conversation was created, clean up the conversation
|
1134
|
+
// Only cleanup conversations that were freshly created (not existing ones being reconnected to)
|
1135
|
+
_o.sent();
|
1136
|
+
throw error_4; // Re-throw the original error
|
1137
|
+
case 26:
|
1124
1138
|
if (this.isPersistentChat && !((_l = this.chatSDKConfig.persistentChat) === null || _l === void 0 ? void 0 : _l.disable)) {
|
1125
1139
|
this.refreshTokenTimer = setInterval(function () { return __awaiter(_this, void 0, void 0, function () {
|
1126
1140
|
return __generator(this, function (_a) {
|
@@ -1141,7 +1155,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1141
1155
|
};
|
1142
1156
|
OmnichannelChatSDK.prototype.closeChat = function (endChatOptionalParams) {
|
1143
1157
|
return __awaiter(this, void 0, void 0, function () {
|
1144
|
-
var cleanupMetadata, sessionCloseOptionalParams, isReconnectChat, isChatReconnect,
|
1158
|
+
var cleanupMetadata, sessionCloseOptionalParams, isReconnectChat, isChatReconnect, error_12;
|
1145
1159
|
var _a, _b;
|
1146
1160
|
return __generator(this, function (_c) {
|
1147
1161
|
switch (_c.label) {
|
@@ -1176,8 +1190,8 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1176
1190
|
_c.sent();
|
1177
1191
|
return [3 /*break*/, 4];
|
1178
1192
|
case 3:
|
1179
|
-
|
1180
|
-
exceptionThrowers_1.default.throwConversationClosureFailure(
|
1193
|
+
error_12 = _c.sent();
|
1194
|
+
exceptionThrowers_1.default.throwConversationClosureFailure(error_12, this.scenarioMarker, TelemetryEvent_1.default.CloseChatSession, __assign(__assign({}, cleanupMetadata), { isSessionEnded: String(!(endChatOptionalParams === null || endChatOptionalParams === void 0 ? void 0 : endChatOptionalParams.isSessionEnded)) }));
|
1181
1195
|
return [3 /*break*/, 4];
|
1182
1196
|
case 4:
|
1183
1197
|
this.scenarioMarker.completeScenario(TelemetryEvent_1.default.CloseChatSession, cleanupMetadata);
|
@@ -1189,7 +1203,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1189
1203
|
};
|
1190
1204
|
OmnichannelChatSDK.prototype.endChat = function () {
|
1191
1205
|
return __awaiter(this, arguments, void 0, function (endChatOptionalParams) {
|
1192
|
-
var cleanupMetadata,
|
1206
|
+
var cleanupMetadata, error_13, telemetryData;
|
1193
1207
|
var _a;
|
1194
1208
|
if (endChatOptionalParams === void 0) { endChatOptionalParams = {}; }
|
1195
1209
|
return __generator(this, function (_b) {
|
@@ -1239,15 +1253,15 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1239
1253
|
this.scenarioMarker.completeScenario(TelemetryEvent_1.default.EndChat, cleanupMetadata);
|
1240
1254
|
return [3 /*break*/, 7];
|
1241
1255
|
case 6:
|
1242
|
-
|
1256
|
+
error_13 = _b.sent();
|
1243
1257
|
telemetryData = {
|
1244
1258
|
RequestId: this.requestId,
|
1245
1259
|
ChatId: this.chatToken.chatId
|
1246
1260
|
};
|
1247
|
-
if (
|
1248
|
-
exceptionThrowers_1.default.throwConversationClosureFailure(new Error(JSON.stringify(
|
1261
|
+
if (error_13 instanceof ChatSDKError_1.ChatSDKError) {
|
1262
|
+
exceptionThrowers_1.default.throwConversationClosureFailure(new Error(JSON.stringify(error_13.exceptionDetails)), this.scenarioMarker, TelemetryEvent_1.default.EndChat, telemetryData);
|
1249
1263
|
}
|
1250
|
-
exceptionThrowers_1.default.throwConversationClosureFailure(
|
1264
|
+
exceptionThrowers_1.default.throwConversationClosureFailure(error_13, this.scenarioMarker, TelemetryEvent_1.default.EndChat, telemetryData);
|
1251
1265
|
return [3 /*break*/, 7];
|
1252
1266
|
case 7: return [2 /*return*/];
|
1253
1267
|
}
|
@@ -1294,7 +1308,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1294
1308
|
};
|
1295
1309
|
OmnichannelChatSDK.prototype.getConversationDetails = function () {
|
1296
1310
|
return __awaiter(this, arguments, void 0, function (optionalParams) {
|
1297
|
-
var requestId, chatToken, chatId, reconnectId, sessionId, getLWIDetailsOptionalParams, lwiDetails, state, conversationId, agentAcceptedOn, canRenderPostChat, participantType, liveWorkItemDetails,
|
1311
|
+
var requestId, chatToken, chatId, reconnectId, sessionId, getLWIDetailsOptionalParams, lwiDetails, state, conversationId, agentAcceptedOn, canRenderPostChat, participantType, liveWorkItemDetails, error_14, telemetryData;
|
1298
1312
|
var _a, _b, _c, _d;
|
1299
1313
|
if (optionalParams === void 0) { optionalParams = {}; }
|
1300
1314
|
return __generator(this, function (_e) {
|
@@ -1367,15 +1381,15 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1367
1381
|
});
|
1368
1382
|
return [2 /*return*/, liveWorkItemDetails];
|
1369
1383
|
case 3:
|
1370
|
-
|
1384
|
+
error_14 = _e.sent();
|
1371
1385
|
telemetryData = {
|
1372
1386
|
RequestId: requestId,
|
1373
|
-
ChatId: chatId
|
1387
|
+
ChatId: chatId
|
1374
1388
|
};
|
1375
|
-
if ((0, utilities_1.isClientIdNotFoundErrorMessage)(
|
1376
|
-
exceptionThrowers_1.default.throwAuthContactIdNotFoundFailure(
|
1389
|
+
if ((0, utilities_1.isClientIdNotFoundErrorMessage)(error_14)) {
|
1390
|
+
exceptionThrowers_1.default.throwAuthContactIdNotFoundFailure(error_14, this.scenarioMarker, TelemetryEvent_1.default.GetConversationDetails, telemetryData);
|
1377
1391
|
}
|
1378
|
-
exceptionSuppressors_1.default.suppressConversationDetailsRetrievalFailure(
|
1392
|
+
exceptionSuppressors_1.default.suppressConversationDetailsRetrievalFailure(error_14, this.scenarioMarker, TelemetryEvent_1.default.GetConversationDetails, telemetryData);
|
1379
1393
|
return [3 /*break*/, 4];
|
1380
1394
|
case 4: return [2 /*return*/, {}];
|
1381
1395
|
}
|
@@ -1416,7 +1430,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1416
1430
|
};
|
1417
1431
|
OmnichannelChatSDK.prototype.getChatToken = function () {
|
1418
1432
|
return __awaiter(this, arguments, void 0, function (cached, optionalParams) {
|
1419
|
-
var getChatTokenOptionalParams, chatToken,
|
1433
|
+
var getChatTokenOptionalParams, chatToken, error_15, telemetryData;
|
1420
1434
|
var _a, _b, _c;
|
1421
1435
|
if (cached === void 0) { cached = true; }
|
1422
1436
|
return __generator(this, function (_d) {
|
@@ -1458,16 +1472,16 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1458
1472
|
});
|
1459
1473
|
return [3 /*break*/, 4];
|
1460
1474
|
case 3:
|
1461
|
-
|
1475
|
+
error_15 = _d.sent();
|
1462
1476
|
telemetryData = {
|
1463
1477
|
RequestId: this.requestId,
|
1464
1478
|
ChatId: (_c = this.chatToken) === null || _c === void 0 ? void 0 : _c.chatId,
|
1465
1479
|
};
|
1466
|
-
if ((0, utilities_1.isClientIdNotFoundErrorMessage)(
|
1467
|
-
exceptionThrowers_1.default.throwAuthContactIdNotFoundFailure(
|
1480
|
+
if ((0, utilities_1.isClientIdNotFoundErrorMessage)(error_15)) {
|
1481
|
+
exceptionThrowers_1.default.throwAuthContactIdNotFoundFailure(error_15, this.scenarioMarker, TelemetryEvent_1.default.GetChatToken, telemetryData);
|
1468
1482
|
}
|
1469
1483
|
else {
|
1470
|
-
exceptionThrowers_1.default.throwChatTokenRetrievalFailure(
|
1484
|
+
exceptionThrowers_1.default.throwChatTokenRetrievalFailure(error_15, this.scenarioMarker, TelemetryEvent_1.default.GetChatToken, telemetryData);
|
1471
1485
|
}
|
1472
1486
|
return [3 /*break*/, 4];
|
1473
1487
|
case 4: return [3 /*break*/, 6];
|
@@ -1611,7 +1625,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1611
1625
|
};
|
1612
1626
|
OmnichannelChatSDK.prototype.sendMessage = function (message) {
|
1613
1627
|
return __awaiter(this, void 0, void 0, function () {
|
1614
|
-
var sendMessageRequest, chatMessage,
|
1628
|
+
var sendMessageRequest, chatMessage, error_16, exceptionDetails, messageToSend, error_17, exceptionDetails;
|
1615
1629
|
var _a;
|
1616
1630
|
return __generator(this, function (_b) {
|
1617
1631
|
switch (_b.label) {
|
@@ -1647,10 +1661,10 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1647
1661
|
});
|
1648
1662
|
return [2 /*return*/, chatMessage];
|
1649
1663
|
case 3:
|
1650
|
-
|
1664
|
+
error_16 = _b.sent();
|
1651
1665
|
exceptionDetails = {
|
1652
1666
|
response: ChatSDKError_1.ChatSDKErrorName.ChatSDKSendMessageFailed,
|
1653
|
-
errorObject: "".concat(
|
1667
|
+
errorObject: "".concat(error_16)
|
1654
1668
|
};
|
1655
1669
|
this.scenarioMarker.failScenario(TelemetryEvent_1.default.SendMessages, {
|
1656
1670
|
RequestId: this.requestId,
|
@@ -1659,7 +1673,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1659
1673
|
});
|
1660
1674
|
throw new ChatSDKError_1.ChatSDKError(ChatSDKError_1.ChatSDKErrorName.ChatSDKSendMessageFailed, undefined, {
|
1661
1675
|
response: ChatSDKError_1.ChatSDKErrorName.ChatSDKSendMessageFailed,
|
1662
|
-
errorObject: "".concat(
|
1676
|
+
errorObject: "".concat(error_16)
|
1663
1677
|
});
|
1664
1678
|
case 4: return [3 /*break*/, 9];
|
1665
1679
|
case 5:
|
@@ -1695,10 +1709,10 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1695
1709
|
});
|
1696
1710
|
return [3 /*break*/, 9];
|
1697
1711
|
case 8:
|
1698
|
-
|
1712
|
+
error_17 = _b.sent();
|
1699
1713
|
exceptionDetails = {
|
1700
1714
|
response: ChatSDKError_1.ChatSDKErrorName.ChatSDKSendMessageFailed,
|
1701
|
-
errorObject: "".concat(
|
1715
|
+
errorObject: "".concat(error_17)
|
1702
1716
|
};
|
1703
1717
|
this.scenarioMarker.failScenario(TelemetryEvent_1.default.SendMessages, {
|
1704
1718
|
RequestId: this.requestId,
|
@@ -1785,7 +1799,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1785
1799
|
};
|
1786
1800
|
OmnichannelChatSDK.prototype.sendTypingEvent = function () {
|
1787
1801
|
return __awaiter(this, void 0, void 0, function () {
|
1788
|
-
var
|
1802
|
+
var error_18;
|
1789
1803
|
return __generator(this, function (_a) {
|
1790
1804
|
switch (_a.label) {
|
1791
1805
|
case 0:
|
@@ -1796,7 +1810,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1796
1810
|
if (!this.isInitialized) {
|
1797
1811
|
exceptionThrowers_1.default.throwUninitializedChatSDK(this.scenarioMarker, TelemetryEvent_1.default.SendTypingEvent);
|
1798
1812
|
}
|
1799
|
-
if (!(this.liveChatVersion === LiveChatVersion_1.default.V2)) return [3 /*break*/,
|
1813
|
+
if (!(this.liveChatVersion === LiveChatVersion_1.default.V2)) return [3 /*break*/, 5];
|
1800
1814
|
_a.label = 1;
|
1801
1815
|
case 1:
|
1802
1816
|
_a.trys.push([1, 4, , 5]);
|
@@ -1814,41 +1828,13 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1814
1828
|
});
|
1815
1829
|
return [3 /*break*/, 5];
|
1816
1830
|
case 4:
|
1817
|
-
error_17 = _a.sent();
|
1818
|
-
this.scenarioMarker.failScenario(TelemetryEvent_1.default.SendTypingEvent, {
|
1819
|
-
RequestId: this.requestId,
|
1820
|
-
ChatId: this.chatToken.chatId
|
1821
|
-
});
|
1822
|
-
throw new Error('SendTypingFailure');
|
1823
|
-
case 5: return [3 /*break*/, 12];
|
1824
|
-
case 6:
|
1825
|
-
typingPayload = "{isTyping: 0}";
|
1826
|
-
_a.label = 7;
|
1827
|
-
case 7:
|
1828
|
-
_a.trys.push([7, 11, , 12]);
|
1829
|
-
return [4 /*yield*/, this.conversation.indicateTypingStatus(0)];
|
1830
|
-
case 8:
|
1831
|
-
_a.sent();
|
1832
|
-
return [4 /*yield*/, this.conversation.getMembers()];
|
1833
|
-
case 9:
|
1834
|
-
members = _a.sent();
|
1835
|
-
botMembers = members.filter(function (member) { return member.type === PersonType_1.default.Bot; });
|
1836
|
-
return [4 /*yield*/, this.conversation.sendMessageToBot(botMembers[0].id, { payload: typingPayload })];
|
1837
|
-
case 10:
|
1838
|
-
_a.sent();
|
1839
|
-
this.scenarioMarker.completeScenario(TelemetryEvent_1.default.SendTypingEvent, {
|
1840
|
-
RequestId: this.requestId,
|
1841
|
-
ChatId: this.chatToken.chatId
|
1842
|
-
});
|
1843
|
-
return [3 /*break*/, 12];
|
1844
|
-
case 11:
|
1845
1831
|
error_18 = _a.sent();
|
1846
1832
|
this.scenarioMarker.failScenario(TelemetryEvent_1.default.SendTypingEvent, {
|
1847
1833
|
RequestId: this.requestId,
|
1848
1834
|
ChatId: this.chatToken.chatId
|
1849
1835
|
});
|
1850
1836
|
throw new Error('SendTypingFailure');
|
1851
|
-
case
|
1837
|
+
case 5: return [2 /*return*/];
|
1852
1838
|
}
|
1853
1839
|
});
|
1854
1840
|
});
|
@@ -3030,6 +3016,54 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
3030
3016
|
}
|
3031
3017
|
}
|
3032
3018
|
};
|
3019
|
+
/**
|
3020
|
+
* Handles cleanup of failed conversation join attempts.
|
3021
|
+
* Only cleans up conversations that were freshly created and failed to join.
|
3022
|
+
*
|
3023
|
+
* @param error - The error that occurred during conversation join
|
3024
|
+
* @param optionalParams - Start chat optional parameters
|
3025
|
+
* @private
|
3026
|
+
*/
|
3027
|
+
OmnichannelChatSDK.prototype.handleConversationJoinFailure = function (error, optionalParams) {
|
3028
|
+
return __awaiter(this, void 0, void 0, function () {
|
3029
|
+
var shouldCleanup, cleanupError_1;
|
3030
|
+
var _a;
|
3031
|
+
return __generator(this, function (_b) {
|
3032
|
+
switch (_b.label) {
|
3033
|
+
case 0:
|
3034
|
+
shouldCleanup = error instanceof ChatSDKError_1.ChatSDKError &&
|
3035
|
+
(error === null || error === void 0 ? void 0 : error.message) === ChatSDKError_1.ChatSDKErrorName.MessagingClientConversationJoinFailure &&
|
3036
|
+
!((_a = this.chatSDKConfig.useCreateConversation) === null || _a === void 0 ? void 0 : _a.disable) &&
|
3037
|
+
!(optionalParams.liveChatContext && Object.keys(optionalParams.liveChatContext).length > 0) &&
|
3038
|
+
!this.reconnectId;
|
3039
|
+
if (!shouldCleanup) return [3 /*break*/, 4];
|
3040
|
+
_b.label = 1;
|
3041
|
+
case 1:
|
3042
|
+
_b.trys.push([1, 3, , 4]);
|
3043
|
+
/**
|
3044
|
+
* Calling cleanup to take care of any session cleanup,
|
3045
|
+
* and ensure a retry in startChat won't be affected with
|
3046
|
+
* data from a failed session
|
3047
|
+
*/
|
3048
|
+
return [4 /*yield*/, this.endChat()];
|
3049
|
+
case 2:
|
3050
|
+
/**
|
3051
|
+
* Calling cleanup to take care of any session cleanup,
|
3052
|
+
* and ensure a retry in startChat won't be affected with
|
3053
|
+
* data from a failed session
|
3054
|
+
*/
|
3055
|
+
_b.sent();
|
3056
|
+
return [3 /*break*/, 4];
|
3057
|
+
case 3:
|
3058
|
+
cleanupError_1 = _b.sent();
|
3059
|
+
// Don't let cleanup errors mask the original error
|
3060
|
+
this.debug && console.error('Failed to cleanup conversation after join failure:', cleanupError_1);
|
3061
|
+
return [3 /*break*/, 4];
|
3062
|
+
case 4: return [2 /*return*/];
|
3063
|
+
}
|
3064
|
+
});
|
3065
|
+
});
|
3066
|
+
};
|
3033
3067
|
return OmnichannelChatSDK;
|
3034
3068
|
}());
|
3035
3069
|
exports.default = OmnichannelChatSDK;
|