UNPKG

@kaia-team/n8n-nodes-kaia

Version:
168 lines 5.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.widgetApiProperties = void 0; exports.handleWidgetApi = handleWidgetApi; const n8n_workflow_1 = require("n8n-workflow"); const utils_1 = require("../utils"); /** * Widget API Properties * Properties specific to the widget API resource */ exports.widgetApiProperties = [ { displayName: 'Widget Operation', name: 'widgetOperation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['widget'], }, }, options: [ { name: 'Get Chat History', value: 'getChatHistory', description: 'Get chat history for a user', }, { name: 'Send Message', value: 'sendMessage', description: 'Send a message to the headless widget', }, ], default: 'sendMessage', }, { displayName: 'Webhook URL', name: 'webhookUrl', type: 'string', default: '', displayOptions: { show: { resource: ['widget'], }, }, description: 'The webhook URL for the widget operation', required: true, }, { displayName: 'User ID', name: 'userId', type: 'string', default: '', displayOptions: { show: { resource: ['widget'], }, }, description: 'The user ID for the widget operation', required: true, }, { displayName: 'Message', name: 'message', type: 'string', default: '', displayOptions: { show: { resource: ['widget'], widgetOperation: ['sendMessage'], }, }, description: 'The message to send', required: true, }, { displayName: 'Files', name: 'files', type: 'fixedCollection', typeOptions: { multipleValues: true, }, displayOptions: { show: { resource: ['widget'], widgetOperation: ['sendMessage'], }, }, placeholder: 'Add File', default: {}, options: [ { name: 'fileParameters', displayName: 'Files', values: [ { displayName: 'File Name', name: 'fileName', type: 'string', default: '', description: 'Name of the file', }, { displayName: 'Binary File', name: 'binaryData', type: 'boolean', default: true, description: 'Whether the file content should be taken from binary field', }, { displayName: 'Binary Property', name: 'binaryPropertyName', type: 'string', default: 'data', displayOptions: { show: { binaryData: [true], }, }, description: 'Name of the binary property containing the file data', }, ], }, ], }, ]; /** * Widget API Handler * Handles requests to the widget API */ async function handleWidgetApi(executeFunctions, itemIndex, adminUrl, adminToken, clientId) { const operation = executeFunctions.getNodeParameter('widgetOperation', itemIndex); const webhookUrl = executeFunctions.getNodeParameter('webhookUrl', itemIndex); const userId = executeFunctions.getNodeParameter('userId', itemIndex); const additionalFields = executeFunctions.getNodeParameter('additionalFields', itemIndex, {}); if (operation === 'sendMessage') { const message = executeFunctions.getNodeParameter('message', itemIndex); const files = executeFunctions.getNodeParameter('files', itemIndex, {}); const payload = { user: userId, message, }; if (files.fileParameters) { payload.files = files.fileParameters.map((file) => ({ name: file.fileName, content: file.fileContent, })); } const headers = (0, utils_1.createHeaders)(adminToken, additionalFields); const response = await executeFunctions.helpers.httpRequest({ method: 'POST', url: webhookUrl, body: payload, headers, }); return response; } else if (operation === 'getChatHistory') { // This would require a different endpoint or approach // For now, we'll return a placeholder return { message: 'Chat history retrieval not yet implemented', userId, }; } throw new n8n_workflow_1.NodeOperationError(executeFunctions.getNode(), `Unknown widget operation: ${operation}`); } //# sourceMappingURL=widgetApi.js.map