UNPKG

@botonic/plugin-flow-builder

Version:

Botonic plugin for **Hubtype Flow Builder**: run and bridge flow-driven logic from bots on the **current** line.

63 lines 3.38 kB
import { __awaiter, __rest } from "tslib"; import { EventAction } from '@botonic/shared'; import { FlowCaptureUserInput } from '../content-fields'; import { HtAiValidationType, } from '../content-fields/hubtype-fields'; import { CaptureUserInputClient } from '../services/capture-user-input-client'; import { getCommonFlowContentEventArgsForContentId, trackEvent, } from '../tracking'; import { inputHasTextOrTranscript } from '../utils'; export class CaptureUserInputApi { constructor(cmsApi, botonicContext, textOrTranscript) { this.cmsApi = cmsApi; this.botonicContext = botonicContext; this.textOrTranscript = textOrTranscript; } getNextNodeId() { return __awaiter(this, void 0, void 0, function* () { if (inputHasTextOrTranscript(this.botonicContext.input) && this.cmsApi.shouldCaptureUserInput()) { const captureUserInputNode = this.cmsApi.getCaptureUserInputNode(); if (!captureUserInputNode || !this.textOrTranscript) { return undefined; } const captureUserInput = FlowCaptureUserInput.fromHubtypeCMS(captureUserInputNode); if (captureUserInput.aiValidationType === HtAiValidationType.NONE) { yield this.cmsApi.setUserExtraDataVariable(captureUserInputNode.content.field_name, this.textOrTranscript); yield this.trackUserInputCapture(captureUserInputNode, true); return captureUserInput.captureSuccessId; } const client = new CaptureUserInputClient(this.botonicContext); const aiCaptureResponse = yield client.getCaptureUserInputResponse(captureUserInputNode, this.textOrTranscript); if (!aiCaptureResponse.success) { yield this.trackUserInputCapture(captureUserInputNode, false); return captureUserInput.captureFailId; } yield this.cmsApi.setUserExtraDataVariable(captureUserInputNode.content.field_name, aiCaptureResponse.value); yield this.trackUserInputCapture(captureUserInputNode, true); return captureUserInput.captureSuccessId; } return undefined; }); } trackUserInputCapture(captureUserInputNode, captureSuccess) { return __awaiter(this, void 0, void 0, function* () { var _a; const { flowThreadId, flowId, flowName, flowNodeId, flowNodeContentId } = yield getCommonFlowContentEventArgsForContentId(this.botonicContext, captureUserInputNode.id); const event = { action: EventAction.CaptureUserInput, flowThreadId, flowId, flowName, flowNodeId, flowNodeContentId, flowNodeIsMeaningful: false, fieldName: captureUserInputNode.content.field_name, userInput: this.textOrTranscript, captureSuccess, messageId: (_a = this.botonicContext.input.dbId) !== null && _a !== void 0 ? _a : '', }; const { action } = event, eventArgs = __rest(event, ["action"]); yield trackEvent(this.botonicContext, action, eventArgs); }); } } //# sourceMappingURL=capture-user-input.js.map