@microsoft/omnichannel-chat-sdk 1.0.1-main.d9ac478 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/README.md +67 -56
  3. package/lib/OmnichannelChatSDK.d.ts +1 -0
  4. package/lib/OmnichannelChatSDK.js +140 -92
  5. package/lib/OmnichannelChatSDK.js.map +1 -1
  6. package/lib/api/createVoiceVideoCalling.js +6 -2
  7. package/lib/api/createVoiceVideoCalling.js.map +1 -1
  8. package/lib/config/settings.d.ts +1 -1
  9. package/lib/config/settings.js +1 -1
  10. package/lib/core/ChatConfig.d.ts +1 -0
  11. package/lib/core/ChatSDKExceptionDetails.d.ts +5 -0
  12. package/lib/core/ChatSDKExceptionDetails.js +3 -0
  13. package/lib/core/ChatSDKExceptionDetails.js.map +1 -0
  14. package/lib/core/ChatTranscriptBody.d.ts +1 -1
  15. package/lib/core/LiveWorkItemDetails.d.ts +2 -0
  16. package/lib/core/OmnichannelErrorCodes.d.ts +4 -0
  17. package/lib/core/OmnichannelErrorCodes.js +8 -0
  18. package/lib/core/OmnichannelErrorCodes.js.map +1 -0
  19. package/lib/core/PostChatContext.d.ts +1 -0
  20. package/lib/core/messaging/MessageTags.d.ts +2 -0
  21. package/lib/core/messaging/MessageTags.js +4 -2
  22. package/lib/core/messaging/MessageTags.js.map +1 -1
  23. package/lib/external/ACSAdapter/createChannelDataEgressMiddleware.d.ts +5 -0
  24. package/lib/external/ACSAdapter/createChannelDataEgressMiddleware.js +34 -0
  25. package/lib/external/ACSAdapter/createChannelDataEgressMiddleware.js.map +1 -0
  26. package/lib/external/CallingSDK/ICallingSDKLogData.d.ts +7 -0
  27. package/lib/external/CallingSDK/ICallingSDKLogData.js +3 -0
  28. package/lib/external/CallingSDK/ICallingSDKLogData.js.map +1 -0
  29. package/lib/index.d.ts +7 -6
  30. package/lib/index.js +13 -8
  31. package/lib/index.js.map +1 -1
  32. package/lib/telemetry/AriaTelemetry.d.ts +1 -0
  33. package/lib/telemetry/AriaTelemetry.js +50 -0
  34. package/lib/telemetry/AriaTelemetry.js.map +1 -1
  35. package/lib/telemetry/ScenarioType.d.ts +1 -0
  36. package/lib/telemetry/ScenarioType.js +1 -0
  37. package/lib/telemetry/ScenarioType.js.map +1 -1
  38. package/lib/tsconfig.tsbuildinfo +100 -43
  39. package/lib/utils/locale.d.ts +2 -1
  40. package/lib/utils/locale.js +5 -4
  41. package/lib/utils/locale.js.map +1 -1
  42. package/lib/utils/loggers.d.ts +18 -1
  43. package/lib/utils/loggers.js +70 -2
  44. package/lib/utils/loggers.js.map +1 -1
  45. package/package.json +1 -1
@@ -58,6 +58,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
58
58
  var loggers_1 = require("./utils/loggers");
59
59
  var ACSClient_1 = require("./core/messaging/ACSClient");
60
60
  var ocsdk_1 = require("@microsoft/ocsdk");
61
+ var locale_1 = require("./utils/locale");
62
+ var WebUtils_1 = require("./utils/WebUtils");
61
63
  var platform_1 = require("./utils/platform");
62
64
  var SDKConfigValidators_1 = require("./validators/SDKConfigValidators");
63
65
  var ACSParticipantDisplayName_1 = require("./core/messaging/ACSParticipantDisplayName");
@@ -65,8 +67,6 @@ var AMSFileManager_1 = require("./external/ACSAdapter/AMSFileManager");
65
67
  var CallingOptionsOptionSetNumber_1 = require("./core/CallingOptionsOptionSetNumber");
66
68
  var ChatAdapterProtocols_1 = require("./core/messaging/ChatAdapterProtocols");
67
69
  var ConversationMode_1 = require("./core/ConversationMode");
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");
@@ -75,24 +75,26 @@ var LiveChatVersion_1 = require("./core/LiveChatVersion");
75
75
  var LiveWorkItemState_1 = require("./core/LiveWorkItemState");
76
76
  var MessageContentType_1 = require("@microsoft/omnichannel-ic3core/lib/model/MessageContentType");
77
77
  var MessageType_1 = require("@microsoft/omnichannel-ic3core/lib/model/MessageType");
78
+ var OmnichannelErrorCodes_1 = require("./core/OmnichannelErrorCodes");
78
79
  var PersonType_1 = require("@microsoft/omnichannel-ic3core/lib/model/PersonType");
79
80
  var ProtocoleType_1 = require("@microsoft/omnichannel-ic3core/lib/interfaces/ProtocoleType");
80
81
  var ScenarioMarker_1 = require("./telemetry/ScenarioMarker");
81
82
  var TelemetryEvent_1 = require("./telemetry/TelemetryEvent");
82
83
  var omnichannel_amsclient_1 = require("@microsoft/omnichannel-amsclient");
84
+ var createChannelDataEgressMiddleware_1 = require("./external/ACSAdapter/createChannelDataEgressMiddleware");
85
+ var createFormatEgressTagsMiddleware_1 = require("./external/ACSAdapter/createFormatEgressTagsMiddleware");
86
+ var createFormatIngressTagsMiddleware_1 = require("./external/ACSAdapter/createFormatIngressTagsMiddleware");
83
87
  var createOmnichannelMessage_1 = require("./utils/createOmnichannelMessage");
84
88
  var createTelemetry_1 = require("./utils/createTelemetry");
85
89
  var createVoiceVideoCalling_1 = require("./api/createVoiceVideoCalling");
86
90
  var MessageTags_1 = require("./core/messaging/MessageTags");
