@microsoft/omnichannel-chat-widget 1.7.3-main.aa696dc → 1.7.3-main.b61c751
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/lib/cjs/components/livechatwidget/common/ActivitySubscriber/HiddenAdaptiveCardActivitySubscriber.js +77 -0
- package/lib/cjs/components/livechatwidget/common/createAdapter.js +3 -0
- package/lib/cjs/components/livechatwidget/common/startChat.js +3 -4
- package/lib/esm/components/livechatwidget/common/ActivitySubscriber/HiddenAdaptiveCardActivitySubscriber.js +70 -0
- package/lib/esm/components/livechatwidget/common/createAdapter.js +3 -0
- package/lib/esm/components/livechatwidget/common/startChat.js +3 -4
- package/lib/types/components/livechatwidget/common/ActivitySubscriber/HiddenAdaptiveCardActivitySubscriber.d.ts +7 -0
- package/package.json +1 -1
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.HiddenAdaptiveCardActivitySubscriber = void 0;
|
|
7
|
+
var _Constants = require("../../../../common/Constants");
|
|
8
|
+
var _TelemetryConstants = require("../../../../common/telemetry/TelemetryConstants");
|
|
9
|
+
var _TelemetryHelper = require("../../../../common/telemetry/TelemetryHelper");
|
|
10
|
+
var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
|
|
11
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
12
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
13
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
14
|
+
class HiddenAdaptiveCardActivitySubscriber {
|
|
15
|
+
constructor() {
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
17
|
+
_defineProperty(this, "observer", void 0);
|
|
18
|
+
}
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
20
|
+
async apply(activity) {
|
|
21
|
+
const {
|
|
22
|
+
attachments,
|
|
23
|
+
attachment
|
|
24
|
+
} = activity;
|
|
25
|
+
this.observer.next(false);
|
|
26
|
+
_omnichannelChatComponents.BroadcastService.postMessage({
|
|
27
|
+
eventName: _TelemetryConstants.BroadcastEvent.NewMessageReceived,
|
|
28
|
+
payload: {
|
|
29
|
+
attachments: attachments || [attachment],
|
|
30
|
+
text: "Custom Event"
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
|
|
37
|
+
applicable(activity) {
|
|
38
|
+
const {
|
|
39
|
+
attachments,
|
|
40
|
+
attachment
|
|
41
|
+
} = activity;
|
|
42
|
+
|
|
43
|
+
// Use `attachments` or `attachment` (whichever exists)
|
|
44
|
+
const cards = attachments || [attachment];
|
|
45
|
+
|
|
46
|
+
// Check if contentType is "AdaptiveCard"
|
|
47
|
+
const adaptiveCard = cards === null || cards === void 0 ? void 0 : cards.find(
|
|
48
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
49
|
+
item => _Constants.Constants.supportedAdaptiveCardContentTypes.indexOf(item === null || item === void 0 ? void 0 : item.contentType) >= 0);
|
|
50
|
+
if (adaptiveCard && adaptiveCard.content) {
|
|
51
|
+
const {
|
|
52
|
+
body
|
|
53
|
+
} = adaptiveCard.content;
|
|
54
|
+
if (Array.isArray(body)) {
|
|
55
|
+
// Check if all elements in `body` have `isVisible: false`
|
|
56
|
+
const allInvisible = body.every(item => item.isVisible === false);
|
|
57
|
+
if (allInvisible) {
|
|
58
|
+
_TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
59
|
+
Event: _TelemetryConstants.TelemetryEvent.BotAuthActivityUndefinedSignInId,
|
|
60
|
+
Description: "All elements in AdaptiveCard are invisible"
|
|
61
|
+
});
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
70
|
+
async next(activity) {
|
|
71
|
+
if (this.applicable(activity)) {
|
|
72
|
+
return await this.apply(activity);
|
|
73
|
+
}
|
|
74
|
+
return activity;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.HiddenAdaptiveCardActivitySubscriber = HiddenAdaptiveCardActivitySubscriber;
|
|
@@ -11,6 +11,7 @@ var _defaultMiddlewareLocalizedTexts = require("../../webchatcontainerstateful/c
|
|
|
11
11
|
var _ChatAdapterShim = require("./ChatAdapterShim");
|
|
12
12
|
var _PauseActivitySubscriber = require("./ActivitySubscriber/PauseActivitySubscriber");
|
|
13
13
|
var _BotAuthActivitySubscriber = require("./ActivitySubscriber/BotAuthActivitySubscriber");
|
|
14
|
+
var _HiddenAdaptiveCardActivitySubscriber = require("./ActivitySubscriber/HiddenAdaptiveCardActivitySubscriber");
|
|
14
15
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
15
16
|
const createAdapter = async chatSDK => {
|
|
16
17
|
const chatAdapterOptionalParams = {
|
|
@@ -41,6 +42,8 @@ const createAdapter = async chatSDK => {
|
|
|
41
42
|
adapter = new _ChatAdapterShim.ChatAdapterShim(adapter);
|
|
42
43
|
adapter.addSubscriber(new _PauseActivitySubscriber.PauseActivitySubscriber());
|
|
43
44
|
adapter.addSubscriber(new _BotAuthActivitySubscriber.BotAuthActivitySubscriber());
|
|
45
|
+
// Remove this code after ICM ID:544623085 is fixed
|
|
46
|
+
adapter.addSubscriber(new _HiddenAdaptiveCardActivitySubscriber.HiddenAdaptiveCardActivitySubscriber());
|
|
44
47
|
return adapter.chatAdapter;
|
|
45
48
|
}
|
|
46
49
|
return adapter;
|
|
@@ -209,6 +209,7 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, state, props, params
|
|
|
209
209
|
isStartChatSuccessful = false;
|
|
210
210
|
throw error;
|
|
211
211
|
}
|
|
212
|
+
await createAdapterAndSubscribe(chatSDK, dispatch, setAdapter);
|
|
212
213
|
|
|
213
214
|
// Set app state to Active
|
|
214
215
|
if (isStartChatSuccessful) {
|
|
@@ -233,12 +234,12 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, state, props, params
|
|
|
233
234
|
(0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch, true);
|
|
234
235
|
return;
|
|
235
236
|
}
|
|
236
|
-
await createAdapterAndSubscribe(chatSDK, dispatch, setAdapter);
|
|
237
237
|
|
|
238
238
|
// Persistent Chat relies on the `reconnectId` retrieved from reconnectablechats API to reconnect upon start chat and not `liveChatContext`
|
|
239
239
|
if (!persistentChatEnabled) {
|
|
240
240
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
241
241
|
const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
|
|
242
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
242
243
|
dispatch({
|
|
243
244
|
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
|
|
244
245
|
payload: liveChatContext
|
|
@@ -264,9 +265,7 @@ const createAdapterAndSubscribe = async (chatSDK, dispatch, setAdapter) => {
|
|
|
264
265
|
// New adapter creation
|
|
265
266
|
const newAdapter = await (0, _createAdapter.createAdapter)(chatSDK);
|
|
266
267
|
setAdapter(newAdapter);
|
|
267
|
-
|
|
268
|
-
//start chat is already seeding the chat token, so no need to get it again
|
|
269
|
-
const chatToken = await chatSDK.getChatToken(true);
|
|
268
|
+
const chatToken = await chatSDK.getChatToken();
|
|
270
269
|
dispatch({
|
|
271
270
|
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
|
|
272
271
|
payload: chatToken
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
3
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
4
|
+
import { Constants } from "../../../../common/Constants";
|
|
5
|
+
import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../../common/telemetry/TelemetryConstants";
|
|
6
|
+
import { TelemetryHelper } from "../../../../common/telemetry/TelemetryHelper";
|
|
7
|
+
import { BroadcastService } from "@microsoft/omnichannel-chat-components";
|
|
8
|
+
export class HiddenAdaptiveCardActivitySubscriber {
|
|
9
|
+
constructor() {
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
11
|
+
_defineProperty(this, "observer", void 0);
|
|
12
|
+
}
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
14
|
+
async apply(activity) {
|
|
15
|
+
const {
|
|
16
|
+
attachments,
|
|
17
|
+
attachment
|
|
18
|
+
} = activity;
|
|
19
|
+
this.observer.next(false);
|
|
20
|
+
BroadcastService.postMessage({
|
|
21
|
+
eventName: BroadcastEvent.NewMessageReceived,
|
|
22
|
+
payload: {
|
|
23
|
+
attachments: attachments || [attachment],
|
|
24
|
+
text: "Custom Event"
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
|
|
31
|
+
applicable(activity) {
|
|
32
|
+
const {
|
|
33
|
+
attachments,
|
|
34
|
+
attachment
|
|
35
|
+
} = activity;
|
|
36
|
+
|
|
37
|
+
// Use `attachments` or `attachment` (whichever exists)
|
|
38
|
+
const cards = attachments || [attachment];
|
|
39
|
+
|
|
40
|
+
// Check if contentType is "AdaptiveCard"
|
|
41
|
+
const adaptiveCard = cards === null || cards === void 0 ? void 0 : cards.find(
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
43
|
+
item => Constants.supportedAdaptiveCardContentTypes.indexOf(item === null || item === void 0 ? void 0 : item.contentType) >= 0);
|
|
44
|
+
if (adaptiveCard && adaptiveCard.content) {
|
|
45
|
+
const {
|
|
46
|
+
body
|
|
47
|
+
} = adaptiveCard.content;
|
|
48
|
+
if (Array.isArray(body)) {
|
|
49
|
+
// Check if all elements in `body` have `isVisible: false`
|
|
50
|
+
const allInvisible = body.every(item => item.isVisible === false);
|
|
51
|
+
if (allInvisible) {
|
|
52
|
+
TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
|
|
53
|
+
Event: TelemetryEvent.BotAuthActivityUndefinedSignInId,
|
|
54
|
+
Description: "All elements in AdaptiveCard are invisible"
|
|
55
|
+
});
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
64
|
+
async next(activity) {
|
|
65
|
+
if (this.applicable(activity)) {
|
|
66
|
+
return await this.apply(activity);
|
|
67
|
+
}
|
|
68
|
+
return activity;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -5,6 +5,7 @@ import { defaultMiddlewareLocalizedTexts } from "../../webchatcontainerstateful/
|
|
|
5
5
|
import { ChatAdapterShim } from "./ChatAdapterShim";
|
|
6
6
|
import { PauseActivitySubscriber } from "./ActivitySubscriber/PauseActivitySubscriber";
|
|
7
7
|
import { BotAuthActivitySubscriber } from "./ActivitySubscriber/BotAuthActivitySubscriber";
|
|
8
|
+
import { HiddenAdaptiveCardActivitySubscriber } from "./ActivitySubscriber/HiddenAdaptiveCardActivitySubscriber";
|
|
8
9
|
|
|
9
10
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
10
11
|
export const createAdapter = async chatSDK => {
|
|
@@ -36,6 +37,8 @@ export const createAdapter = async chatSDK => {
|
|
|
36
37
|
adapter = new ChatAdapterShim(adapter);
|
|
37
38
|
adapter.addSubscriber(new PauseActivitySubscriber());
|
|
38
39
|
adapter.addSubscriber(new BotAuthActivitySubscriber());
|
|
40
|
+
// Remove this code after ICM ID:544623085 is fixed
|
|
41
|
+
adapter.addSubscriber(new HiddenAdaptiveCardActivitySubscriber());
|
|
39
42
|
return adapter.chatAdapter;
|
|
40
43
|
}
|
|
41
44
|
return adapter;
|
|
@@ -202,6 +202,7 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, state, props, params
|
|
|
202
202
|
isStartChatSuccessful = false;
|
|
203
203
|
throw error;
|
|
204
204
|
}
|
|
205
|
+
await createAdapterAndSubscribe(chatSDK, dispatch, setAdapter);
|
|
205
206
|
|
|
206
207
|
// Set app state to Active
|
|
207
208
|
if (isStartChatSuccessful) {
|
|
@@ -226,12 +227,12 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, state, props, params
|
|
|
226
227
|
setPostChatContextAndLoadSurvey(chatSDK, dispatch, true);
|
|
227
228
|
return;
|
|
228
229
|
}
|
|
229
|
-
await createAdapterAndSubscribe(chatSDK, dispatch, setAdapter);
|
|
230
230
|
|
|
231
231
|
// Persistent Chat relies on the `reconnectId` retrieved from reconnectablechats API to reconnect upon start chat and not `liveChatContext`
|
|
232
232
|
if (!persistentChatEnabled) {
|
|
233
233
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
234
234
|
const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
|
|
235
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
235
236
|
dispatch({
|
|
236
237
|
type: LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
|
|
237
238
|
payload: liveChatContext
|
|
@@ -256,9 +257,7 @@ const createAdapterAndSubscribe = async (chatSDK, dispatch, setAdapter) => {
|
|
|
256
257
|
// New adapter creation
|
|
257
258
|
const newAdapter = await createAdapter(chatSDK);
|
|
258
259
|
setAdapter(newAdapter);
|
|
259
|
-
|
|
260
|
-
//start chat is already seeding the chat token, so no need to get it again
|
|
261
|
-
const chatToken = await chatSDK.getChatToken(true);
|
|
260
|
+
const chatToken = await chatSDK.getChatToken();
|
|
262
261
|
dispatch({
|
|
263
262
|
type: LiveChatWidgetActionType.SET_CHAT_TOKEN,
|
|
264
263
|
payload: chatToken
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IActivitySubscriber } from "./IActivitySubscriber";
|
|
2
|
+
export declare class HiddenAdaptiveCardActivitySubscriber implements IActivitySubscriber {
|
|
3
|
+
observer: any;
|
|
4
|
+
apply(activity: any): Promise<void>;
|
|
5
|
+
applicable(activity: any): boolean;
|
|
6
|
+
next(activity: any): Promise<any>;
|
|
7
|
+
}
|