@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
JavaScript
"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;