Triaje automatizado de soporte al cliente con GPT, Gmail, Slack y un panel de análisis

Avanzado

Este es unTicket Management, AI Summarizationflujo de automatización del dominio deautomatización que contiene 21 nodos.Utiliza principalmente nodos como Code, Slack, OpenAi, Switch, Airtable. Triaje automatizado de soporte al cliente con GPT, Gmail, Slack y un panel de análisis

Requisitos previos
  • Bot Token de Slack o URL de Webhook
  • Clave de API de OpenAI
  • Clave de API de Airtable
  • Cuenta de Google y credenciales de API de Gmail
  • Credenciales de API de Google Sheets
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "meta": {
    "instanceId": "db30e8ae4100235addbd4638770997b7ef11878d049073c888ba440ca84c55fc"
  },
  "nodes": [
    {
      "id": "fd8ec780-8941-4736-88e7-cbc148f1deb7",
      "name": "Monitorear Correos de Soporte",
      "type": "n8n-nodes-base.gmailTrigger",
      "position": [
        -1008,
        112
      ],
      "parameters": {
        "filters": {
          "sender": "",
          "labelIds": [
            "INBOX"
          ],
          "readStatus": "unread"
        },
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "ff2c6f81-1137-4ef5-b96d-69f08c538d9d",
      "name": "Motor de Análisis de IA",
      "type": "n8n-nodes-base.openAi",
      "position": [
        -752,
        112
      ],
      "parameters": {
        "prompt": {
          "messages": [
            {
              "role": "system",
              "content": "You are an expert customer support analyst. Analyze the email and provide: 1) Sentiment (Positive/Neutral/Negative/Critical), 2) Urgency Level (Low/Medium/High/Critical), 3) Category (Technical/Billing/Feature Request/Bug Report/General Inquiry), 4) Key Issues (bullet points), 5) Suggested Response (professional and empathetic). Return as JSON."
            },
            {
              "content": "Email Subject: {{ $json.subject }}\n\nEmail Body: {{ $json.body }}\n\nFrom: {{ $json.from }}"
            }
          ]
        },
        "options": {
          "maxTokens": 1000,
          "temperature": 0.3
        },
        "resource": "chat",
        "requestOptions": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "8b706330-4e9f-40f6-b4f8-02fe2988eed4",
      "name": "Analizar y Enriquecer Datos",
      "type": "n8n-nodes-base.code",
      "position": [
        -496,
        112
      ],
      "parameters": {
        "jsCode": "const aiResponse = JSON.parse($input.first().json.choices[0].message.content);\nconst emailData = $('Monitor Support Emails').first().json;\n\nreturn {\n  json: {\n    timestamp: new Date().toISOString(),\n    customer_email: emailData.from,\n    customer_name: emailData.from.split('<')[0].trim(),\n    subject: emailData.subject,\n    body: emailData.body,\n    email_id: emailData.id,\n    thread_id: emailData.threadId,\n    \n    // AI Analysis Results\n    sentiment: aiResponse.sentiment,\n    urgency: aiResponse.urgency_level,\n    category: aiResponse.category,\n    key_issues: aiResponse.key_issues,\n    suggested_response: aiResponse.suggested_response,\n    \n    // Scoring\n    priority_score: calculatePriority(aiResponse.urgency_level, aiResponse.sentiment),\n    requires_immediate_attention: aiResponse.urgency_level === 'Critical' || aiResponse.sentiment === 'Critical'\n  }\n};\n\nfunction calculatePriority(urgency, sentiment) {\n  const urgencyScores = { 'Low': 1, 'Medium': 2, 'High': 3, 'Critical': 4 };\n  const sentimentScores = { 'Positive': 0, 'Neutral': 1, 'Negative': 2, 'Critical': 3 };\n  return (urgencyScores[urgency] || 2) * 25 + (sentimentScores[sentiment] || 1) * 10;\n}"
      },
      "typeVersion": 2
    },
    {
      "id": "52100d0c-5fb5-4e9f-a9bd-06a18a3d548f",
      "name": "Enrutar por Urgencia",
      "type": "n8n-nodes-base.switch",
      "position": [
        -256,
        112
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "",
                    "rightValue": ""
                  }
                ]
              }
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "93c91813-4e80-4d68-9481-ae3ec127f519",
      "name": "Alertar Problemas Críticos",
      "type": "n8n-nodes-base.slack",
      "position": [
        0,
        0
      ],
      "webhookId": "0c0c977b-f166-40b6-87bd-232356728544",
      "parameters": {
        "text": "🚨 *CRITICAL CUSTOMER ISSUE DETECTED*\n\n*Customer:* {{ $json.customer_name }} ({{ $json.customer_email }})\n*Subject:* {{ $json.subject }}\n*Sentiment:* {{ $json.sentiment }} | *Urgency:* {{ $json.urgency }}\n*Category:* {{ $json.category }}\n*Priority Score:* {{ $json.priority_score }}/110\n\n*Key Issues:*\n{{ $json.key_issues }}\n\n*Suggested Response:*\n```\n{{ $json.suggested_response }}\n```\n\n*Action Required:* Respond within 30 minutes\n*Email ID:* {{ $json.email_id }}",
        "otherOptions": {
          "mrkdwn": true
        },
        "authentication": "oAuth2"
      },
      "typeVersion": 2.3
    },
    {
      "id": "9e35f1a2-7e66-4798-bbe9-fd843fd4d67e",
      "name": "Registrar Tickets Rutinarios",
      "type": "n8n-nodes-base.slack",
      "position": [
        0,
        208
      ],
      "webhookId": "8e6c2a7d-d35a-4ba3-bf96-7b6c33a5d8a4",
      "parameters": {
        "text": "📧 *New Support Ticket*\n\n*Customer:* {{ $json.customer_name }}\n*Category:* {{ $json.category }} | *Priority:* {{ $json.priority_score }}\n*Sentiment:* {{ $json.sentiment }}\n\n*Subject:* {{ $json.subject }}",
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "typeVersion": 2.3
    },
    {
      "id": "50556621-9a8c-4a12-8c6b-78fd614a2e37",
      "name": "Registrar en Base de Datos Airtable",
      "type": "n8n-nodes-base.airtable",
      "position": [
        256,
        112
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "id",
          "value": "appXXXXXXXXXXXXXX"
        },
        "table": {
          "__rl": true,
          "mode": "id",
          "value": "tblSupportTickets"
        },
        "columns": {
          "value": {
            "Status": "Open",
            "Subject": "={{ $json.subject }}",
            "Urgency": "={{ $json.urgency }}",
            "Category": "={{ $json.category }}",
            "Email_ID": "={{ $json.email_id }}",
            "Sentiment": "={{ $json.sentiment }}",
            "Thread_ID": "={{ $json.thread_id }}",
            "Timestamp": "={{ $json.timestamp }}",
            "Email_Body": "={{ $json.body }}",
            "Key_Issues": "={{ $json.key_issues }}",
            "Customer_Name": "={{ $json.customer_name }}",
            "Customer_Email": "={{ $json.customer_email }}",
            "Priority_Score": "={{ $json.priority_score }}",
            "Suggested_Response": "={{ $json.suggested_response }}",
            "Requires_Immediate_Attention": "={{ $json.requires_immediate_attention }}"
          },
          "mappingMode": "defineBelow"
        },
        "options": {},
        "operation": "create"
      },
      "typeVersion": 2.1
    },
    {
      "id": "39e8213d-f382-4778-9d13-8036b2e52696",
      "name": "Actualizar Panel de Análisis",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        512,
        112
      ],
      "parameters": {
        "columns": {
          "value": {
            "Date": "={{ $json.timestamp.split('T')[0] }}",
            "Time": "={{ $json.timestamp.split('T')[1].split('.')[0] }}",
            "Email": "={{ $json.customer_email }}",
            "Status": "Open",
            "Subject": "={{ $json.subject }}",
            "Urgency": "={{ $json.urgency }}",
            "Category": "={{ $json.category }}",
            "Critical": "={{ $json.requires_immediate_attention }}",
            "Customer": "={{ $json.customer_name }}",
            "Priority": "={{ $json.priority_score }}",
            "Sentiment": "={{ $json.sentiment }}"
          },
          "mappingMode": "defineBelow"
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "gid=0"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "970abf02-9fac-4109-8fc2-909f333d3224",
      "name": "Generar Información",
      "type": "n8n-nodes-base.openAi",
      "position": [
        752,
        112
      ],
      "parameters": {
        "prompt": {
          "messages": [
            {
              "role": "system",
              "content": "Based on the analysis, generate 3 data insights: 1) Trend identification, 2) Risk assessment, 3) Actionable recommendation for the support team."
            },
            {
              "content": "Ticket Data:\nSentiment: {{ $json.sentiment }}\nCategory: {{ $json.category }}\nUrgency: {{ $json.urgency }}\nIssues: {{ $json.key_issues }}\n\nProvide insights in JSON format with keys: trend, risk, recommendation"
            }
          ]
        },
        "options": {
          "maxTokens": 500,
          "temperature": 0.5
        },
        "resource": "chat",
        "requestOptions": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "ab329b35-05bb-42ec-bfe1-9f8ba4ec6772",
      "name": "Almacenar Información de IA",
      "type": "n8n-nodes-base.airtable",
      "position": [
        1008,
        112
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "id",
          "value": "appXXXXXXXXXXXXXX"
        },
        "table": {
          "__rl": true,
          "mode": "id",
          "value": "tblInsights"
        },
        "columns": {
          "value": {
            "Record_ID": "={{ $('Log to Airtable Database').item.json.id }}",
            "AI_Insights": "={{ JSON.parse($json.choices[0].message.content) }}",
            "Generated_At": "={{ new Date().toISOString() }}"
          },
          "mappingMode": "defineBelow"
        },
        "options": {},
        "operation": "update"
      },
      "typeVersion": 2.1
    },
    {
      "id": "02b48c6d-c266-4f92-913d-c76367bb5d96",
      "name": "Nota Adhesiva",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1040,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Watches Gmail inbox for new unread emails\n"
      },
      "typeVersion": 1
    },
    {
      "id": "98d2e12e-be2a-440b-baf5-8cd6120e4271",
      "name": "Nota Adhesiva1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -784,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Analyzes sentiment, urgency, and categorizes support requests\n"
      },
      "typeVersion": 1
    },
    {
      "id": "4310037a-a46e-43f0-bd9d-d32af017d9b8",
      "name": "Nota Adhesiva2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -528,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Structures AI output and calculates priority scores\n"
      },
      "typeVersion": 1
    },
    {
      "id": "81b8f33b-303c-4cf1-905d-6065d3a5b026",
      "name": "Nota Adhesiva3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -288,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Routes tickets based on urgency classification level\n"
      },
      "typeVersion": 1
    },
    {
      "id": "b7f1ae71-fe6d-4f64-8193-e36ae264af13",
      "name": "Nota Adhesiva4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -32,
        -112
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Sends immediate Slack alerts for critical tickets\n"
      },
      "typeVersion": 1
    },
    {
      "id": "d30db0f5-e392-4114-93b8-674bee6121ec",
      "name": "Nota Adhesiva5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -48,
        368
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Posts standard priority tickets to Slack channel\n"
      },
      "typeVersion": 1
    },
    {
      "id": "393db2f6-ee8c-4f45-96c0-645c5c530619",
      "name": "Nota Adhesiva6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        224,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Stores complete ticket data in Airtable base\n"
      },
      "typeVersion": 1
    },
    {
      "id": "279d3e6a-e014-4c23-8ccb-d635b25c0fb3",
      "name": "Nota Adhesiva7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        480,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Logs ticket metrics to Google Sheets dashboard\n"
      },
      "typeVersion": 1
    },
    {
      "id": "08bb68e3-a7ad-42fa-aea7-5abc319e2b27",
      "name": "Nota Adhesiva8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        720,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Creates AI-powered trends and risk assessments daily\n"
      },
      "typeVersion": 1
    },
    {
      "id": "acc25615-d10a-4d12-b1cb-4ecb28c972da",
      "name": "Nota Adhesiva9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        976,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Saves generated insights back to Airtable records\n"
      },
      "typeVersion": 1
    },
    {
      "id": "9ca1492d-826d-45ca-880d-35210ed527c9",
      "name": "Nota Adhesiva10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1568,
        -112
      ],
      "parameters": {
        "width": 464,
        "height": 528,
        "content": "# Workflow Description\n\nAI-powered customer support automation that monitors Gmail, analyzes email sentiment and urgency, routes critical issues to Slack, logs all tickets to Airtable and Google Sheets, then generates actionable insights. \n\nPrioritizes responses, tracks metrics, and improves support team efficiency through intelligent triage.\n\n---\n\n**Created by Daniel Shashko**  \nhttps://www.linkedin.com/in/daniel-shashko/"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "52100d0c-5fb5-4e9f-a9bd-06a18a3d548f": {
      "main": [
        [
          {
            "node": "93c91813-4e80-4d68-9481-ae3ec127f519",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "970abf02-9fac-4109-8fc2-909f333d3224": {
      "main": [
        [
          {
            "node": "ab329b35-05bb-42ec-bfe1-9f8ba4ec6772",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ff2c6f81-1137-4ef5-b96d-69f08c538d9d": {
      "main": [
        [
          {
            "node": "8b706330-4e9f-40f6-b4f8-02fe2988eed4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9e35f1a2-7e66-4798-bbe9-fd843fd4d67e": {
      "main": [
        [
          {
            "node": "50556621-9a8c-4a12-8c6b-78fd614a2e37",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8b706330-4e9f-40f6-b4f8-02fe2988eed4": {
      "main": [
        [
          {
            "node": "52100d0c-5fb5-4e9f-a9bd-06a18a3d548f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "93c91813-4e80-4d68-9481-ae3ec127f519": {
      "main": [
        [
          {
            "node": "50556621-9a8c-4a12-8c6b-78fd614a2e37",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fd8ec780-8941-4736-88e7-cbc148f1deb7": {
      "main": [
        [
          {
            "node": "ff2c6f81-1137-4ef5-b96d-69f08c538d9d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "50556621-9a8c-4a12-8c6b-78fd614a2e37": {
      "main": [
        [
          {
            "node": "39e8213d-f382-4778-9d13-8036b2e52696",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "39e8213d-f382-4778-9d13-8036b2e52696": {
      "main": [
        [
          {
            "node": "970abf02-9fac-4109-8fc2-909f333d3224",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿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 - Gestión de tickets, Resumen de IA

¿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.

Información del flujo de trabajo
Nivel de dificultad
Avanzado
Número de nodos21
Categoría2
Tipos de nodos8
Descripción de la dificultad

Adecuado para usuarios avanzados, flujos de trabajo complejos con 16+ nodos

Autor
Daniel Shashko

Daniel Shashko

@tomax

AI automation specialist and a marketing enthusiast. More than 6 years of experience in SEO/GEO. Senior SEO at Bright Data.

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34