@botonic/plugin-flow-builder 0.27.6 → 0.27.7
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 +4 -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 +8 -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 +4 -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 +8 -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 +6 -16
- package/src/action/payload.ts +20 -0
- package/src/index.ts +2 -3
- package/src/user-input/index.ts +13 -5
- 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":";;;;AACA,4CAAwE;AAGxE,8CAAkD;AAClD,oCAA2C;AAE3C,uDAA8D;AAC9D,uCAAgD;AAEhD,SAAsB,6BAA6B,CAAC,EAClD,MAAM,EACN,iBAAiB,EACjB,OAAO,EACP,cAAc,GACK;;QACnB,MAAM,wBAAwB,GAC5B,MAAM,iBAAiB,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAA;QAE1D,IAAI,IAAA,wBAAgB,EAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACnC,MAAM,mBAAmB,GAAG,MAAM,sBAAsB,CAAC;gBACvD,MAAM;gBACN,iBAAiB;gBACjB,OAAO;gBACP,cAAc;aACf,CAAC,CAAA;YAEF,OAAO,CAAC,GAAG,wBAAwB,EAAE,GAAG,mBAAmB,CAAC,CAAA;SAC7D;QAED,OAAO,wBAAwB,CAAA;IACjC,CAAC;CAAA;AArBD,sEAqBC;AAED,SAAe,sBAAsB,CAAC,EACpC,MAAM,EACN,iBAAiB,EACjB,OAAO,EACP,cAAc,GACK;;;QACnB,MAAM,eAAe,GAAG,MAAM,IAAA,+BAAkB,EAC9C,MAAM,EACN,cAAc,EACd,OAAO,EACP,iBAAiB,CAAC,kBAAkB,CACrC,CAAA;QAED,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,MAAM,CAAC,CAAA;QAClE,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAA;QAE1D,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,mBAAmB,EAAE;YACjD,OAAO,EAAE,CAAA;SACV;QAED,IAAI,MAAA,OAAO,CAAC,KAAK,CAAC,OAAO,0CAAE,UAAU,CAAC,qCAAyB,CAAC,EAAE;YAChE,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,iBAAiB,CAAC,uBAAuB,CAC/D,OAAO,CAAC,KAAK,CAAC,OAAO,CACtB,CAAA;SACF;QAED,MAAM,2BAA2B,GAAG,MAAM,IAAA,8BAAoB,EAAC;YAC7D,MAAM;YACN,iBAAiB;YACjB,OAAO;YACP,cAAc;SACf,CAAC,CAAA;QAEF,MAAM,kBAAkB,GAAG,MAAM,oBAAoB,CACnD,iBAAiB,EACjB,cAAc,EACd,2BAA2B,CAC5B,CAAA;QAED,IAAI,kBAAkB,EAAE;YACtB,OAAO,EAAE,CAAA;SACV;QAED,IAAI,2BAA2B,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1C,OAAO,2BAA2B,CAAA;SACnC;QAED,OAAO,MAAM,IAAA,4CAA0B,EAAC;YACtC,MAAM;YACN,iBAAiB;YACjB,OAAO;YACP,cAAc;SACf,CAAC,CAAA;;CACH;AAED,SAAS,sBAAsB,CAAC,MAAsB;;IACpD,MAAM,mBAAmB,GAAG,MAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAChD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,0BAAc,CACrC,0CAAE,aAAa,CAAA;IAEhB,OAAO,mBAAmB,CAAA;AAC5B,CAAC;AAED,SAAe,oBAAoB,CACjC,iBAA2C,EAC3C,cAAsB,EACtB,2BAA0C;;QAE1C,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAA;QAC9E,MAAM,UAAU,GAAG,IAAI,GAAG,CACxB,2BAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CACvD,CAAA;QACD,MAAM,kBAAkB,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CACtD,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAC3B,CAAA;QAED,OAAO,kBAAkB,CAAA;IAC3B,CAAC;CAAA"}
|
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;
|
|
@@ -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,31 @@
|
|
|
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
19
|
return keywordNode;
|
|
20
|
+
}
|
|
20
21
|
const smartIntentsApi = new smart_intent_1.SmartIntentsApi(cmsApi, request, smartIntentsConfig);
|
|
21
22
|
const smartIntentNode = yield smartIntentsApi.getNodeByInput();
|
|
22
|
-
if (smartIntentNode)
|
|
23
|
+
if (smartIntentNode) {
|
|
23
24
|
return smartIntentNode;
|
|
25
|
+
}
|
|
24
26
|
const intentNode = yield (0, intent_1.getIntentNodeByInput)(cmsApi, locale, request);
|
|
25
|
-
if (intentNode)
|
|
27
|
+
if (intentNode) {
|
|
26
28
|
return intentNode;
|
|
29
|
+
}
|
|
27
30
|
}
|
|
28
31
|
return undefined;
|
|
29
32
|
});
|
|
@@ -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,WAAW,CAAA;aACnB;YAED,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,eAAe,CAAA;aACvB;YAED,MAAM,UAAU,GAAG,MAAM,IAAA,6BAAoB,EAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;YACtE,IAAI,UAAU,EAAE;gBACd,OAAO,UAAU,CAAA;aAClB;SACF;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;CAAA;AAlCD,gDAkCC"}
|
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) {
|
|
@@ -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,29 @@
|
|
|
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
16
|
return keywordNode;
|
|
17
|
+
}
|
|
17
18
|
const smartIntentsApi = new SmartIntentsApi(cmsApi, request, smartIntentsConfig);
|
|
18
19
|
const smartIntentNode = yield smartIntentsApi.getNodeByInput();
|
|
19
|
-
if (smartIntentNode)
|
|
20
|
+
if (smartIntentNode) {
|
|
20
21
|
return smartIntentNode;
|
|
22
|
+
}
|
|
21
23
|
const intentNode = yield getIntentNodeByInput(cmsApi, locale, request);
|
|
22
|
-
if (intentNode)
|
|
24
|
+
if (intentNode) {
|
|
23
25
|
return intentNode;
|
|
26
|
+
}
|
|
24
27
|
}
|
|
25
28
|
return undefined;
|
|
26
29
|
});
|
|
@@ -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,WAAW,CAAA;aACnB;YAED,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,eAAe,CAAA;aACvB;YAED,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;YACtE,IAAI,UAAU,EAAE;gBACd,OAAO,UAAU,CAAA;aAClB;SACF;QAED,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(
|
|
@@ -113,9 +101,11 @@ async function trackKnowledgeBase(
|
|
|
113
101
|
const knowledgebaseMessageId = request.input.message_id
|
|
114
102
|
|
|
115
103
|
let knowledgebaseFailReason: KnowledgebaseFailReason | undefined
|
|
104
|
+
|
|
116
105
|
if (!response.isFaithuful) {
|
|
117
106
|
knowledgebaseFailReason = KnowledgebaseFailReason.Hallucination
|
|
118
107
|
}
|
|
108
|
+
|
|
119
109
|
if (!response.hasKnowledge) {
|
|
120
110
|
knowledgebaseFailReason = KnowledgebaseFailReason.NoKnowledge
|
|
121
111
|
}
|
|
@@ -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,14 +18,16 @@ 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)
|
|
27
|
+
const keywordNode = await keywordMatcher.getNodeByInput(request.input.data!)
|
|
28
|
+
if (keywordNode) {
|
|
29
|
+
return keywordNode
|
|
30
|
+
}
|
|
28
31
|
|
|
29
32
|
const smartIntentsApi = new SmartIntentsApi(
|
|
30
33
|
cmsApi,
|
|
@@ -32,10 +35,15 @@ export async function getNodeByUserInput(
|
|
|
32
35
|
smartIntentsConfig
|
|
33
36
|
)
|
|
34
37
|
const smartIntentNode = await smartIntentsApi.getNodeByInput()
|
|
35
|
-
if (smartIntentNode)
|
|
38
|
+
if (smartIntentNode) {
|
|
39
|
+
return smartIntentNode
|
|
40
|
+
}
|
|
36
41
|
|
|
37
42
|
const intentNode = await getIntentNodeByInput(cmsApi, locale, request)
|
|
38
|
-
if (intentNode)
|
|
43
|
+
if (intentNode) {
|
|
44
|
+
return intentNode
|
|
45
|
+
}
|
|
39
46
|
}
|
|
47
|
+
|
|
40
48
|
return undefined
|
|
41
49
|
}
|
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
|
+
}
|