@microsoft/omnichannel-chat-widget 1.8.2-main.3368d1f → 1.8.2-main.5195aba
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 +2 -0
- package/lib/cjs/common/Constants.js +11 -3
- package/lib/cjs/common/telemetry/TelemetryConstants.js +1 -0
- package/lib/cjs/common/utils.js +7 -1
- package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +28 -15
- package/lib/cjs/components/draggable/DraggableChatWidget.js +16 -1
- package/lib/cjs/components/headerstateful/HeaderStateful.js +12 -2
- package/lib/cjs/components/livechatwidget/LiveChatWidget.js +2 -8
- package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +22 -9
- package/lib/cjs/components/livechatwidget/common/endChat.js +18 -7
- package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +30 -1
- package/lib/cjs/components/livechatwidget/common/liveChatConfigUtils.js +18 -1
- package/lib/cjs/components/livechatwidget/common/renderSurveyHelpers.js +31 -7
- package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +15 -2
- package/lib/cjs/components/livechatwidget/common/startChat.js +5 -3
- package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +22 -11
- package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +18 -14
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +4 -3
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +12 -6
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/queueOverflowHandlerMiddleware.js +45 -0
- package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +3 -1
- package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +3 -1
- package/lib/cjs/contexts/createReducer.js +30 -0
- package/lib/cjs/controller/componentController.js +2 -2
- package/lib/cjs/firstresponselatency/util.js +52 -27
- package/lib/cjs/plugins/newMessageEventHandler.js +12 -6
- package/lib/esm/common/Constants.js +9 -2
- package/lib/esm/common/telemetry/TelemetryConstants.js +1 -0
- package/lib/esm/common/utils.js +4 -0
- package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +28 -15
- package/lib/esm/components/draggable/DraggableChatWidget.js +16 -1
- package/lib/esm/components/headerstateful/HeaderStateful.js +12 -2
- package/lib/esm/components/livechatwidget/LiveChatWidget.js +2 -8
- package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +22 -9
- package/lib/esm/components/livechatwidget/common/endChat.js +18 -7
- package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +30 -1
- package/lib/esm/components/livechatwidget/common/liveChatConfigUtils.js +16 -0
- package/lib/esm/components/livechatwidget/common/renderSurveyHelpers.js +33 -9
- package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +16 -3
- package/lib/esm/components/livechatwidget/common/startChat.js +5 -3
- package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +22 -11
- package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +18 -14
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +4 -4
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +12 -6
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/queueOverflowHandlerMiddleware.js +38 -0
- package/lib/esm/contexts/common/LiveChatWidgetActionType.js +3 -1
- package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +3 -1
- package/lib/esm/contexts/createReducer.js +30 -0
- package/lib/esm/controller/componentController.js +2 -2
- package/lib/esm/firstresponselatency/util.js +49 -25
- package/lib/esm/plugins/newMessageEventHandler.js +12 -6
- package/lib/types/common/Constants.d.ts +8 -2
- package/lib/types/common/telemetry/TelemetryConstants.d.ts +1 -0
- package/lib/types/common/utils.d.ts +5 -0
- package/lib/types/components/livechatwidget/common/liveChatConfigUtils.d.ts +1 -0
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.d.ts +1 -1
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.d.ts +1 -1
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/queueOverflowHandlerMiddleware.d.ts +5 -0
- package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +2 -0
- package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +3 -1
- package/lib/types/firstresponselatency/util.d.ts +17 -0
- package/lib/types/plugins/newMessageEventHandler.d.ts +1 -1
- package/package.json +4 -4
|
@@ -1,35 +1,59 @@
|
|
|
1
1
|
import { ScenarioType } from "./Constants";
|
|
2
2
|
import { Constants } from "../common/Constants";
|
|
3
|
+
/**
|
|
4
|
+
* Determines whether a given activity is a historical message.
|
|
5
|
+
*
|
|
6
|
+
* This function checks if the activity is a message type and uses a combination
|
|
7
|
+
* of legacy tags and timestamp-based logic to determine if the message is historical.
|
|
8
|
+
*
|
|
9
|
+
* @param {IActivity} activity - The activity object to evaluate.
|
|
10
|
+
* @param {number} startTime - The start time (in milliseconds since epoch) to compare against.
|
|
11
|
+
* @returns {boolean} - Returns true if the activity is a historical message, false otherwise.
|
|
12
|
+
*
|
|
13
|
+
* Logic:
|
|
14
|
+
* - If the activity type is not a message, it is not historical.
|
|
15
|
+
* - If the activity contains a legacy history message tag, it is considered historical.
|
|
16
|
+
* - Otherwise, the function extracts a timestamp from the activity ID using `extractTimestampFromId`.
|
|
17
|
+
* - If the ID is valid and the timestamp is older than the start time, the message is historical.
|
|
18
|
+
*/
|
|
3
19
|
export const isHistoryMessage = (activity, startTime) => {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
20
|
+
var _activity$channelData, _activity$channelData2;
|
|
21
|
+
// Only process message activities
|
|
22
|
+
if ((activity === null || activity === void 0 ? void 0 : activity.type) !== Constants.message) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
9
25
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
26
|
+
// Legacy check for history message tag
|
|
27
|
+
if (activity !== null && activity !== void 0 && (_activity$channelData = activity.channelData) !== null && _activity$channelData !== void 0 && (_activity$channelData2 = _activity$channelData.tags) !== null && _activity$channelData2 !== void 0 && _activity$channelData2.includes(Constants.historyMessageTag)) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
const activityId = extractTimestampFromId(activity);
|
|
31
|
+
const isValidId = !isNaN(activityId) && activityId > 0;
|
|
32
|
+
const isOlderThanStartTime = activityId < startTime;
|
|
33
|
+
const isHistoryById = isValidId && isOlderThanStartTime;
|
|
34
|
+
return isHistoryById;
|
|
35
|
+
};
|
|
36
|
+
export const extractTimestampFromId = activity => {
|
|
37
|
+
const id = (activity === null || activity === void 0 ? void 0 : activity.id) ?? "";
|
|
14
38
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
39
|
+
// Helper function to get timestamp fallback
|
|
40
|
+
const getTimestampFallback = () => {
|
|
41
|
+
const timestamp = new Date((activity === null || activity === void 0 ? void 0 : activity.timestamp) ?? "").getTime();
|
|
42
|
+
return isNaN(timestamp) ? 0 : timestamp;
|
|
43
|
+
};
|
|
19
44
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
console.error("Error in parsing activity id: ", e);
|
|
45
|
+
// Check if ID looks like a UUID (contains dashes or is very long)
|
|
46
|
+
const UUID_LENGTH_THRESHOLD = 13; // Threshold to distinguish UUIDs from epoch timestamps
|
|
47
|
+
if (id.includes("-") || id.length > UUID_LENGTH_THRESHOLD) {
|
|
48
|
+
// Likely UUID, use timestamp instead
|
|
49
|
+
return getTimestampFallback();
|
|
50
|
+
}
|
|
51
|
+
const activityId = parseInt(id);
|
|
52
|
+
// if activity id is not a number, then we use timestamp field
|
|
53
|
+
if (isNaN(activityId)) {
|
|
54
|
+
return getTimestampFallback();
|
|
31
55
|
}
|
|
32
|
-
return
|
|
56
|
+
return activityId;
|
|
33
57
|
};
|
|
34
58
|
export const buildMessagePayload = (activity, userId) => {
|
|
35
59
|
var _text, _text2, _activity$channelData3, _activity$from;
|
|
@@ -6,13 +6,13 @@ import { Constants } from "../common/Constants";
|
|
|
6
6
|
import { FirstResponseLatencyTracker } from "../firstresponselatency/FirstResponseLatencyTracker";
|
|
7
7
|
import { TelemetryHelper } from "../common/telemetry/TelemetryHelper";
|
|
8
8
|
import { TelemetryManager } from "../common/telemetry/TelemetryManager";
|
|
9
|
-
export const createOnNewAdapterActivityHandler = (chatId, userId) => {
|
|
9
|
+
export const createOnNewAdapterActivityHandler = (chatId, userId, startTime) => {
|
|
10
10
|
// Hooking the message tracker in the listener, a bit invasive but easier to control.
|
|
11
11
|
const firstResponseLatencyTracker = new FirstResponseLatencyTracker();
|
|
12
12
|
// epoch time in utc for when start to listen.
|
|
13
13
|
// We dont longer have a mechanism to know if a message is history or new, so any message older than the time we start listening will be considered a history message.
|
|
14
14
|
// this is a workaround for the fact that we dont have a way to identify if a message is history or new, and it will provide consistency across different scenarios
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
let isHistoryMessageReceivedEventRaised = false;
|
|
17
17
|
const onNewAdapterActivityHandler = activity => {
|
|
18
18
|
raiseMessageEvent(activity);
|
|
@@ -35,6 +35,7 @@ export const createOnNewAdapterActivityHandler = (chatId, userId) => {
|
|
|
35
35
|
});
|
|
36
36
|
};
|
|
37
37
|
const systemMessageStrategy = activity => {
|
|
38
|
+
var _TelemetryManager$Int3;
|
|
38
39
|
const payload = buildMessagePayload(activity, userId);
|
|
39
40
|
payload.messageType = Constants.systemMessageTag;
|
|
40
41
|
if (isHistoryMessage(activity, startTime)) {
|
|
@@ -42,6 +43,11 @@ export const createOnNewAdapterActivityHandler = (chatId, userId) => {
|
|
|
42
43
|
historyMessageStrategy(polyfillMessagePayloadForEvent(activity, payload, (_TelemetryManager$Int2 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int2 === void 0 ? void 0 : _TelemetryManager$Int2.conversationId));
|
|
43
44
|
return;
|
|
44
45
|
}
|
|
46
|
+
const newMessageReceivedEvent = {
|
|
47
|
+
eventName: BroadcastEvent.NewMessageReceived,
|
|
48
|
+
payload: polyfillMessagePayloadForEvent(activity, payload, (_TelemetryManager$Int3 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int3 === void 0 ? void 0 : _TelemetryManager$Int3.conversationId)
|
|
49
|
+
};
|
|
50
|
+
BroadcastService.postMessage(newMessageReceivedEvent);
|
|
45
51
|
TelemetryHelper.logActionEventToAllTelemetry(LogLevel.INFO, {
|
|
46
52
|
Event: TelemetryEvent.SystemMessageReceived,
|
|
47
53
|
Description: "System message received"
|
|
@@ -77,20 +83,20 @@ export const createOnNewAdapterActivityHandler = (chatId, userId) => {
|
|
|
77
83
|
return true;
|
|
78
84
|
};
|
|
79
85
|
const receivedMessageStrategy = activity => {
|
|
80
|
-
var _TelemetryManager$
|
|
86
|
+
var _TelemetryManager$Int5;
|
|
81
87
|
if (!isValidMessage(activity)) return;
|
|
82
88
|
const isHistoryMessageReceived = isHistoryMessage(activity, startTime);
|
|
83
89
|
const payload = buildMessagePayload(activity, userId);
|
|
84
90
|
payload.messageType = Constants.userMessageTag;
|
|
85
91
|
if (isHistoryMessageReceived) {
|
|
86
|
-
var _TelemetryManager$
|
|
87
|
-
historyMessageStrategy(polyfillMessagePayloadForEvent(activity, payload, (_TelemetryManager$
|
|
92
|
+
var _TelemetryManager$Int4;
|
|
93
|
+
historyMessageStrategy(polyfillMessagePayloadForEvent(activity, payload, (_TelemetryManager$Int4 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int4 === void 0 ? void 0 : _TelemetryManager$Int4.conversationId));
|
|
88
94
|
return;
|
|
89
95
|
}
|
|
90
96
|
firstResponseLatencyTracker.stopClock(payload);
|
|
91
97
|
const newMessageReceivedEvent = {
|
|
92
98
|
eventName: BroadcastEvent.NewMessageReceived,
|
|
93
|
-
payload: polyfillMessagePayloadForEvent(activity, payload, (_TelemetryManager$
|
|
99
|
+
payload: polyfillMessagePayloadForEvent(activity, payload, (_TelemetryManager$Int5 = TelemetryManager.InternalTelemetryData) === null || _TelemetryManager$Int5 === void 0 ? void 0 : _TelemetryManager$Int5.conversationId)
|
|
94
100
|
};
|
|
95
101
|
BroadcastService.postMessage(newMessageReceivedEvent);
|
|
96
102
|
TelemetryHelper.logActionEventToAllTelemetry(LogLevel.INFO, {
|
|
@@ -7,6 +7,9 @@ export declare class Constants {
|
|
|
7
7
|
static readonly historyMessageTag = "history";
|
|
8
8
|
static readonly agentEndConversationMessageTag = "agentendconversation";
|
|
9
9
|
static readonly supervisorForceCloseMessageTag = "supervisorforceclosedconversation";
|
|
10
|
+
static readonly endConversationalSurveyMessageTag = "endconversationalsurvey";
|
|
11
|
+
static readonly startConversationalSurveyMessageTag = "startconversationalsurvey";
|
|
12
|
+
static readonly c2ConversationalSurveyMessageTag = "c2conversationalsurvey";
|
|
10
13
|
static readonly receivedMessageClassName = "ms_lcw_webchat_received_message";
|
|
11
14
|
static readonly sentMessageClassName = "ms_lcw_webchat_sent_message";
|
|
12
15
|
static readonly webchatChannelId = "webchat";
|
|
@@ -80,8 +83,7 @@ export declare class Constants {
|
|
|
80
83
|
static readonly TargetRelationship = "rel";
|
|
81
84
|
static readonly TargetRelationshipAttributes = "noopener noreferrer";
|
|
82
85
|
static readonly OpenLinkIconCssClass = "webchat__render-markdown__external-link-icon";
|
|
83
|
-
static readonly
|
|
84
|
-
static readonly internetConnectionTestUrlText = "Omnichannel Connect Test";
|
|
86
|
+
static readonly internetConnectionTestPath = "/livechatwidget/version.txt";
|
|
85
87
|
static readonly ChatWidgetStateChangedPrefix = "ChatWidgetStateChanged";
|
|
86
88
|
static readonly PostChatLoadingDurationInMs = 2000;
|
|
87
89
|
static readonly BrowserUnloadConfirmationMessage = "Do you want to leave chat?";
|
|
@@ -94,6 +96,7 @@ export declare class Constants {
|
|
|
94
96
|
static readonly OCOriginalMessageId = "OriginalMessageId";
|
|
95
97
|
static readonly WebchatSequenceIdAttribute = "webchat:sequence-id";
|
|
96
98
|
static readonly MessageSequenceIdOverride = "MessageSequenceIdOverride";
|
|
99
|
+
static readonly EndConversationDueToOverflow = "endconversationduetooverflow";
|
|
97
100
|
}
|
|
98
101
|
export declare const Regex: {
|
|
99
102
|
new (): {};
|
|
@@ -180,6 +183,9 @@ export declare enum ConversationMode {
|
|
|
180
183
|
Regular = "192350000",
|
|
181
184
|
Persistent = "192350001"
|
|
182
185
|
}
|
|
186
|
+
export declare enum SurveyProvider {
|
|
187
|
+
MicrosoftCopilotStudio = "600990001"
|
|
188
|
+
}
|
|
183
189
|
export declare enum LiveWorkItemState {
|
|
184
190
|
Active = "Active",
|
|
185
191
|
Closed = "Closed",
|
|
@@ -172,6 +172,7 @@ export declare enum TelemetryEvent {
|
|
|
172
172
|
BotAuthActivityUndefinedSignInId = "BotAuthActivityUndefinedSignInId",
|
|
173
173
|
ThirdPartyCookiesBlocked = "ThirdPartyCookiesBlocked",
|
|
174
174
|
ParticipantsRemovedEvent = "ParticipantsRemovedEvent",
|
|
175
|
+
QueueOverflowEvent = "QueueOverflowEvent",
|
|
175
176
|
ProcessingHTMLTextMiddlewareFailed = "ProcessingHTMLTextMiddlewareFailed",
|
|
176
177
|
ProcessingSanitizationMiddlewareFailed = "ProcessingSanitizationMiddlewareFailed",
|
|
177
178
|
FormatTagsMiddlewareJSONStringifyFailed = "FormatTagsMiddlewareJSONStringifyFailed",
|
|
@@ -47,3 +47,8 @@ export declare const formatTemplateString: (templateMessage: string, values: any
|
|
|
47
47
|
export declare const parseLowerCaseString: (property: string | boolean | undefined) => string;
|
|
48
48
|
export declare const setOcUserAgent: (chatSDK: any) => void;
|
|
49
49
|
export declare function getDeviceType(): string;
|
|
50
|
+
export declare function isEndConversationDueToOverflowActivity(activity: {
|
|
51
|
+
channelData?: {
|
|
52
|
+
tags?: string[];
|
|
53
|
+
};
|
|
54
|
+
}): boolean | undefined;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { FacadeChatSDK } from "../../../common/facades/FacadeChatSDK";
|
|
2
2
|
export declare const isPostChatSurveyEnabled: (facadeChatSDK: FacadeChatSDK) => Promise<boolean>;
|
|
3
|
+
export declare const getPostChatSurveyConfig: (facadeChatSDK: FacadeChatSDK) => Promise<any>;
|
|
3
4
|
export declare const isPersistentChatEnabled: (conversationMode: string | undefined) => boolean;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Adds necessary tags if not present so that the rendering middlewares can process them later.
|
|
5
5
|
******/
|
|
6
6
|
import { IWebChatAction } from "../../../interfaces/IWebChatAction";
|
|
7
|
-
declare const channelDataMiddleware: ({ dispatch }: {
|
|
7
|
+
declare const channelDataMiddleware: (addConversationalSurveyTagsCallback: any) => ({ dispatch }: {
|
|
8
8
|
dispatch: any;
|
|
9
9
|
}) => (next: any) => (action: IWebChatAction) => any;
|
|
10
10
|
export default channelDataMiddleware;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* The callback is then invoked to hide the send box (by default).
|
|
6
6
|
******/
|
|
7
7
|
import { IWebChatAction } from "../../../interfaces/IWebChatAction";
|
|
8
|
-
declare const createConversationEndMiddleware: (conversationEndCallback: any) => ({ dispatch }: {
|
|
8
|
+
declare const createConversationEndMiddleware: (conversationEndCallback: any, startConversationalSurveyCallback: any, endConversationalSurveyCallback: any) => ({ dispatch }: {
|
|
9
9
|
dispatch: any;
|
|
10
10
|
}) => (next: any) => (action: IWebChatAction) => any;
|
|
11
11
|
export default createConversationEndMiddleware;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { IWebChatAction } from "../../../interfaces/IWebChatAction";
|
|
2
|
+
import { ILiveChatWidgetContext } from "../../../../../contexts/common/ILiveChatWidgetContext";
|
|
3
|
+
import { Dispatch } from "react";
|
|
4
|
+
import { ILiveChatWidgetAction } from "../../../../../contexts/common/ILiveChatWidgetAction";
|
|
5
|
+
export declare const createQueueOverflowMiddleware: (state: ILiveChatWidgetContext, dispatch: Dispatch<ILiveChatWidgetAction>) => () => (next: (action: IWebChatAction) => void) => (action: IWebChatAction) => void;
|
|
@@ -48,6 +48,8 @@ export interface ILiveChatWidgetContext {
|
|
|
48
48
|
chatDisconnectEventReceived: boolean;
|
|
49
49
|
selectedSurveyMode: string | null;
|
|
50
50
|
postChatParticipantType: undefined | ParticipantType;
|
|
51
|
+
isConversationalSurvey: boolean;
|
|
52
|
+
isConversationalSurveyEnabled: boolean;
|
|
51
53
|
};
|
|
52
54
|
uiStates: {
|
|
53
55
|
showConfirmationPane: boolean;
|
|
@@ -44,5 +44,7 @@ export declare enum LiveChatWidgetActionType {
|
|
|
44
44
|
SET_SURVEY_MODE = 42,
|
|
45
45
|
SET_CONFIRMATION_STATE = 43,
|
|
46
46
|
SET_POST_CHAT_PARTICIPANT_TYPE = 44,
|
|
47
|
-
|
|
47
|
+
SET_CONVERSATIONAL_SURVEY_ENABLED = 45,
|
|
48
|
+
SET_CONVERSATIONAL_SURVEY_DISPLAY = 46,
|
|
49
|
+
GET_IN_MEMORY_STATE = 47
|
|
48
50
|
}
|
|
@@ -1,6 +1,23 @@
|
|
|
1
1
|
import { MessagePayload, ScenarioType, TrackingMessage } from "./Constants";
|
|
2
2
|
import { IActivity } from "botframework-directlinejs";
|
|
3
|
+
/**
|
|
4
|
+
* Determines whether a given activity is a historical message.
|
|
5
|
+
*
|
|
6
|
+
* This function checks if the activity is a message type and uses a combination
|
|
7
|
+
* of legacy tags and timestamp-based logic to determine if the message is historical.
|
|
8
|
+
*
|
|
9
|
+
* @param {IActivity} activity - The activity object to evaluate.
|
|
10
|
+
* @param {number} startTime - The start time (in milliseconds since epoch) to compare against.
|
|
11
|
+
* @returns {boolean} - Returns true if the activity is a historical message, false otherwise.
|
|
12
|
+
*
|
|
13
|
+
* Logic:
|
|
14
|
+
* - If the activity type is not a message, it is not historical.
|
|
15
|
+
* - If the activity contains a legacy history message tag, it is considered historical.
|
|
16
|
+
* - Otherwise, the function extracts a timestamp from the activity ID using `extractTimestampFromId`.
|
|
17
|
+
* - If the ID is valid and the timestamp is older than the start time, the message is historical.
|
|
18
|
+
*/
|
|
3
19
|
export declare const isHistoryMessage: (activity: IActivity, startTime: number) => boolean;
|
|
20
|
+
export declare const extractTimestampFromId: (activity: IActivity) => number;
|
|
4
21
|
export declare const buildMessagePayload: (activity: IActivity, userId: string) => MessagePayload;
|
|
5
22
|
export declare const polyfillMessagePayloadForEvent: (activity: IActivity, payload: MessagePayload, conversationId?: string) => MessagePayload;
|
|
6
23
|
export declare const getScenarioType: (activity: IActivity) => ScenarioType;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { IActivity } from "botframework-directlinejs";
|
|
2
|
-
export declare const createOnNewAdapterActivityHandler: (chatId: string, userId: string) => (activity: IActivity) => void;
|
|
2
|
+
export declare const createOnNewAdapterActivityHandler: (chatId: string, userId: string, startTime: number) => (activity: IActivity) => void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@microsoft/omnichannel-chat-widget",
|
|
3
|
-
"version": "1.8.2-main.
|
|
3
|
+
"version": "1.8.2-main.5195aba",
|
|
4
4
|
"description": "Microsoft Omnichannel Chat Widget",
|
|
5
5
|
"main": "lib/cjs/index.js",
|
|
6
6
|
"types": "lib/types/index.d.ts",
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"@azure/core-tracing": "^1.2.0",
|
|
88
88
|
"@microsoft/applicationinsights-web": "^3.3.6",
|
|
89
89
|
"@microsoft/omnichannel-chat-components": "1.1.12",
|
|
90
|
-
"@microsoft/omnichannel-chat-sdk": "^1.11.
|
|
90
|
+
"@microsoft/omnichannel-chat-sdk": "^1.11.4",
|
|
91
91
|
"@opentelemetry/api": "^1.9.0",
|
|
92
92
|
"abort-controller": "^3",
|
|
93
93
|
"abort-controller-es5": "^2.0.1",
|
|
@@ -121,8 +121,8 @@
|
|
|
121
121
|
"build:umd": "webpack --config ./webpack.umd.config.cjs",
|
|
122
122
|
"verify": "yarn install && yarn build-storybook && yarn test:all && yarn build && yarn storybook",
|
|
123
123
|
"testpack": "yarn build && yarn pack",
|
|
124
|
-
"build-sample": "yarn build && webpack --config ./webpack.config.cjs",
|
|
125
|
-
"build-sample:dev": "yarn build && webpack --config ./webpack.dev.config.cjs",
|
|
124
|
+
"build-sample": "yarn build && cross-env NODE_OPTIONS=--openssl-legacy-provider webpack --config ./webpack.config.cjs",
|
|
125
|
+
"build-sample:dev": "yarn build && cross-env NODE_OPTIONS=--openssl-legacy-provider webpack --config ./webpack.dev.config.cjs",
|
|
126
126
|
"test:visual:build": "yarn build-storybook && yarn test:visual",
|
|
127
127
|
"lint": "yarn eslint . --max-warnings=0",
|
|
128
128
|
"prepush": "yarn lint && yarn danger:prepush",
|