@botonic/plugin-flow-builder 0.27.6 → 0.27.7-alpha.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/lib/cjs/action/first-interaction.d.ts +3 -0
- package/lib/cjs/action/first-interaction.js +72 -0
- package/lib/cjs/action/first-interaction.js.map +1 -0
- package/lib/cjs/action/index.js +10 -16
- package/lib/cjs/action/index.js.map +1 -1
- package/lib/cjs/action/knowledge-bases.js +7 -16
- package/lib/cjs/action/knowledge-bases.js.map +1 -1
- package/lib/cjs/action/payload.d.ts +3 -0
- package/lib/cjs/action/payload.js +17 -0
- package/lib/cjs/action/payload.js.map +1 -0
- package/lib/cjs/index.js +1 -3
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/user-input/index.js +17 -5
- package/lib/cjs/user-input/index.js.map +1 -1
- package/lib/cjs/utils.d.ts +2 -1
- package/lib/cjs/utils.js +6 -1
- package/lib/cjs/utils.js.map +1 -1
- package/lib/esm/action/first-interaction.d.ts +3 -0
- package/lib/esm/action/first-interaction.js +68 -0
- package/lib/esm/action/first-interaction.js.map +1 -0
- package/lib/esm/action/index.js +9 -15
- package/lib/esm/action/index.js.map +1 -1
- package/lib/esm/action/knowledge-bases.js +7 -16
- package/lib/esm/action/knowledge-bases.js.map +1 -1
- package/lib/esm/action/payload.d.ts +3 -0
- package/lib/esm/action/payload.js +13 -0
- package/lib/esm/action/payload.js.map +1 -0
- package/lib/esm/index.js +2 -4
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/user-input/index.js +17 -5
- package/lib/esm/user-input/index.js.map +1 -1
- package/lib/esm/utils.d.ts +2 -1
- package/lib/esm/utils.js +4 -0
- package/lib/esm/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/action/first-interaction.ts +111 -0
- package/src/action/index.tsx +9 -22
- package/src/action/knowledge-bases.ts +9 -16
- package/src/action/payload.ts +20 -0
- package/src/index.ts +2 -3
- package/src/user-input/index.ts +21 -6
- package/src/utils.ts +5 -1
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getContentsByFirstInteraction = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
const user_input_1 = require("../user-input");
|
|
7
|
+
const utils_1 = require("../utils");
|
|
8
|
+
const knowledge_bases_1 = require("./knowledge-bases");
|
|
9
|
+
const payload_1 = require("./payload");
|
|
10
|
+
function getContentsByFirstInteraction({ cmsApi, flowBuilderPlugin, request, resolvedLocale, }) {
|
|
11
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
12
|
+
const firstInteractionContents = yield flowBuilderPlugin.getStartContents(resolvedLocale);
|
|
13
|
+
if ((0, utils_1.inputHasTextData)(request.input)) {
|
|
14
|
+
const contentsByUserInput = yield getContentsByUserInput({
|
|
15
|
+
cmsApi,
|
|
16
|
+
flowBuilderPlugin,
|
|
17
|
+
request,
|
|
18
|
+
resolvedLocale,
|
|
19
|
+
});
|
|
20
|
+
return [...firstInteractionContents, ...contentsByUserInput];
|
|
21
|
+
}
|
|
22
|
+
return firstInteractionContents;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
exports.getContentsByFirstInteraction = getContentsByFirstInteraction;
|
|
26
|
+
function getContentsByUserInput({ cmsApi, flowBuilderPlugin, request, resolvedLocale, }) {
|
|
27
|
+
var _a;
|
|
28
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
const nodeByUserInput = yield (0, user_input_1.getNodeByUserInput)(cmsApi, resolvedLocale, request, flowBuilderPlugin.smartIntentsConfig);
|
|
30
|
+
request.input.payload = cmsApi.getPayload(nodeByUserInput === null || nodeByUserInput === void 0 ? void 0 : nodeByUserInput.target);
|
|
31
|
+
const conversationStartId = getConversationStartId(cmsApi);
|
|
32
|
+
if (request.input.payload === conversationStartId) {
|
|
33
|
+
return [];
|
|
34
|
+
}
|
|
35
|
+
if ((_a = request.input.payload) === null || _a === void 0 ? void 0 : _a.startsWith(constants_1.BOT_ACTION_PAYLOAD_PREFIX)) {
|
|
36
|
+
request.input.payload = flowBuilderPlugin.replaceBotActionPayload(request.input.payload);
|
|
37
|
+
}
|
|
38
|
+
const contentsByKeywordsOrIntents = yield (0, payload_1.getContentsByPayload)({
|
|
39
|
+
cmsApi,
|
|
40
|
+
flowBuilderPlugin,
|
|
41
|
+
request,
|
|
42
|
+
resolvedLocale,
|
|
43
|
+
});
|
|
44
|
+
const hasRepeatedContent = yield checkRepetedContents(flowBuilderPlugin, resolvedLocale, contentsByKeywordsOrIntents);
|
|
45
|
+
if (hasRepeatedContent) {
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
if (contentsByKeywordsOrIntents.length > 0) {
|
|
49
|
+
return contentsByKeywordsOrIntents;
|
|
50
|
+
}
|
|
51
|
+
return yield (0, knowledge_bases_1.getContentsByKnowledgeBase)({
|
|
52
|
+
cmsApi,
|
|
53
|
+
flowBuilderPlugin,
|
|
54
|
+
request,
|
|
55
|
+
resolvedLocale,
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
function getConversationStartId(cmsApi) {
|
|
60
|
+
var _a;
|
|
61
|
+
const conversationStartId = (_a = cmsApi.flow.flows.find(flow => flow.name === constants_1.MAIN_FLOW_NAME)) === null || _a === void 0 ? void 0 : _a.start_node_id;
|
|
62
|
+
return conversationStartId;
|
|
63
|
+
}
|
|
64
|
+
function checkRepetedContents(flowBuilderPlugin, resolvedLocale, contentsByKeywordsOrIntents) {
|
|
65
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
66
|
+
const startContents = yield flowBuilderPlugin.getStartContents(resolvedLocale);
|
|
67
|
+
const contentIds = new Set(contentsByKeywordsOrIntents.map(content => content.id));
|
|
68
|
+
const hasRepeatedContent = startContents.some(content => contentIds.has(content.id));
|
|
69
|
+
return hasRepeatedContent;
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=first-interaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"first-interaction.js","sourceRoot":"","sources":["../../../src/action/first-interaction.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/action/index.js
CHANGED
|
@@ -3,14 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.FlowBuilderMultichannelAction = exports.FlowBuilderAction = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
-
const core_1 = require("@botonic/core");
|
|
7
6
|
const react_1 = require("@botonic/react");
|
|
8
7
|
const react_2 = tslib_1.__importDefault(require("react"));
|
|
9
8
|
const content_fields_1 = require("../content-fields");
|
|
10
9
|
const helpers_1 = require("../helpers");
|
|
11
10
|
const tracking_1 = require("../tracking");
|
|
11
|
+
const utils_1 = require("../utils");
|
|
12
12
|
const fallback_1 = require("./fallback");
|
|
13
|
+
const first_interaction_1 = require("./first-interaction");
|
|
13
14
|
const knowledge_bases_1 = require("./knowledge-bases");
|
|
15
|
+
const payload_1 = require("./payload");
|
|
14
16
|
class FlowBuilderAction extends react_2.default.Component {
|
|
15
17
|
static botonicInit(request) {
|
|
16
18
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
@@ -52,26 +54,18 @@ function getContents(request) {
|
|
|
52
54
|
resolvedLocale,
|
|
53
55
|
};
|
|
54
56
|
if (request.session.is_first_interaction) {
|
|
55
|
-
return yield
|
|
57
|
+
return yield (0, first_interaction_1.getContentsByFirstInteraction)(context);
|
|
56
58
|
}
|
|
57
59
|
if (request.input.payload) {
|
|
58
|
-
return yield getContentsByPayload(context);
|
|
60
|
+
return yield (0, payload_1.getContentsByPayload)(context);
|
|
59
61
|
}
|
|
60
|
-
if (
|
|
61
|
-
|
|
62
|
+
if ((0, utils_1.inputHasTextData)(request.input)) {
|
|
63
|
+
const knowledgeBaseContents = yield (0, knowledge_bases_1.getContentsByKnowledgeBase)(context);
|
|
64
|
+
if (knowledgeBaseContents.length > 0) {
|
|
65
|
+
return knowledgeBaseContents;
|
|
66
|
+
}
|
|
62
67
|
}
|
|
63
68
|
return yield (0, fallback_1.getContentsByFallback)(context);
|
|
64
69
|
});
|
|
65
70
|
}
|
|
66
|
-
function getContentsByPayload({ cmsApi, flowBuilderPlugin, request, resolvedLocale, }) {
|
|
67
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
68
|
-
const targetNode = request.input.payload
|
|
69
|
-
? cmsApi.getNodeById(request.input.payload)
|
|
70
|
-
: undefined;
|
|
71
|
-
if (targetNode) {
|
|
72
|
-
return yield flowBuilderPlugin.getContentsByNode(targetNode, resolvedLocale);
|
|
73
|
-
}
|
|
74
|
-
return [];
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
71
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/action/index.tsx"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/action/index.tsx"],"names":[],"mappings":";;;;;AAAA,0CAA4E;AAC5E,0DAAyB;AAGzB,sDAA4D;AAC5D,wCAAiD;AAEjD,0CAA8C;AAC9C,oCAA2C;AAC3C,yCAAkD;AAClD,2DAAmE;AACnE,uDAA8D;AAC9D,uCAAgD;AAMhD,MAAa,iBAAkB,SAAQ,eAAK,CAAC,SAAiC;IAG5E,MAAM,CAAO,WAAW,CACtB,OAAsB;;YAEtB,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAA;YAC3C,MAAM,IAAA,2BAAgB,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;YAEzC,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAClC,OAAO,CAAC,EAAE,CAAC,OAAO,YAAY,4BAAW,CAC3B,CAAA;YAChB,IAAI,cAAc,EAAE;gBAClB,MAAM,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;aACxC;YAED,OAAO,EAAE,QAAQ,EAAE,CAAA;QACrB,CAAC;KAAA;IAED,MAAM;QACJ,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC5B,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;IACxE,CAAC;;AAvBH,8CAwBC;AAvBQ,6BAAW,GAAG,sBAAc,CAAA;AAyBrC,MAAa,6BAA8B,SAAQ,iBAAiB;IAClE,MAAM;QACJ,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC5B,OAAO,CACL,uBAAC,oBAAY,kBAAC,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,gBACzC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,IACnD,CAChB,CAAA;IACH,CAAC;CACF;AAVD,sEAUC;AAED,SAAe,WAAW,CAAC,OAAsB;;QAC/C,MAAM,iBAAiB,GAAG,IAAA,8BAAoB,EAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC/D,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAA;QACvC,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC3D,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;QACzE,MAAM,OAAO,GAAG;YACd,MAAM;YACN,iBAAiB;YACjB,OAAO;YACP,cAAc;SACf,CAAA;QAED,IAAI,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE;YACxC,OAAO,MAAM,IAAA,iDAA6B,EAAC,OAAO,CAAC,CAAA;SACpD;QAED,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE;YACzB,OAAO,MAAM,IAAA,8BAAoB,EAAC,OAAO,CAAC,CAAA;SAC3C;QAED,IAAI,IAAA,wBAAgB,EAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACnC,MAAM,qBAAqB,GAAG,MAAM,IAAA,4CAA0B,EAAC,OAAO,CAAC,CAAA;YACvE,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpC,OAAO,qBAAqB,CAAA;aAC7B;SACF;QAED,OAAO,MAAM,IAAA,gCAAqB,EAAC,OAAO,CAAC,CAAA;IAC7C,CAAC;CAAA"}
|
|
@@ -2,20 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getContentsByKnowledgeBase = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const core_1 = require("@botonic/core");
|
|
6
5
|
const content_fields_1 = require("../content-fields");
|
|
7
6
|
const tracking_1 = require("../tracking");
|
|
8
|
-
const
|
|
7
|
+
const utils_1 = require("../utils");
|
|
9
8
|
function getContentsByKnowledgeBase({ cmsApi, flowBuilderPlugin, request, resolvedLocale, }) {
|
|
10
9
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
11
10
|
const startNodeKnowledeBaseFlow = cmsApi.getStartNodeKnowledeBaseFlow();
|
|
12
11
|
if (!startNodeKnowledeBaseFlow) {
|
|
13
|
-
return
|
|
14
|
-
cmsApi,
|
|
15
|
-
flowBuilderPlugin,
|
|
16
|
-
request,
|
|
17
|
-
resolvedLocale,
|
|
18
|
-
});
|
|
12
|
+
return [];
|
|
19
13
|
}
|
|
20
14
|
const contents = yield flowBuilderPlugin.getContentsByNode(startNodeKnowledeBaseFlow, resolvedLocale);
|
|
21
15
|
const knowledgeBaseContent = contents.find(content => content instanceof content_fields_1.FlowKnowledgeBase);
|
|
@@ -23,19 +17,13 @@ function getContentsByKnowledgeBase({ cmsApi, flowBuilderPlugin, request, resolv
|
|
|
23
17
|
return contents;
|
|
24
18
|
}
|
|
25
19
|
if (flowBuilderPlugin.getKnowledgeBaseResponse &&
|
|
26
|
-
request.input
|
|
27
|
-
request.input.type === core_1.INPUT.TEXT) {
|
|
20
|
+
(0, utils_1.inputHasTextData)(request.input)) {
|
|
28
21
|
const contentsWithKnowledgeResponse = yield getContentsWithKnowledgeResponse(flowBuilderPlugin.getKnowledgeBaseResponse, request, knowledgeBaseContent, contents);
|
|
29
22
|
if (contentsWithKnowledgeResponse) {
|
|
30
23
|
return contentsWithKnowledgeResponse;
|
|
31
24
|
}
|
|
32
25
|
}
|
|
33
|
-
return
|
|
34
|
-
cmsApi,
|
|
35
|
-
flowBuilderPlugin,
|
|
36
|
-
request,
|
|
37
|
-
resolvedLocale,
|
|
38
|
-
});
|
|
26
|
+
return [];
|
|
39
27
|
});
|
|
40
28
|
}
|
|
41
29
|
exports.getContentsByKnowledgeBase = getContentsByKnowledgeBase;
|
|
@@ -47,6 +35,9 @@ function getContentsWithKnowledgeResponse(getKnowledgeBaseResponse, request, kno
|
|
|
47
35
|
!knowledgeBaseResponse.isFaithuful) {
|
|
48
36
|
return undefined;
|
|
49
37
|
}
|
|
38
|
+
console.log('KnowledgeBaseResponse:', knowledgeBaseResponse.answer, {
|
|
39
|
+
knowledgeBaseResponse,
|
|
40
|
+
});
|
|
50
41
|
return updateContentsWithAnswer(contents, knowledgeBaseResponse.answer);
|
|
51
42
|
});
|
|
52
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-bases.js","sourceRoot":"","sources":["../../../src/action/knowledge-bases.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"knowledge-bases.js","sourceRoot":"","sources":["../../../src/action/knowledge-bases.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getContentsByPayload = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
function getContentsByPayload({ cmsApi, flowBuilderPlugin, request, resolvedLocale, }) {
|
|
6
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
7
|
+
const targetNode = request.input.payload
|
|
8
|
+
? cmsApi.getNodeById(request.input.payload)
|
|
9
|
+
: undefined;
|
|
10
|
+
if (targetNode) {
|
|
11
|
+
return yield flowBuilderPlugin.getContentsByNode(targetNode, resolvedLocale);
|
|
12
|
+
}
|
|
13
|
+
return [];
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
exports.getContentsByPayload = getContentsByPayload;
|
|
17
|
+
//# sourceMappingURL=payload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload.js","sourceRoot":"","sources":["../../../src/action/payload.ts"],"names":[],"mappings":";;;;AAIA,SAAsB,oBAAoB,CAAC,EACzC,MAAM,EACN,iBAAiB,EACjB,OAAO,EACP,cAAc,GACK;;QACnB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO;YACtC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAoB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;YAC9D,CAAC,CAAC,SAAS,CAAA;QAEb,IAAI,UAAU,EAAE;YACd,OAAO,MAAM,iBAAiB,CAAC,iBAAiB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;SAC7E;QAED,OAAO,EAAE,CAAA;IACX,CAAC;CAAA;AAfD,oDAeC"}
|
package/lib/cjs/index.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FlowBuilderJSONVersion = exports.trackFlowContent = exports.BOT_ACTION_PAYLOAD_PREFIX = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const core_1 = require("@botonic/core");
|
|
6
5
|
const uuid_1 = require("uuid");
|
|
7
6
|
const api_1 = require("./api");
|
|
8
7
|
const constants_1 = require("./constants");
|
|
@@ -36,8 +35,7 @@ class BotonicPluginFlowBuilder {
|
|
|
36
35
|
accessToken: this.getAccessToken(request.session),
|
|
37
36
|
request: this.currentRequest,
|
|
38
37
|
});
|
|
39
|
-
const checkUserTextInput = request.input
|
|
40
|
-
request.input.type === core_1.INPUT.TEXT &&
|
|
38
|
+
const checkUserTextInput = (0, utils_1.inputHasTextData)(request.input) &&
|
|
41
39
|
!request.input.payload &&
|
|
42
40
|
!request.session.is_first_interaction;
|
|
43
41
|
if (checkUserTextInput) {
|
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,28 +2,40 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getNodeByUserInput = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
6
|
const intent_1 = require("./intent");
|
|
7
7
|
const keyword_1 = require("./keyword");
|
|
8
8
|
const smart_intent_1 = require("./smart-intent");
|
|
9
9
|
function getNodeByUserInput(cmsApi, locale, request, smartIntentsConfig) {
|
|
10
10
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
11
|
-
if (
|
|
11
|
+
if ((0, utils_1.inputHasTextData)(request.input)) {
|
|
12
12
|
const keywordMatcher = new keyword_1.KeywordMatcher({
|
|
13
13
|
cmsApi,
|
|
14
14
|
locale,
|
|
15
15
|
request,
|
|
16
16
|
});
|
|
17
17
|
const keywordNode = yield keywordMatcher.getNodeByInput(request.input.data);
|
|
18
|
-
if (keywordNode)
|
|
18
|
+
if (keywordNode) {
|
|
19
|
+
console.log('Keyword node found:', keywordNode.content.title, {
|
|
20
|
+
keywordNode,
|
|
21
|
+
});
|
|
19
22
|
return keywordNode;
|
|
23
|
+
}
|
|
20
24
|
const smartIntentsApi = new smart_intent_1.SmartIntentsApi(cmsApi, request, smartIntentsConfig);
|
|
21
25
|
const smartIntentNode = yield smartIntentsApi.getNodeByInput();
|
|
22
|
-
if (smartIntentNode)
|
|
26
|
+
if (smartIntentNode) {
|
|
27
|
+
console.log('Smart intent node found:', smartIntentNode.content.title, {
|
|
28
|
+
smartIntentNode,
|
|
29
|
+
});
|
|
23
30
|
return smartIntentNode;
|
|
31
|
+
}
|
|
24
32
|
const intentNode = yield (0, intent_1.getIntentNodeByInput)(cmsApi, locale, request);
|
|
25
|
-
if (intentNode)
|
|
33
|
+
if (intentNode) {
|
|
34
|
+
console.log('Intent node found:', intentNode.content.title, {
|
|
35
|
+
intentNode,
|
|
36
|
+
});
|
|
26
37
|
return intentNode;
|
|
38
|
+
}
|
|
27
39
|
}
|
|
28
40
|
return undefined;
|
|
29
41
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/user-input/index.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/user-input/index.ts"],"names":[],"mappings":";;;;AASA,oCAA2C;AAC3C,qCAA+C;AAC/C,uCAA0C;AAC1C,iDAA6E;AAE7E,SAAsB,kBAAkB,CACtC,MAAsB,EACtB,MAAc,EACd,OAAsB,EACtB,kBAA+C;;QAE/C,IAAI,IAAA,wBAAgB,EAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACnC,MAAM,cAAc,GAAG,IAAI,wBAAc,CAAC;gBACxC,MAAM;gBACN,MAAM;gBACN,OAAO;aACR,CAAC,CAAA;YACF,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,IAAK,CAAC,CAAA;YAC5E,IAAI,WAAW,EAAE;gBACf,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE;oBAC5D,WAAW;iBACZ,CAAC,CAAA;gBACF,OAAO,WAAW,CAAA;aACnB;YACD,MAAM,eAAe,GAAG,IAAI,8BAAe,CACzC,MAAM,EACN,OAAO,EACP,kBAAkB,CACnB,CAAA;YACD,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,cAAc,EAAE,CAAA;YAC9D,IAAI,eAAe,EAAE;gBACnB,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE;oBACrE,eAAe;iBAChB,CAAC,CAAA;gBACF,OAAO,eAAe,CAAA;aACvB;YAED,MAAM,UAAU,GAAG,MAAM,IAAA,6BAAoB,EAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;YACtE,IAAI,UAAU,EAAE;gBACd,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE;oBAC1D,UAAU;iBACX,CAAC,CAAA;gBACF,OAAO,UAAU,CAAA;aAClB;SACF;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;CAAA;AAzCD,gDAyCC"}
|
package/lib/cjs/utils.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { Session } from '@botonic/core';
|
|
1
|
+
import { Input, Session } from '@botonic/core';
|
|
2
2
|
import { ActionRequest } from '@botonic/react';
|
|
3
3
|
import { BotonicPluginFlowBuilderOptions } from './types';
|
|
4
4
|
export declare function resolveGetAccessToken(options: BotonicPluginFlowBuilderOptions): (session: Session) => string;
|
|
5
5
|
export declare function getValueFromKeyPath(request: ActionRequest, keyPath: string): any;
|
|
6
|
+
export declare function inputHasTextData(input: Input): boolean;
|
package/lib/cjs/utils.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getValueFromKeyPath = exports.resolveGetAccessToken = void 0;
|
|
3
|
+
exports.inputHasTextData = exports.getValueFromKeyPath = exports.resolveGetAccessToken = void 0;
|
|
4
|
+
const core_1 = require("@botonic/core");
|
|
4
5
|
const types_1 = require("./types");
|
|
5
6
|
function getAccessTokenFromSession(session) {
|
|
6
7
|
if (!session._access_token) {
|
|
@@ -36,4 +37,8 @@ function resolveObjectKey(object, key) {
|
|
|
36
37
|
}
|
|
37
38
|
return undefined;
|
|
38
39
|
}
|
|
40
|
+
function inputHasTextData(input) {
|
|
41
|
+
return input.data !== undefined && input.type === core_1.INPUT.TEXT;
|
|
42
|
+
}
|
|
43
|
+
exports.inputHasTextData = inputHasTextData;
|
|
39
44
|
//# sourceMappingURL=utils.js.map
|
package/lib/cjs/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;AAAA,wCAAqD;AAGrD,mCAA6E;AAE7E,SAAS,yBAAyB,CAAC,OAAgB;IACjD,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;QAC1B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;KACpD;IACD,OAAO,OAAO,CAAC,aAAa,CAAA;AAC9B,CAAC;AAED,SAAgB,qBAAqB,CACnC,OAAwC;IAExC,QAAQ,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;QAC5B,KAAK,0BAAkB,CAAC,UAAU;YAChC,OAAO,yBAAyB,CAAA;QAClC,KAAK,0BAAkB,CAAC,WAAW;YACjC,OAAO,OAAO,CAAC,cAAc,CAAA;QAC/B;YACE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;KAChE;AACH,CAAC;AAXD,sDAWC;AAED,SAAgB,mBAAmB,CACjC,OAAsB,EACtB,OAAe;IAEf,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QAChE,OAAO,OAAO;aACX,KAAK,CAAC,GAAG,CAAC;aACV,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAA;KACnE;IAED,OAAO,OAAO;SACX,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CACL,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9C,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAChC,CAAA;AACL,CAAC;AAhBD,kDAgBC;AAED,SAAS,gBAAgB,CAAC,MAAW,EAAE,GAAW;IAChD,IAAI,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;QACvC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;KACnB;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAgB,gBAAgB,CAAC,KAAY;IAC3C,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,YAAK,CAAC,IAAI,CAAA;AAC9D,CAAC;AAFD,4CAEC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { BOT_ACTION_PAYLOAD_PREFIX, MAIN_FLOW_NAME } from '../constants';
|
|
3
|
+
import { getNodeByUserInput } from '../user-input';
|
|
4
|
+
import { inputHasTextData } from '../utils';
|
|
5
|
+
import { getContentsByKnowledgeBase } from './knowledge-bases';
|
|
6
|
+
import { getContentsByPayload } from './payload';
|
|
7
|
+
export function getContentsByFirstInteraction({ cmsApi, flowBuilderPlugin, request, resolvedLocale, }) {
|
|
8
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
9
|
+
const firstInteractionContents = yield flowBuilderPlugin.getStartContents(resolvedLocale);
|
|
10
|
+
if (inputHasTextData(request.input)) {
|
|
11
|
+
const contentsByUserInput = yield getContentsByUserInput({
|
|
12
|
+
cmsApi,
|
|
13
|
+
flowBuilderPlugin,
|
|
14
|
+
request,
|
|
15
|
+
resolvedLocale,
|
|
16
|
+
});
|
|
17
|
+
return [...firstInteractionContents, ...contentsByUserInput];
|
|
18
|
+
}
|
|
19
|
+
return firstInteractionContents;
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function getContentsByUserInput({ cmsApi, flowBuilderPlugin, request, resolvedLocale, }) {
|
|
23
|
+
var _a;
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
const nodeByUserInput = yield getNodeByUserInput(cmsApi, resolvedLocale, request, flowBuilderPlugin.smartIntentsConfig);
|
|
26
|
+
request.input.payload = cmsApi.getPayload(nodeByUserInput === null || nodeByUserInput === void 0 ? void 0 : nodeByUserInput.target);
|
|
27
|
+
const conversationStartId = getConversationStartId(cmsApi);
|
|
28
|
+
if (request.input.payload === conversationStartId) {
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
if ((_a = request.input.payload) === null || _a === void 0 ? void 0 : _a.startsWith(BOT_ACTION_PAYLOAD_PREFIX)) {
|
|
32
|
+
request.input.payload = flowBuilderPlugin.replaceBotActionPayload(request.input.payload);
|
|
33
|
+
}
|
|
34
|
+
const contentsByKeywordsOrIntents = yield getContentsByPayload({
|
|
35
|
+
cmsApi,
|
|
36
|
+
flowBuilderPlugin,
|
|
37
|
+
request,
|
|
38
|
+
resolvedLocale,
|
|
39
|
+
});
|
|
40
|
+
const hasRepeatedContent = yield checkRepetedContents(flowBuilderPlugin, resolvedLocale, contentsByKeywordsOrIntents);
|
|
41
|
+
if (hasRepeatedContent) {
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
if (contentsByKeywordsOrIntents.length > 0) {
|
|
45
|
+
return contentsByKeywordsOrIntents;
|
|
46
|
+
}
|
|
47
|
+
return yield getContentsByKnowledgeBase({
|
|
48
|
+
cmsApi,
|
|
49
|
+
flowBuilderPlugin,
|
|
50
|
+
request,
|
|
51
|
+
resolvedLocale,
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
function getConversationStartId(cmsApi) {
|
|
56
|
+
var _a;
|
|
57
|
+
const conversationStartId = (_a = cmsApi.flow.flows.find(flow => flow.name === MAIN_FLOW_NAME)) === null || _a === void 0 ? void 0 : _a.start_node_id;
|
|
58
|
+
return conversationStartId;
|
|
59
|
+
}
|
|
60
|
+
function checkRepetedContents(flowBuilderPlugin, resolvedLocale, contentsByKeywordsOrIntents) {
|
|
61
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
62
|
+
const startContents = yield flowBuilderPlugin.getStartContents(resolvedLocale);
|
|
63
|
+
const contentIds = new Set(contentsByKeywordsOrIntents.map(content => content.id));
|
|
64
|
+
const hasRepeatedContent = startContents.some(content => contentIds.has(content.id));
|
|
65
|
+
return hasRepeatedContent;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=first-interaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"first-interaction.js","sourceRoot":"","sources":["../../../src/action/first-interaction.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/action/index.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import { INPUT } from '@botonic/core';
|
|
4
3
|
import { Multichannel, RequestContext } from '@botonic/react';
|
|
5
4
|
import React from 'react';
|
|
6
5
|
import { FlowHandoff } from '../content-fields';
|
|
7
6
|
import { getFlowBuilderPlugin } from '../helpers';
|
|
8
7
|
import { trackFlowContent } from '../tracking';
|
|
8
|
+
import { inputHasTextData } from '../utils';
|
|
9
9
|
import { getContentsByFallback } from './fallback';
|
|
10
|
+
import { getContentsByFirstInteraction } from './first-interaction';
|
|
10
11
|
import { getContentsByKnowledgeBase } from './knowledge-bases';
|
|
12
|
+
import { getContentsByPayload } from './payload';
|
|
11
13
|
export class FlowBuilderAction extends React.Component {
|
|
12
14
|
static botonicInit(request) {
|
|
13
15
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -47,26 +49,18 @@ function getContents(request) {
|
|
|
47
49
|
resolvedLocale,
|
|
48
50
|
};
|
|
49
51
|
if (request.session.is_first_interaction) {
|
|
50
|
-
return yield
|
|
52
|
+
return yield getContentsByFirstInteraction(context);
|
|
51
53
|
}
|
|
52
54
|
if (request.input.payload) {
|
|
53
55
|
return yield getContentsByPayload(context);
|
|
54
56
|
}
|
|
55
|
-
if (request.input
|
|
56
|
-
|
|
57
|
+
if (inputHasTextData(request.input)) {
|
|
58
|
+
const knowledgeBaseContents = yield getContentsByKnowledgeBase(context);
|
|
59
|
+
if (knowledgeBaseContents.length > 0) {
|
|
60
|
+
return knowledgeBaseContents;
|
|
61
|
+
}
|
|
57
62
|
}
|
|
58
63
|
return yield getContentsByFallback(context);
|
|
59
64
|
});
|
|
60
65
|
}
|
|
61
|
-
function getContentsByPayload({ cmsApi, flowBuilderPlugin, request, resolvedLocale, }) {
|
|
62
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
-
const targetNode = request.input.payload
|
|
64
|
-
? cmsApi.getNodeById(request.input.payload)
|
|
65
|
-
: undefined;
|
|
66
|
-
if (targetNode) {
|
|
67
|
-
return yield flowBuilderPlugin.getContentsByNode(targetNode, resolvedLocale);
|
|
68
|
-
}
|
|
69
|
-
return [];
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
66
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/action/index.tsx"],"names":[],"mappings":";;AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/action/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,12 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
|
-
import { INPUT } from '@botonic/core';
|
|
3
2
|
import { FlowKnowledgeBase } from '../content-fields';
|
|
4
3
|
import { EventAction, KnowledgebaseFailReason, trackEvent } from '../tracking';
|
|
5
|
-
import {
|
|
4
|
+
import { inputHasTextData } from '../utils';
|
|
6
5
|
export function getContentsByKnowledgeBase({ cmsApi, flowBuilderPlugin, request, resolvedLocale, }) {
|
|
7
6
|
return __awaiter(this, void 0, void 0, function* () {
|
|
8
7
|
const startNodeKnowledeBaseFlow = cmsApi.getStartNodeKnowledeBaseFlow();
|
|
9
8
|
if (!startNodeKnowledeBaseFlow) {
|
|
10
|
-
return
|
|
11
|
-
cmsApi,
|
|
12
|
-
flowBuilderPlugin,
|
|
13
|
-
request,
|
|
14
|
-
resolvedLocale,
|
|
15
|
-
});
|
|
9
|
+
return [];
|
|
16
10
|
}
|
|
17
11
|
const contents = yield flowBuilderPlugin.getContentsByNode(startNodeKnowledeBaseFlow, resolvedLocale);
|
|
18
12
|
const knowledgeBaseContent = contents.find(content => content instanceof FlowKnowledgeBase);
|
|
@@ -20,19 +14,13 @@ export function getContentsByKnowledgeBase({ cmsApi, flowBuilderPlugin, request,
|
|
|
20
14
|
return contents;
|
|
21
15
|
}
|
|
22
16
|
if (flowBuilderPlugin.getKnowledgeBaseResponse &&
|
|
23
|
-
request.input
|
|
24
|
-
request.input.type === INPUT.TEXT) {
|
|
17
|
+
inputHasTextData(request.input)) {
|
|
25
18
|
const contentsWithKnowledgeResponse = yield getContentsWithKnowledgeResponse(flowBuilderPlugin.getKnowledgeBaseResponse, request, knowledgeBaseContent, contents);
|
|
26
19
|
if (contentsWithKnowledgeResponse) {
|
|
27
20
|
return contentsWithKnowledgeResponse;
|
|
28
21
|
}
|
|
29
22
|
}
|
|
30
|
-
return
|
|
31
|
-
cmsApi,
|
|
32
|
-
flowBuilderPlugin,
|
|
33
|
-
request,
|
|
34
|
-
resolvedLocale,
|
|
35
|
-
});
|
|
23
|
+
return [];
|
|
36
24
|
});
|
|
37
25
|
}
|
|
38
26
|
function getContentsWithKnowledgeResponse(getKnowledgeBaseResponse, request, knowledgeBaseContent, contents) {
|
|
@@ -43,6 +31,9 @@ function getContentsWithKnowledgeResponse(getKnowledgeBaseResponse, request, kno
|
|
|
43
31
|
!knowledgeBaseResponse.isFaithuful) {
|
|
44
32
|
return undefined;
|
|
45
33
|
}
|
|
34
|
+
console.log('KnowledgeBaseResponse:', knowledgeBaseResponse.answer, {
|
|
35
|
+
knowledgeBaseResponse,
|
|
36
|
+
});
|
|
46
37
|
return updateContentsWithAnswer(contents, knowledgeBaseResponse.answer);
|
|
47
38
|
});
|
|
48
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-bases.js","sourceRoot":"","sources":["../../../src/action/knowledge-bases.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"knowledge-bases.js","sourceRoot":"","sources":["../../../src/action/knowledge-bases.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
export function getContentsByPayload({ cmsApi, flowBuilderPlugin, request, resolvedLocale, }) {
|
|
3
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
4
|
+
const targetNode = request.input.payload
|
|
5
|
+
? cmsApi.getNodeById(request.input.payload)
|
|
6
|
+
: undefined;
|
|
7
|
+
if (targetNode) {
|
|
8
|
+
return yield flowBuilderPlugin.getContentsByNode(targetNode, resolvedLocale);
|
|
9
|
+
}
|
|
10
|
+
return [];
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=payload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload.js","sourceRoot":"","sources":["../../../src/action/payload.ts"],"names":[],"mappings":";AAIA,MAAM,UAAgB,oBAAoB,CAAC,EACzC,MAAM,EACN,iBAAiB,EACjB,OAAO,EACP,cAAc,GACK;;QACnB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO;YACtC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAoB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;YAC9D,CAAC,CAAC,SAAS,CAAA;QAEb,IAAI,UAAU,EAAE;YACd,OAAO,MAAM,iBAAiB,CAAC,iBAAiB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;SAC7E;QAED,OAAO,EAAE,CAAA;IACX,CAAC;CAAA"}
|
package/lib/esm/index.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
|
-
import { INPUT } from '@botonic/core';
|
|
3
2
|
import { v4 as uuid } from 'uuid';
|
|
4
3
|
import { FlowBuilderApi } from './api';
|
|
5
4
|
import { BOT_ACTION_PAYLOAD_PREFIX, FLOW_BUILDER_API_URL_PROD, SEPARATOR, SOURCE_INFO_SEPARATOR, } from './constants';
|
|
@@ -8,7 +7,7 @@ import { HtNodeWithContentType, } from './content-fields/hubtype-fields';
|
|
|
8
7
|
import { DEFAULT_FUNCTIONS } from './functions';
|
|
9
8
|
import { FlowBuilderJSONVersion, } from './types';
|
|
10
9
|
import { getNodeByUserInput } from './user-input';
|
|
11
|
-
import { resolveGetAccessToken } from './utils';
|
|
10
|
+
import { inputHasTextData, resolveGetAccessToken } from './utils';
|
|
12
11
|
export default class BotonicPluginFlowBuilder {
|
|
13
12
|
constructor(options) {
|
|
14
13
|
this.options = options;
|
|
@@ -33,8 +32,7 @@ export default class BotonicPluginFlowBuilder {
|
|
|
33
32
|
accessToken: this.getAccessToken(request.session),
|
|
34
33
|
request: this.currentRequest,
|
|
35
34
|
});
|
|
36
|
-
const checkUserTextInput = request.input
|
|
37
|
-
request.input.type === INPUT.TEXT &&
|
|
35
|
+
const checkUserTextInput = inputHasTextData(request.input) &&
|
|
38
36
|
!request.input.payload &&
|
|
39
37
|
!request.session.is_first_interaction;
|
|
40
38
|
if (checkUserTextInput) {
|
package/lib/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +1,38 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
|
-
import {
|
|
2
|
+
import { inputHasTextData } from '../utils';
|
|
3
3
|
import { getIntentNodeByInput } from './intent';
|
|
4
4
|
import { KeywordMatcher } from './keyword';
|
|
5
5
|
import { SmartIntentsApi } from './smart-intent';
|
|
6
6
|
export function getNodeByUserInput(cmsApi, locale, request, smartIntentsConfig) {
|
|
7
7
|
return __awaiter(this, void 0, void 0, function* () {
|
|
8
|
-
if (request.input
|
|
8
|
+
if (inputHasTextData(request.input)) {
|
|
9
9
|
const keywordMatcher = new KeywordMatcher({
|
|
10
10
|
cmsApi,
|
|
11
11
|
locale,
|
|
12
12
|
request,
|
|
13
13
|
});
|
|
14
14
|
const keywordNode = yield keywordMatcher.getNodeByInput(request.input.data);
|
|
15
|
-
if (keywordNode)
|
|
15
|
+
if (keywordNode) {
|
|
16
|
+
console.log('Keyword node found:', keywordNode.content.title, {
|
|
17
|
+
keywordNode,
|
|
18
|
+
});
|
|
16
19
|
return keywordNode;
|
|
20
|
+
}
|
|
17
21
|
const smartIntentsApi = new SmartIntentsApi(cmsApi, request, smartIntentsConfig);
|
|
18
22
|
const smartIntentNode = yield smartIntentsApi.getNodeByInput();
|
|
19
|
-
if (smartIntentNode)
|
|
23
|
+
if (smartIntentNode) {
|
|
24
|
+
console.log('Smart intent node found:', smartIntentNode.content.title, {
|
|
25
|
+
smartIntentNode,
|
|
26
|
+
});
|
|
20
27
|
return smartIntentNode;
|
|
28
|
+
}
|
|
21
29
|
const intentNode = yield getIntentNodeByInput(cmsApi, locale, request);
|
|
22
|
-
if (intentNode)
|
|
30
|
+
if (intentNode) {
|
|
31
|
+
console.log('Intent node found:', intentNode.content.title, {
|
|
32
|
+
intentNode,
|
|
33
|
+
});
|
|
23
34
|
return intentNode;
|
|
35
|
+
}
|
|
24
36
|
}
|
|
25
37
|
return undefined;
|
|
26
38
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/user-input/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/user-input/index.ts"],"names":[],"mappings":";AASA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,eAAe,EAA+B,MAAM,gBAAgB,CAAA;AAE7E,MAAM,UAAgB,kBAAkB,CACtC,MAAsB,EACtB,MAAc,EACd,OAAsB,EACtB,kBAA+C;;QAE/C,IAAI,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACnC,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC;gBACxC,MAAM;gBACN,MAAM;gBACN,OAAO;aACR,CAAC,CAAA;YACF,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,IAAK,CAAC,CAAA;YAC5E,IAAI,WAAW,EAAE;gBACf,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE;oBAC5D,WAAW;iBACZ,CAAC,CAAA;gBACF,OAAO,WAAW,CAAA;aACnB;YACD,MAAM,eAAe,GAAG,IAAI,eAAe,CACzC,MAAM,EACN,OAAO,EACP,kBAAkB,CACnB,CAAA;YACD,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,cAAc,EAAE,CAAA;YAC9D,IAAI,eAAe,EAAE;gBACnB,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE;oBACrE,eAAe;iBAChB,CAAC,CAAA;gBACF,OAAO,eAAe,CAAA;aACvB;YAED,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;YACtE,IAAI,UAAU,EAAE;gBACd,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE;oBAC1D,UAAU;iBACX,CAAC,CAAA;gBACF,OAAO,UAAU,CAAA;aAClB;SACF;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;CAAA"}
|
package/lib/esm/utils.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { Session } from '@botonic/core';
|
|
1
|
+
import { Input, Session } from '@botonic/core';
|
|
2
2
|
import { ActionRequest } from '@botonic/react';
|
|
3
3
|
import { BotonicPluginFlowBuilderOptions } from './types';
|
|
4
4
|
export declare function resolveGetAccessToken(options: BotonicPluginFlowBuilderOptions): (session: Session) => string;
|
|
5
5
|
export declare function getValueFromKeyPath(request: ActionRequest, keyPath: string): any;
|
|
6
|
+
export declare function inputHasTextData(input: Input): boolean;
|
package/lib/esm/utils.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { INPUT } from '@botonic/core';
|
|
1
2
|
import { ProcessEnvNodeEnvs } from './types';
|
|
2
3
|
function getAccessTokenFromSession(session) {
|
|
3
4
|
if (!session._access_token) {
|
|
@@ -31,4 +32,7 @@ function resolveObjectKey(object, key) {
|
|
|
31
32
|
}
|
|
32
33
|
return undefined;
|
|
33
34
|
}
|
|
35
|
+
export function inputHasTextData(input) {
|
|
36
|
+
return input.data !== undefined && input.type === INPUT.TEXT;
|
|
37
|
+
}
|
|
34
38
|
//# sourceMappingURL=utils.js.map
|
package/lib/esm/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAkB,MAAM,eAAe,CAAA;AAGrD,OAAO,EAAmC,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAE7E,SAAS,yBAAyB,CAAC,OAAgB;IACjD,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;QAC1B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;KACpD;IACD,OAAO,OAAO,CAAC,aAAa,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,OAAwC;IAExC,QAAQ,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;QAC5B,KAAK,kBAAkB,CAAC,UAAU;YAChC,OAAO,yBAAyB,CAAA;QAClC,KAAK,kBAAkB,CAAC,WAAW;YACjC,OAAO,OAAO,CAAC,cAAc,CAAA;QAC/B;YACE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;KAChE;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,OAAsB,EACtB,OAAe;IAEf,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QAChE,OAAO,OAAO;aACX,KAAK,CAAC,GAAG,CAAC;aACV,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAA;KACnE;IAED,OAAO,OAAO;SACX,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CACL,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9C,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAChC,CAAA;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAW,EAAE,GAAW;IAChD,IAAI,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;QACvC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;KACnB;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAY;IAC3C,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAA;AAC9D,CAAC"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { FlowBuilderApi } from '../api'
|
|
2
|
+
import { BOT_ACTION_PAYLOAD_PREFIX, MAIN_FLOW_NAME } from '../constants'
|
|
3
|
+
import { FlowContent } from '../content-fields'
|
|
4
|
+
import BotonicPluginFlowBuilder from '../index'
|
|
5
|
+
import { getNodeByUserInput } from '../user-input'
|
|
6
|
+
import { inputHasTextData } from '../utils'
|
|
7
|
+
import { FlowBuilderContext } from './index'
|
|
8
|
+
import { getContentsByKnowledgeBase } from './knowledge-bases'
|
|
9
|
+
import { getContentsByPayload } from './payload'
|
|
10
|
+
|
|
11
|
+
export async function getContentsByFirstInteraction({
|
|
12
|
+
cmsApi,
|
|
13
|
+
flowBuilderPlugin,
|
|
14
|
+
request,
|
|
15
|
+
resolvedLocale,
|
|
16
|
+
}: FlowBuilderContext): Promise<FlowContent[]> {
|
|
17
|
+
const firstInteractionContents =
|
|
18
|
+
await flowBuilderPlugin.getStartContents(resolvedLocale)
|
|
19
|
+
|
|
20
|
+
if (inputHasTextData(request.input)) {
|
|
21
|
+
const contentsByUserInput = await getContentsByUserInput({
|
|
22
|
+
cmsApi,
|
|
23
|
+
flowBuilderPlugin,
|
|
24
|
+
request,
|
|
25
|
+
resolvedLocale,
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
return [...firstInteractionContents, ...contentsByUserInput]
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return firstInteractionContents
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
async function getContentsByUserInput({
|
|
35
|
+
cmsApi,
|
|
36
|
+
flowBuilderPlugin,
|
|
37
|
+
request,
|
|
38
|
+
resolvedLocale,
|
|
39
|
+
}: FlowBuilderContext): Promise<FlowContent[]> {
|
|
40
|
+
const nodeByUserInput = await getNodeByUserInput(
|
|
41
|
+
cmsApi,
|
|
42
|
+
resolvedLocale,
|
|
43
|
+
request,
|
|
44
|
+
flowBuilderPlugin.smartIntentsConfig
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
request.input.payload = cmsApi.getPayload(nodeByUserInput?.target)
|
|
48
|
+
const conversationStartId = getConversationStartId(cmsApi)
|
|
49
|
+
|
|
50
|
+
if (request.input.payload === conversationStartId) {
|
|
51
|
+
return []
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (request.input.payload?.startsWith(BOT_ACTION_PAYLOAD_PREFIX)) {
|
|
55
|
+
request.input.payload = flowBuilderPlugin.replaceBotActionPayload(
|
|
56
|
+
request.input.payload
|
|
57
|
+
)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const contentsByKeywordsOrIntents = await getContentsByPayload({
|
|
61
|
+
cmsApi,
|
|
62
|
+
flowBuilderPlugin,
|
|
63
|
+
request,
|
|
64
|
+
resolvedLocale,
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
const hasRepeatedContent = await checkRepetedContents(
|
|
68
|
+
flowBuilderPlugin,
|
|
69
|
+
resolvedLocale,
|
|
70
|
+
contentsByKeywordsOrIntents
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
if (hasRepeatedContent) {
|
|
74
|
+
return []
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (contentsByKeywordsOrIntents.length > 0) {
|
|
78
|
+
return contentsByKeywordsOrIntents
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return await getContentsByKnowledgeBase({
|
|
82
|
+
cmsApi,
|
|
83
|
+
flowBuilderPlugin,
|
|
84
|
+
request,
|
|
85
|
+
resolvedLocale,
|
|
86
|
+
})
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function getConversationStartId(cmsApi: FlowBuilderApi) {
|
|
90
|
+
const conversationStartId = cmsApi.flow.flows.find(
|
|
91
|
+
flow => flow.name === MAIN_FLOW_NAME
|
|
92
|
+
)?.start_node_id
|
|
93
|
+
|
|
94
|
+
return conversationStartId
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
async function checkRepetedContents(
|
|
98
|
+
flowBuilderPlugin: BotonicPluginFlowBuilder,
|
|
99
|
+
resolvedLocale: string,
|
|
100
|
+
contentsByKeywordsOrIntents: FlowContent[]
|
|
101
|
+
) {
|
|
102
|
+
const startContents = await flowBuilderPlugin.getStartContents(resolvedLocale)
|
|
103
|
+
const contentIds = new Set(
|
|
104
|
+
contentsByKeywordsOrIntents.map(content => content.id)
|
|
105
|
+
)
|
|
106
|
+
const hasRepeatedContent = startContents.some(content =>
|
|
107
|
+
contentIds.has(content.id)
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
return hasRepeatedContent
|
|
111
|
+
}
|
package/src/action/index.tsx
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { INPUT } from '@botonic/core'
|
|
2
1
|
import { ActionRequest, Multichannel, RequestContext } from '@botonic/react'
|
|
3
2
|
import React from 'react'
|
|
4
3
|
|
|
5
4
|
import { FlowBuilderApi } from '../api'
|
|
6
5
|
import { FlowContent, FlowHandoff } from '../content-fields'
|
|
7
|
-
import { HtNodeWithContent } from '../content-fields/hubtype-fields'
|
|
8
6
|
import { getFlowBuilderPlugin } from '../helpers'
|
|
9
7
|
import BotonicPluginFlowBuilder from '../index'
|
|
10
8
|
import { trackFlowContent } from '../tracking'
|
|
9
|
+
import { inputHasTextData } from '../utils'
|
|
11
10
|
import { getContentsByFallback } from './fallback'
|
|
11
|
+
import { getContentsByFirstInteraction } from './first-interaction'
|
|
12
12
|
import { getContentsByKnowledgeBase } from './knowledge-bases'
|
|
13
|
+
import { getContentsByPayload } from './payload'
|
|
13
14
|
|
|
14
15
|
export type FlowBuilderActionProps = {
|
|
15
16
|
contents: FlowContent[]
|
|
@@ -66,15 +67,18 @@ async function getContents(request: ActionRequest): Promise<FlowContent[]> {
|
|
|
66
67
|
}
|
|
67
68
|
|
|
68
69
|
if (request.session.is_first_interaction) {
|
|
69
|
-
return await
|
|
70
|
+
return await getContentsByFirstInteraction(context)
|
|
70
71
|
}
|
|
71
72
|
|
|
72
73
|
if (request.input.payload) {
|
|
73
74
|
return await getContentsByPayload(context)
|
|
74
75
|
}
|
|
75
76
|
|
|
76
|
-
if (request.input
|
|
77
|
-
|
|
77
|
+
if (inputHasTextData(request.input)) {
|
|
78
|
+
const knowledgeBaseContents = await getContentsByKnowledgeBase(context)
|
|
79
|
+
if (knowledgeBaseContents.length > 0) {
|
|
80
|
+
return knowledgeBaseContents
|
|
81
|
+
}
|
|
78
82
|
}
|
|
79
83
|
|
|
80
84
|
return await getContentsByFallback(context)
|
|
@@ -86,20 +90,3 @@ export interface FlowBuilderContext {
|
|
|
86
90
|
request: ActionRequest
|
|
87
91
|
resolvedLocale: string
|
|
88
92
|
}
|
|
89
|
-
|
|
90
|
-
async function getContentsByPayload({
|
|
91
|
-
cmsApi,
|
|
92
|
-
flowBuilderPlugin,
|
|
93
|
-
request,
|
|
94
|
-
resolvedLocale,
|
|
95
|
-
}: FlowBuilderContext): Promise<FlowContent[]> {
|
|
96
|
-
const targetNode = request.input.payload
|
|
97
|
-
? cmsApi.getNodeById<HtNodeWithContent>(request.input.payload)
|
|
98
|
-
: undefined
|
|
99
|
-
|
|
100
|
-
if (targetNode) {
|
|
101
|
-
return await flowBuilderPlugin.getContentsByNode(targetNode, resolvedLocale)
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
return []
|
|
105
|
-
}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { INPUT } from '@botonic/core'
|
|
2
1
|
import { ActionRequest } from '@botonic/react'
|
|
3
2
|
|
|
4
3
|
import { FlowContent, FlowKnowledgeBase } from '../content-fields'
|
|
5
4
|
import { EventAction, KnowledgebaseFailReason, trackEvent } from '../tracking'
|
|
6
5
|
import { KnowledgeBaseFunction, KnowledgeBaseResponse } from '../types'
|
|
7
|
-
import {
|
|
6
|
+
import { inputHasTextData } from '../utils'
|
|
8
7
|
import { FlowBuilderContext } from './index'
|
|
9
8
|
|
|
10
9
|
export async function getContentsByKnowledgeBase({
|
|
@@ -16,12 +15,7 @@ export async function getContentsByKnowledgeBase({
|
|
|
16
15
|
const startNodeKnowledeBaseFlow = cmsApi.getStartNodeKnowledeBaseFlow()
|
|
17
16
|
|
|
18
17
|
if (!startNodeKnowledeBaseFlow) {
|
|
19
|
-
return
|
|
20
|
-
cmsApi,
|
|
21
|
-
flowBuilderPlugin,
|
|
22
|
-
request,
|
|
23
|
-
resolvedLocale,
|
|
24
|
-
})
|
|
18
|
+
return []
|
|
25
19
|
}
|
|
26
20
|
|
|
27
21
|
const contents = await flowBuilderPlugin.getContentsByNode(
|
|
@@ -39,8 +33,7 @@ export async function getContentsByKnowledgeBase({
|
|
|
39
33
|
|
|
40
34
|
if (
|
|
41
35
|
flowBuilderPlugin.getKnowledgeBaseResponse &&
|
|
42
|
-
request.input
|
|
43
|
-
request.input.type === INPUT.TEXT
|
|
36
|
+
inputHasTextData(request.input)
|
|
44
37
|
) {
|
|
45
38
|
const contentsWithKnowledgeResponse =
|
|
46
39
|
await getContentsWithKnowledgeResponse(
|
|
@@ -55,12 +48,7 @@ export async function getContentsByKnowledgeBase({
|
|
|
55
48
|
}
|
|
56
49
|
}
|
|
57
50
|
|
|
58
|
-
return
|
|
59
|
-
cmsApi,
|
|
60
|
-
flowBuilderPlugin,
|
|
61
|
-
request,
|
|
62
|
-
resolvedLocale,
|
|
63
|
-
})
|
|
51
|
+
return []
|
|
64
52
|
}
|
|
65
53
|
|
|
66
54
|
async function getContentsWithKnowledgeResponse(
|
|
@@ -82,6 +70,9 @@ async function getContentsWithKnowledgeResponse(
|
|
|
82
70
|
) {
|
|
83
71
|
return undefined
|
|
84
72
|
}
|
|
73
|
+
console.log('KnowledgeBaseResponse:', knowledgeBaseResponse.answer, {
|
|
74
|
+
knowledgeBaseResponse,
|
|
75
|
+
})
|
|
85
76
|
|
|
86
77
|
return updateContentsWithAnswer(contents, knowledgeBaseResponse.answer)
|
|
87
78
|
}
|
|
@@ -113,9 +104,11 @@ async function trackKnowledgeBase(
|
|
|
113
104
|
const knowledgebaseMessageId = request.input.message_id
|
|
114
105
|
|
|
115
106
|
let knowledgebaseFailReason: KnowledgebaseFailReason | undefined
|
|
107
|
+
|
|
116
108
|
if (!response.isFaithuful) {
|
|
117
109
|
knowledgebaseFailReason = KnowledgebaseFailReason.Hallucination
|
|
118
110
|
}
|
|
111
|
+
|
|
119
112
|
if (!response.hasKnowledge) {
|
|
120
113
|
knowledgebaseFailReason = KnowledgebaseFailReason.NoKnowledge
|
|
121
114
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { FlowContent } from '../content-fields'
|
|
2
|
+
import { HtNodeWithContent } from '../content-fields/hubtype-fields'
|
|
3
|
+
import { FlowBuilderContext } from './index'
|
|
4
|
+
|
|
5
|
+
export async function getContentsByPayload({
|
|
6
|
+
cmsApi,
|
|
7
|
+
flowBuilderPlugin,
|
|
8
|
+
request,
|
|
9
|
+
resolvedLocale,
|
|
10
|
+
}: FlowBuilderContext): Promise<FlowContent[]> {
|
|
11
|
+
const targetNode = request.input.payload
|
|
12
|
+
? cmsApi.getNodeById<HtNodeWithContent>(request.input.payload)
|
|
13
|
+
: undefined
|
|
14
|
+
|
|
15
|
+
if (targetNode) {
|
|
16
|
+
return await flowBuilderPlugin.getContentsByNode(targetNode, resolvedLocale)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return []
|
|
20
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -40,7 +40,7 @@ import {
|
|
|
40
40
|
} from './types'
|
|
41
41
|
import { getNodeByUserInput } from './user-input'
|
|
42
42
|
import { SmartIntentsInferenceConfig } from './user-input/smart-intent'
|
|
43
|
-
import { resolveGetAccessToken } from './utils'
|
|
43
|
+
import { inputHasTextData, resolveGetAccessToken } from './utils'
|
|
44
44
|
export default class BotonicPluginFlowBuilder implements Plugin {
|
|
45
45
|
public cmsApi: FlowBuilderApi
|
|
46
46
|
private flowUrl: string
|
|
@@ -80,8 +80,7 @@ export default class BotonicPluginFlowBuilder implements Plugin {
|
|
|
80
80
|
})
|
|
81
81
|
|
|
82
82
|
const checkUserTextInput =
|
|
83
|
-
request.input
|
|
84
|
-
request.input.type === INPUT.TEXT &&
|
|
83
|
+
inputHasTextData(request.input) &&
|
|
85
84
|
!request.input.payload &&
|
|
86
85
|
!request.session.is_first_interaction
|
|
87
86
|
|
package/src/user-input/index.ts
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
HtKeywordNode,
|
|
8
8
|
HtSmartIntentNode,
|
|
9
9
|
} from '../content-fields/hubtype-fields'
|
|
10
|
+
import { inputHasTextData } from '../utils'
|
|
10
11
|
import { getIntentNodeByInput } from './intent'
|
|
11
12
|
import { KeywordMatcher } from './keyword'
|
|
12
13
|
import { SmartIntentsApi, SmartIntentsInferenceConfig } from './smart-intent'
|
|
@@ -17,25 +18,39 @@ export async function getNodeByUserInput(
|
|
|
17
18
|
request: ActionRequest,
|
|
18
19
|
smartIntentsConfig: SmartIntentsInferenceConfig
|
|
19
20
|
): Promise<HtSmartIntentNode | HtIntentNode | HtKeywordNode | undefined> {
|
|
20
|
-
if (request.input
|
|
21
|
+
if (inputHasTextData(request.input)) {
|
|
21
22
|
const keywordMatcher = new KeywordMatcher({
|
|
22
23
|
cmsApi,
|
|
23
24
|
locale,
|
|
24
25
|
request,
|
|
25
26
|
})
|
|
26
|
-
const keywordNode = await keywordMatcher.getNodeByInput(request.input.data)
|
|
27
|
-
if (keywordNode)
|
|
28
|
-
|
|
27
|
+
const keywordNode = await keywordMatcher.getNodeByInput(request.input.data!)
|
|
28
|
+
if (keywordNode) {
|
|
29
|
+
console.log('Keyword node found:', keywordNode.content.title, {
|
|
30
|
+
keywordNode,
|
|
31
|
+
})
|
|
32
|
+
return keywordNode
|
|
33
|
+
}
|
|
29
34
|
const smartIntentsApi = new SmartIntentsApi(
|
|
30
35
|
cmsApi,
|
|
31
36
|
request,
|
|
32
37
|
smartIntentsConfig
|
|
33
38
|
)
|
|
34
39
|
const smartIntentNode = await smartIntentsApi.getNodeByInput()
|
|
35
|
-
if (smartIntentNode)
|
|
40
|
+
if (smartIntentNode) {
|
|
41
|
+
console.log('Smart intent node found:', smartIntentNode.content.title, {
|
|
42
|
+
smartIntentNode,
|
|
43
|
+
})
|
|
44
|
+
return smartIntentNode
|
|
45
|
+
}
|
|
36
46
|
|
|
37
47
|
const intentNode = await getIntentNodeByInput(cmsApi, locale, request)
|
|
38
|
-
if (intentNode)
|
|
48
|
+
if (intentNode) {
|
|
49
|
+
console.log('Intent node found:', intentNode.content.title, {
|
|
50
|
+
intentNode,
|
|
51
|
+
})
|
|
52
|
+
return intentNode
|
|
53
|
+
}
|
|
39
54
|
}
|
|
40
55
|
return undefined
|
|
41
56
|
}
|
package/src/utils.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Session } from '@botonic/core'
|
|
1
|
+
import { INPUT, Input, Session } from '@botonic/core'
|
|
2
2
|
import { ActionRequest } from '@botonic/react'
|
|
3
3
|
|
|
4
4
|
import { BotonicPluginFlowBuilderOptions, ProcessEnvNodeEnvs } from './types'
|
|
@@ -47,3 +47,7 @@ function resolveObjectKey(object: any, key: string): any {
|
|
|
47
47
|
}
|
|
48
48
|
return undefined
|
|
49
49
|
}
|
|
50
|
+
|
|
51
|
+
export function inputHasTextData(input: Input): boolean {
|
|
52
|
+
return input.data !== undefined && input.type === INPUT.TEXT
|
|
53
|
+
}
|