UNPKG

@botonic/plugin-flow-builder

Version:

Use Flow Builder to show your contents

86 lines 4.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SmartIntentsApi = void 0; const tslib_1 = require("tslib"); const core_1 = require("@botonic/core"); const axios_1 = tslib_1.__importDefault(require("axios")); const helpers_1 = require("../helpers"); const tracking_1 = require("../tracking"); class SmartIntentsApi { constructor(cmsApi, currentRequest, smartIntentsConfig, flowId) { this.cmsApi = cmsApi; this.currentRequest = currentRequest; this.smartIntentsConfig = smartIntentsConfig; this.flowId = flowId; } getNodeByInput() { return tslib_1.__awaiter(this, void 0, void 0, function* () { if (!this.currentRequest.input.data) return undefined; const smartIntentNodes = this.cmsApi.getSmartIntentNodes(); if (!smartIntentNodes.length) return undefined; const params = { bot_id: this.currentRequest.session.bot.id, text: this.currentRequest.input.data, num_smart_intents_to_use: this.smartIntentsConfig.numSmartIntentsToUse, use_latest: this.resolveUseLatest(), }; try { const response = yield this.getInference(params); const smartIntentNode = smartIntentNodes.find(smartIntentNode => smartIntentNode.content.title === response.data.smart_intent_title); if (smartIntentNode) { const targetPayload = this.cmsApi.getPayload(smartIntentNode.target); this.currentRequest.input.nluResolution = { type: core_1.NluType.SmartIntent, matchedValue: smartIntentNode.content.title, payload: targetPayload, }; const { flowId, flowName, flowNodeId, flowNodeContentId } = (0, tracking_1.getCommonFlowContentEventArgsForContentId)(this.currentRequest, smartIntentNode.id); const event = { action: core_1.EventAction.IntentSmart, nluIntentSmartTitle: response.data.smart_intent_title, nluIntentSmartNumUsed: response.data.smart_intents_used.length, nluIntentSmartMessageId: this.currentRequest.input.message_id, userInput: this.currentRequest.input.data, flowThreadId: this.currentRequest.session.flow_thread_id, flowId, flowName, flowNodeContentId, flowNodeId, }; const { action } = event, eventArgs = tslib_1.__rest(event, ["action"]); yield (0, tracking_1.trackEvent)(this.currentRequest, action, eventArgs); return smartIntentNode; } } catch (e) { console.error(e); } return undefined; }); } resolveUseLatest() { if (this.currentRequest.session.is_test_integration) return false; return this.smartIntentsConfig.useLatest; } getInference(inferenceParams) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const pluginFlowBuilder = (0, helpers_1.getFlowBuilderPlugin)(this.currentRequest.plugins); const token = pluginFlowBuilder.getAccessToken(this.currentRequest.session); return yield (0, axios_1.default)({ method: 'POST', url: `${process.env.HUBTYPE_API_URL}/external/v2/ai/smart_intents/inference/`, headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json', }, data: inferenceParams, timeout: 10000, }); }); } } exports.SmartIntentsApi = SmartIntentsApi; //# sourceMappingURL=smart-intent.js.map