@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.
- package/CHANGELOG.md +20 -0
- package/README.md +48 -17
- package/lib/OmnichannelChatSDK.d.ts +6 -3
- package/lib/OmnichannelChatSDK.js +231 -99
- 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/AriaTelemetry.js +5 -0
- package/lib/telemetry/AriaTelemetry.js.map +1 -1
- package/lib/telemetry/ScenarioMarker.d.ts +2 -0
- package/lib/telemetry/ScenarioMarker.js +7 -3
- package/lib/telemetry/ScenarioMarker.js.map +1 -1
- 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 +1017 -1305
- package/lib/utils/WebUtils.d.ts +3 -1
- package/lib/utils/WebUtils.js +8 -2
- package/lib/utils/WebUtils.js.map +1 -1
- package/lib/utils/locale.d.ts +3 -0
- package/lib/utils/locale.js +60 -0
- package/lib/utils/locale.js.map +1 -0
- package/lib/utils/loggers.d.ts +8 -0
- package/lib/utils/loggers.js +24 -0
- package/lib/utils/loggers.js.map +1 -1
- package/package.json +2 -2
@@ -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; }
|
@@ -106,11 +109,13 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
106
109
|
this.reconnectId = null;
|
107
110
|
this.refreshTokenTimer = null;
|
108
111
|
this.debug = false;
|
112
|
+
this.runtimeId = ocsdk_1.uuidv4();
|
109
113
|
this.omnichannelConfig = omnichannelConfig;
|
110
114
|
this.chatSDKConfig = __assign(__assign({}, SDKConfigValidators_1.defaultChatSDKConfig), chatSDKConfig // overrides
|
111
115
|
);
|
112
116
|
this.isInitialized = false;
|
113
117
|
this.liveChatVersion = LiveChatVersion_1.default.V1;
|
118
|
+
this.localeId = locale_1.defaultLocaleId;
|
114
119
|
this.requestId = ocsdk_1.uuidv4();
|
115
120
|
this.chatToken = {};
|
116
121
|
this.liveChatConfig = {};
|
@@ -128,6 +133,11 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
128
133
|
this.ocSdkLogger.useTelemetry(this.telemetry);
|
129
134
|
this.acsClientLogger.useTelemetry(this.telemetry);
|
130
135
|
this.acsAdapterLogger.useTelemetry(this.telemetry);
|
136
|
+
this.scenarioMarker.setRuntimeId(this.runtimeId);
|
137
|
+
this.ic3ClientLogger.setRuntimeId(this.runtimeId);
|
138
|
+
this.ocSdkLogger.setRuntimeId(this.runtimeId);
|
139
|
+
this.acsClientLogger.setRuntimeId(this.runtimeId);
|
140
|
+
this.acsAdapterLogger.setRuntimeId(this.runtimeId);
|
131
141
|
OmnichannelConfigValidator_1.default(omnichannelConfig);
|
132
142
|
SDKConfigValidators_1.default(chatSDKConfig);
|
133
143
|
((_a = this.chatSDKConfig.telemetry) === null || _a === void 0 ? void 0 : _a.disable) && ((_b = this.telemetry) === null || _b === void 0 ? void 0 : _b.disable());
|
@@ -291,44 +301,52 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
291
301
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
292
302
|
if (optionalParams === void 0) { optionalParams = {}; }
|
293
303
|
return __awaiter(this, void 0, void 0, function () {
|
294
|
-
var reconnectableChatsParams, reconnectableChatsResponse,
|
304
|
+
var shouldReinitIC3Client, _p, reconnectableChatsParams, reconnectableChatsResponse, _q, exceptionDetails, conversationDetails, exceptionDetails, exceptionDetails, sessionInitOptionalParams, error_3, exceptionDetails, chatAdapterConfig, error_4, exceptionDetails, _r, error_5, exceptionDetails, error_6, exceptionDetails, error_7, exceptionDetails, _s, error_8, exceptionDetails;
|
295
305
|
var _this = this;
|
296
|
-
return __generator(this, function (
|
297
|
-
switch (
|
306
|
+
return __generator(this, function (_t) {
|
307
|
+
switch (_t.label) {
|
298
308
|
case 0:
|
299
309
|
this.scenarioMarker.startScenario(TelemetryEvent_1.default.StartChat, {
|
300
310
|
RequestId: this.requestId
|
301
311
|
});
|
312
|
+
shouldReinitIC3Client = !platform_1.default.isNode() && !platform_1.default.isReactNative() && !this.IC3Client && this.liveChatVersion === LiveChatVersion_1.default.V1;
|
313
|
+
if (!shouldReinitIC3Client) return [3 /*break*/, 2];
|
314
|
+
_p = this;
|
315
|
+
return [4 /*yield*/, this.getIC3Client()];
|
316
|
+
case 1:
|
317
|
+
_p.IC3Client = _t.sent();
|
318
|
+
_t.label = 2;
|
319
|
+
case 2:
|
302
320
|
if (this.isChatReconnect && !((_a = this.chatSDKConfig.chatReconnect) === null || _a === void 0 ? void 0 : _a.disable) && !this.isPersistentChat && optionalParams.reconnectId) {
|
303
321
|
this.reconnectId = optionalParams.reconnectId;
|
304
322
|
}
|
305
|
-
if (!(this.isPersistentChat && !((_b = this.chatSDKConfig.persistentChat) === null || _b === void 0 ? void 0 : _b.disable))) return [3 /*break*/,
|
306
|
-
|
307
|
-
case
|
308
|
-
|
323
|
+
if (!(this.isPersistentChat && !((_b = this.chatSDKConfig.persistentChat) === null || _b === void 0 ? void 0 : _b.disable))) return [3 /*break*/, 6];
|
324
|
+
_t.label = 3;
|
325
|
+
case 3:
|
326
|
+
_t.trys.push([3, 5, , 6]);
|
309
327
|
reconnectableChatsParams = {
|
310
328
|
authenticatedUserToken: this.authenticatedUserToken
|
311
329
|
};
|
312
330
|
return [4 /*yield*/, this.OCClient.getReconnectableChats(reconnectableChatsParams)];
|
313
|
-
case
|
314
|
-
reconnectableChatsResponse =
|
331
|
+
case 4:
|
332
|
+
reconnectableChatsResponse = _t.sent();
|
315
333
|
if (reconnectableChatsResponse && reconnectableChatsResponse.reconnectid) {
|
316
334
|
this.reconnectId = reconnectableChatsResponse.reconnectid;
|
317
335
|
}
|
318
|
-
return [3 /*break*/,
|
319
|
-
case
|
320
|
-
|
336
|
+
return [3 /*break*/, 6];
|
337
|
+
case 5:
|
338
|
+
_q = _t.sent();
|
321
339
|
exceptionDetails = {
|
322
340
|
response: "OCClientGetReconnectableChatsFailed"
|
323
341
|
};
|
324
342
|
throw Error(exceptionDetails.response);
|
325
|
-
case
|
326
|
-
if (!(optionalParams.liveChatContext && !this.
|
343
|
+
case 6:
|
344
|
+
if (!(optionalParams.liveChatContext && !this.reconnectId)) return [3 /*break*/, 8];
|
327
345
|
this.chatToken = optionalParams.liveChatContext.chatToken || {};
|
328
346
|
this.requestId = optionalParams.liveChatContext.requestId || ocsdk_1.uuidv4();
|
329
347
|
return [4 /*yield*/, this.getConversationDetails()];
|
330
|
-
case
|
331
|
-
conversationDetails =
|
348
|
+
case 7:
|
349
|
+
conversationDetails = _t.sent();
|
332
350
|
if (Object.keys(conversationDetails).length === 0) {
|
333
351
|
exceptionDetails = {
|
334
352
|
response: "InvalidConversation"
|
@@ -353,14 +371,14 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
353
371
|
console.error("Unable to join conversation that's in '" + conversationDetails.state + "' state");
|
354
372
|
throw Error(exceptionDetails.response);
|
355
373
|
}
|
356
|
-
|
357
|
-
case 6:
|
358
|
-
if (!(this.chatToken && Object.keys(this.chatToken).length === 0)) return [3 /*break*/, 8];
|
359
|
-
return [4 /*yield*/, this.getChatToken(false)];
|
360
|
-
case 7:
|
361
|
-
_s.sent();
|
362
|
-
_s.label = 8;
|
374
|
+
_t.label = 8;
|
363
375
|
case 8:
|
376
|
+
if (!(this.chatToken && Object.keys(this.chatToken).length === 0)) return [3 /*break*/, 10];
|
377
|
+
return [4 /*yield*/, this.getChatToken(false)];
|
378
|
+
case 9:
|
379
|
+
_t.sent();
|
380
|
+
_t.label = 10;
|
381
|
+
case 10:
|
364
382
|
(_c = this.ic3ClientLogger) === null || _c === void 0 ? void 0 : _c.setChatId(this.chatToken.chatId || '');
|
365
383
|
(_d = this.ocSdkLogger) === null || _d === void 0 ? void 0 : _d.setChatId(this.chatToken.chatId || '');
|
366
384
|
(_e = this.acsClientLogger) === null || _e === void 0 ? void 0 : _e.setChatId(this.chatToken.chatId || '');
|
@@ -368,6 +386,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
368
386
|
sessionInitOptionalParams = {
|
369
387
|
initContext: {}
|
370
388
|
};
|
389
|
+
sessionInitOptionalParams.initContext.locale = locale_1.getLocaleStringFromId(this.localeId);
|
371
390
|
if (this.isPersistentChat && !((_g = this.chatSDKConfig.persistentChat) === null || _g === void 0 ? void 0 : _g.disable)) {
|
372
391
|
sessionInitOptionalParams.reconnectId = this.reconnectId;
|
373
392
|
}
|
@@ -399,15 +418,16 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
399
418
|
if (this.authenticatedUserToken) {
|
400
419
|
sessionInitOptionalParams.authenticatedUserToken = this.authenticatedUserToken;
|
401
420
|
}
|
402
|
-
|
403
|
-
|
404
|
-
_s.trys.push([9, 11, , 12]);
|
405
|
-
return [4 /*yield*/, this.OCClient.sessionInit(this.requestId, sessionInitOptionalParams)];
|
406
|
-
case 10:
|
407
|
-
_s.sent();
|
408
|
-
return [3 /*break*/, 12];
|
421
|
+
if (!!optionalParams.liveChatContext) return [3 /*break*/, 14];
|
422
|
+
_t.label = 11;
|
409
423
|
case 11:
|
410
|
-
|
424
|
+
_t.trys.push([11, 13, , 14]);
|
425
|
+
return [4 /*yield*/, this.OCClient.sessionInit(this.requestId, sessionInitOptionalParams)];
|
426
|
+
case 12:
|
427
|
+
_t.sent();
|
428
|
+
return [3 /*break*/, 14];
|
429
|
+
case 13:
|
430
|
+
error_3 = _t.sent();
|
411
431
|
exceptionDetails = {
|
412
432
|
response: "OCClientSessionInitFailed"
|
413
433
|
};
|
@@ -418,8 +438,8 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
418
438
|
});
|
419
439
|
console.error("OmnichannelChatSDK/startChat/sessionInit/error " + error_3);
|
420
440
|
return [2 /*return*/, error_3];
|
421
|
-
case
|
422
|
-
if (!(this.liveChatVersion === LiveChatVersion_1.default.V2)) return [3 /*break*/,
|
441
|
+
case 14:
|
442
|
+
if (!(this.liveChatVersion === LiveChatVersion_1.default.V2)) return [3 /*break*/, 25];
|
423
443
|
chatAdapterConfig = {
|
424
444
|
token: this.chatToken.token,
|
425
445
|
id: this.chatToken.visitorId || 'teamsvisitor',
|
@@ -427,18 +447,18 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
427
447
|
environmentUrl: this.chatToken.acsEndpoint,
|
428
448
|
pollingInterval: 1000
|
429
449
|
};
|
430
|
-
|
431
|
-
case
|
432
|
-
|
450
|
+
_t.label = 15;
|
451
|
+
case 15:
|
452
|
+
_t.trys.push([15, 17, , 18]);
|
433
453
|
return [4 /*yield*/, ((_j = this.ACSClient) === null || _j === void 0 ? void 0 : _j.initialize({
|
434
454
|
token: chatAdapterConfig.token,
|
435
455
|
environmentUrl: chatAdapterConfig.environmentUrl
|
436
456
|
}))];
|
437
|
-
case
|
438
|
-
|
439
|
-
return [3 /*break*/,
|
440
|
-
case
|
441
|
-
error_4 =
|
457
|
+
case 16:
|
458
|
+
_t.sent();
|
459
|
+
return [3 /*break*/, 18];
|
460
|
+
case 17:
|
461
|
+
error_4 = _t.sent();
|
442
462
|
exceptionDetails = {
|
443
463
|
response: "ACSClientInitializeFailed"
|
444
464
|
};
|
@@ -449,23 +469,23 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
449
469
|
});
|
450
470
|
console.error("OmnichannelChatSDK/startChat/initialize/error " + error_4);
|
451
471
|
return [2 /*return*/, error_4];
|
452
|
-
case
|
453
|
-
|
454
|
-
|
472
|
+
case 18:
|
473
|
+
_t.trys.push([18, 20, , 21]);
|
474
|
+
_r = this;
|
455
475
|
return [4 /*yield*/, ((_k = this.ACSClient) === null || _k === void 0 ? void 0 : _k.joinConversation({
|
456
476
|
id: chatAdapterConfig.id,
|
457
477
|
threadId: chatAdapterConfig.threadId,
|
458
478
|
pollingInterval: chatAdapterConfig.pollingInterval
|
459
479
|
}))];
|
460
|
-
case
|
461
|
-
|
480
|
+
case 19:
|
481
|
+
_r.conversation = (_t.sent());
|
462
482
|
this.scenarioMarker.completeScenario(TelemetryEvent_1.default.StartChat, {
|
463
483
|
RequestId: this.requestId,
|
464
484
|
ChatId: this.chatToken.chatId
|
465
485
|
});
|
466
|
-
return [3 /*break*/,
|
467
|
-
case
|
468
|
-
error_5 =
|
486
|
+
return [3 /*break*/, 21];
|
487
|
+
case 20:
|
488
|
+
error_5 = _t.sent();
|
469
489
|
exceptionDetails = {
|
470
490
|
response: "ACSClientJoinConversationFailed"
|
471
491
|
};
|
@@ -476,16 +496,16 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
476
496
|
});
|
477
497
|
console.error("OmnichannelChatSDK/startChat/joinConversation/error " + error_5);
|
478
498
|
throw Error(exceptionDetails.response);
|
479
|
-
case
|
480
|
-
|
499
|
+
case 21:
|
500
|
+
_t.trys.push([21, 23, , 24]);
|
481
501
|
return [4 /*yield*/, ((_l = this.AMSClient) === null || _l === void 0 ? void 0 : _l.initialize({
|
482
502
|
chatToken: this.chatToken
|
483
503
|
}))];
|
484
|
-
case
|
485
|
-
|
486
|
-
return [3 /*break*/,
|
487
|
-
case
|
488
|
-
error_6 =
|
504
|
+
case 22:
|
505
|
+
_t.sent();
|
506
|
+
return [3 /*break*/, 24];
|
507
|
+
case 23:
|
508
|
+
error_6 = _t.sent();
|
489
509
|
exceptionDetails = {
|
490
510
|
response: "AMSClientInitializeFailed"
|
491
511
|
};
|
@@ -495,19 +515,19 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
495
515
|
ExceptionDetails: JSON.stringify(exceptionDetails)
|
496
516
|
});
|
497
517
|
throw Error(exceptionDetails.response);
|
498
|
-
case
|
499
|
-
case
|
500
|
-
|
518
|
+
case 24: return [3 /*break*/, 31];
|
519
|
+
case 25:
|
520
|
+
_t.trys.push([25, 27, , 28]);
|
501
521
|
return [4 /*yield*/, this.IC3Client.initialize({
|
502
522
|
token: this.chatToken.token,
|
503
523
|
regionGtms: this.chatToken.regionGTMS,
|
504
524
|
visitor: true
|
505
525
|
})];
|
506
|
-
case
|
507
|
-
|
508
|
-
return [3 /*break*/,
|
509
|
-
case
|
510
|
-
error_7 =
|
526
|
+
case 26:
|
527
|
+
_t.sent();
|
528
|
+
return [3 /*break*/, 28];
|
529
|
+
case 27:
|
530
|
+
error_7 = _t.sent();
|
511
531
|
exceptionDetails = {
|
512
532
|
response: "IC3ClientInitializeFailed"
|
513
533
|
};
|
@@ -518,19 +538,19 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
518
538
|
});
|
519
539
|
console.error("OmnichannelChatSDK/startChat/initialize/error " + error_7);
|
520
540
|
return [2 /*return*/, error_7];
|
521
|
-
case
|
522
|
-
|
523
|
-
|
541
|
+
case 28:
|
542
|
+
_t.trys.push([28, 30, , 31]);
|
543
|
+
_s = this;
|
524
544
|
return [4 /*yield*/, this.IC3Client.joinConversation(this.chatToken.chatId)];
|
525
|
-
case
|
526
|
-
|
545
|
+
case 29:
|
546
|
+
_s.conversation = _t.sent();
|
527
547
|
this.scenarioMarker.completeScenario(TelemetryEvent_1.default.StartChat, {
|
528
548
|
RequestId: this.requestId,
|
529
549
|
ChatId: this.chatToken.chatId
|
530
550
|
});
|
531
|
-
return [3 /*break*/,
|
532
|
-
case
|
533
|
-
error_8 =
|
551
|
+
return [3 /*break*/, 31];
|
552
|
+
case 30:
|
553
|
+
error_8 = _t.sent();
|
534
554
|
exceptionDetails = {
|
535
555
|
response: "IC3ClientJoinConversationFailed"
|
536
556
|
};
|
@@ -541,7 +561,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
541
561
|
});
|
542
562
|
console.error("OmnichannelChatSDK/startChat/joinConversation/error " + error_8);
|
543
563
|
return [2 /*return*/, error_8];
|
544
|
-
case
|
564
|
+
case 31:
|
545
565
|
if (this.isPersistentChat && !((_m = this.chatSDKConfig.persistentChat) === null || _m === void 0 ? void 0 : _m.disable)) {
|
546
566
|
this.refreshTokenTimer = setInterval(function () { return __awaiter(_this, void 0, void 0, function () {
|
547
567
|
return __generator(this, function (_a) {
|
@@ -579,6 +599,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
579
599
|
}
|
580
600
|
if (this.isChatReconnect && !((_b = this.chatSDKConfig.chatReconnect) === null || _b === void 0 ? void 0 : _b.disable) && !this.isPersistentChat) {
|
581
601
|
isChatReconnect = this.reconnectId !== null ? true : false;
|
602
|
+
this.requestId = isChatReconnect ? this.reconnectId : this.requestId; // Chat Reconnect session to close
|
582
603
|
sessionCloseOptionalParams.isReconnectChat = isChatReconnect;
|
583
604
|
}
|
584
605
|
if (this.authenticatedUserToken) {
|
@@ -599,6 +620,9 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
599
620
|
this.requestId = ocsdk_1.uuidv4();
|
600
621
|
this.chatToken = {};
|
601
622
|
this.reconnectId = null;
|
623
|
+
this.IC3Client.dispose();
|
624
|
+
!platform_1.default.isNode() && !platform_1.default.isReactNative() && WebUtils_1.removeElementById(this.IC3Client.id);
|
625
|
+
this.IC3Client = null;
|
602
626
|
(_d = this.ic3ClientLogger) === null || _d === void 0 ? void 0 : _d.setRequestId(this.requestId);
|
603
627
|
(_e = this.ic3ClientLogger) === null || _e === void 0 ? void 0 : _e.setChatId('');
|
604
628
|
(_f = this.ocSdkLogger) === null || _f === void 0 ? void 0 : _f.setRequestId(this.requestId);
|
@@ -896,6 +920,13 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
896
920
|
sendMessageRequest = {
|
897
921
|
content: message.content,
|
898
922
|
};
|
923
|
+
sendMessageRequest.metadata = {
|
924
|
+
widgetId: this.omnichannelConfig.widgetId,
|
925
|
+
clientMessageId: Date.now().toString()
|
926
|
+
};
|
927
|
+
if (message.metadata) {
|
928
|
+
sendMessageRequest.metadata = __assign(__assign({}, sendMessageRequest.metadata), message.metadata);
|
929
|
+
}
|
899
930
|
_e.label = 1;
|
900
931
|
case 1:
|
901
932
|
_e.trys.push([1, 3, , 4]);
|
@@ -1278,7 +1309,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1278
1309
|
};
|
1279
1310
|
sendMessageRequest = {
|
1280
1311
|
content: '',
|
1281
|
-
metadata: __assign(__assign({}, fileIdsProperty), fileMetaProperty)
|
1312
|
+
metadata: __assign(__assign({ widgetId: this.omnichannelConfig.widgetId, clientMessageId: Date.now().toString() }, fileIdsProperty), fileMetaProperty)
|
1282
1313
|
};
|
1283
1314
|
messageToSend = {
|
1284
1315
|
content: "",
|
@@ -1439,7 +1470,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1439
1470
|
ChatId: this.chatToken.chatId,
|
1440
1471
|
EmailAddress: body.emailAddress,
|
1441
1472
|
DefaultAttachmentMessage: body.attachmentMessage,
|
1442
|
-
CustomerLocale: body.locale
|
1473
|
+
CustomerLocale: body.locale || locale_1.getLocaleStringFromId(this.localeId)
|
1443
1474
|
};
|
1444
1475
|
emailResponse = this.OCClient.emailTranscript(this.requestId, this.chatToken.token, emailRequestBody, emailTranscriptOptionalParams);
|
1445
1476
|
this.scenarioMarker.completeScenario(TelemetryEvent_1.default.EmailLiveChatTranscript, {
|
@@ -1504,16 +1535,20 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1504
1535
|
}
|
1505
1536
|
if (protocol === ChatAdapterProtocols_1.default.ACS || this.liveChatVersion === LiveChatVersion_1.default.V2) {
|
1506
1537
|
return [2 /*return*/, new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
1507
|
-
var featuresOption, acsAdapterCDNUrl;
|
1538
|
+
var egressMiddlewares, ingressMiddlewares, featuresOption, acsAdapterCDNUrl;
|
1508
1539
|
var _this = this;
|
1509
1540
|
var _a;
|
1510
1541
|
return __generator(this, function (_b) {
|
1511
1542
|
switch (_b.label) {
|
1512
1543
|
case 0:
|
1544
|
+
egressMiddlewares = [createFormatEgressTagsMiddleware_1.default()];
|
1545
|
+
ingressMiddlewares = [createFormatIngressTagsMiddleware_1.default()];
|
1513
1546
|
featuresOption = {
|
1514
|
-
enableAdaptiveCards:
|
1547
|
+
enableAdaptiveCards: true,
|
1515
1548
|
enableThreadMemberUpdateNotification: true,
|
1516
|
-
enableLeaveThreadOnWindowClosed: false
|
1549
|
+
enableLeaveThreadOnWindowClosed: false,
|
1550
|
+
egressMiddleware: egressMiddlewares,
|
1551
|
+
ingressMiddleware: ingressMiddlewares
|
1517
1552
|
};
|
1518
1553
|
acsAdapterCDNUrl = this.resolveChatAdapterUrl(protocol || ChatAdapterProtocols_1.default.ACS);
|
1519
1554
|
(_a = this.telemetry) === null || _a === void 0 ? void 0 : _a.setCDNPackages({
|
@@ -1525,7 +1560,8 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1525
1560
|
try {
|
1526
1561
|
var ChatAdapter = window.ChatAdapter; // eslint-disable-line @typescript-eslint/no-explicit-any
|
1527
1562
|
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,
|
1563
|
+
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
|
1564
|
+
featuresOption);
|
1529
1565
|
resolve(adapter);
|
1530
1566
|
}
|
1531
1567
|
catch (_a) {
|
@@ -1566,8 +1602,6 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1566
1602
|
};
|
1567
1603
|
var adapter = new window.Microsoft.BotFramework.WebChat.IC3Adapter(adapterConfig);
|
1568
1604
|
adapter.logger = _this.ic3ClientLogger;
|
1569
|
-
// Keep iframe communication alive to reuse the same IC3Client instance
|
1570
|
-
window.Microsoft.BotFramework.WebChat.IC3SDKProvider.disposeSdk = function () { }; // eslint-disable-line @typescript-eslint/no-empty-function
|
1571
1605
|
_this.scenarioMarker.completeScenario(TelemetryEvent_1.default.CreateIC3Adapter);
|
1572
1606
|
resolve(adapter);
|
1573
1607
|
}, function () {
|
@@ -1659,6 +1693,92 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1659
1693
|
});
|
1660
1694
|
});
|
1661
1695
|
};
|
1696
|
+
OmnichannelChatSDK.prototype.getPostChatSurveyContext = function () {
|
1697
|
+
return __awaiter(this, void 0, void 0, function () {
|
1698
|
+
var conversationId, liveWSAndLiveChatEngJoin, msdyn_postconversationsurveyenable, msfp_sourcesurveyidentifier, postConversationSurveyOwnerId, liveWorkItemDetails, participantJoined, surveyInviteLinkRequest, optionalParams, surveyInviteLinkResponse, surveyInviteLink, formsProLocale, postChatContext, ex_1;
|
1699
|
+
return __generator(this, function (_a) {
|
1700
|
+
switch (_a.label) {
|
1701
|
+
case 0:
|
1702
|
+
this.scenarioMarker.startScenario(TelemetryEvent_1.default.GetPostChatSurveyContext, {
|
1703
|
+
RequestId: this.requestId
|
1704
|
+
});
|
1705
|
+
_a.label = 1;
|
1706
|
+
case 1:
|
1707
|
+
_a.trys.push([1, 6, , 7]);
|
1708
|
+
liveWSAndLiveChatEngJoin = this.liveChatConfig.LiveWSAndLiveChatEngJoin;
|
1709
|
+
msdyn_postconversationsurveyenable = liveWSAndLiveChatEngJoin.msdyn_postconversationsurveyenable, msfp_sourcesurveyidentifier = liveWSAndLiveChatEngJoin.msfp_sourcesurveyidentifier, postConversationSurveyOwnerId = liveWSAndLiveChatEngJoin.postConversationSurveyOwnerId;
|
1710
|
+
if (!msdyn_postconversationsurveyenable) return [3 /*break*/, 4];
|
1711
|
+
return [4 /*yield*/, this.OCClient.getLWIDetails(this.requestId)];
|
1712
|
+
case 2:
|
1713
|
+
liveWorkItemDetails = _a.sent();
|
1714
|
+
participantJoined = (liveWorkItemDetails === null || liveWorkItemDetails === void 0 ? void 0 : liveWorkItemDetails.CanRenderPostChat) && (liveWorkItemDetails === null || liveWorkItemDetails === void 0 ? void 0 : liveWorkItemDetails.CanRenderPostChat) === "True";
|
1715
|
+
conversationId = liveWorkItemDetails === null || liveWorkItemDetails === void 0 ? void 0 : liveWorkItemDetails.ConversationId;
|
1716
|
+
surveyInviteLinkRequest = {
|
1717
|
+
"FormId": msfp_sourcesurveyidentifier,
|
1718
|
+
"ConversationId": conversationId,
|
1719
|
+
"OCLocaleCode": locale_1.getLocaleStringFromId(this.localeId) || locale_1.getLocaleStringFromId(locale_1.defaultLocaleId)
|
1720
|
+
};
|
1721
|
+
optionalParams = {
|
1722
|
+
"requestId": this.requestId
|
1723
|
+
};
|
1724
|
+
if (this.authenticatedUserToken) {
|
1725
|
+
optionalParams.authenticatedUserToken = this.authenticatedUserToken;
|
1726
|
+
}
|
1727
|
+
return [4 /*yield*/, this.OCClient.getSurveyInviteLink(postConversationSurveyOwnerId, surveyInviteLinkRequest)];
|
1728
|
+
case 3:
|
1729
|
+
surveyInviteLinkResponse = _a.sent();
|
1730
|
+
surveyInviteLink = void 0, formsProLocale = void 0;
|
1731
|
+
if (surveyInviteLinkResponse != null) {
|
1732
|
+
if (surveyInviteLinkResponse.inviteList != null && surveyInviteLinkResponse.inviteList.length == 1) {
|
1733
|
+
surveyInviteLink = surveyInviteLinkResponse.inviteList[0].invitationLink;
|
1734
|
+
}
|
1735
|
+
else {
|
1736
|
+
this.scenarioMarker.failScenario(TelemetryEvent_1.default.GetPostChatSurveyContext, {
|
1737
|
+
ConversationId: conversationId,
|
1738
|
+
RequestId: this.requestId,
|
1739
|
+
ExceptionDetails: "Survey Invite link failed to send response."
|
1740
|
+
});
|
1741
|
+
return [2 /*return*/, Promise.reject("Survey Invite link failed to send response.")];
|
1742
|
+
}
|
1743
|
+
if (surveyInviteLinkResponse.formsProLocaleCode != null) {
|
1744
|
+
formsProLocale = surveyInviteLinkResponse.formsProLocaleCode;
|
1745
|
+
}
|
1746
|
+
postChatContext = {
|
1747
|
+
participantJoined: participantJoined,
|
1748
|
+
surveyInviteLink: surveyInviteLink,
|
1749
|
+
formsProLocale: formsProLocale
|
1750
|
+
};
|
1751
|
+
return [2 /*return*/, Promise.resolve(postChatContext)];
|
1752
|
+
}
|
1753
|
+
else {
|
1754
|
+
this.scenarioMarker.failScenario(TelemetryEvent_1.default.GetPostChatSurveyContext, {
|
1755
|
+
ConversationId: conversationId,
|
1756
|
+
RequestId: this.requestId,
|
1757
|
+
ExceptionDetails: "surveyInviteLinkResponse is null."
|
1758
|
+
});
|
1759
|
+
return [2 /*return*/, Promise.reject("surveyInviteLinkResponse is null.")];
|
1760
|
+
}
|
1761
|
+
return [3 /*break*/, 5];
|
1762
|
+
case 4:
|
1763
|
+
this.scenarioMarker.failScenario(TelemetryEvent_1.default.GetPostChatSurveyContext, {
|
1764
|
+
RequestId: this.requestId,
|
1765
|
+
ExceptionDetails: "Post Chat Survey is disabled. Please check the Omnichannel Administration Portal."
|
1766
|
+
});
|
1767
|
+
return [2 /*return*/, Promise.reject("Post Chat is disabled from admin side.")];
|
1768
|
+
case 5: return [3 /*break*/, 7];
|
1769
|
+
case 6:
|
1770
|
+
ex_1 = _a.sent();
|
1771
|
+
this.scenarioMarker.failScenario(TelemetryEvent_1.default.GetPostChatSurveyContext, {
|
1772
|
+
ConversationId: conversationId,
|
1773
|
+
RequestId: this.requestId,
|
1774
|
+
ExceptionDetails: JSON.stringify(ex_1)
|
1775
|
+
});
|
1776
|
+
return [2 /*return*/, Promise.reject("Retrieving post chat context failed " + JSON.stringify(ex_1))];
|
1777
|
+
case 7: return [2 /*return*/];
|
1778
|
+
}
|
1779
|
+
});
|
1780
|
+
});
|
1781
|
+
};
|
1662
1782
|
OmnichannelChatSDK.prototype.getIC3Client = function () {
|
1663
1783
|
return __awaiter(this, void 0, void 0, function () {
|
1664
1784
|
var IC3Client;
|
@@ -1685,7 +1805,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1685
1805
|
this.debug && console.debug('IC3Client');
|
1686
1806
|
// Use IC3Client if browser is detected
|
1687
1807
|
return [2 /*return*/, new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
1688
|
-
var ic3ClientCDNUrl;
|
1808
|
+
var ic3ClientCDNUrl, IC3Client;
|
1689
1809
|
var _this = this;
|
1690
1810
|
var _a;
|
1691
1811
|
return __generator(this, function (_b) {
|
@@ -1696,6 +1816,16 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1696
1816
|
IC3Client: ic3ClientCDNUrl
|
1697
1817
|
});
|
1698
1818
|
this.scenarioMarker.startScenario(TelemetryEvent_1.default.GetIC3Client);
|
1819
|
+
if (!this.IC3SDKProvider) return [3 /*break*/, 2];
|
1820
|
+
return [4 /*yield*/, this.IC3SDKProvider.getSDK({
|
1821
|
+
hostType: HostType_1.default.IFrame,
|
1822
|
+
protocolType: ProtocoleType_1.default.IC3V1SDK,
|
1823
|
+
logger: this.ic3ClientLogger // eslint-disable-line @typescript-eslint/no-explicit-any
|
1824
|
+
})];
|
1825
|
+
case 1:
|
1826
|
+
IC3Client = _b.sent();
|
1827
|
+
return [2 /*return*/, resolve(IC3Client)];
|
1828
|
+
case 2:
|
1699
1829
|
window.addEventListener("ic3:sdk:load", function () { return __awaiter(_this, void 0, void 0, function () {
|
1700
1830
|
var ic3sdk, IC3SDKProvider, IC3Client;
|
1701
1831
|
return __generator(this, function (_a) {
|
@@ -1732,7 +1862,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1732
1862
|
});
|
1733
1863
|
reject('Failed to load IC3Client');
|
1734
1864
|
})];
|
1735
|
-
case
|
1865
|
+
case 3:
|
1736
1866
|
_b.sent();
|
1737
1867
|
return [2 /*return*/];
|
1738
1868
|
}
|
@@ -1744,7 +1874,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1744
1874
|
};
|
1745
1875
|
OmnichannelChatSDK.prototype.getChatConfig = function () {
|
1746
1876
|
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;
|
1877
|
+
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
1878
|
return __generator(this, function (_b) {
|
1749
1879
|
switch (_b.label) {
|
1750
1880
|
case 0:
|
@@ -1752,7 +1882,9 @@ var OmnichannelChatSDK = /** @class */ (function () {
|
|
1752
1882
|
return [4 /*yield*/, this.OCClient.getChatConfig()];
|
1753
1883
|
case 1:
|
1754
1884
|
liveChatConfig = _b.sent();
|
1755
|
-
dataMaskingConfig = liveChatConfig.DataMaskingInfo, authSettings = liveChatConfig.LiveChatConfigAuthSettings, liveWSAndLiveChatEngJoin = liveChatConfig.LiveWSAndLiveChatEngJoin, liveChatVersion = liveChatConfig.LiveChatVersion;
|
1885
|
+
dataMaskingConfig = liveChatConfig.DataMaskingInfo, authSettings = liveChatConfig.LiveChatConfigAuthSettings, liveWSAndLiveChatEngJoin = liveChatConfig.LiveWSAndLiveChatEngJoin, liveChatVersion = liveChatConfig.LiveChatVersion, chatWidgetLanguage = liveChatConfig.ChatWidgetLanguage;
|
1886
|
+
msdyn_localeid = chatWidgetLanguage.msdyn_localeid;
|
1887
|
+
this.localeId = msdyn_localeid || locale_1.defaultLocaleId;
|
1756
1888
|
this.liveChatVersion = liveChatVersion || LiveChatVersion_1.default.V1;
|
1757
1889
|
/* istanbul ignore next */
|
1758
1890
|
this.debug && console.log("[OmnichannelChatSDK][getChatConfig][liveChatVersion] " + this.liveChatVersion);
|