The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "asistente-interno-flujo-principal",
"nodes": [
{
"parameters": {
"workflowId": {
"__rl": true,
"value": "ID_WORKFLOW_CLASIFICACION",
"mode": "id",
"cachedResultUrl": "/workflow/ID_WORKFLOW_CLASIFICACION"
},
"workflowInputs": {
"mappingMode": "defineBelow",
"value": {
"mensaje": "={{ $json.mensaje }}"
},
"matchingColumns": [
"mensaje"
],
"schema": [
{
"id": "mensaje",
"displayName": "mensaje",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string",
"removed": false
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": true
},
"options": {}
},
"type": "n8n-nodes-base.executeWorkflow",
"typeVersion": 1.3,
"position": [
128,
176
],
"id": "c4bc6340-0a9e-44a0-b34f-5ec2c128c511",
"name": "Execute Workflow"
},
{
"parameters": {
"workflowId": {
"__rl": true,
"value": "ID_WORKFLOW_ENRUTADO",
"mode": "list",
"cachedResultUrl": "/workflow/ID_WORKFLOW_ENRUTADO",
"cachedResultName": "sub-enrutado"
},
"workflowInputs": {
"mappingMode": "defineBelow",
"value": {
"output_categoria": "={{ $('Execute Workflow').item.json.output.categoria }}",
"usuario": "={{ $('Extraer y Preparar Datos').item.json.usuario }}",
"mensaje": "={{ $('Extraer y Preparar Datos').item.json.mensaje }}",
"ejecucion_id": "={{ $('Extraer y Preparar Datos').item.json.ejecucion_id }}",
"fecha": "={{ $('Extraer y Preparar Datos').item.json.fecha }}",
"prioridad": "={{ $('Extraer y Preparar Datos').item.json.prioridad }}"
},
"matchingColumns": [
"output_categoria",
"usuario",
"mensaje",
"ejecucion_id",
"fecha",
"prioridad"
],
"schema": [
{
"id": "output_categoria",
"displayName": "output_categoria",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "usuario",
"displayName": "usuario",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "mensaje",
"displayName": "mensaje",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "ejecucion_id",
"displayName": "ejecucion_id",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "fecha",
"displayName": "fecha",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "prioridad",
"displayName": "prioridad",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"removed": false
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": true
},
"options": {}
},
"type": "n8n-nodes-base.executeWorkflow",
"typeVersion": 1.2,
"position": [
352,
176
],
"name": "Call sub-enrutado",
"id": "a14ee35e-0209-45b3-8c9d-ac9a9760f912"
},
{
"parameters": {
"multipleMethods": true,
"path": "asistente-interno",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
-544,
176
],
"id": "ad101a94-c392-4310-b2f6-50cb60de8d32",
"name": "Recibir Solicitud"
},
{
"parameters": {
"respondWith": "text",
"responseBody": "<!DOCTYPE html>\n<html lang=\"es\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Asistente Interno - Enviar Mensaje</title>\n <script src=\"https://cdn.tailwindcss.com\"></script>\n <link href=\"https://fonts.googleapis.com/css2?family=Inter:wght@400;600&display=swap\" rel=\"stylesheet\">\n <style>\n body { font-family: 'Inter', sans-serif; }\n .glass {\n background: rgba(255, 255, 255, 0.95);\n backdrop-filter: blur(10px);\n border: 1px solid rgba(255, 255, 255, 0.2);\n }\n </style>\n</head>\n<body class=\"bg-gradient-to-br from-blue-50 to-indigo-100 min-h-screen flex items-center justify-center p-6\">\n\n <div class=\"glass max-w-md w-full p-8 rounded-2xl shadow-2xl transition-all hover:shadow-indigo-200/50\">\n <div class=\"text-center mb-8\">\n <h1 class=\"text-3xl font-bold text-indigo-900\">Asistente Interno</h1>\n <p class=\"text-gray-500 mt-2\">Env\u00eda tu consulta al equipo t\u00e9cnico</p>\n </div>\n\n <form id=\"webhookForm\" class=\"space-y-6\">\n <div>\n <label for=\"usuario\" class=\"block text-sm font-semibold text-gray-700 mb-1\">Nombre de Usuario</label>\n <input type=\"text\" id=\"usuario\" name=\"usuario\" required\n class=\"w-full px-4 py-3 rounded-lg border border-gray-300 focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 outline-none transition-all placeholder-gray-400\"\n placeholder=\"Ej: juan_perez\">\n </div>\n\n <div>\n <label for=\"mensaje\" class=\"block text-sm font-semibold text-gray-700 mb-1\">Mensaje</label>\n <textarea id=\"mensaje\" name=\"mensaje\" rows=\"4\" required\n class=\"w-full px-4 py-3 rounded-lg border border-gray-300 focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 outline-none transition-all placeholder-gray-400\"\n placeholder=\"\u00bfEn qu\u00e9 podemos ayudarte?\"></textarea>\n </div>\n\n <button type=\"submit\" id=\"btnEnviar\"\n class=\"w-full bg-indigo-600 hover:bg-indigo-700 text-white font-bold py-3 rounded-lg transition-colors shadow-lg hover:shadow-indigo-500/30 flex justify-center items-center\">\n <span>Enviar Petici\u00f3n</span>\n </button>\n </form>\n\n <div id=\"status\" class=\"mt-6 text-center text-sm hidden\"></div>\n </div>\n\n <script>\n const form = document.getElementById('webhookForm');\n const statusDiv = document.getElementById('status');\n const btn = document.getElementById('btnEnviar');\n\n form.addEventListener('submit', async (e) => {\n e.preventDefault();\n \n const formData = {\n usuario: document.getElementById('usuario').value,\n mensaje: document.getElementById('mensaje').value\n };\n\n // Est\u00e9tica de carga\n btn.disabled = true;\n btn.innerHTML = 'Enviando...';\n statusDiv.classList.add('hidden');\n\n try {\n const response = await fetch('your-url', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(formData)\n });\n\n if (response.ok) {\n showStatus('\u00a1Mensaje enviado con \u00e9xito! \ud83d\ude80', 'text-green-600');\n form.reset();\n } else {\n showStatus('Error al enviar. Int\u00e9ntalo de nuevo.', 'text-red-600');\n }\n } catch (error) {\n showStatus('Error de conexi\u00f3n con el servidor.', 'text-red-600');\n console.error('Error:', error);\n } finally {\n btn.disabled = false;\n btn.innerHTML = 'Enviar Petici\u00f3n';\n }\n });\n\n function showStatus(msg, colorClass) {\n statusDiv.textContent = msg;\n statusDiv.className = `mt-6 text-center text-sm font-medium ${colorClass}`;\n statusDiv.classList.remove('hidden');\n }\n </script>\n</body>\n</html>",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.5,
"position": [
-320,
80
],
"id": "652d35f5-b052-4b7c-9145-25e2ccb74b3b",
"name": "Mostrar Formulario",
"onError": "continueErrorOutput"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "e868d719-4a5d-4677-9868-efbcfadeaa7c",
"name": "usuario",
"value": "={{ $json.body.usuario }}",
"type": "string"
},
{
"id": "07a3657c-f39d-4b95-b140-45624ca377dd",
"name": "mensaje",
"value": "={{ $json.body.mensaje }}",
"type": "string"
},
{
"id": "cf06eb9b-008c-4b49-9bec-e94d4d13fe4a",
"name": "prioridad",
"value": "={{ $json.body.mensaje.includes(\"urgente\") ? \"alta\": \"normal\" }}",
"type": "string"
},
{
"id": "0c1d445e-c32c-4525-952d-b93777487155",
"name": "fecha",
"value": "={{$now.toISO()}}",
"type": "string"
},
{
"id": "f8b1d47e-fa01-48af-9594-e4c4a5756675",
"name": "flujo",
"value": "={{ $workflow.name }}",
"type": "string"
},
{
"id": "18f46415-1e5b-40ba-b1ae-9eb42c46dbf7",
"name": "ejecucion_id",
"value": "={{$execution.id}}",
"type": "number"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-320,
272
],
"id": "c94d53cb-8fd0-46fa-a626-c79b93e22612",
"name": "Extraer y Preparar Datos"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={\n \"estado\": \"error\",\n \"detalle\": \"el mensaje esta vacio o es demasiado corto\"\n}",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.5,
"position": [
128,
368
],
"id": "25d833f3-bccf-4062-841d-cffd0c178a36",
"name": "Responde: Mensaje Invalido"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={\n\"usuario\": \"Success\"\n}",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.5,
"position": [
576,
176
],
"id": "1fd5a460-cec1-4c98-a625-77ca7d5b20c0",
"name": "Responde: Mensaje Recibido"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 3
},
"conditions": [
{
"id": "c54c4edb-4eda-47b6-8d45-70bef269c91f",
"leftValue": "={{ $json.mensaje }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
}
},
{
"id": "f0e5dcc3-c207-4c72-8cfc-07bd6fcbcfbf",
"leftValue": "={{ $json.mensaje.length }}",
"rightValue": 10,
"operator": {
"type": "number",
"operation": "gt"
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
-96,
272
],
"id": "9dd720e4-1f39-4e8a-bcdf-e2628cb4e224",
"name": "\u00bfMensaje Valido?"
},
{
"parameters": {
"authentication": "oAuth2",
"select": "channel",
"channelId": {
"__rl": true,
"value": "SLACK_CHANNEL_ID",
"mode": "list",
"cachedResultName": "workflow-fallido"
},
"text": "Error",
"otherOptions": {}
},
"type": "n8n-nodes-base.slack",
"typeVersion": 2.4,
"position": [
-96,
80
],
"id": "70467430-4d36-45c0-8033-e8ec4756232a",
"name": "Send a message",
"credentials": {
"slackOAuth2Api": {
"name": "<your credential>"
}
}
}
],
"connections": {
"Execute Workflow": {
"main": [
[
{
"node": "Call sub-enrutado",
"type": "main",
"index": 0
}
]
]
},
"Call sub-enrutado": {
"main": [
[
{
"node": "Responde: Mensaje Recibido",
"type": "main",
"index": 0
}
]
]
},
"Recibir Solicitud": {
"main": [
[
{
"node": "Mostrar Formulario",
"type": "main",
"index": 0
}
],
[
{
"node": "Extraer y Preparar Datos",
"type": "main",
"index": 0
}
]
]
},
"Extraer y Preparar Datos": {
"main": [
[
{
"node": "\u00bfMensaje Valido?",
"type": "main",
"index": 0
}
]
]
},
"Responde: Mensaje Recibido": {
"main": [
[]
]
},
"\u00bfMensaje Valido?": {
"main": [
[
{
"node": "Execute Workflow",
"type": "main",
"index": 0
}
],
[
{
"node": "Responde: Mensaje Invalido",
"type": "main",
"index": 0
}
]
]
},
"Mostrar Formulario": {
"main": [
[],
[
{
"node": "Send a message",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1",
"binaryMode": "separate",
"timeSavedMode": "fixed",
"errorWorkflow": "ID_ERROR_WORKFLOW",
"callerPolicy": "workflowsFromSameOwner",
"availableInMCP": false
},
"versionId": "WORKFLOW_VERSION_ID",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "WORKFLOW_ID",
"tags": []
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
slackOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
asistente-interno-flujo-principal. Uses slack. Webhook trigger; 9 nodes.
Source: https://github.com/micael305/n8n-ai-assistant-mcp/blob/b31db718ac92bfdffe5c5f36e55e3bd60d15520e/main/asistente-interno-flujo-principal.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
T+0 — Onboarding Email + Portal Activity (KAIA-756). Uses httpRequest, slack. Webhook trigger; 6 nodes.
Portal Timeline — Status Change Watcher (KAIA-762 UUID→cuid resolution). Uses httpRequest, slack. Webhook trigger; 6 nodes.
Automates website downtime detection and notifications using UptimeRobot. Triggers alerts via Slack, WhatsApp, or Email when a website goes down. Creates a task in Notion and tags the responsible engi
Slack AI Assistant with PraisonAI. Uses n8n-nodes-praisonai, slack. Webhook trigger; 4 nodes.
Advanced Slackbot With N8N. Uses slack, httpRequest, stickyNote, executeWorkflow. Webhook trigger; 34 nodes.