UNPKG

@thaleslaray/n8n-nodes-elevenlabs

Version:

Nó n8n para integração com a API da ElevenLabs incluindo Speech-to-Text, Text-to-Speech e Conversational AI

298 lines (297 loc) 14.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ElevenLabsKnowledgeBase = void 0; const utils_1 = require("../utils"); class ElevenLabsKnowledgeBase { constructor() { this.description = { displayName: 'ElevenLabs Knowledge Base', name: 'elevenLabsKnowledgeBase', icon: 'file:../elevenlabs.svg', group: ['transform'], version: 1, subtitle: '={{$parameter["operation"]}}', description: 'Gerencie bases de conhecimento para os agentes da ElevenLabs', defaults: { name: 'ElevenLabs Knowledge Base', }, inputs: ['main'], outputs: ['main'], credentials: [ { name: 'elevenLabsApi', required: true, }, ], properties: [ { displayName: 'Operação', name: 'operation', type: 'options', noDataExpression: true, options: [ { name: 'Criar Base de Conhecimento', value: 'createKnowledgeBase', description: 'Criar uma nova base de conhecimento', action: 'Create a new knowledge base', }, { name: 'Obter Base de Conhecimento', value: 'getKnowledgeBase', description: 'Obter detalhes de uma base de conhecimento existente', action: 'Get knowledge base details', }, { name: 'Listar Bases de Conhecimento', value: 'listKnowledgeBases', description: 'Listar todas as bases de conhecimento', action: 'List all knowledge bases', }, { name: 'Atualizar Base de Conhecimento', value: 'updateKnowledgeBase', description: 'Atualizar uma base de conhecimento existente', action: 'Update an existing knowledge base', }, { name: 'Excluir Base de Conhecimento', value: 'deleteKnowledgeBase', description: 'Excluir uma base de conhecimento existente', action: 'Delete an existing knowledge base', }, { name: 'Adicionar Documentos', value: 'addDocuments', description: 'Adicionar documentos a uma base de conhecimento', action: 'Add documents to a knowledge base', }, { name: 'Listar Documentos', value: 'listDocuments', description: 'Listar todos os documentos em uma base de conhecimento', action: 'List all documents in a knowledge base', }, { name: 'Remover Documento', value: 'removeDocument', description: 'Remover um documento de uma base de conhecimento', action: 'Remove a document from a knowledge base', }, ], default: 'listKnowledgeBases', }, { displayName: 'Nome da Base de Conhecimento', name: 'knowledgeBaseName', type: 'string', required: true, default: '', displayOptions: { show: { operation: ['createKnowledgeBase', 'updateKnowledgeBase'], }, }, description: 'Nome da base de conhecimento', }, { displayName: 'Descrição', name: 'description', type: 'string', typeOptions: { rows: 4, }, default: '', displayOptions: { show: { operation: ['createKnowledgeBase', 'updateKnowledgeBase'], }, }, description: 'Descrição da base de conhecimento', }, { displayName: 'ID da Base de Conhecimento', name: 'knowledgeBaseId', type: 'string', required: true, default: '', displayOptions: { show: { operation: [ 'getKnowledgeBase', 'updateKnowledgeBase', 'deleteKnowledgeBase', 'addDocuments', 'listDocuments', 'removeDocument', ], }, }, description: 'ID da base de conhecimento', }, { displayName: 'URL do Documento', name: 'documentUrl', type: 'string', required: true, default: '', displayOptions: { show: { operation: ['addDocuments'], }, }, description: 'URL do documento a ser adicionado à base de conhecimento', }, { displayName: 'Tipo do Documento', name: 'documentType', type: 'options', options: [ { name: 'URL da Web', value: 'web_url', }, { name: 'URL do Arquivo', value: 'file_url', }, ], default: 'web_url', required: true, displayOptions: { show: { operation: ['addDocuments'], }, }, description: 'Tipo de documento a ser adicionado', }, { displayName: 'ID do Documento', name: 'documentId', type: 'string', required: true, default: '', displayOptions: { show: { operation: ['removeDocument'], }, }, description: 'ID do documento a ser removido da base de conhecimento', }, { displayName: 'Opções Avançadas', name: 'advancedOptions', type: 'collection', placeholder: 'Adicionar Opção', default: {}, options: [ { displayName: 'Nome Personalizado do Documento', name: 'documentName', type: 'string', default: '', description: 'Nome personalizado para o documento ao adicionar à base de conhecimento', }, { displayName: 'Espaço de Nomes', name: 'namespace', type: 'string', default: '', description: 'Espaço de nomes para organizar os documentos', }, ], }, ], }; } async execute() { const items = this.getInputData(); const returnData = []; for (let i = 0; i < items.length; i++) { try { const operation = this.getNodeParameter('operation', i); let response; if (operation === 'listKnowledgeBases') { const options = await utils_1.createBaseOptions.call(this, 'conversational/knowledge-bases', 'GET'); response = await this.helpers.request(options); } else if (operation === 'getKnowledgeBase') { const knowledgeBaseId = this.getNodeParameter('knowledgeBaseId', i); const options = await utils_1.createBaseOptions.call(this, `conversational/knowledge-bases/${knowledgeBaseId}`, 'GET'); response = await this.helpers.request(options); } else if (operation === 'createKnowledgeBase') { const knowledgeBaseName = this.getNodeParameter('knowledgeBaseName', i); const description = this.getNodeParameter('description', i); const body = { name: knowledgeBaseName, }; if (description) { body.description = description; } const options = await utils_1.createBaseOptions.call(this, 'conversational/knowledge-bases', 'POST', body); response = await this.helpers.request(options); } else if (operation === 'updateKnowledgeBase') { const knowledgeBaseId = this.getNodeParameter('knowledgeBaseId', i); const knowledgeBaseName = this.getNodeParameter('knowledgeBaseName', i); const description = this.getNodeParameter('description', i); const body = { name: knowledgeBaseName, }; if (description) { body.description = description; } const options = await utils_1.createBaseOptions.call(this, `conversational/knowledge-bases/${knowledgeBaseId}`, 'PUT', body); response = await this.helpers.request(options); } else if (operation === 'deleteKnowledgeBase') { const knowledgeBaseId = this.getNodeParameter('knowledgeBaseId', i); const options = await utils_1.createBaseOptions.call(this, `conversational/knowledge-bases/${knowledgeBaseId}`, 'DELETE'); response = await this.helpers.request(options); response = response || { success: true, message: 'Base de conhecimento excluída com sucesso' }; } else if (operation === 'addDocuments') { const knowledgeBaseId = this.getNodeParameter('knowledgeBaseId', i); const documentUrl = this.getNodeParameter('documentUrl', i); const documentType = this.getNodeParameter('documentType', i); const advancedOptions = this.getNodeParameter('advancedOptions', i); const body = { [documentType]: documentUrl, }; if (advancedOptions.documentName) { body.name = advancedOptions.documentName; } if (advancedOptions.namespace) { body.namespace = advancedOptions.namespace; } const options = await utils_1.createBaseOptions.call(this, `conversational/knowledge-bases/${knowledgeBaseId}/documents`, 'POST', body); response = await this.helpers.request(options); } else if (operation === 'listDocuments') { const knowledgeBaseId = this.getNodeParameter('knowledgeBaseId', i); const options = await utils_1.createBaseOptions.call(this, `conversational/knowledge-bases/${knowledgeBaseId}/documents`, 'GET'); response = await this.helpers.request(options); } else if (operation === 'removeDocument') { const knowledgeBaseId = this.getNodeParameter('knowledgeBaseId', i); const documentId = this.getNodeParameter('documentId', i); const options = await utils_1.createBaseOptions.call(this, `conversational/knowledge-bases/${knowledgeBaseId}/documents/${documentId}`, 'DELETE'); response = await this.helpers.request(options); response = response || { success: true, message: 'Documento removido com sucesso' }; } returnData.push((0, utils_1.formatReturnData)(response, i)); } catch (error) { const errorResult = utils_1.handleApiError.call(this, error, i); if (errorResult) { returnData.push(errorResult); continue; } throw error; } } return [returnData]; } } exports.ElevenLabsKnowledgeBase = ElevenLabsKnowledgeBase;