87
- var locale_1 = require("./utils/locale");
88
91
  var utilities_1 = require("./utils/utilities");
89
92
  var libraries_1 = require("./utils/libraries");
90
- var WebUtils_1 = require("./utils/WebUtils");
91
93
  var OmnichannelConfigValidator_1 = require("./validators/OmnichannelConfigValidator");
92
94
  var OmnichannelChatSDK = /** @class */ (function () {
93
95
  function OmnichannelChatSDK(omnichannelConfig, chatSDKConfig) {
94
96
  if (chatSDKConfig === void 0) { chatSDKConfig = SDKConfigValidators_1.defaultChatSDKConfig; }
95
- var _a, _b, _c, _d, _e, _f, _g;
97
+ var _a, _b, _c, _d, _e, _f, _g, _h;
96
98
  this.ACSClient = null;
97
99
  this.AMSClient = null;
98
100
  this.authSettings = null;
@@ -104,6 +106,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
104
106
  this.ocSdkLogger = null;
105
107
  this.acsClientLogger = null;
106
108
  this.acsAdapterLogger = null;
109
+ this.callingSdkLogger = null;
107
110
  this.isPersistentChat = false;
108
111
  this.isChatReconnect = false;
109
112
  this.reconnectId = null;
@@ -128,16 +131,19 @@ var OmnichannelChatSDK = /** @class */ (function () {
128
131
  this.ocSdkLogger = loggers_1.createOCSDKLogger(this.omnichannelConfig);
129
132
  this.acsClientLogger = loggers_1.createACSClientLogger(this.omnichannelConfig);
130
133
  this.acsAdapterLogger = loggers_1.createACSAdapterLogger(this.omnichannelConfig);
134
+ this.callingSdkLogger = loggers_1.createCallingSDKLogger(this.omnichannelConfig);
131
135
  this.scenarioMarker.useTelemetry(this.telemetry);
132
136
  this.ic3ClientLogger.useTelemetry(this.telemetry);
133
137
  this.ocSdkLogger.useTelemetry(this.telemetry);
134
138
  this.acsClientLogger.useTelemetry(this.telemetry);
135
139
  this.acsAdapterLogger.useTelemetry(this.telemetry);
140
+ this.callingSdkLogger.useTelemetry(this.telemetry);
136
141
  this.scenarioMarker.setRuntimeId(this.runtimeId);
137
142
  this.ic3ClientLogger.setRuntimeId(this.runtimeId);
138
143
  this.ocSdkLogger.setRuntimeId(this.runtimeId);
139
144
  this.acsClientLogger.setRuntimeId(this.runtimeId);
140
145
  this.acsAdapterLogger.setRuntimeId(this.runtimeId);
146
+ this.callingSdkLogger.setRuntimeId(this.runtimeId);
141
147
  OmnichannelConfigValidator_1.default(omnichannelConfig);
142
148
  SDKConfigValidators_1.default(chatSDKConfig);
143
149
  ((_a = this.chatSDKConfig.telemetry) === null || _a === void 0 ? void 0 : _a.disable) && ((_b = this.telemetry) === null || _b === void 0 ? void 0 : _b.disable());
@@ -148,10 +154,11 @@ var OmnichannelChatSDK = /** @class */ (function () {
148
154
  (_e = this.ocSdkLogger) === null || _e === void 0 ? void 0 : _e.setRequestId(this.requestId);
149
155
  (_f = this.acsClientLogger) === null || _f === void 0 ? void 0 : _f.setRequestId(this.requestId);
150
156
  (_g = this.acsAdapterLogger) === null || _g === void 0 ? void 0 : _g.setRequestId(this.requestId);
157
+ (_h = this.callingSdkLogger) === null || _h === void 0 ? void 0 : _h.setRequestId(this.requestId);
151
158
  }
152
159
  /* istanbul ignore next */
153
160
  OmnichannelChatSDK.prototype.setDebug = function (flag) {
154
- var _a, _b, _c, _d, _e, _f;
161
+ var _a, _b, _c, _d, _e, _f, _g;
155
162
  this.debug = flag;
156
163
  (_a = this.AMSClient) === null || _a === void 0 ? void 0 : _a.setDebug(flag);
157
164
  (_b = this.telemetry) === null || _b === void 0 ? void 0 : _b.setDebug(flag);
@@ -160,6 +167,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
160
167
  (_d = this.ocSdkLogger) === null || _d === void 0 ? void 0 : _d.setDebug(flag);
161
168
  (_e = this.acsClientLogger) === null || _e === void 0 ? void 0 : _e.setDebug(flag);
162
169
  (_f = this.acsAdapterLogger) === null || _f === void 0 ? void 0 : _f.setDebug(flag);
170
+ (_g = this.callingSdkLogger) === null || _g === void 0 ? void 0 : _g.setDebug(flag);
163
171
  };
164
172
  OmnichannelChatSDK.prototype.initialize = function () {
165
173
  return __awaiter(this, void 0, void 0, function () {
@@ -298,44 +306,44 @@ var OmnichannelChatSDK = /** @class */ (function () {
298
306
  });
299
307
  };
300
308
  OmnichannelChatSDK.prototype.startChat = function (optionalParams) {
301
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
309
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
302
310
  if (optionalParams === void 0) { optionalParams = {}; }
303
311
  return __awaiter(this, void 0, void 0, function () {
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;
312
+ var shouldReinitIC3Client, _t, reconnectableChatsParams, reconnectableChatsResponse, _u, exceptionDetails, conversationDetails, exceptionDetails, exceptionDetails, sessionInitOptionalParams, error_3, exceptionDetails, chatAdapterConfig, error_4, exceptionDetails, _v, error_5, exceptionDetails, error_6, exceptionDetails, error_7, exceptionDetails, _w, error_8, exceptionDetails;
305
313
  var _this = this;
306
- return __generator(this, function (_t) {
307
- switch (_t.label) {
314
+ return __generator(this, function (_x) {
315
+ switch (_x.label) {
308
316
  case 0:
309
317
  this.scenarioMarker.startScenario(TelemetryEvent_1.default.StartChat, {
310
318
  RequestId: this.requestId
311
319
  });
312
320
  shouldReinitIC3Client = !platform_1.default.isNode() && !platform_1.default.isReactNative() && !this.IC3Client && this.liveChatVersion === LiveChatVersion_1.default.V1;
313
321
  if (!shouldReinitIC3Client) return [3 /*break*/, 2];
314
- _p = this;
322
+ _t = this;
315
323
  return [4 /*yield*/, this.getIC3Client()];
316
324
  case 1:
317
- _p.IC3Client = _t.sent();
318
- _t.label = 2;
325
+ _t.IC3Client = _x.sent();
326
+ _x.label = 2;
319
327
  case 2:
320
328
  if (this.isChatReconnect && !((_a = this.chatSDKConfig.chatReconnect) === null || _a === void 0 ? void 0 : _a.disable) && !this.isPersistentChat && optionalParams.reconnectId) {
321
329
  this.reconnectId = optionalParams.reconnectId;
322
330
  }
323
331
  if (!(this.isPersistentChat && !((_b = this.chatSDKConfig.persistentChat) === null || _b === void 0 ? void 0 : _b.disable))) return [3 /*break*/, 6];
324
- _t.label = 3;
332
+ _x.label = 3;
325
333
  case 3:
326
- _t.trys.push([3, 5, , 6]);
334
+ _x.trys.push([3, 5, , 6]);
327
335
  reconnectableChatsParams = {
328
336
  authenticatedUserToken: this.authenticatedUserToken
329
337
  };
330
338
  return [4 /*yield*/, this.OCClient.getReconnectableChats(reconnectableChatsParams)];
331
339
  case 4:
332
- reconnectableChatsResponse = _t.sent();
340
+ reconnectableChatsResponse = _x.sent();
333
341
  if (reconnectableChatsResponse && reconnectableChatsResponse.reconnectid) {
334
342
  this.reconnectId = reconnectableChatsResponse.reconnectid;
335
343
  }
336
344
  return [3 /*break*/, 6];
337
345
  case 5:
338
- _q = _t.sent();
346
+ _u = _x.sent();
339
347
  exceptionDetails = {
340
348
  response: "OCClientGetReconnectableChatsFailed"
341
349
  };
@@ -346,7 +354,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
346
354
  this.requestId = optionalParams.liveChatContext.requestId || ocsdk_1.uuidv4();
347
355
  return [4 /*yield*/, this.getConversationDetails()];
348
356
  case 7:
349
- conversationDetails = _t.sent();
357
+ conversationDetails = _x.sent();
350
358
  if (Object.keys(conversationDetails).length === 0) {
351
359
  exceptionDetails = {
352
360
  response: "InvalidConversation"
@@ -371,26 +379,27 @@ var OmnichannelChatSDK = /** @class */ (function () {
371
379
  console.error("Unable to join conversation that's in '" + conversationDetails.state + "' state");
372
380
  throw Error(exceptionDetails.response);
373
381
  }
374
- _t.label = 8;
382
+ _x.label = 8;
375
383
  case 8:
376
384
  if (!(this.chatToken && Object.keys(this.chatToken).length === 0)) return [3 /*break*/, 10];
377
385
  return [4 /*yield*/, this.getChatToken(false)];
378
386
  case 9:
379
- _t.sent();
380
- _t.label = 10;
387
+ _x.sent();
388
+ _x.label = 10;
381
389
  case 10:
382
390
  (_c = this.ic3ClientLogger) === null || _c === void 0 ? void 0 : _c.setChatId(this.chatToken.chatId || '');
383
391
  (_d = this.ocSdkLogger) === null || _d === void 0 ? void 0 : _d.setChatId(this.chatToken.chatId || '');
384
392
  (_e = this.acsClientLogger) === null || _e === void 0 ? void 0 : _e.setChatId(this.chatToken.chatId || '');
385
393
  (_f = this.acsAdapterLogger) === null || _f === void 0 ? void 0 : _f.setChatId(this.chatToken.chatId || '');
394
+ (_g = this.callingSdkLogger) === null || _g === void 0 ? void 0 : _g.setChatId(this.chatToken.chatId || '');
386
395
  sessionInitOptionalParams = {
387
396
  initContext: {}
388
397
  };
389
398
  sessionInitOptionalParams.initContext.locale = locale_1.getLocaleStringFromId(this.localeId);
390
- if (this.isPersistentChat && !((_g = this.chatSDKConfig.persistentChat) === null || _g === void 0 ? void 0 : _g.disable)) {
399
+ if (this.isPersistentChat && !((_h = this.chatSDKConfig.persistentChat) === null || _h === void 0 ? void 0 : _h.disable)) {
391
400
  sessionInitOptionalParams.reconnectId = this.reconnectId;
392
401
  }
393
- if (this.isChatReconnect && !((_h = this.chatSDKConfig.chatReconnect) === null || _h === void 0 ? void 0 : _h.disable) && !this.isPersistentChat) {
402
+ if (this.isChatReconnect && !((_j = this.chatSDKConfig.chatReconnect) === null || _j === void 0 ? void 0 : _j.disable) && !this.isPersistentChat) {
394
403
  sessionInitOptionalParams.reconnectId = this.reconnectId;
395
404
  }
396
405
  if (optionalParams.customContext) {
@@ -419,25 +428,30 @@ var OmnichannelChatSDK = /** @class */ (function () {
419
428
  sessionInitOptionalParams.authenticatedUserToken = this.authenticatedUserToken;
420
429
  }
421
430
  if (!!optionalParams.liveChatContext) return [3 /*break*/, 14];
422
- _t.label = 11;
431
+ _x.label = 11;
423
432
  case 11:
424
- _t.trys.push([11, 13, , 14]);
433
+ _x.trys.push([11, 13, , 14]);
425
434
  return [4 /*yield*/, this.OCClient.sessionInit(this.requestId, sessionInitOptionalParams)];
426
435
  case 12:
427
- _t.sent();
436
+ _x.sent();
428
437
  return [3 /*break*/, 14];
429
438
  case 13:
430
- error_3 = _t.sent();
439
+ error_3 = _x.sent();
431
440
  exceptionDetails = {
432
441
  response: "OCClientSessionInitFailed"
433
442
  };
443
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
444
+ if (((_k = error_3) === null || _k === void 0 ? void 0 : _k.isAxiosError) && ((_m = (_l = error_3.response) === null || _l === void 0 ? void 0 : _l.headers) === null || _m === void 0 ? void 0 : _m.errorcode.toString()) === OmnichannelErrorCodes_1.default.WidgetUseOutsideOperatingHour.toString()) {
445
+ exceptionDetails.response = OmnichannelErrorCodes_1.default[OmnichannelErrorCodes_1.default.WidgetUseOutsideOperatingHour].toString();
446
+ exceptionDetails.message = 'Widget used outside of operating hours';
447
+ console.error(exceptionDetails.message);
448
+ }
434
449
  this.scenarioMarker.failScenario(TelemetryEvent_1.default.StartChat, {
435
450
  RequestId: this.requestId,
436
451
  ChatId: this.chatToken.chatId,
437
452
  ExceptionDetails: JSON.stringify(exceptionDetails)
438
453
  });
439
- console.error("OmnichannelChatSDK/startChat/sessionInit/error " + error_3);
440
- throw error_3;
454
+ throw new Error(exceptionDetails.response);
441
455
  case 14:
442
456
  if (!(this.liveChatVersion === LiveChatVersion_1.default.V2)) return [3 /*break*/, 25];
443
457
  chatAdapterConfig = {
@@ -447,18 +461,18 @@ var OmnichannelChatSDK = /** @class */ (function () {
447
461
  environmentUrl: this.chatToken.acsEndpoint,
448
462
  pollingInterval: 1000
449
463
  };
450
- _t.label = 15;
464
+ _x.label = 15;
451
465
  case 15:
452
- _t.trys.push([15, 17, , 18]);
453
- return [4 /*yield*/, ((_j = this.ACSClient) === null || _j === void 0 ? void 0 : _j.initialize({
466
+ _x.trys.push([15, 17, , 18]);
467
+ return [4 /*yield*/, ((_o = this.ACSClient) === null || _o === void 0 ? void 0 : _o.initialize({
454
468
  token: chatAdapterConfig.token,
455
469
  environmentUrl: chatAdapterConfig.environmentUrl
456
470
  }))];
457
471
  case 16:
458
- _t.sent();
472
+ _x.sent();
459
473
  return [3 /*break*/, 18];
460
474
  case 17:
461
- error_4 = _t.sent();
475
+ error_4 = _x.sent();
462
476
  exceptionDetails = {
463
477
  response: "ACSClientInitializeFailed"
464
478
  };
@@ -470,22 +484,22 @@ var OmnichannelChatSDK = /** @class */ (function () {
470
484
  console.error("OmnichannelChatSDK/startChat/initialize/error " + error_4);
471
485
  return [2 /*return*/, error_4];
472
486
  case 18:
473
- _t.trys.push([18, 20, , 21]);
474
- _r = this;
475
- return [4 /*yield*/, ((_k = this.ACSClient) === null || _k === void 0 ? void 0 : _k.joinConversation({
487
+ _x.trys.push([18, 20, , 21]);
488
+ _v = this;
489
+ return [4 /*yield*/, ((_p = this.ACSClient) === null || _p === void 0 ? void 0 : _p.joinConversation({
476
490
  id: chatAdapterConfig.id,
477
491
  threadId: chatAdapterConfig.threadId,
478
492
  pollingInterval: chatAdapterConfig.pollingInterval
479
493
  }))];
480
494
  case 19:
481
- _r.conversation = (_t.sent());
495
+ _v.conversation = (_x.sent());
482
496
  this.scenarioMarker.completeScenario(TelemetryEvent_1.default.StartChat, {
483
497
  RequestId: this.requestId,
484
498
  ChatId: this.chatToken.chatId
485
499
  });
486
500
  return [3 /*break*/, 21];
487
501
  case 20:
488
- error_5 = _t.sent();
502
+ error_5 = _x.sent();
489
503
  exceptionDetails = {
490
504
  response: "ACSClientJoinConversationFailed"
491
505
  };
@@ -497,15 +511,15 @@ var OmnichannelChatSDK = /** @class */ (function () {
497
511
  console.error("OmnichannelChatSDK/startChat/joinConversation/error " + error_5);
498
512
  throw Error(exceptionDetails.response);
499
513
  case 21:
500
- _t.trys.push([21, 23, , 24]);
501
- return [4 /*yield*/, ((_l = this.AMSClient) === null || _l === void 0 ? void 0 : _l.initialize({
514
+ _x.trys.push([21, 23, , 24]);
515
+ return [4 /*yield*/, ((_q = this.AMSClient) === null || _q === void 0 ? void 0 : _q.initialize({
502
516
  chatToken: this.chatToken
503
517
  }))];
504
518
  case 22:
505
- _t.sent();
519
+ _x.sent();
506
520
  return [3 /*break*/, 24];
507
521
  case 23:
508
- error_6 = _t.sent();
522
+ error_6 = _x.sent();
509
523
  exceptionDetails = {
510
524
  response: "AMSClientInitializeFailed"
511
525
  };
@@ -517,17 +531,17 @@ var OmnichannelChatSDK = /** @class */ (function () {
517
531
  throw Error(exceptionDetails.response);
518
532
  case 24: return [3 /*break*/, 31];
519
533
  case 25:
520
- _t.trys.push([25, 27, , 28]);
534
+ _x.trys.push([25, 27, , 28]);
521
535
  return [4 /*yield*/, this.IC3Client.initialize({
522
536
  token: this.chatToken.token,
523
537
  regionGtms: this.chatToken.regionGTMS,
524
538
  visitor: true
525
539
  })];
526
540
  case 26:
527
- _t.sent();
541
+ _x.sent();
528
542
  return [3 /*break*/, 28];
529
543
  case 27:
530
- error_7 = _t.sent();
544
+ error_7 = _x.sent();
531
545
  exceptionDetails = {
532
546
  response: "IC3ClientInitializeFailed"
533
547
  };
@@ -539,18 +553,18 @@ var OmnichannelChatSDK = /** @class */ (function () {
539
553
  console.error("OmnichannelChatSDK/startChat/initialize/error " + error_7);
540
554
  return [2 /*return*/, error_7];
541
555
  case 28:
542
- _t.trys.push([28, 30, , 31]);
543
- _s = this;
556
+ _x.trys.push([28, 30, , 31]);
557
+ _w = this;
544
558
  return [4 /*yield*/, this.IC3Client.joinConversation(this.chatToken.chatId)];
545
559
  case 29:
546
- _s.conversation = _t.sent();
560
+ _w.conversation = _x.sent();
547
561
  this.scenarioMarker.completeScenario(TelemetryEvent_1.default.StartChat, {
548
562
  RequestId: this.requestId,
549
563
  ChatId: this.chatToken.chatId
550
564
  });
551
565
  return [3 /*break*/, 31];
552
566
  case 30:
553
- error_8 = _t.sent();
567
+ error_8 = _x.sent();
554
568
  exceptionDetails = {
555
569
  response: "IC3ClientJoinConversationFailed"
556
570
  };
@@ -562,7 +576,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
562
576
  console.error("OmnichannelChatSDK/startChat/joinConversation/error " + error_8);
563
577
  return [2 /*return*/, error_8];
564
578
  case 31:
565
- if (this.isPersistentChat && !((_m = this.chatSDKConfig.persistentChat) === null || _m === void 0 ? void 0 : _m.disable)) {
579
+ if (this.isPersistentChat && !((_r = this.chatSDKConfig.persistentChat) === null || _r === void 0 ? void 0 : _r.disable)) {
566
580
  this.refreshTokenTimer = setInterval(function () { return __awaiter(_this, void 0, void 0, function () {
567
581
  return __generator(this, function (_a) {
568
582
  switch (_a.label) {
@@ -573,7 +587,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
573
587
  return [2 /*return*/];
574
588
  }
575
589
  });
576
- }); }, (_o = this.chatSDKConfig.persistentChat) === null || _o === void 0 ? void 0 : _o.tokenUpdateTime);
590
+ }); }, (_s = this.chatSDKConfig.persistentChat) === null || _s === void 0 ? void 0 : _s.tokenUpdateTime);
577
591
  }
578
592
  return [2 /*return*/];
579
593
  }
@@ -581,11 +595,11 @@ var OmnichannelChatSDK = /** @class */ (function () {
581
595
  });
582
596
  };
583
597
  OmnichannelChatSDK.prototype.endChat = function () {
584
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
598
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
585
599
  return __awaiter(this, void 0, void 0, function () {
586
600
  var sessionCloseOptionalParams, isReconnectChat, isChatReconnect, error_9, exceptionDetails;
587
- return __generator(this, function (_m) {
588
- switch (_m.label) {
601
+ return __generator(this, function (_p) {
602
+ switch (_p.label) {
589
603
  case 0:
590
604
  this.scenarioMarker.startScenario(TelemetryEvent_1.default.EndChat, {
591
605
  RequestId: this.requestId,
@@ -605,12 +619,12 @@ var OmnichannelChatSDK = /** @class */ (function () {
605
619
  if (this.authenticatedUserToken) {
606
620
  sessionCloseOptionalParams.authenticatedUserToken = this.authenticatedUserToken;
607
621
  }
608
- _m.label = 1;
622
+ _p.label = 1;
609
623
  case 1:
610
- _m.trys.push([1, 3, , 4]);
624
+ _p.trys.push([1, 3, , 4]);
611
625
  return [4 /*yield*/, this.OCClient.sessionClose(this.requestId, sessionCloseOptionalParams)];
612
626
  case 2:
613
- _m.sent();
627
+ _p.sent();
614
628
  this.scenarioMarker.completeScenario(TelemetryEvent_1.default.EndChat, {
615
629
  RequestId: this.requestId,
616
630
  ChatId: this.chatToken.chatId
@@ -620,9 +634,11 @@ var OmnichannelChatSDK = /** @class */ (function () {
620
634
  this.requestId = ocsdk_1.uuidv4();
621
635
  this.chatToken = {};
622
636
  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;
637
+ if (this.IC3Client) {
638
+ this.IC3Client.dispose();
639
+ !platform_1.default.isNode() && !platform_1.default.isReactNative() && WebUtils_1.removeElementById(this.IC3Client.id);
640
+ this.IC3Client = null;
641
+ }
626
642
  (_d = this.ic3ClientLogger) === null || _d === void 0 ? void 0 : _d.setRequestId(this.requestId);
627
643
  (_e = this.ic3ClientLogger) === null || _e === void 0 ? void 0 : _e.setChatId('');
628
644
  (_f = this.ocSdkLogger) === null || _f === void 0 ? void 0 : _f.setRequestId(this.requestId);
@@ -631,9 +647,11 @@ var OmnichannelChatSDK = /** @class */ (function () {
631
647
  (_j = this.acsClientLogger) === null || _j === void 0 ? void 0 : _j.setChatId('');
632
648
  (_k = this.acsAdapterLogger) === null || _k === void 0 ? void 0 : _k.setRequestId(this.requestId);
633
649
  (_l = this.acsAdapterLogger) === null || _l === void 0 ? void 0 : _l.setChatId('');
650
+ (_m = this.callingSdkLogger) === null || _m === void 0 ? void 0 : _m.setRequestId(this.requestId);
651
+ (_o = this.callingSdkLogger) === null || _o === void 0 ? void 0 : _o.setChatId('');
634
652
  return [3 /*break*/, 4];
635
653
  case 3:
636
- error_9 = _m.sent();
654
+ error_9 = _p.sent();
637
655
  exceptionDetails = {
638
656
  response: "OCClientSessionCloseFailed"
639
657
  };
@@ -686,7 +704,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
686
704
  OmnichannelChatSDK.prototype.getConversationDetails = function () {
687
705
  var _a, _b, _c, _d;
688
706
  return __awaiter(this, void 0, void 0, function () {
689
- var getLWIDetailsOptionalParams, lwiDetails, state, conversationId, agentAcceptedOn, liveWorkItemDetails, error_10;
707
+ var getLWIDetailsOptionalParams, lwiDetails, state, conversationId, agentAcceptedOn, canRenderPostChat, participantType, liveWorkItemDetails, error_10;
690
708
  return __generator(this, function (_e) {
691
709
  switch (_e.label) {
692
710
  case 0:
@@ -710,7 +728,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
710
728
  return [4 /*yield*/, this.OCClient.getLWIDetails(this.requestId, getLWIDetailsOptionalParams)];
711
729
  case 2:
712
730
  lwiDetails = _e.sent();
713
- state = lwiDetails.State, conversationId = lwiDetails.ConversationId, agentAcceptedOn = lwiDetails.AgentAcceptedOn;
731
+ state = lwiDetails.State, conversationId = lwiDetails.ConversationId, agentAcceptedOn = lwiDetails.AgentAcceptedOn, canRenderPostChat = lwiDetails.CanRenderPostChat, participantType = lwiDetails.ParticipantType;
714
732
  liveWorkItemDetails = {
715
733
  state: state,
716
734
  conversationId: conversationId
@@ -718,6 +736,12 @@ var OmnichannelChatSDK = /** @class */ (function () {
718
736
  if (agentAcceptedOn) {
719
737
  liveWorkItemDetails.agentAcceptedOn = agentAcceptedOn;
720
738
  }
739
+ if (canRenderPostChat) {
740
+ liveWorkItemDetails.canRenderPostChat = canRenderPostChat;
741
+ }
742
+ if (participantType) {
743
+ liveWorkItemDetails.participantType = participantType;
744
+ }
721
745
  this.scenarioMarker.completeScenario(TelemetryEvent_1.default.GetConversationDetails, {
722
746
  RequestId: this.requestId,
723
747
  ChatId: ((_d = this.chatToken) === null || _d === void 0 ? void 0 : _d.chatId) || '',
@@ -1546,17 +1570,20 @@ var OmnichannelChatSDK = /** @class */ (function () {
1546
1570
  }
1547
1571
  if (protocol === ChatAdapterProtocols_1.default.ACS || this.liveChatVersion === LiveChatVersion_1.default.V2) {
1548
1572
  return [2 /*return*/, new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
1549
- var options, egressMiddlewares, ingressMiddlewares, featuresOption, acsAdapterCDNUrl;
1573
+ var options, defaultEgressMiddlewares, defaultIngressMiddlewares, egressMiddleware, ingressMiddleware, featuresOption, acsAdapterCDNUrl;
1550
1574
  var _this = this;
1551
1575
  var _a;
1552
1576
  return __generator(this, function (_b) {
1553
1577
  switch (_b.label) {
1554
1578
  case 0:
1555
1579
  options = optionalParams.ACSAdapter ? optionalParams.ACSAdapter.options : {};
1556
- egressMiddlewares = [createFormatEgressTagsMiddleware_1.default()];
1557
- ingressMiddlewares = [createFormatIngressTagsMiddleware_1.default()];
1558
- featuresOption = __assign({ enableAdaptiveCards: true, enableThreadMemberUpdateNotification: true, enableLeaveThreadOnWindowClosed: false, egressMiddleware: egressMiddlewares, ingressMiddleware: ingressMiddlewares }, options // overrides
1559
- );
1580
+ defaultEgressMiddlewares = [createChannelDataEgressMiddleware_1.default({ widgetId: this.omnichannelConfig.widgetId }), createFormatEgressTagsMiddleware_1.default()];
1581
+ defaultIngressMiddlewares = [createFormatIngressTagsMiddleware_1.default()];
1582
+ egressMiddleware = (options === null || options === void 0 ? void 0 : options.egressMiddleware) ? __spreadArrays(options.egressMiddleware, defaultEgressMiddlewares) : __spreadArrays(defaultEgressMiddlewares);
1583
+ ingressMiddleware = (options === null || options === void 0 ? void 0 : options.ingressMiddleware) ? __spreadArrays(options.egressMiddleware, defaultIngressMiddlewares) : __spreadArrays(defaultIngressMiddlewares);
1584
+ featuresOption = __assign(__assign({ enableAdaptiveCards: true, enableThreadMemberUpdateNotification: true, enableLeaveThreadOnWindowClosed: false }, options), { // overrides
1585
+ ingressMiddleware: ingressMiddleware,
1586
+ egressMiddleware: egressMiddleware });
1560
1587
  acsAdapterCDNUrl = this.resolveChatAdapterUrl(protocol || ChatAdapterProtocols_1.default.ACS);
1561
1588
  (_a = this.telemetry) === null || _a === void 0 ? void 0 : _a.setCDNPackages({
1562
1589
  ACSAdapter: acsAdapterCDNUrl
@@ -1567,8 +1594,8 @@ var OmnichannelChatSDK = /** @class */ (function () {
1567
1594
  try {
1568
1595
  var ChatAdapter = window.ChatAdapter; // eslint-disable-line @typescript-eslint/no-explicit-any
1569
1596
  var fileManager = new AMSFileManager_1.default(_this.AMSClient, _this.acsAdapterLogger);
1570
- var adapter = ChatAdapter.createACSAdapter(_this.chatToken.token, _this.chatToken.visitorId || 'teamsvisitor', _this.chatToken.chatId, _this.chatToken.acsEndpoint, fileManager, 1000, ACSParticipantDisplayName_1.default.Customer, undefined, // chatClient
1571
- undefined, // logger
1597
+ var adapter = ChatAdapter.createACSAdapter(_this.chatToken.token, _this.chatToken.visitorId || 'teamsvisitor', _this.chatToken.chatId, _this.chatToken.acsEndpoint, fileManager, ACSParticipantDisplayName_1.default.Customer, undefined, // chatClient
1598
+ _this.acsAdapterLogger, // logger
1572
1599
  featuresOption);
1573
1600
  resolve(adapter);
1574
1601
  }
@@ -1626,16 +1653,31 @@ var OmnichannelChatSDK = /** @class */ (function () {
1626
1653
  OmnichannelChatSDK.prototype.getVoiceVideoCalling = function (params) {
1627
1654
  if (params === void 0) { params = {}; }
1628
1655
  return __awaiter(this, void 0, void 0, function () {
1629
- var chatConfig, liveWSAndLiveChatEngJoin, msdyn_widgetsnippet, widgetSnippetSourceRegex, result;
1656
+ var exceptionDetails, exceptionDetails, chatConfig, liveWSAndLiveChatEngJoin, msdyn_widgetsnippet, widgetSnippetSourceRegex, result;
1630
1657
  var _this = this;
1631
1658
  return __generator(this, function (_a) {
1632
1659
  switch (_a.label) {
1633
1660
  case 0:
1661
+ this.scenarioMarker.startScenario(TelemetryEvent_1.default.GetVoiceVideoCalling);
1634
1662
  if (platform_1.default.isNode() || platform_1.default.isReactNative()) {
1635
- return [2 /*return*/, Promise.reject('VoiceVideoCalling is only supported on browser')];
1663
+ exceptionDetails = {
1664
+ response: "UnsupportedPlatform",
1665
+ message: "VoiceVideoCalling is only supported on browser"
1666
+ };
1667
+ this.scenarioMarker.failScenario(TelemetryEvent_1.default.GetVoiceVideoCalling, {
1668
+ ExceptionDetails: JSON.stringify(exceptionDetails)
1669
+ });
1670
+ throw new Error(exceptionDetails.response);
1636
1671
  }
1637
1672
  if (this.callingOption.toString() === CallingOptionsOptionSetNumber_1.default.NoCalling.toString()) {
1638
- return [2 /*return*/, Promise.reject('Voice and video call is not enabled')];
1673
+ exceptionDetails = {
1674
+ response: "FeatureDisabled",
1675
+ message: "Voice and video call is not enabled"
1676
+ };
1677
+ this.scenarioMarker.failScenario(TelemetryEvent_1.default.GetVoiceVideoCalling, {
1678
+ ExceptionDetails: JSON.stringify(exceptionDetails)
1679
+ });
1680
+ throw new Error(exceptionDetails.response);
1639
1681
  }
1640
1682
  return [4 /*yield*/, this.getChatConfig()];
1641
1683
  case 1:
@@ -1645,25 +1687,27 @@ var OmnichannelChatSDK = /** @class */ (function () {
1645
1687
  widgetSnippetSourceRegex = new RegExp("src=\"(https:\\/\\/[\\w-.]+)[\\w-.\\/]+\"");
1646
1688
  result = msdyn_widgetsnippet.match(widgetSnippetSourceRegex);
1647
1689
  if (result && result.length) {
1648
- return [2 /*return*/, new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
1649
- var LiveChatWidgetLibCDNUrl;
1690
+ return [2 /*return*/, new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {
1691
+ var LiveChatWidgetLibCDNUrl, defaultParams;
1650
1692
  var _this = this;
1651
1693
  var _a;
1652
1694
  return __generator(this, function (_b) {
1653
1695
  switch (_b.label) {
1654
1696
  case 0:
1655
- this.scenarioMarker.startScenario(TelemetryEvent_1.default.GetVoiceVideoCalling);
1656
1697
  LiveChatWidgetLibCDNUrl = result[1] + "/livechatwidget/WebChatControl/lib/CallingBundle.js";
1657
1698
  (_a = this.telemetry) === null || _a === void 0 ? void 0 : _a.setCDNPackages({
1658
1699
  VoiceVideoCalling: LiveChatWidgetLibCDNUrl
1659
1700
  });
1701
+ defaultParams = {
1702
+ logger: this.callingSdkLogger
1703
+ };
1660
1704
  return [4 /*yield*/, WebUtils_1.loadScript(LiveChatWidgetLibCDNUrl, function () { return __awaiter(_this, void 0, void 0, function () {
1661
1705
  var VoiceVideoCalling;
1662
1706
  return __generator(this, function (_a) {
1663
1707
  switch (_a.label) {
1664
1708
  case 0:
1665
1709
  this.debug && console.debug(LiveChatWidgetLibCDNUrl + " loaded!");
1666
- return [4 /*yield*/, createVoiceVideoCalling_1.default(params)];
1710
+ return [4 /*yield*/, createVoiceVideoCalling_1.default(__assign(__assign({}, params), defaultParams))];
1667
1711
  case 1:
1668
1712
  VoiceVideoCalling = _a.sent();
1669
1713
  this.scenarioMarker.completeScenario(TelemetryEvent_1.default.GetVoiceVideoCalling);
@@ -1676,13 +1720,13 @@ var OmnichannelChatSDK = /** @class */ (function () {
1676
1720
  var exceptionDetails;
1677
1721
  return __generator(this, function (_a) {
1678
1722
  exceptionDetails = {
1679
- response: "VoiceVideoCallingLoadFailed"
1723
+ response: "VoiceVideoCallingLoadFailed",
1724
+ message: "Failed to load VoiceVideoCalling"
1680
1725
  };
1681
1726
  this.scenarioMarker.failScenario(TelemetryEvent_1.default.GetVoiceVideoCalling, {
1682
1727
  ExceptionDetails: JSON.stringify(exceptionDetails)
1683
1728
  });
1684
- reject('Failed to load VoiceVideoCalling');
1685
- return [2 /*return*/];
1729
+ throw new Error(exceptionDetails.response);
1686
1730
  });
1687
1731
  }); })];
1688
1732
  case 1:
@@ -1699,7 +1743,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
1699
1743
  };
1700
1744
  OmnichannelChatSDK.prototype.getPostChatSurveyContext = function () {
1701
1745
  return __awaiter(this, void 0, void 0, function () {
1702
- var conversationId, liveWSAndLiveChatEngJoin, msdyn_postconversationsurveyenable, msfp_sourcesurveyidentifier, postConversationSurveyOwnerId, liveWorkItemDetails, participantJoined, surveyInviteLinkRequest, optionalParams, surveyInviteLinkResponse, surveyInviteLink, formsProLocale, postChatContext, ex_1;
1746
+ var conversationId, chatConfig, liveWSAndLiveChatEngJoin, msdyn_postconversationsurveyenable, msfp_sourcesurveyidentifier, msfp_botsourcesurveyidentifier, postConversationSurveyOwnerId, postConversationBotSurveyOwnerId, liveWorkItemDetails, participantJoined, participantType, surveyInviteLinkRequest, optionalParams, ownerId, surveyInviteLinkResponse, surveyInviteLink, formsProLocale, postChatContext, ex_1;
1703
1747
  return __generator(this, function (_a) {
1704
1748
  switch (_a.label) {
1705
1749
  case 0:
@@ -1709,18 +1753,20 @@ var OmnichannelChatSDK = /** @class */ (function () {
1709
1753
  _a.label = 1;
1710
1754
  case 1:
1711
1755
  _a.trys.push([1, 6, , 7]);
1712
- liveWSAndLiveChatEngJoin = this.liveChatConfig.LiveWSAndLiveChatEngJoin;
1713
- msdyn_postconversationsurveyenable = liveWSAndLiveChatEngJoin.msdyn_postconversationsurveyenable, msfp_sourcesurveyidentifier = liveWSAndLiveChatEngJoin.msfp_sourcesurveyidentifier, postConversationSurveyOwnerId = liveWSAndLiveChatEngJoin.postConversationSurveyOwnerId;
1714
- if (!msdyn_postconversationsurveyenable) return [3 /*break*/, 4];
1715
- return [4 /*yield*/, this.OCClient.getLWIDetails(this.requestId)];
1756
+ chatConfig = this.liveChatConfig;
1757
+ liveWSAndLiveChatEngJoin = chatConfig.LiveWSAndLiveChatEngJoin;
1758
+ msdyn_postconversationsurveyenable = liveWSAndLiveChatEngJoin.msdyn_postconversationsurveyenable, msfp_sourcesurveyidentifier = liveWSAndLiveChatEngJoin.msfp_sourcesurveyidentifier, msfp_botsourcesurveyidentifier = liveWSAndLiveChatEngJoin.msfp_botsourcesurveyidentifier, postConversationSurveyOwnerId = liveWSAndLiveChatEngJoin.postConversationSurveyOwnerId, postConversationBotSurveyOwnerId = liveWSAndLiveChatEngJoin.postConversationBotSurveyOwnerId;
1759
+ if (!(msdyn_postconversationsurveyenable === "true")) return [3 /*break*/, 4];
1760
+ return [4 /*yield*/, this.getConversationDetails()];
1716
1761
  case 2:
1717
1762
  liveWorkItemDetails = _a.sent();
1718
- participantJoined = (liveWorkItemDetails === null || liveWorkItemDetails === void 0 ? void 0 : liveWorkItemDetails.CanRenderPostChat) && (liveWorkItemDetails === null || liveWorkItemDetails === void 0 ? void 0 : liveWorkItemDetails.CanRenderPostChat) === "True";
1719
- conversationId = liveWorkItemDetails === null || liveWorkItemDetails === void 0 ? void 0 : liveWorkItemDetails.ConversationId;
1763
+ participantJoined = (liveWorkItemDetails === null || liveWorkItemDetails === void 0 ? void 0 : liveWorkItemDetails.canRenderPostChat) === "True";
1764
+ participantType = liveWorkItemDetails === null || liveWorkItemDetails === void 0 ? void 0 : liveWorkItemDetails.participantType;
1765
+ conversationId = liveWorkItemDetails === null || liveWorkItemDetails === void 0 ? void 0 : liveWorkItemDetails.conversationId;
1720
1766
  surveyInviteLinkRequest = {
1721
- "FormId": msfp_sourcesurveyidentifier,
1767
+ "FormId": participantType === "Bot" ? msfp_botsourcesurveyidentifier : msfp_sourcesurveyidentifier,
1722
1768
  "ConversationId": conversationId,
1723
- "OCLocaleCode": locale_1.getLocaleStringFromId(this.localeId) || locale_1.getLocaleStringFromId(locale_1.defaultLocaleId)
1769
+ "OCLocaleCode": locale_1.getLocaleStringFromId(this.localeId)
1724
1770
  };
1725
1771
  optionalParams = {
1726
1772
  "requestId": this.requestId
@@ -1728,7 +1774,8 @@ var OmnichannelChatSDK = /** @class */ (function () {
1728
1774
  if (this.authenticatedUserToken) {
1729
1775
  optionalParams.authenticatedUserToken = this.authenticatedUserToken;
1730
1776
  }
1731
- return [4 /*yield*/, this.OCClient.getSurveyInviteLink(postConversationSurveyOwnerId, surveyInviteLinkRequest)];
1777
+ ownerId = participantType === "Bot" ? postConversationBotSurveyOwnerId : postConversationSurveyOwnerId;
1778
+ return [4 /*yield*/, this.OCClient.getSurveyInviteLink(ownerId, surveyInviteLinkRequest, optionalParams)];
1732
1779
  case 3:
1733
1780
  surveyInviteLinkResponse = _a.sent();
1734
1781
  surveyInviteLink = void 0, formsProLocale = void 0;
@@ -1749,6 +1796,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
1749
1796
  }
1750
1797
  postChatContext = {
1751
1798
  participantJoined: participantJoined,
1799
+ participantType: participantType,
1752
1800
  surveyInviteLink: surveyInviteLink,
1753
1801
  formsProLocale: formsProLocale
1754
1802
  };
@@ -1773,7 +1821,7 @@ var OmnichannelChatSDK = /** @class */ (function () {
1773
1821
  case 6:
1774
1822
  ex_1 = _a.sent();
1775
1823
  this.scenarioMarker.failScenario(TelemetryEvent_1.default.GetPostChatSurveyContext, {
1776
- ConversationId: conversationId,
1824
+ ConversationId: conversationId !== null && conversationId !== void 0 ? conversationId : "",
1777
1825
  RequestId: this.requestId,
1778
1826
  ExceptionDetails: JSON.stringify(ex_1)
1779
1827
  });