Ejemplo de flujo de trabajo de aplicación de chatbot RAG para canales abiertos de Bitrix24
Este es unOtherflujo de automatización del dominio deautomatización que contiene 34 nodos.Utiliza principalmente nodos como If, Set, Merge, Filter, Switch. Chatbot RAG para canales abiertos con IA en Bitrix24
- •Punto final de HTTP Webhook (n8n generará automáticamente)
- •Pueden requerirse credenciales de autenticación para la API de destino
- •Información de conexión del servidor Qdrant
- •Clave de API de Google Gemini
Nodos utilizados (34)
Categoría
{
"id": "TBiW9x7O4ijo4yOX",
"meta": {
"instanceId": "255b605d49a6677a536746e05401de51bb4c62e65036d9acdb9908f6567f0361"
},
"name": "Bitrix24 Open Chanel RAG Chatbot Application Workflow example with Webhook Integration",
"tags": [
{
"id": "2ziILYLz4IbTkFf5",
"name": "Tech demo",
"createdAt": "2025-02-17T08:43:26.445Z",
"updatedAt": "2025-02-17T08:43:26.445Z"
},
{
"id": "BedOB2iRpKR26bcZ",
"name": "Chatbot",
"createdAt": "2025-02-17T08:43:26.436Z",
"updatedAt": "2025-02-17T08:43:26.436Z"
},
{
"id": "DvSHJwHwuObn0cxx",
"name": "Open Channels",
"createdAt": "2025-03-04T07:27:28.499Z",
"updatedAt": "2025-03-04T07:27:28.499Z"
},
{
"id": "YJcjKoBRFN1HXH5e",
"name": "Bitrix24",
"createdAt": "2025-02-17T08:43:26.424Z",
"updatedAt": "2025-02-17T08:43:26.424Z"
}
],
"nodes": [
{
"id": "dbd7b2c0-2b27-4c23-beb7-eec128da0787",
"name": "Manejador de Bitrix24",
"type": "n8n-nodes-base.webhook",
"position": [
-1280,
620
],
"webhookId": "bde38660-2604-4e00-afc0-5ebceebb7f0a",
"parameters": {
"path": "bitrix24/openchannel-rag-bothandler.php",
"options": {},
"httpMethod": "POST",
"responseMode": "responseNode"
},
"typeVersion": 1
},
{
"id": "0ead4d82-4d9b-4392-af4c-2c315068b983",
"name": "Credenciales",
"type": "n8n-nodes-base.set",
"position": [
-1040,
620
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "030f8f90-2669-4c20-9eab-c572c4b7c70c",
"name": "CLIENT_ID",
"type": "string",
"value": "local.67c8f9e81cb353.30162021"
},
{
"id": "de9bbb7a-b782-4540-b259-527625db8490",
"name": "CLIENT_SECRET",
"type": "string",
"value": "Db5943DCy4JhYq4oU0yNb21Hx8WimQeThczOYk03uJrVroc8R4"
},
{
"id": "86b7aff7-1e25-4b12-a366-23cf34e5a405",
"name": "application_token",
"type": "string",
"value": "={{ $json.body['auth[application_token]'] }}"
},
{
"id": "69bbcb1f-ba6e-42eb-be8a-ee0707ce997d",
"name": "domain",
"type": "string",
"value": "={{ $json.body['auth[domain]'] }}\n"
},
{
"id": "dc1b0515-f06a-4731-b0dc-912a8d04e56b",
"name": "access_token",
"type": "string",
"value": "={{ $json.body['auth[access_token]'] }}"
},
{
"id": "94fdeed8-9437-417e-9c2a-fa853620a340",
"name": "storageName",
"type": "string",
"value": "Shared drive"
},
{
"id": "8564e421-dfce-437c-a7c3-ac6a180594b8",
"name": "folderName",
"type": "string",
"value": "Open line chat bot documents"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "67b225b8-c2c2-4570-81cb-4c533ae75465",
"name": "Validar Token",
"type": "n8n-nodes-base.if",
"position": [
-820,
620
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "da73d0ba-6eeb-405e-89fe-9d041fd2e0cd",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.CLIENT_ID }}",
"rightValue": "={{ $json.application_token }}"
},
{
"id": "4ba90f7b-0299-4097-9ae7-6e4dee428a74",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "1",
"rightValue": "1"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "4fee1441-4e30-4070-b596-15e121ca7320",
"name": "Enrutar Evento",
"type": "n8n-nodes-base.switch",
"position": [
-620,
520
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "ONIMBOTMESSAGEADD",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.body.event }}",
"rightValue": "ONIMBOTMESSAGEADD"
}
]
},
"renameOutput": true
},
{
"outputKey": "ONIMBOTJOINCHAT",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "e9125f57-129e-4026-86ff-746d40b92b04",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.body.event }}",
"rightValue": "ONIMBOTJOINCHAT"
}
]
},
"renameOutput": true
},
{
"outputKey": "ONAPPINSTALL",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "2db7bed5-fd88-4900-b8d2-e27b49c2fcca",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.body.event }}",
"rightValue": "ONAPPINSTALL"
}
]
},
"renameOutput": true
},
{
"outputKey": "ONIMBOTDELETE",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "b708d339-fd46-470d-b0d5-ff2eb405f5ce",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.body.event }}",
"rightValue": "ONIMBOTDELETE"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "c21f6d64-0543-4958-9f64-501dce37893f",
"name": "Procesar Mensaje",
"type": "n8n-nodes-base.function",
"position": [
-420,
400
],
"parameters": {
"functionCode": "// Process Message Node\nconst items = $input.all();\nconst item = items[0];\n\n// Get message data from the correct path\nconst message = item.json.body['data[PARAMS][MESSAGE]'];\nconst dialogId = item.json.body['data[PARAMS][DIALOG_ID]'];\n\nconst sessionId = item.json.body['data[PARAMS][CHAT_ENTITY_DATA_1]'].split(\"|\")[5];\n\nconst botId = Object.keys(item.json.body)\n .filter(key => key.startsWith(\"data[BOT]\") && key.endsWith(\"[BOT_ID]\"))\n .map(key => $json.body[key])\n .shift() || null;\nconst userId = item.json.body['data[USER][ID]'];\n\n// Get auth data\nconst auth = {\n access_token: item.json.access_token,\n domain: item.json.domain\n};\n\nif (message.toLowerCase() === \"what's hot\") {\n return {\n json: {\n DIALOG_ID: dialogId,\n SESSION_ID: sessionId,\n BOT_ID: botId,\n USER_ID: userId,\n MESSAGE_ORI: message,\n MESSAGE: \"Hi! I am an example-bot.\\nI repeat what you say\",\n AUTH: auth.access_token,\n DOMAIN: auth.domain\n }\n };\n} else {\n return {\n json: {\n DIALOG_ID: dialogId,\n SESSION_ID: sessionId,\n BOT_ID: botId,\n USER_ID: userId,\n MESSAGE_ORI: message,\n MESSAGE: `You said:\\n${message}`,\n AUTH: auth.access_token,\n DOMAIN: auth.domain\n }\n };\n}"
},
"typeVersion": 1
},
{
"id": "06a59835-2999-44b6-81bd-0601e5570113",
"name": "Procesar Unión",
"type": "n8n-nodes-base.function",
"position": [
-420,
780
],
"parameters": {
"functionCode": "// Process Join Node\nconst items = $input.all();\nconst item = items[0];\n\n// Get dialog ID from the correct path\nconst dialogId = item.json.body['data[PARAMS][DIALOG_ID]'];\n\n// Get auth data\nconst auth = {\n access_token: item.json.access_token,\n domain: item.json.domain\n};\n\nconst message = \n 'ITR Menu:\\n' +\n '[send=1]1. find out more about me[/send]\\n' +\n '[send=0]0. wait for operator response[/send]';\n\nreturn {\n json: {\n DIALOG_ID: dialogId,\n MESSAGE: message,\n AUTH: auth.access_token,\n DOMAIN: auth.domain\n }\n};"
},
"typeVersion": 1
},
{
"id": "40accf33-c217-497c-8172-6106eb15800f",
"name": "Procesar Instalación",
"type": "n8n-nodes-base.function",
"position": [
-420,
940
],
"parameters": {
"functionCode": "// Process Install Node\nconst items = $input.all();\nconst item = items[0];\n\n// Get the webhook URL from input\nconst handlerBackUrl = item.json.webhookUrl;\n\n// Get auth data directly from item.json\nconst auth = {\n access_token: item.json.access_token,\n application_token: item.json.application_token,\n domain: item.json.domain\n};\n\nreturn {\n json: {\n handler_back_url: handlerBackUrl,\n CODE: 'OpenChanelExampleBot',\n TYPE: 'O',\n OPENLINE: 'Y',\n EVENT_MESSAGE_ADD: handlerBackUrl,\n EVENT_WELCOME_MESSAGE: handlerBackUrl,\n EVENT_BOT_DELETE: handlerBackUrl,\n PROPERTIES: {\n NAME: 'Open chanel Bot',\n LAST_NAME: 'Example',\n COLOR: 'AQUA',\n EMAIL: 'no@example.com',\n PERSONAL_BIRTHDAY: '2020-07-18',\n WORK_POSITION: 'Report on affairs',\n PERSONAL_GENDER: 'M'\n },\n // Use the auth data from item.json\n AUTH: auth.access_token,\n CLIENT_ID: auth.application_token,\n DOMAIN: auth.domain\n }\n};"
},
"typeVersion": 1
},
{
"id": "22a7c363-ab5a-4adc-9de4-268f3f3739f3",
"name": "Registrar Bot",
"type": "n8n-nodes-base.httpRequest",
"position": [
-220,
940
],
"parameters": {
"url": "=https://{{ $json.DOMAIN }}/rest/imbot.register?auth={{$json.AUTH}}",
"method": "POST",
"options": {},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "CODE",
"value": "OpenChanelExampleBot"
},
{
"name": "TYPE",
"value": "O"
},
{
"name": "EVENT_MESSAGE_ADD",
"value": "={{$json.handler_back_url}}"
},
{
"name": "EVENT_WELCOME_MESSAGE",
"value": "={{$json.handler_back_url}}"
},
{
"name": "EVENT_BOT_DELETE",
"value": "={{$json.handler_back_url}}"
},
{
"name": "PROPERTIES",
"value": "={{ {\n NAME: 'Bot',\n LAST_NAME: 'Example',\n COLOR: 'AQUA',\n EMAIL: 'no@example.com',\n PERSONAL_BIRTHDAY: '2020-07-18',\n WORK_POSITION: 'Report on affairs',\n PERSONAL_GENDER: 'M'\n} }}"
},
{
"name": "CLIENT_ID",
"value": "={{ $json.CLIENT_ID }}"
},
{
"name": "CLIENT_SECRET",
"value": "={{ $json.AUTH }}"
},
{
"name": "OPENLINE",
"value": "Y"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "e728c7eb-b169-4757-b4f4-b99ec4db0184",
"name": "Enviar Mensaje",
"type": "n8n-nodes-base.httpRequest",
"position": [
740,
420
],
"parameters": {
"url": "=https://{{ $json.data.DOMAIN }}/rest/imbot.message.add?auth={{ $json.data.AUTH }}",
"method": "POST",
"options": {},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "DIALOG_ID",
"value": "={{ $json.data.DIALOG_ID }}"
},
{
"name": "MESSAGE",
"value": "={{ $json.data.MESSAGE }}"
},
{
"name": "AUTH",
"value": "={{ $json.data.AUTH }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "1a1fae0e-d74f-48b9-8ec8-4e926763de28",
"name": "Enviar Mensaje de Unión",
"type": "n8n-nodes-base.httpRequest",
"position": [
-220,
780
],
"parameters": {
"url": "=https://{{$json.DOMAIN}}/rest/imbot.message.add?auth={{$json.AUTH}}",
"method": "POST",
"options": {},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "DIALOG_ID",
"value": "={{ $json.DIALOG_ID }}"
},
{
"name": "MESSAGE",
"value": "={{ $json.MESSAGE }}"
},
{
"name": "AUTH",
"value": "={{ $json.AUTH }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "f377d8eb-2a90-4ca5-8bd8-122c8df2ced3",
"name": "Procesar Eliminación",
"type": "n8n-nodes-base.noOp",
"position": [
-420,
1100
],
"parameters": {},
"typeVersion": 1
},
{
"id": "faa4c61e-faf4-4bd7-b096-706d3c5cf366",
"name": "Respuesta Exitosa",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
1200,
700
],
"parameters": {
"options": {
"responseCode": 200
},
"respondWith": "json",
"responseBody": "={\n \"result\": true\n}"
},
"typeVersion": 1.1
},
{
"id": "ade154b4-64d9-4ecd-8a83-328002c98569",
"name": "Respuesta de Error",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
-820,
780
],
"parameters": {
"options": {
"responseCode": 401
},
"respondWith": "json",
"responseBody": "={{\n \"result\": false,\n \"error\": \"Invalid application token\"\n}}"
},
"typeVersion": 1.1
},
{
"id": "a5866396-3a25-4bbf-81b2-56a8d35fc63b",
"name": "Combinar parámetros para Subflujo",
"type": "n8n-nodes-base.merge",
"position": [
-180,
1340
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineAll"
},
"typeVersion": 3
},
{
"id": "feb3e1c0-4556-4d77-9e5e-42eb2c10a5f8",
"name": "Obtener lista de almacenamientos disponibles",
"type": "n8n-nodes-base.httpRequest",
"position": [
-860,
2080
],
"parameters": {
"url": "=https://{{ $json.domain }}/rest/disk.storage.getlist.json?auth={{ $json.access_token }}",
"method": "POST",
"options": {},
"jsonBody": "={\n\"filter\": {\n\t\t\t\t\"ENTITY_TYPE\": \"common\",\n\t\t\t\t\"%NAME\": \"{{ $json.storageName }}\"\n }\n}\n",
"sendBody": true,
"specifyBody": "json"
},
"typeVersion": 4.2
},
{
"id": "7bb0412e-57ab-4a63-aec2-5db64b83ef7e",
"name": "Obtener lista de archivos y carpetas",
"type": "n8n-nodes-base.httpRequest",
"position": [
-640,
2080
],
"parameters": {
"url": "=https://{{ $('Execute Workflow Trigger').item.json.domain }}/rest/disk.storage.getchildren.json?auth={{ $('Execute Workflow Trigger').item.json.access_token }}",
"method": "POST",
"options": {},
"jsonBody": "={\n\"id\": {{ $json.result[0].ID }},\n\"filter\": {\n\t\t\t\t\"TYPE\": \"folder\",\n\t\t\t\t\"%NAME\": \"{{ $('Execute Workflow Trigger').item.json.folderName }}\"\n }\n}\n",
"sendBody": true,
"specifyBody": "json"
},
"typeVersion": 4.2
},
{
"id": "5528a3be-375a-4077-a346-2eb77cf9160f",
"name": "Obtener lista de archivos de carpetas",
"type": "n8n-nodes-base.httpRequest",
"position": [
-420,
2080
],
"parameters": {
"url": "=https://{{ $('Execute Workflow Trigger').item.json.domain }}/rest/disk.folder.getchildren.json?auth={{ $('Execute Workflow Trigger').item.json.access_token }}",
"method": "POST",
"options": {},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "id",
"value": "={{ $json.result[0].ID }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "f713eda1-f51e-484d-a98a-f359bc7ce654",
"name": "Descargar archivo",
"type": "n8n-nodes-base.httpRequest",
"position": [
280,
2080
],
"parameters": {
"url": "={{ $json.DOWNLOAD_URL }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "3b2c67ea-bb6c-49c8-b55f-ffde7d1d8e83",
"name": "Cargador de Datos Predeterminado",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
700,
2280
],
"parameters": {
"loader": "pdfLoader",
"options": {
"splitPages": true
},
"dataType": "binary"
},
"typeVersion": 1
},
{
"id": "0b5c2963-3692-469d-a1ce-66fe598dc25f",
"name": "Divisor de Texto Recursivo por Carácter",
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"position": [
840,
2460
],
"parameters": {
"options": {},
"chunkOverlap": 100
},
"typeVersion": 1
},
{
"id": "52bfdf6b-0fb1-4e85-b31d-ec6c9ef912d8",
"name": "Separar archivos y carpetas de salida",
"type": "n8n-nodes-base.splitOut",
"position": [
-180,
2080
],
"parameters": {
"options": {},
"fieldToSplitOut": "result"
},
"typeVersion": 1
},
{
"id": "fd53fca7-d11d-4254-be56-9a62b6f0fadf",
"name": "Filtro para archivos",
"type": "n8n-nodes-base.filter",
"position": [
40,
2080
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "6e68a8be-c155-41c7-ace4-bf76bfd362fc",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.TYPE }}",
"rightValue": "file"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "748a65d3-dceb-4787-a068-b364371b392b",
"name": "Mover archivos a carpeta de almacenamiento vectorial",
"type": "n8n-nodes-base.httpRequest",
"position": [
520,
1860
],
"parameters": {
"url": "=https://{{ $('Execute Workflow Trigger').item.json.domain }}/rest/disk.file.moveto.json?auth={{ $('Execute Workflow Trigger').item.json.access_token }}",
"method": "POST",
"options": {},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "id",
"value": "={{ $json.ID }}"
},
{
"name": "targetFolderId",
"value": "={{ $('Get a list of Folders files').item.json.result[0].ID }}"
}
]
}
},
"executeOnce": false,
"typeVersion": 4.2
},
{
"id": "47f3aec5-c3cb-4d3e-97bc-8b708ccc0db5",
"name": "Ejecutar Disparador de Flujo de Trabajo",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
-1080,
2080
],
"parameters": {},
"typeVersion": 1
},
{
"id": "9d3eb788-96cf-4c01-af5f-2beb1f6fa7b8",
"name": "Nota Adhesiva",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1160,
1780
],
"parameters": {
"width": 2168.7691983135305,
"height": 818.1434255918864,
"content": "Subworkflow for Register Bot\nHere are files vector stored for Open line chanel bot\nAfter files are stored they are moved to subfolder"
},
"typeVersion": 1
},
{
"id": "91c26264-a61d-426c-a044-e2b287e54de0",
"name": "Almacén Vectorial Qdrant",
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
"position": [
580,
2080
],
"parameters": {
"mode": "insert",
"options": {
"collectionConfig": ""
},
"qdrantCollection": {
"__rl": true,
"mode": "list",
"value": "bitrix-docs",
"cachedResultName": "bitrix-docs"
}
},
"typeVersion": 1
},
{
"id": "0dd69952-402e-4d9e-a44f-7cf96ab4055e",
"name": "Embeddings Ollama",
"type": "@n8n/n8n-nodes-langchain.embeddingsOllama",
"position": [
500,
2280
],
"parameters": {
"model": "nomic-embed-text:latest"
},
"typeVersion": 1
},
{
"id": "fcfbfe53-da04-48f2-9a62-204a8f1f06a8",
"name": "Recuperador de Almacén Vectorial",
"type": "@n8n/n8n-nodes-langchain.retrieverVectorStore",
"position": [
140,
240
],
"parameters": {
"topK": 10
},
"typeVersion": 1
},
{
"id": "22d3be40-b74a-453f-8f52-8974b1527d49",
"name": "Cadena de Pregunta y Respuesta",
"type": "@n8n/n8n-nodes-langchain.chainRetrievalQa",
"position": [
0,
0
],
"parameters": {
"text": "={{ $json.MESSAGE_ORI }}",
"options": {
"systemPromptTemplate": "=Use the following pieces of context to answer the user's question.\nIf you don't know the answer, just say that you don't know, don't try to make up an answer.\n\n----------------\n{context}\n\nYour response must contain **only** the following key-value pairs:\n- `\"DIALOG_ID\"`: **Use exactly** this value from the input: `{{ $json.DIALOG_ID }}`\n- `\"AUTH\"`: **Use exactly** this value from the input: `{{ $json.AUTH }}`\n- `\"DOMAIN\"`: **Use exactly** this value from the input: `{{ $json.DOMAIN }}`\n- `\"MESSAGE\"`: **Your AI-generated response**, based on the conversation history and the user's input.\n\n**Do not modify** the values of `\"DIALOG_ID\"`, `\"AUTH\"`, or `\"DOMAIN\"`. They must remain exactly as received from the input. \nThe `\"MESSAGE\"` field must contain a relevant and clear response.\n\nIf the user asks **\"find out more about me\"**, respond with: \n*\"I am a Retrieval-Augmented Generation (RAG) system that answers questions based on uploaded documents and provided context.\"*"
},
"promptType": "define"
},
"typeVersion": 1.4
},
{
"id": "fb19f0b5-72cb-4ccd-ac0e-75ea3a32c9cc",
"name": "Preparar parámetros de salida",
"type": "n8n-nodes-base.set",
"position": [
440,
60
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "ef09b5f8-2111-4731-8317-e338885a10c3",
"name": "data",
"type": "object",
"value": "={{ $json.response.text.removeMarkdown().replace(/`+$/, '')}}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "52429ac1-d738-49d7-81a8-725df6587312",
"name": "Embeddings Ollama1",
"type": "@n8n/n8n-nodes-langchain.embeddingsOllama",
"position": [
360,
600
],
"parameters": {
"model": "nomic-embed-text:latest"
},
"typeVersion": 1
},
{
"id": "bade110b-d252-4633-9ecf-44a42772b8d5",
"name": "Google Gemini Modelo de Chat",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
-60,
300
],
"parameters": {
"options": {},
"modelName": "models/gemini-2.0-flash"
},
"typeVersion": 1
},
{
"id": "41eb5179-6195-485b-848b-46bb997de38e",
"name": "Almacén Vectorial Qdrant1",
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
"position": [
160,
420
],
"parameters": {
"options": {},
"qdrantCollection": {
"__rl": true,
"mode": "list",
"value": "bitrix-docs",
"cachedResultName": "bitrix-docs"
}
},
"typeVersion": 1
},
{
"id": "484cbc38-4c6f-4d3d-9409-b04df2c7e102",
"name": "Ejecutar subflujo",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
200,
1340
],
"parameters": {
"options": {},
"workflowId": {
"__rl": true,
"mode": "id",
"value": "={{ $workflow.id }}"
}
},
"typeVersion": 1.1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "e3e24337-997c-4ce2-b8c1-3e6f8b9eb85c",
"connections": {
"0ead4d82-4d9b-4392-af4c-2c315068b983": {
"main": [
[
{
"node": "67b225b8-c2c2-4570-81cb-4c533ae75465",
"type": "main",
"index": 0
},
{
"node": "a5866396-3a25-4bbf-81b2-56a8d35fc63b",
"type": "main",
"index": 1
}
]
]
},
"4fee1441-4e30-4070-b596-15e121ca7320": {
"main": [
[
{
"node": "c21f6d64-0543-4958-9f64-501dce37893f",
"type": "main",
"index": 0
}
],
[
{
"node": "06a59835-2999-44b6-81bd-0601e5570113",
"type": "main",
"index": 0
}
],
[
{
"node": "40accf33-c217-497c-8172-6106eb15800f",
"type": "main",
"index": 0
}
],
[
{
"node": "f377d8eb-2a90-4ca5-8bd8-122c8df2ced3",
"type": "main",
"index": 0
}
]
]
},
"06a59835-2999-44b6-81bd-0601e5570113": {
"main": [
[
{
"node": "1a1fae0e-d74f-48b9-8ec8-4e926763de28",
"type": "main",
"index": 0
}
]
]
},
"22a7c363-ab5a-4adc-9de4-268f3f3739f3": {
"main": [
[
{
"node": "faa4c61e-faf4-4bd7-b096-706d3c5cf366",
"type": "main",
"index": 0
},
{
"node": "a5866396-3a25-4bbf-81b2-56a8d35fc63b",
"type": "main",
"index": 0
}
]
]
},
"e728c7eb-b169-4757-b4f4-b99ec4db0184": {
"main": [
[
{
"node": "faa4c61e-faf4-4bd7-b096-706d3c5cf366",
"type": "main",
"index": 0
}
]
]
},
"f713eda1-f51e-484d-a98a-f359bc7ce654": {
"main": [
[
{
"node": "748a65d3-dceb-4787-a068-b364371b392b",
"type": "main",
"index": 0
},
{
"node": "91c26264-a61d-426c-a044-e2b287e54de0",
"type": "main",
"index": 0
}
]
]
},
"f377d8eb-2a90-4ca5-8bd8-122c8df2ced3": {
"main": [
[
{
"node": "faa4c61e-faf4-4bd7-b096-706d3c5cf366",
"type": "main",
"index": 0
}
]
]
},
"67b225b8-c2c2-4570-81cb-4c533ae75465": {
"main": [
[
{
"node": "4fee1441-4e30-4070-b596-15e121ca7320",
"type": "main",
"index": 0
}
],
[
{
"node": "ade154b4-64d9-4ecd-8a83-328002c98569",
"type": "main",
"index": 0
}
]
]
},
"40accf33-c217-497c-8172-6106eb15800f": {
"main": [
[
{
"node": "22a7c363-ab5a-4adc-9de4-268f3f3739f3",
"type": "main",
"index": 0
}
]
]
},
"c21f6d64-0543-4958-9f64-501dce37893f": {
"main": [
[
{
"node": "22d3be40-b74a-453f-8f52-8974b1527d49",
"type": "main",
"index": 0
}
]
]
},
"dbd7b2c0-2b27-4c23-beb7-eec128da0787": {
"main": [
[
{
"node": "0ead4d82-4d9b-4392-af4c-2c315068b983",
"type": "main",
"index": 0
}
]
]
},
"fd53fca7-d11d-4254-be56-9a62b6f0fadf": {
"main": [
[
{
"node": "f713eda1-f51e-484d-a98a-f359bc7ce654",
"type": "main",
"index": 0
}
]
]
},
"0dd69952-402e-4d9e-a44f-7cf96ab4055e": {
"ai_embedding": [
[
{
"node": "91c26264-a61d-426c-a044-e2b287e54de0",
"type": "ai_embedding",
"index": 0
}
]
]
},
"1a1fae0e-d74f-48b9-8ec8-4e926763de28": {
"main": [
[
{
"node": "faa4c61e-faf4-4bd7-b096-706d3c5cf366",
"type": "main",
"index": 0
}
]
]
},
"52429ac1-d738-49d7-81a8-725df6587312": {
"ai_embedding": [
[
{
"node": "41eb5179-6195-485b-848b-46bb997de38e",
"type": "ai_embedding",
"index": 0
}
]
]
},
"3b2c67ea-bb6c-49c8-b55f-ffde7d1d8e83": {
"ai_document": [
[
{
"node": "91c26264-a61d-426c-a044-e2b287e54de0",
"type": "ai_document",
"index": 0
}
]
]
},
"484cbc38-4c6f-4d3d-9409-b04df2c7e102": {
"main": [
[
{
"node": "faa4c61e-faf4-4bd7-b096-706d3c5cf366",
"type": "main",
"index": 0
}
]
]
},
"41eb5179-6195-485b-848b-46bb997de38e": {
"ai_vectorStore": [
[
{
"node": "fcfbfe53-da04-48f2-9a62-204a8f1f06a8",
"type": "ai_vectorStore",
"index": 0
}
]
]
},
"fcfbfe53-da04-48f2-9a62-204a8f1f06a8": {
"ai_retriever": [
[
{
"node": "22d3be40-b74a-453f-8f52-8974b1527d49",
"type": "ai_retriever",
"index": 0
}
]
]
},
"47f3aec5-c3cb-4d3e-97bc-8b708ccc0db5": {
"main": [
[
{
"node": "feb3e1c0-4556-4d77-9e5e-42eb2c10a5f8",
"type": "main",
"index": 0
}
]
]
},
"bade110b-d252-4633-9ecf-44a42772b8d5": {
"ai_languageModel": [
[
{
"node": "22d3be40-b74a-453f-8f52-8974b1527d49",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"fb19f0b5-72cb-4ccd-ac0e-75ea3a32c9cc": {
"main": [
[
{
"node": "e728c7eb-b169-4757-b4f4-b99ec4db0184",
"type": "main",
"index": 0
}
]
]
},
"22d3be40-b74a-453f-8f52-8974b1527d49": {
"main": [
[
{
"node": "fb19f0b5-72cb-4ccd-ac0e-75ea3a32c9cc",
"type": "main",
"index": 0
}
]
]
},
"5528a3be-375a-4077-a346-2eb77cf9160f": {
"main": [
[
{
"node": "52bfdf6b-0fb1-4e85-b31d-ec6c9ef912d8",
"type": "main",
"index": 0
}
]
]
},
"feb3e1c0-4556-4d77-9e5e-42eb2c10a5f8": {
"main": [
[
{
"node": "7bb0412e-57ab-4a63-aec2-5db64b83ef7e",
"type": "main",
"index": 0
}
]
]
},
"a5866396-3a25-4bbf-81b2-56a8d35fc63b": {
"main": [
[
{
"node": "484cbc38-4c6f-4d3d-9409-b04df2c7e102",
"type": "main",
"index": 0
}
]
]
},
"0b5c2963-3692-469d-a1ce-66fe598dc25f": {
"ai_textSplitter": [
[
{
"node": "3b2c67ea-bb6c-49c8-b55f-ffde7d1d8e83",
"type": "ai_textSplitter",
"index": 0
}
]
]
},
"52bfdf6b-0fb1-4e85-b31d-ec6c9ef912d8": {
"main": [
[
{
"node": "fd53fca7-d11d-4254-be56-9a62b6f0fadf",
"type": "main",
"index": 0
}
]
]
},
"7bb0412e-57ab-4a63-aec2-5db64b83ef7e": {
"main": [
[
{
"node": "5528a3be-375a-4077-a346-2eb77cf9160f",
"type": "main",
"index": 0
}
]
]
}
}
}¿Cómo usar este flujo de trabajo?
Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.
¿En qué escenarios es adecuado este flujo de trabajo?
Avanzado - Otros
¿Es de pago?
Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.
Flujos de trabajo relacionados recomendados
Ferenc Erb
@fefehunWith 30+ years in IT and 20+ years in leadership, I specialize in no-code automation with n8n, optimizing workflows and integrating systems efficiently. As an Agile Coach and Project Manager, I’ve led teams, managed R&D, and driven IT transformations. Skilled in n8n, Java, Node.js, and cloud solutions, I help businesses streamline operations. Let’s connect if you need an n8n expert for automation!
Compartir este flujo de trabajo