@botonic/plugin-flow-builder 2.26.0 → 2.27.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.
- package/CHANGELOG.md +12 -0
- package/package.json +2 -3
- package/src/lib/action/ai-agent.d.ts +1 -1
- package/src/lib/action/ai-agent.js +6 -6
- package/src/lib/action/ai-agent.js.map +1 -1
- package/src/lib/action/fallback.d.ts +1 -1
- package/src/lib/action/fallback.js +8 -8
- package/src/lib/action/fallback.js.map +1 -1
- package/src/lib/action/first-interaction.js +10 -9
- package/src/lib/action/first-interaction.js.map +1 -1
- package/src/lib/action/index.d.ts +6 -6
- package/src/lib/action/index.js +39 -43
- package/src/lib/action/index.js.map +1 -1
- package/src/lib/action/knowledge-bases.d.ts +1 -1
- package/src/lib/action/knowledge-bases.js +14 -14
- package/src/lib/action/knowledge-bases.js.map +1 -1
- package/src/lib/action/payload.js +14 -13
- package/src/lib/action/payload.js.map +1 -1
- package/src/lib/api.d.ts +3 -3
- package/src/lib/api.js +14 -15
- package/src/lib/api.js.map +1 -1
- package/src/lib/constants.d.ts +0 -1
- package/src/lib/constants.js +0 -2
- package/src/lib/constants.js.map +1 -1
- package/src/lib/content-fields/content-fields-base.d.ts +4 -4
- package/src/lib/content-fields/content-fields-base.js +7 -7
- package/src/lib/content-fields/content-fields-base.js.map +1 -1
- package/src/lib/content-fields/flow-ai-agent.d.ts +3 -3
- package/src/lib/content-fields/flow-ai-agent.js +4 -4
- package/src/lib/content-fields/flow-ai-agent.js.map +1 -1
- package/src/lib/content-fields/flow-bot-action.d.ts +3 -3
- package/src/lib/content-fields/flow-bot-action.js +5 -5
- package/src/lib/content-fields/flow-bot-action.js.map +1 -1
- package/src/lib/content-fields/flow-button.d.ts +5 -4
- package/src/lib/content-fields/flow-button.js +8 -5
- package/src/lib/content-fields/flow-button.js.map +1 -1
- package/src/lib/content-fields/flow-capture-user-input.d.ts +3 -3
- package/src/lib/content-fields/flow-capture-user-input.js +3 -3
- package/src/lib/content-fields/flow-capture-user-input.js.map +1 -1
- package/src/lib/content-fields/flow-carousel.d.ts +4 -4
- package/src/lib/content-fields/flow-carousel.js +8 -8
- package/src/lib/content-fields/flow-carousel.js.map +1 -1
- package/src/lib/content-fields/flow-channel-conditional.d.ts +5 -5
- package/src/lib/content-fields/flow-channel-conditional.js +8 -8
- package/src/lib/content-fields/flow-channel-conditional.js.map +1 -1
- package/src/lib/content-fields/flow-country-conditional.d.ts +5 -5
- package/src/lib/content-fields/flow-country-conditional.js +8 -8
- package/src/lib/content-fields/flow-country-conditional.js.map +1 -1
- package/src/lib/content-fields/flow-custom-conditional.d.ts +5 -5
- package/src/lib/content-fields/flow-custom-conditional.js +8 -8
- package/src/lib/content-fields/flow-custom-conditional.js.map +1 -1
- package/src/lib/content-fields/flow-element.d.ts +3 -3
- package/src/lib/content-fields/flow-element.js +4 -4
- package/src/lib/content-fields/flow-element.js.map +1 -1
- package/src/lib/content-fields/flow-go-to-flow.d.ts +3 -3
- package/src/lib/content-fields/flow-go-to-flow.js +4 -4
- package/src/lib/content-fields/flow-go-to-flow.js.map +1 -1
- package/src/lib/content-fields/flow-handoff.d.ts +4 -4
- package/src/lib/content-fields/flow-handoff.js +7 -7
- package/src/lib/content-fields/flow-handoff.js.map +1 -1
- package/src/lib/content-fields/flow-image.d.ts +3 -3
- package/src/lib/content-fields/flow-image.js +3 -3
- package/src/lib/content-fields/flow-image.js.map +1 -1
- package/src/lib/content-fields/flow-knowledge-base.d.ts +3 -3
- package/src/lib/content-fields/flow-knowledge-base.js +2 -2
- package/src/lib/content-fields/flow-knowledge-base.js.map +1 -1
- package/src/lib/content-fields/flow-queue-status-conditional.d.ts +6 -6
- package/src/lib/content-fields/flow-queue-status-conditional.js +11 -11
- package/src/lib/content-fields/flow-queue-status-conditional.js.map +1 -1
- package/src/lib/content-fields/flow-rating.d.ts +3 -3
- package/src/lib/content-fields/flow-rating.js +8 -8
- package/src/lib/content-fields/flow-rating.js.map +1 -1
- package/src/lib/content-fields/flow-text.d.ts +3 -3
- package/src/lib/content-fields/flow-text.js +6 -6
- package/src/lib/content-fields/flow-text.js.map +1 -1
- package/src/lib/content-fields/flow-video.d.ts +3 -3
- package/src/lib/content-fields/flow-video.js +3 -3
- package/src/lib/content-fields/flow-video.js.map +1 -1
- package/src/lib/content-fields/flow-webview.d.ts +2 -2
- package/src/lib/content-fields/flow-webview.js +3 -3
- package/src/lib/content-fields/flow-webview.js.map +1 -1
- package/src/lib/content-fields/flow-whatsapp-cta-url-button.d.ts +3 -3
- package/src/lib/content-fields/flow-whatsapp-cta-url-button.js +4 -4
- package/src/lib/content-fields/flow-whatsapp-cta-url-button.js.map +1 -1
- package/src/lib/content-fields/flow-whatsapp-template.d.ts +3 -3
- package/src/lib/content-fields/flow-whatsapp-template.js +18 -18
- package/src/lib/content-fields/flow-whatsapp-template.js.map +1 -1
- package/src/lib/content-fields/whatsapp-button-list/flow-whatsapp-button-list-row.d.ts +2 -2
- package/src/lib/content-fields/whatsapp-button-list/flow-whatsapp-button-list-row.js +1 -1
- package/src/lib/content-fields/whatsapp-button-list/flow-whatsapp-button-list-row.js.map +1 -1
- package/src/lib/content-fields/whatsapp-button-list/flow-whatsapp-button-list-section.d.ts +2 -2
- package/src/lib/content-fields/whatsapp-button-list/flow-whatsapp-button-list-section.js +1 -1
- package/src/lib/content-fields/whatsapp-button-list/flow-whatsapp-button-list-section.js.map +1 -1
- package/src/lib/content-fields/whatsapp-button-list/flow-whatsapp-button-list.d.ts +3 -3
- package/src/lib/content-fields/whatsapp-button-list/flow-whatsapp-button-list.js +5 -5
- package/src/lib/content-fields/whatsapp-button-list/flow-whatsapp-button-list.js.map +1 -1
- package/src/lib/filters/index.d.ts +2 -2
- package/src/lib/filters/index.js +2 -2
- package/src/lib/filters/index.js.map +1 -1
- package/src/lib/flow-factory.d.ts +3 -3
- package/src/lib/flow-factory.js +6 -6
- package/src/lib/flow-factory.js.map +1 -1
- package/src/lib/functions/index.d.ts +3 -3
- package/src/lib/functions/index.js +3 -3
- package/src/lib/functions/index.js.map +1 -1
- package/src/lib/index.d.ts +4 -4
- package/src/lib/index.js +23 -23
- package/src/lib/index.js.map +1 -1
- package/src/lib/services/capture-user-input-client.d.ts +4 -4
- package/src/lib/services/capture-user-input-client.js +6 -6
- package/src/lib/services/capture-user-input-client.js.map +1 -1
- package/src/lib/services/flow-client.d.ts +4 -4
- package/src/lib/services/flow-client.js +6 -7
- package/src/lib/services/flow-client.js.map +1 -1
- package/src/lib/services/hubtype-queues-client.d.ts +3 -1
- package/src/lib/services/hubtype-queues-client.js +8 -8
- package/src/lib/services/hubtype-queues-client.js.map +1 -1
- package/src/lib/services/smart-intent-client.d.ts +4 -4
- package/src/lib/services/smart-intent-client.js +5 -6
- package/src/lib/services/smart-intent-client.js.map +1 -1
- package/src/lib/tests/helpers/utils.d.ts +7 -7
- package/src/lib/tests/helpers/utils.js +61 -25
- package/src/lib/tests/helpers/utils.js.map +1 -1
- package/src/lib/tests/mocks/ai-agent-response.d.ts +2 -2
- package/src/lib/tests/mocks/ai-agent-response.js +1 -1
- package/src/lib/tests/mocks/ai-agent-response.js.map +1 -1
- package/src/lib/tests/mocks/hubtype-queue-client.js +4 -2
- package/src/lib/tests/mocks/hubtype-queue-client.js.map +1 -1
- package/src/lib/tests/mocks/smart-intent-client.js +2 -2
- package/src/lib/tests/mocks/smart-intent-client.js.map +1 -1
- package/src/lib/tracking.d.ts +5 -5
- package/src/lib/tracking.js +22 -22
- package/src/lib/tracking.js.map +1 -1
- package/src/lib/types.d.ts +5 -5
- package/src/lib/user-input/capture-user-input.d.ts +3 -3
- package/src/lib/user-input/capture-user-input.js +9 -9
- package/src/lib/user-input/capture-user-input.js.map +1 -1
- package/src/lib/user-input/index.d.ts +2 -2
- package/src/lib/user-input/index.js +8 -8
- package/src/lib/user-input/index.js.map +1 -1
- package/src/lib/user-input/keyword.d.ts +4 -4
- package/src/lib/user-input/keyword.js +9 -9
- package/src/lib/user-input/keyword.js.map +1 -1
- package/src/lib/user-input/smart-intent.d.ts +3 -3
- package/src/lib/user-input/smart-intent.js +12 -12
- package/src/lib/user-input/smart-intent.js.map +1 -1
- package/src/lib/utils.d.ts +4 -4
- package/src/lib/utils.js +9 -9
- package/src/lib/utils.js.map +1 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BotonicContext, BotonicRequestInput, MessagingChannel, ResolvedPlugins } from '@botonic/shared';
|
|
2
2
|
import { BotonicPluginFlowBuilder, FlowContent } from '../../index';
|
|
3
3
|
import { BotonicPluginFlowBuilderOptions } from '../../types';
|
|
4
4
|
export declare function createFlowBuilderPlugin({ flow, trackEvent, getKnowledgeBaseResponse, getAiAgentResponse, inShadowing, contentFilters, disableAIAgentInFirstInteraction, }: BotonicPluginFlowBuilderOptions): BotonicPluginFlowBuilder;
|
|
5
5
|
interface RequestArgs {
|
|
6
|
-
input:
|
|
6
|
+
input: BotonicRequestInput;
|
|
7
7
|
plugins?: ResolvedPlugins;
|
|
8
8
|
provider?: MessagingChannel;
|
|
9
9
|
isFirstInteraction?: boolean;
|
|
@@ -17,16 +17,16 @@ interface RequestArgs {
|
|
|
17
17
|
hubtypeCaseId?: string;
|
|
18
18
|
captureUserInputId?: string;
|
|
19
19
|
}
|
|
20
|
-
export declare function createRequest({ input, plugins, provider, isFirstInteraction, user, extraData, shadowing, hubtypeCaseId, captureUserInputId, }: RequestArgs):
|
|
21
|
-
export declare function getContentsAfterPreAndBotonicInit(
|
|
22
|
-
export declare function getActionRequest(
|
|
20
|
+
export declare function createRequest({ input, plugins, provider, isFirstInteraction, user, extraData, shadowing, hubtypeCaseId, captureUserInputId, }: RequestArgs): BotonicContext;
|
|
21
|
+
export declare function getContentsAfterPreAndBotonicInit(botonicContext: BotonicContext, flowBuilderPlugin: BotonicPluginFlowBuilder): Promise<FlowContent[]>;
|
|
22
|
+
export declare function getActionRequest(botonicContext: BotonicContext): BotonicContext;
|
|
23
23
|
interface FlowBuilderPluginAndGetContentsArgs {
|
|
24
24
|
flowBuilderOptions: BotonicPluginFlowBuilderOptions;
|
|
25
25
|
requestArgs: RequestArgs;
|
|
26
26
|
}
|
|
27
27
|
export declare function createFlowBuilderPluginAndGetContents({ flowBuilderOptions, requestArgs, }: FlowBuilderPluginAndGetContentsArgs): Promise<{
|
|
28
28
|
contents: FlowContent[];
|
|
29
|
-
|
|
30
|
-
flowBuilderPluginPost: (
|
|
29
|
+
botonicContext: BotonicContext;
|
|
30
|
+
flowBuilderPluginPost: (botonicContext: BotonicContext) => void;
|
|
31
31
|
}>;
|
|
32
32
|
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
|
-
import {
|
|
2
|
+
import { applyNonPatchSessionUpdateFields, BotonicContext, BotonicContextInput, BotonicContextSecrets, BotonicContextSession, BotonicContextSettings, mergeBotonicSessionPatchSlice, mergeChatUserPatchResponseIntoSessionUser, MessagingChannel, sessionUpdateToPatchBody, userUpdateToChatUserPatchBody, } from '@botonic/shared';
|
|
3
3
|
import { BotonicPluginFlowBuilder, FlowBuilderAction, } from '../../index';
|
|
4
4
|
export function createFlowBuilderPlugin({ flow, trackEvent, getKnowledgeBaseResponse, getAiAgentResponse, inShadowing, contentFilters, disableAIAgentInFirstInteraction, }) {
|
|
5
5
|
const flowBuilderPlugin = new BotonicPluginFlowBuilder({
|
|
@@ -18,54 +18,90 @@ export function createRequest({ input, plugins = {}, provider = MessagingChannel
|
|
|
18
18
|
country: 'US',
|
|
19
19
|
systemLocale: 'en',
|
|
20
20
|
}, extraData = {}, shadowing = false, hubtypeCaseId, captureUserInputId, }) {
|
|
21
|
-
const
|
|
21
|
+
const sessionData = Object.assign(Object.assign({ organization: { id: 'orgIdTest', name: 'orgTest' }, bot: { id: 'bid1', name: 'Bot' }, channel: {
|
|
22
22
|
provider,
|
|
23
|
+
imp_id: 'imp-test',
|
|
24
|
+
unformatted_phone_number: '',
|
|
25
|
+
}, user: {
|
|
23
26
|
id: 'uid1',
|
|
27
|
+
provider_id: provider,
|
|
24
28
|
locale: user.locale,
|
|
25
29
|
country: user.country,
|
|
26
30
|
system_locale: user.systemLocale,
|
|
27
31
|
extra_data: extraData,
|
|
28
|
-
},
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
const
|
|
32
|
+
}, is_first_interaction: isFirstInteraction, is_test_integration: false, flow_thread_id: 'testFlowThreadId', shadowing }, (hubtypeCaseId !== undefined
|
|
33
|
+
? { hubtype_case: { id: hubtypeCaseId } }
|
|
34
|
+
: {})), (captureUserInputId !== undefined
|
|
35
|
+
? { capture_user_input_node_id: captureUserInputId }
|
|
36
|
+
: {}));
|
|
37
|
+
const contextInput = new BotonicContextInput(input);
|
|
38
|
+
const contextSession = new BotonicContextSession(sessionData);
|
|
34
39
|
const mockHubtypeService = {
|
|
35
|
-
|
|
40
|
+
sendMessages: () => __awaiter(this, void 0, void 0, function* () { return ({}); }),
|
|
36
41
|
doHandoff: () => __awaiter(this, void 0, void 0, function* () { return ({}); }),
|
|
37
|
-
getBotSession: () => __awaiter(this, void 0, void 0, function* () { return
|
|
38
|
-
updateBotSession: (
|
|
42
|
+
getBotSession: () => __awaiter(this, void 0, void 0, function* () { return sessionData; }),
|
|
43
|
+
updateBotSession: (ctx, updates) => __awaiter(this, void 0, void 0, function* () {
|
|
44
|
+
var _a;
|
|
45
|
+
applyNonPatchSessionUpdateFields(ctx.session.raw, updates);
|
|
39
46
|
const patch = sessionUpdateToPatchBody(updates);
|
|
40
|
-
Object.
|
|
41
|
-
|
|
42
|
-
|
|
47
|
+
if (Object.keys(patch).length > 0) {
|
|
48
|
+
mergeBotonicSessionPatchSlice(ctx.session.raw, patch);
|
|
49
|
+
}
|
|
50
|
+
const userBody = userUpdateToChatUserPatchBody(updates.user);
|
|
51
|
+
if (Object.keys(userBody).length > 0) {
|
|
52
|
+
mergeChatUserPatchResponseIntoSessionUser(ctx.session.raw.user, userBody);
|
|
53
|
+
}
|
|
54
|
+
Object.assign(sessionData, patch);
|
|
55
|
+
const updatedUser = updates.user;
|
|
56
|
+
if ((updatedUser === null || updatedUser === void 0 ? void 0 : updatedUser.extraData) !== undefined) {
|
|
57
|
+
sessionData.user.extra_data = updatedUser.extraData;
|
|
58
|
+
}
|
|
59
|
+
if ((updatedUser === null || updatedUser === void 0 ? void 0 : updatedUser.locale) !== undefined) {
|
|
60
|
+
sessionData.user.locale = updatedUser.locale;
|
|
61
|
+
}
|
|
62
|
+
if ((updatedUser === null || updatedUser === void 0 ? void 0 : updatedUser.country) !== undefined) {
|
|
63
|
+
sessionData.user.country = updatedUser.country;
|
|
64
|
+
}
|
|
65
|
+
if ((updatedUser === null || updatedUser === void 0 ? void 0 : updatedUser.systemLocale) !== undefined) {
|
|
66
|
+
sessionData.user.system_locale = updatedUser.systemLocale;
|
|
67
|
+
}
|
|
68
|
+
if ((updatedUser === null || updatedUser === void 0 ? void 0 : updatedUser.overrideName) !== undefined) {
|
|
69
|
+
sessionData.user.override_name = (_a = updatedUser.overrideName) !== null && _a !== void 0 ? _a : undefined;
|
|
43
70
|
}
|
|
44
71
|
}),
|
|
45
72
|
};
|
|
46
|
-
return new
|
|
73
|
+
return new BotonicContext(mockHubtypeService, {
|
|
74
|
+
input: contextInput,
|
|
75
|
+
session: contextSession,
|
|
76
|
+
settings: new BotonicContextSettings({
|
|
77
|
+
HUBTYPE_API_URL: 'https://api.hubtype.com',
|
|
78
|
+
}),
|
|
79
|
+
secrets: new BotonicContextSecrets({
|
|
80
|
+
HUBTYPE_ACCESS_TOKEN: 'fake_access_token',
|
|
81
|
+
}),
|
|
82
|
+
}, plugins, 0, 0, 'inBetweenTyping');
|
|
47
83
|
}
|
|
48
|
-
export function getContentsAfterPreAndBotonicInit(
|
|
84
|
+
export function getContentsAfterPreAndBotonicInit(botonicContext, flowBuilderPlugin) {
|
|
49
85
|
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
-
yield flowBuilderPlugin.pre(
|
|
51
|
-
const actionRequest = getActionRequest(
|
|
86
|
+
yield flowBuilderPlugin.pre(botonicContext);
|
|
87
|
+
const actionRequest = getActionRequest(botonicContext);
|
|
52
88
|
return yield FlowBuilderAction.botonicInit(actionRequest);
|
|
53
89
|
});
|
|
54
90
|
}
|
|
55
|
-
export function getActionRequest(
|
|
56
|
-
return
|
|
91
|
+
export function getActionRequest(botonicContext) {
|
|
92
|
+
return botonicContext;
|
|
57
93
|
}
|
|
58
94
|
export function createFlowBuilderPluginAndGetContents(_a) {
|
|
59
95
|
return __awaiter(this, arguments, void 0, function* ({ flowBuilderOptions, requestArgs, }) {
|
|
60
96
|
const flowBuilderPlugin = createFlowBuilderPlugin(flowBuilderOptions);
|
|
61
|
-
const
|
|
97
|
+
const botonicContext = createRequest(Object.assign(Object.assign({}, requestArgs), { plugins: {
|
|
62
98
|
flowBuilderPlugin,
|
|
63
99
|
} }));
|
|
64
|
-
const contents = yield getContentsAfterPreAndBotonicInit(
|
|
65
|
-
const flowBuilderPluginPost = (
|
|
66
|
-
flowBuilderPlugin.post(
|
|
100
|
+
const contents = yield getContentsAfterPreAndBotonicInit(botonicContext, flowBuilderPlugin);
|
|
101
|
+
const flowBuilderPluginPost = (botonicContext) => {
|
|
102
|
+
flowBuilderPlugin.post(botonicContext);
|
|
67
103
|
};
|
|
68
|
-
return { contents,
|
|
104
|
+
return { contents, botonicContext, flowBuilderPluginPost };
|
|
69
105
|
});
|
|
70
106
|
}
|
|
71
107
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../../../libs/botonic/plugin-flow-builder/src/lib/tests/helpers/utils.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../../../libs/botonic/plugin-flow-builder/src/lib/tests/helpers/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BotonicContext } from '@botonic/shared';
|
|
2
2
|
import { InferenceResponse } from '@botonic/shared';
|
|
3
|
-
export declare function mockAiAgentResponse({ messages, toolsExecuted, memoryLength, inputGuardrailsTriggered, outputGuardrailsTriggered, exit, error, }: Partial<InferenceResponse>): import("vitest").Mock<(
|
|
3
|
+
export declare function mockAiAgentResponse({ messages, toolsExecuted, memoryLength, inputGuardrailsTriggered, outputGuardrailsTriggered, exit, error, }: Partial<InferenceResponse>): import("vitest").Mock<(_botonicContext: BotonicContext) => Promise<InferenceResponse>>;
|
|
@@ -2,7 +2,7 @@ import { vi } from 'vitest';
|
|
|
2
2
|
export function mockAiAgentResponse({ messages = [], toolsExecuted = [], memoryLength = 0, inputGuardrailsTriggered = [], outputGuardrailsTriggered = [], exit = false, error = false, }) {
|
|
3
3
|
return vi.fn(
|
|
4
4
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5
|
-
(
|
|
5
|
+
(_botonicContext) => {
|
|
6
6
|
const response = {
|
|
7
7
|
messages,
|
|
8
8
|
toolsExecuted,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-agent-response.js","sourceRoot":"","sources":["../../../../../../../../libs/botonic/plugin-flow-builder/src/lib/tests/mocks/ai-agent-response.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE3B,MAAM,UAAU,mBAAmB,CAAC,EAClC,QAAQ,GAAG,EAAE,EACb,aAAa,GAAG,EAAE,EAClB,YAAY,GAAG,CAAC,EAChB,wBAAwB,GAAG,EAAE,EAC7B,yBAAyB,GAAG,EAAE,EAC9B,IAAI,GAAG,KAAK,EACZ,KAAK,GAAG,KAAK,GACc;IAC3B,OAAO,EAAE,CAAC,EAAE;IACV,6DAA6D;IAC7D,CAAC,
|
|
1
|
+
{"version":3,"file":"ai-agent-response.js","sourceRoot":"","sources":["../../../../../../../../libs/botonic/plugin-flow-builder/src/lib/tests/mocks/ai-agent-response.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE3B,MAAM,UAAU,mBAAmB,CAAC,EAClC,QAAQ,GAAG,EAAE,EACb,aAAa,GAAG,EAAE,EAClB,YAAY,GAAG,CAAC,EAChB,wBAAwB,GAAG,EAAE,EAC7B,yBAAyB,GAAG,EAAE,EAC9B,IAAI,GAAG,KAAK,EACZ,KAAK,GAAG,KAAK,GACc;IAC3B,OAAO,EAAE,CAAC,EAAE;IACV,6DAA6D;IAC7D,CAAC,eAA+B,EAA8B,EAAE;QAC9D,MAAM,QAAQ,GAAsB;YAClC,QAAQ;YACR,aAAa;YACb,YAAY;YACZ,wBAAwB;YACxB,yBAAyB;YACzB,IAAI;YACJ,KAAK;SACN,CAAA;QACD,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAClC,CAAC,CACF,CAAA;AACH,CAAC"}
|
|
@@ -13,9 +13,11 @@ export function createMockHubtypeQueuesClient(availabilityData) {
|
|
|
13
13
|
export function mockHubtypeQueues(availabilityData) {
|
|
14
14
|
vi.mocked(HubtypeQueuesClient).mockImplementation(function (
|
|
15
15
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
16
|
-
|
|
16
|
+
_botonicContext,
|
|
17
17
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
18
|
-
|
|
18
|
+
_queueId,
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
20
|
+
_checkAvailableAgents) {
|
|
19
21
|
return createMockHubtypeQueuesClient(availabilityData);
|
|
20
22
|
});
|
|
21
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hubtype-queue-client.js","sourceRoot":"","sources":["../../../../../../../../libs/botonic/plugin-flow-builder/src/lib/tests/mocks/hubtype-queue-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE3B,OAAO,EAEL,mBAAmB,GACpB,MAAM,sCAAsC,CAAA;AAE7C,MAAM,UAAU,6BAA6B,CAC3C,gBAA4C;IAE5C,MAAM,YAAY,mBAChB,SAAS,EAAE,IAAI,EACf,aAAa,EAAE,CAAC,EAChB,oCAAoC,EAAE,EAAE,EACxC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,cAAc,EACpB,gBAAgB,EAAE,CAAC,IAChB,gBAAgB,CACpB,CAAA;IAED,MAAM,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAC/B,GAA8B,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAC/D,CAAA;IAED,MAAM,UAAU,GAAG;QACjB,OAAO,EAAE,iBAAiB;QAC1B,oBAAoB,EAAE,KAAK;QAC3B,eAAe,EAAE,mBAAmB;
|
|
1
|
+
{"version":3,"file":"hubtype-queue-client.js","sourceRoot":"","sources":["../../../../../../../../libs/botonic/plugin-flow-builder/src/lib/tests/mocks/hubtype-queue-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE3B,OAAO,EAEL,mBAAmB,GACpB,MAAM,sCAAsC,CAAA;AAE7C,MAAM,UAAU,6BAA6B,CAC3C,gBAA4C;IAE5C,MAAM,YAAY,mBAChB,SAAS,EAAE,IAAI,EACf,aAAa,EAAE,CAAC,EAChB,oCAAoC,EAAE,EAAE,EACxC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,cAAc,EACpB,gBAAgB,EAAE,CAAC,IAChB,gBAAgB,CACpB,CAAA;IAED,MAAM,mBAAmB,GAAG,EAAE,CAAC,EAAE,CAC/B,GAA8B,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAC/D,CAAA;IAED,MAAM,UAAU,GAAG;QACjB,OAAO,EAAE,iBAAiB;QAC1B,oBAAoB,EAAE,KAAK;QAC3B,eAAe,EAAE,mBAAmB;KACH,CAAA;IAEnC,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,gBAA4C;IAE5C,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,kBAAkB,CAAC;IAChD,6DAA6D;IAC7D,eAAwB;IACxB,6DAA6D;IAC7D,QAAgB;IAChB,6DAA6D;IAC7D,qBAA+B;QAE/B,OAAO,6BAA6B,CAAC,gBAAgB,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -17,14 +17,14 @@ export function createMockSmartIntentClient(intentName) {
|
|
|
17
17
|
};
|
|
18
18
|
const mockGetInference = vi.fn(() => Promise.resolve(mockResponse));
|
|
19
19
|
const mockClient = {
|
|
20
|
-
|
|
20
|
+
botonicContext: {},
|
|
21
21
|
getInference: mockGetInference,
|
|
22
22
|
};
|
|
23
23
|
return mockClient;
|
|
24
24
|
}
|
|
25
25
|
export function mockSmartIntent(intentName = 'Other') {
|
|
26
26
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
27
|
-
vi.mocked(SmartIntentClient).mockImplementation(function (
|
|
27
|
+
vi.mocked(SmartIntentClient).mockImplementation(function (_botonicContext) {
|
|
28
28
|
return createMockSmartIntentClient(intentName);
|
|
29
29
|
});
|
|
30
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-intent-client.js","sourceRoot":"","sources":["../../../../../../../../libs/botonic/plugin-flow-builder/src/lib/tests/mocks/smart-intent-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AAGtE,MAAM,UAAU,2BAA2B,CACzC,UAAkB;IAElB,MAAM,YAAY,GAAwB;QACxC,kBAAkB,EAAE,UAAU;QAC9B,IAAI,EAAE,aAAa;QACnB,kBAAkB,EAAE;YAClB;gBACE,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,iBAAiB;aAC/B;YACD;gBACE,KAAK,EAAE,OAAO;gBACd,WAAW,EAAE,sBAAsB;aACpC;SACF;KACF,CAAA;IAED,MAAM,gBAAgB,GAAG,EAAE,CAAC,EAAE,CAC5B,GAAiC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAClE,CAAA;IAED,MAAM,UAAU,GAAG;QACjB,
|
|
1
|
+
{"version":3,"file":"smart-intent-client.js","sourceRoot":"","sources":["../../../../../../../../libs/botonic/plugin-flow-builder/src/lib/tests/mocks/smart-intent-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AAGtE,MAAM,UAAU,2BAA2B,CACzC,UAAkB;IAElB,MAAM,YAAY,GAAwB;QACxC,kBAAkB,EAAE,UAAU;QAC9B,IAAI,EAAE,aAAa;QACnB,kBAAkB,EAAE;YAClB;gBACE,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,iBAAiB;aAC/B;YACD;gBACE,KAAK,EAAE,OAAO;gBACd,WAAW,EAAE,sBAAsB;aACpC;SACF;KACF,CAAA;IAED,MAAM,gBAAgB,GAAG,EAAE,CAAC,EAAE,CAC5B,GAAiC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAClE,CAAA;IAED,MAAM,UAAU,GAAG;QACjB,cAAc,EAAE,EAAoB;QACpC,YAAY,EAAE,gBAAgB;KACV,CAAA;IAEtB,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,UAAU,GAAG,OAAO;IAClD,6DAA6D;IAC7D,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,kBAAkB,CAAC,UAC9C,eAA+B;QAE/B,OAAO,2BAA2B,CAAC,UAAU,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
package/src/lib/tracking.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BotonicContext, EventAction, HtEventProps } from '@botonic/shared';
|
|
2
2
|
import { FlowBuilderApi } from './api';
|
|
3
3
|
import { FlowContent } from './content-fields';
|
|
4
|
-
export declare function trackEvent(
|
|
5
|
-
export declare function trackFlowContent(
|
|
6
|
-
export declare function trackOneContent(
|
|
4
|
+
export declare function trackEvent(botonicContext: BotonicContext, eventAction: EventAction, args?: Omit<HtEventProps, 'action'>): Promise<void>;
|
|
5
|
+
export declare function trackFlowContent(botonicContext: BotonicContext, contents: FlowContent[]): Promise<void>;
|
|
6
|
+
export declare function trackOneContent(botonicContext: BotonicContext, content: FlowContent, cmsApi?: FlowBuilderApi): Promise<void>;
|
|
7
7
|
type CommonFlowContentEventArgs = {
|
|
8
8
|
flowThreadId: string;
|
|
9
9
|
flowId: string;
|
|
@@ -11,5 +11,5 @@ type CommonFlowContentEventArgs = {
|
|
|
11
11
|
flowNodeId: string;
|
|
12
12
|
flowNodeContentId: string;
|
|
13
13
|
};
|
|
14
|
-
export declare function getCommonFlowContentEventArgsForContentId(
|
|
14
|
+
export declare function getCommonFlowContentEventArgsForContentId(botonicContext: BotonicContext, id: string): Promise<CommonFlowContentEventArgs>;
|
|
15
15
|
export {};
|
package/src/lib/tracking.js
CHANGED
|
@@ -3,50 +3,50 @@ import { EventAction, } from '@botonic/shared';
|
|
|
3
3
|
import { v7 as uuidv7 } from 'uuid';
|
|
4
4
|
import { HtNodeWithContentType, } from './content-fields/hubtype-fields';
|
|
5
5
|
import { getFlowBuilderPlugin } from './helpers';
|
|
6
|
-
export function trackEvent(
|
|
6
|
+
export function trackEvent(botonicContext, eventAction, args) {
|
|
7
7
|
return __awaiter(this, void 0, void 0, function* () {
|
|
8
|
-
const flowBuilderPlugin = getFlowBuilderPlugin(
|
|
8
|
+
const flowBuilderPlugin = getFlowBuilderPlugin(botonicContext.plugins);
|
|
9
9
|
if (flowBuilderPlugin.trackEvent) {
|
|
10
|
-
yield flowBuilderPlugin.trackEvent(
|
|
10
|
+
yield flowBuilderPlugin.trackEvent(botonicContext, eventAction, args !== null && args !== void 0 ? args : {});
|
|
11
11
|
}
|
|
12
12
|
return;
|
|
13
13
|
});
|
|
14
14
|
}
|
|
15
|
-
export function trackFlowContent(
|
|
15
|
+
export function trackFlowContent(botonicContext, contents) {
|
|
16
16
|
return __awaiter(this, void 0, void 0, function* () {
|
|
17
|
-
const flowBuilderPlugin = getFlowBuilderPlugin(
|
|
17
|
+
const flowBuilderPlugin = getFlowBuilderPlugin(botonicContext.plugins);
|
|
18
18
|
const cmsApi = flowBuilderPlugin.cmsApi;
|
|
19
19
|
for (const content of contents) {
|
|
20
|
-
yield trackOneContent(
|
|
20
|
+
yield trackOneContent(botonicContext, content, cmsApi);
|
|
21
21
|
}
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
|
-
export function trackOneContent(
|
|
24
|
+
export function trackOneContent(botonicContext, content, cmsApi) {
|
|
25
25
|
return __awaiter(this, void 0, void 0, function* () {
|
|
26
26
|
if (!cmsApi) {
|
|
27
|
-
const flowBuilderPlugin = getFlowBuilderPlugin(
|
|
27
|
+
const flowBuilderPlugin = getFlowBuilderPlugin(botonicContext.plugins);
|
|
28
28
|
cmsApi = flowBuilderPlugin.cmsApi;
|
|
29
29
|
}
|
|
30
30
|
const nodeContent = cmsApi.getNodeById(content.id);
|
|
31
31
|
if (nodeContent.type !== HtNodeWithContentType.KNOWLEDGE_BASE &&
|
|
32
32
|
nodeContent.type !== HtNodeWithContentType.AI_AGENT) {
|
|
33
|
-
const event = yield getContentEventArgs(
|
|
33
|
+
const event = yield getContentEventArgs(botonicContext, nodeContent);
|
|
34
34
|
const { action } = event, eventArgs = __rest(event, ["action"]);
|
|
35
|
-
yield trackEvent(
|
|
35
|
+
yield trackEvent(botonicContext, action, eventArgs);
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
|
-
function setSessionFlowThreadId(
|
|
39
|
+
function setSessionFlowThreadId(botonicContext, flowThreadId) {
|
|
40
40
|
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
-
if (
|
|
42
|
-
yield
|
|
41
|
+
if (botonicContext.session.flowThreadId !== flowThreadId) {
|
|
42
|
+
yield botonicContext.updateBotSession({ flowThreadId });
|
|
43
43
|
}
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
|
-
function getContentEventArgs(
|
|
46
|
+
function getContentEventArgs(botonicContext, nodeContent) {
|
|
47
47
|
return __awaiter(this, void 0, void 0, function* () {
|
|
48
48
|
var _a;
|
|
49
|
-
const { flowThreadId, flowId, flowName, flowNodeId, flowNodeContentId } = yield getCommonFlowContentEventArgs(
|
|
49
|
+
const { flowThreadId, flowId, flowName, flowNodeId, flowNodeContentId } = yield getCommonFlowContentEventArgs(botonicContext, nodeContent);
|
|
50
50
|
return {
|
|
51
51
|
action: EventAction.FlowNode,
|
|
52
52
|
flowId,
|
|
@@ -58,13 +58,13 @@ function getContentEventArgs(botContext, nodeContent) {
|
|
|
58
58
|
};
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
|
-
function getCommonFlowContentEventArgs(
|
|
61
|
+
function getCommonFlowContentEventArgs(botonicContext, nodeContent) {
|
|
62
62
|
return __awaiter(this, void 0, void 0, function* () {
|
|
63
63
|
var _a;
|
|
64
|
-
const flowBuilderPlugin = getFlowBuilderPlugin(
|
|
64
|
+
const flowBuilderPlugin = getFlowBuilderPlugin(botonicContext.plugins);
|
|
65
65
|
const flowName = flowBuilderPlugin.getFlowName(nodeContent.flow_id);
|
|
66
|
-
const flowThreadId = (_a =
|
|
67
|
-
yield setSessionFlowThreadId(
|
|
66
|
+
const flowThreadId = (_a = botonicContext.session.flowThreadId) !== null && _a !== void 0 ? _a : uuidv7();
|
|
67
|
+
yield setSessionFlowThreadId(botonicContext, flowThreadId);
|
|
68
68
|
return {
|
|
69
69
|
flowThreadId,
|
|
70
70
|
flowId: nodeContent.flow_id,
|
|
@@ -74,12 +74,12 @@ function getCommonFlowContentEventArgs(botContext, nodeContent) {
|
|
|
74
74
|
};
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
|
-
export function getCommonFlowContentEventArgsForContentId(
|
|
77
|
+
export function getCommonFlowContentEventArgsForContentId(botonicContext, id) {
|
|
78
78
|
return __awaiter(this, void 0, void 0, function* () {
|
|
79
|
-
const flowBuilderPlugin = getFlowBuilderPlugin(
|
|
79
|
+
const flowBuilderPlugin = getFlowBuilderPlugin(botonicContext.plugins);
|
|
80
80
|
const cmsApi = flowBuilderPlugin.cmsApi;
|
|
81
81
|
const nodeContent = cmsApi.getNodeById(id);
|
|
82
|
-
return yield getCommonFlowContentEventArgs(
|
|
82
|
+
return yield getCommonFlowContentEventArgs(botonicContext, nodeContent);
|
|
83
83
|
});
|
|
84
84
|
}
|
|
85
85
|
//# sourceMappingURL=tracking.js.map
|
package/src/lib/tracking.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracking.js","sourceRoot":"","sources":["../../../../../../libs/botonic/plugin-flow-builder/src/lib/tracking.ts"],"names":[],"mappings":";AAAA,OAAO,EAEL,WAAW,GAGZ,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAA;AAInC,OAAO,EAEL,qBAAqB,GACtB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAEhD,MAAM,UAAgB,UAAU,CAC9B,
|
|
1
|
+
{"version":3,"file":"tracking.js","sourceRoot":"","sources":["../../../../../../libs/botonic/plugin-flow-builder/src/lib/tracking.ts"],"names":[],"mappings":"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"}
|
package/src/lib/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AiAgentArgs,
|
|
1
|
+
import type { AiAgentArgs, BotonicContext, EventAction, HtEventProps, InferenceResponse, ResolvedPlugins, UserExtraData } from '@botonic/shared';
|
|
2
2
|
import { FlowContent } from './content-fields';
|
|
3
3
|
import { HtFlowBuilderData, HtRatingButton } from './content-fields/hubtype-fields/index';
|
|
4
4
|
export declare enum ProcessEnvNodeEnvs {
|
|
@@ -16,9 +16,9 @@ export interface KnowledgeBaseResponse {
|
|
|
16
16
|
chunkIds: string[];
|
|
17
17
|
answer: string;
|
|
18
18
|
}
|
|
19
|
-
export type AiAgentFunction<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData extends UserExtraData = UserExtraData> = (context:
|
|
20
|
-
export type TrackEventFunction<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData extends UserExtraData = UserExtraData> = (context:
|
|
21
|
-
export type KnowledgeBaseFunction<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData extends UserExtraData = UserExtraData> = (context:
|
|
19
|
+
export type AiAgentFunction<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData extends UserExtraData = UserExtraData> = (context: BotonicContext<TPlugins, TExtraData>, aiAgentArgs: AiAgentArgs) => Promise<InferenceResponse>;
|
|
20
|
+
export type TrackEventFunction<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData extends UserExtraData = UserExtraData> = (context: BotonicContext<TPlugins, TExtraData>, eventAction: EventAction, args: Omit<HtEventProps, 'action'>) => Promise<void>;
|
|
21
|
+
export type KnowledgeBaseFunction<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData extends UserExtraData = UserExtraData> = (context: BotonicContext<TPlugins, TExtraData>, sources: string[], instructions: string, messageId: string, memoryLength: number) => Promise<KnowledgeBaseResponse>;
|
|
22
22
|
export interface BotonicPluginFlowBuilderOptions<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData extends UserExtraData = UserExtraData> {
|
|
23
23
|
apiUrl?: string;
|
|
24
24
|
flowVersion?: FlowBuilderJSONVersion;
|
|
@@ -61,7 +61,7 @@ export interface SmartIntentResponse {
|
|
|
61
61
|
export interface PayloadParamsBase {
|
|
62
62
|
followUpContentID?: string;
|
|
63
63
|
}
|
|
64
|
-
export type ContentFilter<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData extends UserExtraData = UserExtraData> = (context:
|
|
64
|
+
export type ContentFilter<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData extends UserExtraData = UserExtraData> = (context: BotonicContext<TPlugins, TExtraData>, content: FlowContent) => Promise<FlowContent> | FlowContent;
|
|
65
65
|
export type { HtFlowBuilderData };
|
|
66
66
|
export interface RatingSubmittedInfo extends HtRatingButton {
|
|
67
67
|
possibleOptions: string[];
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BotonicContext } from '@botonic/shared';
|
|
2
2
|
import { FlowBuilderApi } from '../api';
|
|
3
3
|
import { HtCaptureUserInputNode } from '../content-fields/hubtype-fields';
|
|
4
4
|
export declare class CaptureUserInputApi {
|
|
5
5
|
private cmsApi;
|
|
6
|
-
private
|
|
7
|
-
constructor(cmsApi: FlowBuilderApi,
|
|
6
|
+
private botonicContext;
|
|
7
|
+
constructor(cmsApi: FlowBuilderApi, botonicContext: BotonicContext);
|
|
8
8
|
getNextNodeId(): Promise<string | undefined>;
|
|
9
9
|
trackUserInputCapture(captureUserInputNode: HtCaptureUserInputNode, captureSuccess: boolean): Promise<void>;
|
|
10
10
|
}
|
|
@@ -5,14 +5,14 @@ import { HtAiValidationType, } from '../content-fields/hubtype-fields';
|
|
|
5
5
|
import { CaptureUserInputClient } from '../services/capture-user-input-client';
|
|
6
6
|
import { getCommonFlowContentEventArgsForContentId, trackEvent, } from '../tracking';
|
|
7
7
|
export class CaptureUserInputApi {
|
|
8
|
-
constructor(cmsApi,
|
|
8
|
+
constructor(cmsApi, botonicContext) {
|
|
9
9
|
this.cmsApi = cmsApi;
|
|
10
|
-
this.
|
|
10
|
+
this.botonicContext = botonicContext;
|
|
11
11
|
}
|
|
12
12
|
getNextNodeId() {
|
|
13
13
|
return __awaiter(this, void 0, void 0, function* () {
|
|
14
14
|
var _a;
|
|
15
|
-
if (this.
|
|
15
|
+
if (this.botonicContext.input.hasInputText() &&
|
|
16
16
|
this.cmsApi.shouldCaptureUserInput()) {
|
|
17
17
|
const captureUserInputNode = this.cmsApi.getCaptureUserInputNode();
|
|
18
18
|
if (!captureUserInputNode) {
|
|
@@ -20,11 +20,11 @@ export class CaptureUserInputApi {
|
|
|
20
20
|
}
|
|
21
21
|
const captureUserInput = FlowCaptureUserInput.fromHubtypeCMS(captureUserInputNode);
|
|
22
22
|
if (captureUserInput.aiValidationType === HtAiValidationType.NONE) {
|
|
23
|
-
yield this.cmsApi.setUserExtraDataVariable(captureUserInputNode.content.field_name, (_a = this.
|
|
23
|
+
yield this.cmsApi.setUserExtraDataVariable(captureUserInputNode.content.field_name, (_a = this.botonicContext.input.text) !== null && _a !== void 0 ? _a : '');
|
|
24
24
|
yield this.trackUserInputCapture(captureUserInputNode, true);
|
|
25
25
|
return captureUserInput.captureSuccessId;
|
|
26
26
|
}
|
|
27
|
-
const client = new CaptureUserInputClient(this.
|
|
27
|
+
const client = new CaptureUserInputClient(this.botonicContext);
|
|
28
28
|
const aiCaptureResponse = yield client.getCaptureUserInputResponse(captureUserInputNode);
|
|
29
29
|
if (!aiCaptureResponse.success) {
|
|
30
30
|
yield this.trackUserInputCapture(captureUserInputNode, false);
|
|
@@ -40,7 +40,7 @@ export class CaptureUserInputApi {
|
|
|
40
40
|
trackUserInputCapture(captureUserInputNode, captureSuccess) {
|
|
41
41
|
return __awaiter(this, void 0, void 0, function* () {
|
|
42
42
|
var _a, _b;
|
|
43
|
-
const { flowThreadId, flowId, flowName, flowNodeId, flowNodeContentId } = yield getCommonFlowContentEventArgsForContentId(this.
|
|
43
|
+
const { flowThreadId, flowId, flowName, flowNodeId, flowNodeContentId } = yield getCommonFlowContentEventArgsForContentId(this.botonicContext, captureUserInputNode.id);
|
|
44
44
|
const event = {
|
|
45
45
|
action: EventAction.CaptureUserInput,
|
|
46
46
|
flowThreadId,
|
|
@@ -50,12 +50,12 @@ export class CaptureUserInputApi {
|
|
|
50
50
|
flowNodeContentId,
|
|
51
51
|
flowNodeIsMeaningful: false,
|
|
52
52
|
fieldName: captureUserInputNode.content.field_name,
|
|
53
|
-
userInput: (_a = this.
|
|
53
|
+
userInput: (_a = this.botonicContext.input.text) !== null && _a !== void 0 ? _a : '',
|
|
54
54
|
captureSuccess,
|
|
55
|
-
messageId: (_b = this.
|
|
55
|
+
messageId: (_b = this.botonicContext.input.messageId) !== null && _b !== void 0 ? _b : '',
|
|
56
56
|
};
|
|
57
57
|
const { action } = event, eventArgs = __rest(event, ["action"]);
|
|
58
|
-
yield trackEvent(this.
|
|
58
|
+
yield trackEvent(this.botonicContext, action, eventArgs);
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture-user-input.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/plugin-flow-builder/src/lib/user-input/capture-user-input.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAyB,MAAM,iBAAiB,CAAA;AAGpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EACL,kBAAkB,GAEnB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAA;AAC9E,OAAO,EACL,yCAAyC,EACzC,UAAU,GACX,MAAM,aAAa,CAAA;AAEpB,MAAM,OAAO,mBAAmB;IAI9B,YAAY,MAAsB,EAAE,
|
|
1
|
+
{"version":3,"file":"capture-user-input.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/plugin-flow-builder/src/lib/user-input/capture-user-input.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BotonicContext } from '@botonic/shared';
|
|
2
2
|
import { FlowBuilderApi } from '../api';
|
|
3
3
|
import { SmartIntentsInferenceConfig } from '../types';
|
|
4
|
-
export declare function getNextPayloadByUserInput(cmsApi: FlowBuilderApi, locale: string,
|
|
4
|
+
export declare function getNextPayloadByUserInput(cmsApi: FlowBuilderApi, locale: string, botonicContext: BotonicContext, smartIntentsConfig: SmartIntentsInferenceConfig): Promise<string | undefined>;
|
|
@@ -3,20 +3,20 @@ import { isKeywordsAllowed, isSmartIntentsAllowed } from '../utils';
|
|
|
3
3
|
import { CaptureUserInputApi } from './capture-user-input';
|
|
4
4
|
import { KeywordMatcher } from './keyword';
|
|
5
5
|
import { SmartIntentsApi } from './smart-intent';
|
|
6
|
-
export function getNextPayloadByUserInput(cmsApi, locale,
|
|
6
|
+
export function getNextPayloadByUserInput(cmsApi, locale, botonicContext, smartIntentsConfig) {
|
|
7
7
|
return __awaiter(this, void 0, void 0, function* () {
|
|
8
|
-
if (
|
|
8
|
+
if (botonicContext.input.hasInputText()) {
|
|
9
9
|
if (cmsApi.shouldCaptureUserInput()) {
|
|
10
|
-
const captureUserInputApi = new CaptureUserInputApi(cmsApi,
|
|
10
|
+
const captureUserInputApi = new CaptureUserInputApi(cmsApi, botonicContext);
|
|
11
11
|
return yield captureUserInputApi.getNextNodeId();
|
|
12
12
|
}
|
|
13
|
-
if (isKeywordsAllowed(
|
|
13
|
+
if (isKeywordsAllowed(botonicContext)) {
|
|
14
14
|
const keywordMatcher = new KeywordMatcher({
|
|
15
15
|
cmsApi,
|
|
16
16
|
locale,
|
|
17
|
-
|
|
17
|
+
botonicContext,
|
|
18
18
|
});
|
|
19
|
-
const text =
|
|
19
|
+
const text = botonicContext.input.text;
|
|
20
20
|
const keywordNode = text
|
|
21
21
|
? yield keywordMatcher.getNodeByInput(text)
|
|
22
22
|
: undefined;
|
|
@@ -24,8 +24,8 @@ export function getNextPayloadByUserInput(cmsApi, locale, botContext, smartInten
|
|
|
24
24
|
return cmsApi.getPayload(keywordNode.target);
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
if (isSmartIntentsAllowed(
|
|
28
|
-
const smartIntentsApi = new SmartIntentsApi(cmsApi,
|
|
27
|
+
if (isSmartIntentsAllowed(botonicContext)) {
|
|
28
|
+
const smartIntentsApi = new SmartIntentsApi(cmsApi, botonicContext, smartIntentsConfig);
|
|
29
29
|
const smartIntentNode = yield smartIntentsApi.getNodeByInput();
|
|
30
30
|
if (smartIntentNode) {
|
|
31
31
|
return cmsApi.getPayload(smartIntentNode.target);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/plugin-flow-builder/src/lib/user-input/index.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEhD,MAAM,UAAgB,yBAAyB,CAC7C,MAAsB,EACtB,MAAc,EACd,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/plugin-flow-builder/src/lib/user-input/index.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEhD,MAAM,UAAgB,yBAAyB,CAC7C,MAAsB,EACtB,MAAc,EACd,cAA8B,EAC9B,kBAA+C;;QAE/C,IAAI,cAAc,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;YACxC,IAAI,MAAM,CAAC,sBAAsB,EAAE,EAAE,CAAC;gBACpC,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,CACjD,MAAM,EACN,cAAc,CACf,CAAA;gBACD,OAAO,MAAM,mBAAmB,CAAC,aAAa,EAAE,CAAA;YAClD,CAAC;YAED,IAAI,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC;gBACtC,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC;oBACxC,MAAM;oBACN,MAAM;oBACN,cAAc;iBACf,CAAC,CAAA;gBACF,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAA;gBACtC,MAAM,WAAW,GAAG,IAAI;oBACtB,CAAC,CAAC,MAAM,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC;oBAC3C,CAAC,CAAC,SAAS,CAAA;gBACb,IAAI,WAAW,EAAE,CAAC;oBAChB,OAAO,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;gBAC9C,CAAC;YACH,CAAC;YAED,IAAI,qBAAqB,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC1C,MAAM,eAAe,GAAG,IAAI,eAAe,CACzC,MAAM,EACN,cAAc,EACd,kBAAkB,CACnB,CAAA;gBACD,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,cAAc,EAAE,CAAA;gBAC9D,IAAI,eAAe,EAAE,CAAC;oBACpB,OAAO,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;gBAClD,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;CAAA"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BotonicContext } from '@botonic/shared';
|
|
2
2
|
import { FlowBuilderApi } from '../api';
|
|
3
3
|
import { HtKeywordNode } from '../content-fields/hubtype-fields/index';
|
|
4
4
|
interface KeywordProps {
|
|
5
5
|
cmsApi: FlowBuilderApi;
|
|
6
6
|
locale: string;
|
|
7
|
-
|
|
7
|
+
botonicContext: BotonicContext;
|
|
8
8
|
}
|
|
9
9
|
export declare class KeywordMatcher {
|
|
10
10
|
cmsApi: FlowBuilderApi;
|
|
11
11
|
locale: string;
|
|
12
|
-
|
|
12
|
+
botonicContext: BotonicContext;
|
|
13
13
|
isRegExp: boolean;
|
|
14
14
|
matchedKeyword?: string;
|
|
15
15
|
keywordNodeId?: string;
|
|
16
16
|
flowId?: string;
|
|
17
|
-
constructor({ cmsApi, locale,
|
|
17
|
+
constructor({ cmsApi, locale, botonicContext }: KeywordProps);
|
|
18
18
|
getNodeByInput(userInput: string): Promise<HtKeywordNode | undefined>;
|
|
19
19
|
private getNodeByKeyword;
|
|
20
20
|
private matchKeywords;
|