@botonic/plugin-flow-builder
Version:
Botonic plugin for **Hubtype Flow Builder**: run and bridge flow-driven logic from bots on the **current** line.
40 lines • 2.09 kB
JavaScript
import { __awaiter, __rest } from "tslib";
import { EventAction } from '@botonic/shared';
import { getCommonFlowContentEventArgsForContentId, trackEvent, } from '../tracking';
export function getContentsByFallback(_a) {
return __awaiter(this, arguments, void 0, function* ({ cmsApi, flowBuilderPlugin, botonicContext: context, }) {
const fallbackNode = yield getFallbackNode(cmsApi, context);
const fallbackContents = yield flowBuilderPlugin.getContentsByNode(fallbackNode);
return fallbackContents;
});
}
function getFallbackNode(cmsApi, botonicContext) {
return __awaiter(this, void 0, void 0, function* () {
var _a, _b, _c;
let extraData = (_a = botonicContext.session.user.extraData) !== null && _a !== void 0 ? _a : {};
if (extraData.isFirstFallbackOption === undefined) {
extraData = Object.assign(Object.assign({}, extraData), { isFirstFallbackOption: true });
}
const isFirstFallbackOption = !!extraData.isFirstFallbackOption;
const fallbackNode = cmsApi.getFallbackNode(isFirstFallbackOption);
extraData = Object.assign(Object.assign({}, extraData), { isFirstFallbackOption: !isFirstFallbackOption });
yield botonicContext.updateBotSession({
user: { extraData },
});
const { flowId, flowName, flowNodeId, flowNodeContentId } = yield getCommonFlowContentEventArgsForContentId(botonicContext, fallbackNode.id);
const event = {
action: EventAction.Fallback,
flowId,
flowName,
flowNodeId,
flowNodeContentId,
userInput: (_b = botonicContext.input.text) !== null && _b !== void 0 ? _b : '',
fallbackOut: isFirstFallbackOption ? 1 : 2,
fallbackMessageId: (_c = botonicContext.input.dbId) !== null && _c !== void 0 ? _c : '',
};
const { action } = event, eventArgs = __rest(event, ["action"]);
yield trackEvent(botonicContext, action, eventArgs);
return fallbackNode;
});
}
//# sourceMappingURL=fallback.js.map