@botonic/plugin-flow-builder 2.25.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 +16 -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
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
## 2.27.0 (2026-04-29)
|
|
2
|
+
|
|
3
|
+
### 🚀 Features
|
|
4
|
+
|
|
5
|
+
- typing to work again and improve it with few modes when sending messages ([#831](https://github.com/metis-ai/hubtype-product/pull/831))
|
|
6
|
+
- receiving db_id, bot_interaction_id and working capture_user_input_id and first_interaction updatable ([#822](https://github.com/metis-ai/hubtype-product/pull/822))
|
|
7
|
+
- **botonic:** session and Hubtype API adaptations (non-webviews) ([#810](https://github.com/metis-ai/hubtype-product/pull/810))
|
|
8
|
+
|
|
9
|
+
### ❤️ Thank You
|
|
10
|
+
|
|
11
|
+
- Marc Rabat @vanbasten17
|
|
12
|
+
|
|
13
|
+
## 2.26.0 (2026-03-31)
|
|
14
|
+
|
|
15
|
+
This was a version bump only for @botonic/plugin-flow-builder to align it with other projects, there were no code changes.
|
|
16
|
+
|
|
1
17
|
## 2.25.0 (2026-03-27)
|
|
2
18
|
|
|
3
19
|
This was a version bump only for @botonic/plugin-flow-builder to align it with other projects, there were no code changes.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@botonic/plugin-flow-builder",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.27.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"module": "./src/index.js",
|
|
6
6
|
"types": "./src/index.d.ts",
|
|
@@ -8,8 +8,7 @@
|
|
|
8
8
|
"tslib": "^2.3.0",
|
|
9
9
|
"uuid": "^11.1.0",
|
|
10
10
|
"vitest": "^4.0.15",
|
|
11
|
-
"@botonic/shared": "2.
|
|
12
|
-
"@botonic/core": "2.25.0"
|
|
11
|
+
"@botonic/shared": "2.27.0"
|
|
13
12
|
},
|
|
14
13
|
"references": [
|
|
15
14
|
{
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { FlowContent } from '../content-fields';
|
|
2
2
|
import { FlowBuilderContext } from './index';
|
|
3
|
-
export declare function getContentsByAiAgent({ cmsApi, flowBuilderPlugin,
|
|
3
|
+
export declare function getContentsByAiAgent({ cmsApi, flowBuilderPlugin, botonicContext: context, }: FlowBuilderContext): Promise<FlowContent[]>;
|
|
@@ -4,7 +4,7 @@ import { FlowAiAgent } from '../content-fields';
|
|
|
4
4
|
import { getFlowBuilderPlugin } from '../helpers';
|
|
5
5
|
import { trackEvent } from '../tracking';
|
|
6
6
|
export function getContentsByAiAgent(_a) {
|
|
7
|
-
return __awaiter(this, arguments, void 0, function* ({ cmsApi, flowBuilderPlugin,
|
|
7
|
+
return __awaiter(this, arguments, void 0, function* ({ cmsApi, flowBuilderPlugin, botonicContext: context, }) {
|
|
8
8
|
var _b, _c, _d, _e;
|
|
9
9
|
const startNodeAiAgentFlow = cmsApi.getStartNodeAiAgentFlow();
|
|
10
10
|
const isAiAgentEnabled = cmsApi.isAiAgentEnabled();
|
|
@@ -38,15 +38,15 @@ export function getContentsByAiAgent(_a) {
|
|
|
38
38
|
return contents;
|
|
39
39
|
});
|
|
40
40
|
}
|
|
41
|
-
function trackAiAgentResponse(aiAgentResponse,
|
|
41
|
+
function trackAiAgentResponse(aiAgentResponse, botonicContext, aiAgentContent) {
|
|
42
42
|
return __awaiter(this, void 0, void 0, function* () {
|
|
43
43
|
var _a, _b, _c, _d, _e;
|
|
44
|
-
const flowBuilderPlugin = getFlowBuilderPlugin(
|
|
44
|
+
const flowBuilderPlugin = getFlowBuilderPlugin(botonicContext.plugins);
|
|
45
45
|
const flowId = flowBuilderPlugin.cmsApi.getNodeById(aiAgentContent.id).flow_id;
|
|
46
46
|
const flowName = flowBuilderPlugin.getFlowName(flowId);
|
|
47
47
|
const event = {
|
|
48
48
|
action: EventAction.AiAgent,
|
|
49
|
-
flowThreadId:
|
|
49
|
+
flowThreadId: botonicContext.session.flowThreadId,
|
|
50
50
|
flowId: flowId,
|
|
51
51
|
flowName: flowName,
|
|
52
52
|
flowNodeId: aiAgentContent.id,
|
|
@@ -54,14 +54,14 @@ function trackAiAgentResponse(aiAgentResponse, botContext, aiAgentContent) {
|
|
|
54
54
|
flowNodeIsMeaningful: true,
|
|
55
55
|
toolsExecuted: (_a = aiAgentResponse === null || aiAgentResponse === void 0 ? void 0 : aiAgentResponse.toolsExecuted) !== null && _a !== void 0 ? _a : [],
|
|
56
56
|
memoryLength: (_b = aiAgentResponse === null || aiAgentResponse === void 0 ? void 0 : aiAgentResponse.memoryLength) !== null && _b !== void 0 ? _b : 0,
|
|
57
|
-
inputMessageId: (_c =
|
|
57
|
+
inputMessageId: (_c = botonicContext.input.messageId) !== null && _c !== void 0 ? _c : '',
|
|
58
58
|
exit: (_d = aiAgentResponse === null || aiAgentResponse === void 0 ? void 0 : aiAgentResponse.exit) !== null && _d !== void 0 ? _d : true,
|
|
59
59
|
inputGuardrailsTriggered: (_e = aiAgentResponse === null || aiAgentResponse === void 0 ? void 0 : aiAgentResponse.inputGuardrailsTriggered) !== null && _e !== void 0 ? _e : [],
|
|
60
60
|
outputGuardrailsTriggered: [], //aiAgentResponse.outputGuardrailsTriggered,
|
|
61
61
|
error: aiAgentResponse.error,
|
|
62
62
|
};
|
|
63
63
|
const { action } = event, eventArgs = __rest(event, ["action"]);
|
|
64
|
-
yield trackEvent(
|
|
64
|
+
yield trackEvent(botonicContext, EventAction.AiAgent, eventArgs);
|
|
65
65
|
});
|
|
66
66
|
}
|
|
67
67
|
//# sourceMappingURL=ai-agent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-agent.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/plugin-flow-builder/src/lib/action/ai-agent.ts"],"names":[],"mappings":";AAAA,OAAO,EAEL,WAAW,GAIZ,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,WAAW,EAAe,MAAM,mBAAmB,CAAA;AAE5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGxC,MAAM,UAAgB,oBAAoB;yDAAC,EACzC,MAAM,EACN,iBAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"ai-agent.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/plugin-flow-builder/src/lib/action/ai-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { FlowContent } from '../content-fields';
|
|
2
2
|
import { FlowBuilderContext } from './index';
|
|
3
|
-
export declare function getContentsByFallback({ cmsApi, flowBuilderPlugin,
|
|
3
|
+
export declare function getContentsByFallback({ cmsApi, flowBuilderPlugin, botonicContext: context, }: FlowBuilderContext): Promise<FlowContent[]>;
|
|
@@ -2,38 +2,38 @@ import { __awaiter, __rest } from "tslib";
|
|
|
2
2
|
import { EventAction, } from '@botonic/shared';
|
|
3
3
|
import { getCommonFlowContentEventArgsForContentId, trackEvent, } from '../tracking';
|
|
4
4
|
export function getContentsByFallback(_a) {
|
|
5
|
-
return __awaiter(this, arguments, void 0, function* ({ cmsApi, flowBuilderPlugin,
|
|
5
|
+
return __awaiter(this, arguments, void 0, function* ({ cmsApi, flowBuilderPlugin, botonicContext: context, }) {
|
|
6
6
|
const fallbackNode = yield getFallbackNode(cmsApi, context);
|
|
7
7
|
const fallbackContents = yield flowBuilderPlugin.getContentsByNode(fallbackNode);
|
|
8
8
|
return fallbackContents;
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
|
-
function getFallbackNode(cmsApi,
|
|
11
|
+
function getFallbackNode(cmsApi, botonicContext) {
|
|
12
12
|
return __awaiter(this, void 0, void 0, function* () {
|
|
13
13
|
var _a, _b, _c;
|
|
14
|
-
let extraData = (_a =
|
|
14
|
+
let extraData = (_a = botonicContext.session.user.extraData) !== null && _a !== void 0 ? _a : {};
|
|
15
15
|
if (extraData.isFirstFallbackOption === undefined) {
|
|
16
16
|
extraData = Object.assign(Object.assign({}, extraData), { isFirstFallbackOption: true });
|
|
17
17
|
}
|
|
18
18
|
const isFirstFallbackOption = !!extraData.isFirstFallbackOption;
|
|
19
19
|
const fallbackNode = cmsApi.getFallbackNode(isFirstFallbackOption);
|
|
20
20
|
extraData = Object.assign(Object.assign({}, extraData), { isFirstFallbackOption: !isFirstFallbackOption });
|
|
21
|
-
yield
|
|
21
|
+
yield botonicContext.updateBotSession({
|
|
22
22
|
user: { extraData },
|
|
23
23
|
});
|
|
24
|
-
const { flowId, flowName, flowNodeId, flowNodeContentId } = yield getCommonFlowContentEventArgsForContentId(
|
|
24
|
+
const { flowId, flowName, flowNodeId, flowNodeContentId } = yield getCommonFlowContentEventArgsForContentId(botonicContext, fallbackNode.id);
|
|
25
25
|
const event = {
|
|
26
26
|
action: EventAction.Fallback,
|
|
27
27
|
flowId,
|
|
28
28
|
flowName,
|
|
29
29
|
flowNodeId,
|
|
30
30
|
flowNodeContentId,
|
|
31
|
-
userInput: (_b =
|
|
31
|
+
userInput: (_b = botonicContext.input.text) !== null && _b !== void 0 ? _b : '',
|
|
32
32
|
fallbackOut: isFirstFallbackOption ? 1 : 2,
|
|
33
|
-
fallbackMessageId: (_c =
|
|
33
|
+
fallbackMessageId: (_c = botonicContext.input.messageId) !== null && _c !== void 0 ? _c : '',
|
|
34
34
|
};
|
|
35
35
|
const { action } = event, eventArgs = __rest(event, ["action"]);
|
|
36
|
-
yield trackEvent(
|
|
36
|
+
yield trackEvent(botonicContext, action, eventArgs);
|
|
37
37
|
return fallbackNode;
|
|
38
38
|
});
|
|
39
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fallback.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/plugin-flow-builder/src/lib/action/fallback.ts"],"names":[],"mappings":";AAAA,OAAO,EAEL,WAAW,GAIZ,MAAM,iBAAiB,CAAA;AAIxB,OAAO,EACL,yCAAyC,EACzC,UAAU,GACX,MAAM,aAAa,CAAA;AAGpB,MAAM,UAAgB,qBAAqB;yDAAC,EAC1C,MAAM,EACN,iBAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"fallback.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/plugin-flow-builder/src/lib/action/fallback.ts"],"names":[],"mappings":";AAAA,OAAO,EAEL,WAAW,GAIZ,MAAM,iBAAiB,CAAA;AAIxB,OAAO,EACL,yCAAyC,EACzC,UAAU,GACX,MAAM,aAAa,CAAA;AAGpB,MAAM,UAAgB,qBAAqB;yDAAC,EAC1C,MAAM,EACN,iBAAiB,EACjB,cAAc,EAAE,OAAO,GACJ;QACnB,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC3D,MAAM,gBAAgB,GACpB,MAAM,iBAAiB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAA;QAEzD,OAAO,gBAAgB,CAAA;IACzB,CAAC;CAAA;AAED,SAAe,eAAe,CAC5B,MAAsB,EACtB,cAA8D;;;QAE9D,IAAI,SAAS,GAAG,MAAA,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,mCAAI,EAAE,CAAA;QAC3D,IAAI,SAAS,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;YAClD,SAAS,mCAAQ,SAAS,KAAE,qBAAqB,EAAE,IAAI,GAAE,CAAA;QAC3D,CAAC;QACD,MAAM,qBAAqB,GAAG,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAA;QAC/D,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAA;QAClE,SAAS,mCAAQ,SAAS,KAAE,qBAAqB,EAAE,CAAC,qBAAqB,GAAE,CAAA;QAC3E,MAAM,cAAc,CAAC,gBAAgB,CAAC;YACpC,IAAI,EAAE,EAAE,SAAS,EAAE;SACpB,CAAC,CAAA;QAEF,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,iBAAiB,EAAE,GACvD,MAAM,yCAAyC,CAC7C,cAAc,EACd,YAAY,CAAC,EAAE,CAChB,CAAA;QAEH,MAAM,KAAK,GAAkB;YAC3B,MAAM,EAAE,WAAW,CAAC,QAAQ;YAC5B,MAAM;YACN,QAAQ;YACR,UAAU;YACV,iBAAiB;YACjB,SAAS,EAAE,MAAA,cAAc,CAAC,KAAK,CAAC,IAAI,mCAAI,EAAE;YAC1C,WAAW,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,iBAAiB,EAAE,MAAA,cAAc,CAAC,KAAK,CAAC,SAAS,mCAAI,EAAE;SACxD,CAAA;QACD,MAAM,EAAE,MAAM,KAAmB,KAAK,EAAnB,SAAS,UAAK,KAAK,EAAhC,UAAwB,CAAQ,CAAA;QAEtC,MAAM,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;QAEnD,OAAO,YAAY,CAAA;IACrB,CAAC;CAAA"}
|
|
@@ -6,14 +6,15 @@ import { getContentsByKnowledgeBase } from './knowledge-bases';
|
|
|
6
6
|
import { getContentsByPayload } from './payload';
|
|
7
7
|
export function getContentsByFirstInteraction(fbContext) {
|
|
8
8
|
return __awaiter(this, void 0, void 0, function* () {
|
|
9
|
-
const { flowBuilderPlugin,
|
|
9
|
+
const { flowBuilderPlugin, botonicContext } = fbContext;
|
|
10
10
|
const firstInteractionContents = yield flowBuilderPlugin.getStartContents();
|
|
11
11
|
// If the first interaction has a FlowBotAction, it should be the last content
|
|
12
12
|
// and avoid to render the match with keywords,intents or knowledge base
|
|
13
13
|
if (firstInteractionContents.at(-1) instanceof FlowBotAction) {
|
|
14
14
|
return firstInteractionContents;
|
|
15
15
|
}
|
|
16
|
-
if (
|
|
16
|
+
if (botonicContext.input.nluResolution ||
|
|
17
|
+
botonicContext.input.hasInputText()) {
|
|
17
18
|
const contentsByUserInput = yield getContentsByUserInput(fbContext);
|
|
18
19
|
return [...firstInteractionContents, ...contentsByUserInput];
|
|
19
20
|
}
|
|
@@ -21,19 +22,19 @@ export function getContentsByFirstInteraction(fbContext) {
|
|
|
21
22
|
});
|
|
22
23
|
}
|
|
23
24
|
function getContentsByUserInput(_a) {
|
|
24
|
-
return __awaiter(this, arguments, void 0, function* ({ cmsApi, flowBuilderPlugin,
|
|
25
|
+
return __awaiter(this, arguments, void 0, function* ({ cmsApi, flowBuilderPlugin, botonicContext, resolvedLocale, }) {
|
|
25
26
|
var _b;
|
|
26
|
-
const payloadByNlu = (_b =
|
|
27
|
+
const payloadByNlu = (_b = botonicContext.input.nluResolution) === null || _b === void 0 ? void 0 : _b.payload;
|
|
27
28
|
if (payloadByNlu) {
|
|
28
|
-
|
|
29
|
+
botonicContext.input.payload = payloadByNlu;
|
|
29
30
|
const conversationStartId = getConversationStartId(cmsApi);
|
|
30
|
-
if (
|
|
31
|
+
if (botonicContext.input.payload === conversationStartId) {
|
|
31
32
|
return [];
|
|
32
33
|
}
|
|
33
34
|
const contentsByKeywordsOrIntents = yield getContentsByPayload({
|
|
34
35
|
cmsApi,
|
|
35
36
|
flowBuilderPlugin,
|
|
36
|
-
|
|
37
|
+
botonicContext,
|
|
37
38
|
resolvedLocale,
|
|
38
39
|
});
|
|
39
40
|
const hasRepeatedContent = yield checkRepeatedContents(flowBuilderPlugin, contentsByKeywordsOrIntents);
|
|
@@ -47,7 +48,7 @@ function getContentsByUserInput(_a) {
|
|
|
47
48
|
const knowledgeBaseContents = yield getContentsByKnowledgeBase({
|
|
48
49
|
cmsApi,
|
|
49
50
|
flowBuilderPlugin,
|
|
50
|
-
|
|
51
|
+
botonicContext,
|
|
51
52
|
resolvedLocale,
|
|
52
53
|
});
|
|
53
54
|
if (knowledgeBaseContents.length > 0) {
|
|
@@ -57,7 +58,7 @@ function getContentsByUserInput(_a) {
|
|
|
57
58
|
const aiAgentContents = yield getContentsByAiAgent({
|
|
58
59
|
cmsApi,
|
|
59
60
|
flowBuilderPlugin,
|
|
60
|
-
|
|
61
|
+
botonicContext,
|
|
61
62
|
resolvedLocale,
|
|
62
63
|
});
|
|
63
64
|
if (aiAgentContents.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"first-interaction.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/plugin-flow-builder/src/lib/action/first-interaction.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAe,MAAM,mBAAmB,CAAA;AAE9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAEhD,MAAM,UAAgB,6BAA6B,CACjD,SAA6B;;QAE7B,MAAM,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"first-interaction.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/plugin-flow-builder/src/lib/action/first-interaction.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 { FlowContent } from '../content-fields';
|
|
4
4
|
import { BotonicPluginFlowBuilder } from '../index';
|
|
@@ -6,15 +6,15 @@ export type FlowBuilderActionProps = {
|
|
|
6
6
|
contents: FlowContent[];
|
|
7
7
|
};
|
|
8
8
|
export declare class FlowBuilderAction {
|
|
9
|
-
static executeConversationStart(
|
|
10
|
-
static botonicInit(
|
|
11
|
-
static trackAllContents(
|
|
12
|
-
static doHandoffAndBotActions(
|
|
9
|
+
static executeConversationStart(botonicContext: BotonicContext): Promise<FlowContent[]>;
|
|
10
|
+
static botonicInit(botonicContext: BotonicContext, contentID?: string): Promise<FlowContent[]>;
|
|
11
|
+
static trackAllContents(botonicContext: BotonicContext, contents: FlowContent[]): Promise<void>;
|
|
12
|
+
static doHandoffAndBotActions(botonicContext: BotonicContext, contents: FlowContent[]): Promise<void>;
|
|
13
13
|
}
|
|
14
14
|
export interface FlowBuilderContext {
|
|
15
15
|
cmsApi: FlowBuilderApi;
|
|
16
16
|
flowBuilderPlugin: BotonicPluginFlowBuilder;
|
|
17
|
-
|
|
17
|
+
botonicContext: BotonicContext;
|
|
18
18
|
resolvedLocale: string;
|
|
19
19
|
contentID?: string;
|
|
20
20
|
}
|
package/src/lib/action/index.js
CHANGED
|
@@ -11,101 +11,97 @@ import { getContentsByFirstInteraction } from './first-interaction';
|
|
|
11
11
|
import { getContentsByKnowledgeBase } from './knowledge-bases';
|
|
12
12
|
import { getContentsByPayload } from './payload';
|
|
13
13
|
export class FlowBuilderAction {
|
|
14
|
-
static executeConversationStart(
|
|
14
|
+
static executeConversationStart(botonicContext) {
|
|
15
15
|
return __awaiter(this, void 0, void 0, function* () {
|
|
16
|
-
const fbContext = getContext(
|
|
16
|
+
const fbContext = getContext(botonicContext);
|
|
17
17
|
const contents = yield getContentsByFirstInteraction(fbContext);
|
|
18
|
-
const filteredContents = yield filterContents(
|
|
19
|
-
yield FlowBuilderAction.trackAllContents(
|
|
20
|
-
yield FlowBuilderAction.doHandoffAndBotActions(
|
|
18
|
+
const filteredContents = yield filterContents(botonicContext, contents);
|
|
19
|
+
yield FlowBuilderAction.trackAllContents(botonicContext, filteredContents);
|
|
20
|
+
yield FlowBuilderAction.doHandoffAndBotActions(botonicContext, filteredContents);
|
|
21
21
|
for (const content of filteredContents) {
|
|
22
|
-
// TODO: now toBotonic function is async and receives
|
|
22
|
+
// TODO: now toBotonic function is async and receives botonicContext as parameter,
|
|
23
23
|
// in a future PR refactor to resolve inside tracking, bot actions handoff and send messages
|
|
24
|
-
const message = yield content.toBotonic(
|
|
24
|
+
const message = yield content.toBotonic(botonicContext);
|
|
25
25
|
if (Array.isArray(message)) {
|
|
26
|
-
|
|
27
|
-
yield botContext.sendMessage(msg);
|
|
28
|
-
}
|
|
26
|
+
yield botonicContext.sendMessages(message);
|
|
29
27
|
}
|
|
30
28
|
else if (message) {
|
|
31
|
-
yield
|
|
29
|
+
yield botonicContext.sendMessages([message]);
|
|
32
30
|
}
|
|
33
31
|
}
|
|
34
|
-
// TODO:Add for testing purposes, we can create a mock for
|
|
32
|
+
// TODO:Add for testing purposes, we can create a mock for botonicContext.sendMessages function
|
|
35
33
|
// and check messages sent by plugin-flow-builder instead of contents returned by this function
|
|
36
34
|
return filteredContents;
|
|
37
35
|
});
|
|
38
36
|
}
|
|
39
|
-
static botonicInit(
|
|
37
|
+
static botonicInit(botonicContext, contentID) {
|
|
40
38
|
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
-
const contents = yield getContents(
|
|
42
|
-
const filteredContents = yield filterContents(
|
|
43
|
-
yield FlowBuilderAction.trackAllContents(
|
|
44
|
-
yield FlowBuilderAction.doHandoffAndBotActions(
|
|
39
|
+
const contents = yield getContents(botonicContext, contentID);
|
|
40
|
+
const filteredContents = yield filterContents(botonicContext, contents);
|
|
41
|
+
yield FlowBuilderAction.trackAllContents(botonicContext, filteredContents);
|
|
42
|
+
yield FlowBuilderAction.doHandoffAndBotActions(botonicContext, filteredContents);
|
|
45
43
|
for (const content of filteredContents) {
|
|
46
|
-
// TODO: now toBotonic function is async and receives
|
|
44
|
+
// TODO: now toBotonic function is async and receives botonicContext as parameter,
|
|
47
45
|
// in a future PR refactor to resolve inside tracking, bot actions handoff and send messages
|
|
48
|
-
const message = yield content.toBotonic(
|
|
46
|
+
const message = yield content.toBotonic(botonicContext);
|
|
49
47
|
// when is a content from an ai agent, toBotonic function can return an array of messages
|
|
50
48
|
// TODO: Rethink if we can send the messages from the action or we can send each message inside the toBotonic function
|
|
51
49
|
if (Array.isArray(message)) {
|
|
52
|
-
|
|
53
|
-
yield botContext.sendMessage(msg);
|
|
54
|
-
}
|
|
50
|
+
yield botonicContext.sendMessages(message);
|
|
55
51
|
}
|
|
56
52
|
else if (message) {
|
|
57
|
-
yield
|
|
53
|
+
yield botonicContext.sendMessages([message]);
|
|
58
54
|
}
|
|
59
55
|
}
|
|
60
|
-
// TODO:Add for testing purposes, we can create a mock for
|
|
56
|
+
// TODO:Add for testing purposes, we can create a mock for botonicContext.sendMessages function
|
|
61
57
|
// and check messages sent by plugin-flow-builder instead of contents returned by this function
|
|
62
58
|
return filteredContents;
|
|
63
59
|
});
|
|
64
60
|
}
|
|
65
|
-
static trackAllContents(
|
|
61
|
+
static trackAllContents(botonicContext, contents) {
|
|
66
62
|
return __awaiter(this, void 0, void 0, function* () {
|
|
67
63
|
for (const content of contents) {
|
|
68
|
-
yield content.trackFlow(
|
|
64
|
+
yield content.trackFlow(botonicContext);
|
|
69
65
|
}
|
|
70
66
|
});
|
|
71
67
|
}
|
|
72
|
-
static doHandoffAndBotActions(
|
|
68
|
+
static doHandoffAndBotActions(botonicContext, contents) {
|
|
73
69
|
return __awaiter(this, void 0, void 0, function* () {
|
|
74
70
|
const handoffContent = contents.find(content => content instanceof FlowHandoff);
|
|
75
71
|
if (handoffContent) {
|
|
76
|
-
yield handoffContent.doHandoff(
|
|
72
|
+
yield handoffContent.doHandoff(botonicContext);
|
|
77
73
|
}
|
|
78
74
|
const botActionContent = contents.find(content => content instanceof FlowBotAction);
|
|
79
75
|
if (botActionContent) {
|
|
80
|
-
botActionContent.doBotAction(
|
|
76
|
+
botActionContent.doBotAction(botonicContext);
|
|
81
77
|
}
|
|
82
78
|
});
|
|
83
79
|
}
|
|
84
80
|
}
|
|
85
|
-
function getContents(
|
|
81
|
+
function getContents(botonicContext, contentID) {
|
|
86
82
|
return __awaiter(this, void 0, void 0, function* () {
|
|
87
|
-
const fbContext = getContext(
|
|
88
|
-
if (
|
|
83
|
+
const fbContext = getContext(botonicContext, contentID);
|
|
84
|
+
if (botonicContext.session.isFirstInteraction) {
|
|
89
85
|
return yield getContentsByFirstInteraction(fbContext);
|
|
90
86
|
}
|
|
91
87
|
// @ts-expect-error TODO: Add needed logic when we can define contents for multi locale queue position message
|
|
92
|
-
if (
|
|
88
|
+
if (botonicContext.input.type === InputType.CaseEventQueuePosition) {
|
|
93
89
|
return [];
|
|
94
90
|
}
|
|
95
91
|
// When user clicks on a button generated by ai agent, the payload is the empty payload
|
|
96
92
|
// and we can resolve as if the user send a text with the button text
|
|
97
|
-
const payload =
|
|
93
|
+
const payload = botonicContext.input.payload;
|
|
98
94
|
if (payload === null || payload === void 0 ? void 0 : payload.startsWith(EMPTY_PAYLOAD)) {
|
|
99
|
-
|
|
95
|
+
botonicContext.input.payload = undefined;
|
|
100
96
|
}
|
|
101
|
-
if (
|
|
97
|
+
if (botonicContext.input.payload || contentID) {
|
|
102
98
|
const contentsByPayload = yield getContentsByPayload(fbContext);
|
|
103
99
|
if (contentsByPayload.length > 0) {
|
|
104
100
|
return contentsByPayload;
|
|
105
101
|
}
|
|
106
102
|
return yield getContentsByFallback(fbContext);
|
|
107
103
|
}
|
|
108
|
-
if (
|
|
104
|
+
if (botonicContext.input.hasInputText()) {
|
|
109
105
|
const aiAgentContents = yield getContentsByAiAgent(fbContext);
|
|
110
106
|
if (aiAgentContents.length > 0) {
|
|
111
107
|
return aiAgentContents;
|
|
@@ -118,29 +114,29 @@ function getContents(botContext, contentID) {
|
|
|
118
114
|
return yield getContentsByFallback(fbContext);
|
|
119
115
|
});
|
|
120
116
|
}
|
|
121
|
-
function filterContents(
|
|
117
|
+
function filterContents(botonicContext, contents) {
|
|
122
118
|
return __awaiter(this, void 0, void 0, function* () {
|
|
123
|
-
const flowBuilderPlugin = getFlowBuilderPlugin(
|
|
119
|
+
const flowBuilderPlugin = getFlowBuilderPlugin(botonicContext.plugins);
|
|
124
120
|
const contentFilters = flowBuilderPlugin.contentFilters;
|
|
125
121
|
const contentFilterExecutor = new ContentFilterExecutor({
|
|
126
122
|
filters: contentFilters,
|
|
127
123
|
});
|
|
128
124
|
const filteredContents = [];
|
|
129
125
|
for (const content of contents) {
|
|
130
|
-
const filteredContent = yield contentFilterExecutor.filter(
|
|
126
|
+
const filteredContent = yield contentFilterExecutor.filter(botonicContext, content);
|
|
131
127
|
filteredContents.push(filteredContent);
|
|
132
128
|
}
|
|
133
129
|
return filteredContents;
|
|
134
130
|
});
|
|
135
131
|
}
|
|
136
|
-
function getContext(
|
|
137
|
-
const flowBuilderPlugin = getFlowBuilderPlugin(
|
|
132
|
+
function getContext(botonicContext, contentID) {
|
|
133
|
+
const flowBuilderPlugin = getFlowBuilderPlugin(botonicContext.plugins);
|
|
138
134
|
const cmsApi = flowBuilderPlugin.cmsApi;
|
|
139
135
|
const resolvedLocale = flowBuilderPlugin.cmsApi.getResolvedLocale();
|
|
140
136
|
return {
|
|
141
137
|
cmsApi,
|
|
142
138
|
flowBuilderPlugin,
|
|
143
|
-
|
|
139
|
+
botonicContext,
|
|
144
140
|
resolvedLocale,
|
|
145
141
|
contentID,
|
|
146
142
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/plugin-flow-builder/src/lib/action/index.ts"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/plugin-flow-builder/src/lib/action/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { FlowContent } from '../content-fields';
|
|
2
2
|
import { FlowBuilderContext } from './index';
|
|
3
|
-
export declare function getContentsByKnowledgeBase({ cmsApi, flowBuilderPlugin,
|
|
3
|
+
export declare function getContentsByKnowledgeBase({ cmsApi, flowBuilderPlugin, botonicContext, }: FlowBuilderContext): Promise<FlowContent[]>;
|
|
@@ -4,8 +4,8 @@ import { DISABLED_MEMORY_LENGTH, FlowKnowledgeBase, } from '../content-fields';
|
|
|
4
4
|
import { getCommonFlowContentEventArgsForContentId, trackEvent, } from '../tracking';
|
|
5
5
|
import { isKnowledgeBasesAllowed } from '../utils';
|
|
6
6
|
export function getContentsByKnowledgeBase(_a) {
|
|
7
|
-
return __awaiter(this, arguments, void 0, function* ({ cmsApi, flowBuilderPlugin,
|
|
8
|
-
if (isKnowledgeBasesAllowed(
|
|
7
|
+
return __awaiter(this, arguments, void 0, function* ({ cmsApi, flowBuilderPlugin, botonicContext, }) {
|
|
8
|
+
if (isKnowledgeBasesAllowed(botonicContext)) {
|
|
9
9
|
const startNodeKnowledgeBaseFlow = cmsApi.getStartNodeKnowledgeBaseFlow();
|
|
10
10
|
if (!startNodeKnowledgeBaseFlow) {
|
|
11
11
|
return [];
|
|
@@ -17,9 +17,9 @@ export function getContentsByKnowledgeBase(_a) {
|
|
|
17
17
|
}
|
|
18
18
|
const sourceIds = knowledgeBaseContent.sourcesData.map(source => source.id);
|
|
19
19
|
if (flowBuilderPlugin.getKnowledgeBaseResponse &&
|
|
20
|
-
|
|
20
|
+
botonicContext.input.hasInputText() &&
|
|
21
21
|
sourceIds.length > 0) {
|
|
22
|
-
const contentsWithKnowledgeResponse = yield getContentsWithKnowledgeResponse(flowBuilderPlugin.getKnowledgeBaseResponse,
|
|
22
|
+
const contentsWithKnowledgeResponse = yield getContentsWithKnowledgeResponse(flowBuilderPlugin.getKnowledgeBaseResponse, botonicContext, contents, knowledgeBaseContent);
|
|
23
23
|
if (contentsWithKnowledgeResponse) {
|
|
24
24
|
return contentsWithKnowledgeResponse;
|
|
25
25
|
}
|
|
@@ -28,17 +28,17 @@ export function getContentsByKnowledgeBase(_a) {
|
|
|
28
28
|
return [];
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
|
-
function getContentsWithKnowledgeResponse(getKnowledgeBaseResponse,
|
|
31
|
+
function getContentsWithKnowledgeResponse(getKnowledgeBaseResponse, botonicContext, contents, knowledgeBaseContent) {
|
|
32
32
|
return __awaiter(this, void 0, void 0, function* () {
|
|
33
33
|
var _a;
|
|
34
34
|
const sourceIds = knowledgeBaseContent.sourcesData.map(source => source.id);
|
|
35
35
|
const instructions = knowledgeBaseContent.instructions;
|
|
36
|
-
const messageId = (_a =
|
|
36
|
+
const messageId = (_a = botonicContext.input.messageId) !== null && _a !== void 0 ? _a : '';
|
|
37
37
|
const memoryLength = knowledgeBaseContent.hasMemory
|
|
38
38
|
? knowledgeBaseContent.memoryLength
|
|
39
39
|
: DISABLED_MEMORY_LENGTH;
|
|
40
|
-
const knowledgeBaseResponse = yield getKnowledgeBaseResponse(
|
|
41
|
-
yield trackKnowledgeBase(knowledgeBaseResponse,
|
|
40
|
+
const knowledgeBaseResponse = yield getKnowledgeBaseResponse(botonicContext, sourceIds, instructions, messageId, memoryLength);
|
|
41
|
+
yield trackKnowledgeBase(knowledgeBaseResponse, botonicContext, knowledgeBaseContent);
|
|
42
42
|
if (!knowledgeBaseResponse.hasKnowledge ||
|
|
43
43
|
!knowledgeBaseResponse.isFaithful) {
|
|
44
44
|
return undefined;
|
|
@@ -55,7 +55,7 @@ function updateContentsWithResponse(contents, response) {
|
|
|
55
55
|
return content;
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
|
-
function trackKnowledgeBase(response,
|
|
58
|
+
function trackKnowledgeBase(response, botonicContext, knowledgeBaseContent) {
|
|
59
59
|
return __awaiter(this, void 0, void 0, function* () {
|
|
60
60
|
var _a, _b;
|
|
61
61
|
const getKnowledgeFailReason = () => {
|
|
@@ -68,23 +68,23 @@ function trackKnowledgeBase(response, botContext, knowledgeBaseContent) {
|
|
|
68
68
|
}
|
|
69
69
|
return knowledgebaseFailReason;
|
|
70
70
|
};
|
|
71
|
-
const { flowId, flowName, flowNodeId, flowNodeContentId } = yield getCommonFlowContentEventArgsForContentId(
|
|
71
|
+
const { flowId, flowName, flowNodeId, flowNodeContentId } = yield getCommonFlowContentEventArgsForContentId(botonicContext, knowledgeBaseContent.id);
|
|
72
72
|
const event = {
|
|
73
73
|
action: EventAction.Knowledgebase,
|
|
74
74
|
knowledgebaseInferenceId: response.inferenceId,
|
|
75
75
|
knowledgebaseFailReason: getKnowledgeFailReason(),
|
|
76
76
|
knowledgebaseSourcesIds: knowledgeBaseContent.sourcesData.map(source => source.id),
|
|
77
77
|
knowledgebaseChunksIds: response.chunkIds,
|
|
78
|
-
knowledgebaseMessageId: (_a =
|
|
79
|
-
userInput: (_b =
|
|
80
|
-
flowThreadId:
|
|
78
|
+
knowledgebaseMessageId: (_a = botonicContext.input.messageId) !== null && _a !== void 0 ? _a : '',
|
|
79
|
+
userInput: (_b = botonicContext.input.text) !== null && _b !== void 0 ? _b : '',
|
|
80
|
+
flowThreadId: botonicContext.session.flowThreadId,
|
|
81
81
|
flowId,
|
|
82
82
|
flowName,
|
|
83
83
|
flowNodeId,
|
|
84
84
|
flowNodeContentId,
|
|
85
85
|
};
|
|
86
86
|
const { action } = event, eventArgs = __rest(event, ["action"]);
|
|
87
|
-
yield trackEvent(
|
|
87
|
+
yield trackEvent(botonicContext, action, eventArgs);
|
|
88
88
|
});
|
|
89
89
|
}
|
|
90
90
|
//# sourceMappingURL=knowledge-bases.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-bases.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/plugin-flow-builder/src/lib/action/knowledge-bases.ts"],"names":[],"mappings":";AAAA,OAAO,EAEL,WAAW,EAEX,uBAAuB,GACxB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,sBAAsB,EAEtB,iBAAiB,GAClB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,yCAAyC,EACzC,UAAU,GACX,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAA;AAGlD,MAAM,UAAgB,0BAA0B;yDAAC,EAC/C,MAAM,EACN,iBAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"knowledge-bases.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/plugin-flow-builder/src/lib/action/knowledge-bases.ts"],"names":[],"mappings":"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"}
|