UNPKG

@botonic/plugin-flow-builder

Version:

Use Flow Builder to show your contents

72 lines 3.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getContentsByFirstInteraction = void 0; const tslib_1 = require("tslib"); const constants_1 = require("../constants"); const content_fields_1 = require("../content-fields"); const utils_1 = require("../utils"); const knowledge_bases_1 = require("./knowledge-bases"); const payload_1 = require("./payload"); function getContentsByFirstInteraction(context) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const { flowBuilderPlugin, request } = context; const firstInteractionContents = yield flowBuilderPlugin.getStartContents(); // If the first interaction has a FlowBotAction, it should be the last content // and avoid to render the match with keywords,intents or knowledge base if (firstInteractionContents.at(-1) instanceof content_fields_1.FlowBotAction) { return firstInteractionContents; } if (request.input.nluResolution || (0, utils_1.inputHasTextData)(request.input)) { const contentsByUserInput = yield getContentsByUserInput(context); return [...firstInteractionContents, ...contentsByUserInput]; } return firstInteractionContents; }); } exports.getContentsByFirstInteraction = getContentsByFirstInteraction; function getContentsByUserInput({ cmsApi, flowBuilderPlugin, request, resolvedLocale, }) { var _a; return tslib_1.__awaiter(this, void 0, void 0, function* () { const payloadByNlu = (_a = request.input.nluResolution) === null || _a === void 0 ? void 0 : _a.payload; if (payloadByNlu) { request.input.payload = payloadByNlu; const conversationStartId = getConversationStartId(cmsApi); if (request.input.payload === conversationStartId) { return []; } const contentsByKeywordsOrIntents = yield (0, payload_1.getContentsByPayload)({ cmsApi, flowBuilderPlugin, request, resolvedLocale, }); const hasRepeatedContent = yield checkRepeatedContents(flowBuilderPlugin, contentsByKeywordsOrIntents); if (hasRepeatedContent) { return []; } if (contentsByKeywordsOrIntents.length > 0) { return contentsByKeywordsOrIntents; } } return yield (0, knowledge_bases_1.getContentsByKnowledgeBase)({ cmsApi, flowBuilderPlugin, request, resolvedLocale, }); }); } function getConversationStartId(cmsApi) { var _a; 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; return conversationStartId; } function checkRepeatedContents(flowBuilderPlugin, contentsByKeywordsOrIntents) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const startContents = yield flowBuilderPlugin.getStartContents(); const contentIds = new Set(contentsByKeywordsOrIntents.map(content => content.id)); const hasRepeatedContent = startContents.some(content => contentIds.has(content.id)); return hasRepeatedContent; }); } //# sourceMappingURL=first-interaction.js.map