HelpDesk-Arbeitsablauf

Experte

Dies ist ein Internal Wiki, AI Chatbot-Bereich Automatisierungsworkflow mit 25 Nodes. Hauptsächlich werden If, Slack, Webhook, GmailTool, GoogleDocsTool und andere Nodes verwendet. Ein KI-basierter interner HelpDesk für Slack, integriert mit GPT-4o und E-Mail-Eskalation

Voraussetzungen
  • Slack Bot Token oder Webhook URL
  • HTTP Webhook-Endpunkt (wird von n8n automatisch generiert)
  • Google-Konto + Gmail API-Anmeldedaten
  • Google Sheets API-Anmeldedaten
  • OpenAI API Key
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "id": "UVicuO5jaXNi4v7p",
  "meta": {
    "instanceId": "0c0152906db501342bff43248e195ce72d840c2129116cc346a96ce2be086bbd",
    "templateCredsSetupCompleted": true
  },
  "name": "HelpDesk Workflow",
  "tags": [],
  "nodes": [
    {
      "id": "1b51fec7-a603-4e45-bff6-5921f1c62c9b",
      "name": "Erste Nachricht senden",
      "type": "n8n-nodes-base.slack",
      "position": [
        2640,
        540
      ],
      "webhookId": "5fcad12d-52dc-428e-b4cb-b1da006110a2",
      "parameters": {
        "text": "=:alert: I'm on it {{ $json.real_name }}! checking my data...one second please.....",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Webhook3').item.json.body.event.channel }}"
        },
        "otherOptions": {
          "includeLinkToWorkflow": false
        }
      },
      "credentials": {
        "slackApi": {
          "id": "",
          "name": "Slack account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "65d12dcc-c8c5-4726-8c37-7ed4a6f57989",
      "name": "Nachricht senden",
      "type": "n8n-nodes-base.slack",
      "position": [
        3600,
        520
      ],
      "webhookId": "e5d44cc2-1567-4308-b318-da5bd75507ba",
      "parameters": {
        "text": "={{ $('AI Agent2').item.json.output }}",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Webhook3').item.json.body.event.channel }}"
        },
        "otherOptions": {
          "mrkdwn": false,
          "botProfile": {
            "imageValues": {
              "icon_emoji": ":robot_face:",
              "profilePhotoType": "emoji"
            }
          },
          "includeLinkToWorkflow": false
        }
      },
      "credentials": {
        "slackApi": {
          "id": "",
          "name": "Slack account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "99129c7e-d07f-4bd6-a087-5e585cc1ccea",
      "name": "Kurznotiz3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2800,
        260
      ],
      "parameters": {
        "color": 6,
        "width": 488,
        "height": 404,
        "content": "![OpenAI](https://i.imgur.com/o89G0If.png)\n## AI Agent \nThis workflow currently uses OpenAI to power it's responses, but you can open the AI Agent node below and set your own AI LLM using the n8n options offered. "
      },
      "typeVersion": 1
    },
    {
      "id": "739c1571-8c76-4040-af67-1e7bf1161938",
      "name": "Kurznotiz4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2380,
        260
      ],
      "parameters": {
        "color": 2,
        "width": 417,
        "height": 437,
        "content": "![Slack](https://i.imgur.com/iKyMV0N.png)\n## Response Received / User full name\nOnce N8n sees that the messaged received is from a user, it will respond right away to acknowledge a message was received. You can edit the message by opening the node below. "
      },
      "typeVersion": 1
    },
    {
      "id": "d708dbde-891a-49ae-b18a-d1b5ec422aff",
      "name": "Kurznotiz6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2700,
        740
      ],
      "parameters": {
        "color": 6,
        "width": 365,
        "height": 559,
        "content": "![n8n](https://imgur.com/8BthQWt.png)\n\n## Remembers the last 5 messages that a user sent\nBecause we are passing the full BODY of the webhook including the channel ID of the user to the memory module, n8n is storing the last 5 slack messages sent to it per slack channel. This means that it will remember all your users conversations separately from one another and not get confused by different requests from different users. You can increase the memory storage by using a different storage medium and increase the number of prompts and responses it should remember. "
      },
      "typeVersion": 1
    },
    {
      "id": "b78f98ca-cd14-4a92-88e4-296e5f5dee47",
      "name": "Kurznotiz7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2140,
        880
      ],
      "parameters": {
        "color": 5,
        "width": 545,
        "height": 279,
        "content": "![OpenAI](https://i.imgur.com/o89G0If.png)\n\n## Change the AI Agents LLM\nTo change the model used, simply delete the ChatGPT model and replace with a different supported model by hitting the plus sign under model in the AI Agent."
      },
      "typeVersion": 1
    },
    {
      "id": "0109acf3-ef56-4f03-8d63-6f57b1712b58",
      "name": "OpenAI Chat Model3",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        2540,
        920
      ],
      "parameters": {
        "model": "gpt-4o",
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c1a090b9-48c1-4f1d-8792-419f5b1a08ae",
      "name": "Kurznotiz9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1280,
        260
      ],
      "parameters": {
        "color": 2,
        "width": 455,
        "height": 497,
        "content": "![Imgur](https://i.imgur.com/iKyMV0N.png)\n## Webhook Trigger\nThe first node receives all messages from Slack API via Subscription Events API. You can find more information about setting up the subscription events API by [clicking here](https://api.slack.com/apis/connections/events-api). The second node responds to the periodic security challenges that Slack sends to ensure the N8n webhook is still active. "
      },
      "typeVersion": 1
    },
    {
      "id": "03c655bd-2598-41c2-992d-c8fc96089327",
      "name": "Webhook3",
      "type": "n8n-nodes-base.webhook",
      "position": [
        1400,
        580
      ],
      "webhookId": "",
      "parameters": {
        "path": "",
        "options": {
          "noResponseBody": true
        },
        "httpMethod": "POST"
      },
      "typeVersion": 2
    },
    {
      "id": "a45eaaff-cdd0-4b16-b28d-27ad9f3fb887",
      "name": "departmentsEmails2",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        3680,
        1000
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1mmF1uXpQS0O28KcVAzcvrIaoMbJGS3norTWXbrstDg8/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1mmF1uXpQS0O28KcVAzcvrIaoMbJGS3norTWXbrstDg8",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1mmF1uXpQS0O28KcVAzcvrIaoMbJGS3norTWXbrstDg8/edit?usp=drivesdk",
          "cachedResultName": "departmentsEmails"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "2fd2ee04-692a-4556-9018-9c9cbc4a5b29",
      "name": "KI-Agent2",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        2920,
        520
      ],
      "parameters": {
        "text": "={{ $('Webhook3').item.json.body.event.blocks[0].elements[0].elements[0].text }}",
        "options": {
          "systemMessage": "=Role:\nYou are a helpful assistant that must strictly follow the instructions below.\n\nInstructions:\n\n- Before doing anything, check if the question is related to one of the topics mentioned in the `HeadersList` tool or similar to the header topic.\n  1- if not, then reply directly that you cant help with that.\n  2- if yes use the `Handbook` tool check twice if answer exists then go further with the below instructions.\n- Use `user_question` as the user's original inquiry when composing an email.\n\n- Use only the `Handbook` tool info.\n- This is your only source of truth.\n- Do not use general knowledge, memory, or assumptions.\n\nAnswering Rules:\n\n1. Read the `Handbook` content carefully before answering.\n2. If the answer exists, respond using only that information.\n3. If not found, reply as follows:\n   - if HR or policy related (e.g. benefits, leave, remote work):\n     > Unfortunately I can't help you with that. Would you like me to send an email to the HR department to update our policy?\n\n   - if technical related (e.g. tools, devices..etc):\n     > Unfortunately I can't help you with that. It seems like an IT or Technical question. Would you like me to notify the IT department about your issue?\n\n   - if Other topics:\n     > Unfortunately I can't help you with that. It's not a HR related question.\n\n4. Never send an email unless the user confirm that.\n\nEmail Logic:\n\n- If user says no, ask if you can help with something else.\n- If user says yes:\n  1. Add to the email subject:\n     - “Question regarding Company Policy/ IT”\n  2. Use the `departmentsemails2` tool to get the contact's full name and email.\n  3. Write a professional HTML email including:\n     - The  questioner's name: {{ $('Slack4').item.json.real_name }} and Their original question.\n     - A note asking to update documentation ,or if updated get the email address of the IT department from `departmentsemails2` and tell him to send the updates to that email address."
        },
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "68a4720c-8ea6-4189-a1b6-4d3d76ce7743",
      "name": "Slack4",
      "type": "n8n-nodes-base.slack",
      "position": [
        2480,
        540
      ],
      "webhookId": "2f23a022-42c2-4b66-9142-91ca0b152fb3",
      "parameters": {
        "user": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Webhook3').item.json.body.event.user }}"
        },
        "resource": "user",
        "operation": "getProfile"
      },
      "credentials": {
        "slackApi": {
          "id": "",
          "name": "Slack account"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "2583abdd-542c-433f-9ad7-5034f50d5128",
      "name": "Kurznotiz",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3080,
        740
      ],
      "parameters": {
        "color": 5,
        "width": 300,
        "height": 420,
        "content": "![n8n](https://imgur.com/uesFHDY.png)\n\n## The Handbook \nContains all Data that the Assistant bot needs,\nit's basically the Handbook with all HR related info (e.g. benefits, leave, remote work)"
      },
      "typeVersion": 1
    },
    {
      "id": "da772f0b-3d1f-4626-8ec1-4d5b15017f4f",
      "name": "Kurznotiz5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3400,
        740
      ],
      "parameters": {
        "color": 4,
        "width": 500,
        "height": 400,
        "content": "![n8n](https://imgur.com/scIPLCO.png)\n## Department specific contact info\nAll contact info for each department can be found in this google sheet\nonly HR and IT for now"
      },
      "typeVersion": 1
    },
    {
      "id": "0eb87a3f-ff47-4207-8f6b-6de8122f6aaa",
      "name": "Handbuch",
      "type": "n8n-nodes-base.googleDocsTool",
      "position": [
        3220,
        1020
      ],
      "parameters": {
        "operation": "get",
        "documentURL": ""
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "id": "",
          "name": ""
        }
      },
      "typeVersion": 2
    },
    {
      "id": "8f53b025-8563-42e6-b1f8-a879a82843f5",
      "name": "Keine Operation, nichts tun",
      "type": "n8n-nodes-base.noOp",
      "position": [
        2440,
        740
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "e263978a-a326-4f06-ac55-8bb0b282de11",
      "name": "Simple Memory2",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        2840,
        1180
      ],
      "parameters": {
        "sessionKey": "={{ $('Webhook3').item.json.body.event.channel }}",
        "sessionIdType": "customKey"
      },
      "typeVersion": 1.3
    },
    {
      "id": "7f1b762f-5a37-400c-ba1b-b29627202173",
      "name": "E-Mail senden",
      "type": "n8n-nodes-base.gmailTool",
      "position": [
        4060,
        1020
      ],
      "webhookId": "f4435dbb-cd87-430c-ae2b-982d9ee888f4",
      "parameters": {
        "sendTo": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('To', ``, 'string') }}",
        "message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', ``, 'string') }}",
        "options": {
          "appendAttribution": false
        },
        "subject": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', ``, 'string') }}"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "",
          "name": ""
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "e0f87e17-ef31-4a54-80f0-34248f791cb9",
      "name": "Erste Nachricht löschen",
      "type": "n8n-nodes-base.slack",
      "position": [
        3380,
        520
      ],
      "webhookId": "e9c00bf9-f666-4bf8-802f-9adca0b51928",
      "parameters": {
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Send Initial Message').item.json.channel }}"
        },
        "operation": "delete",
        "timestamp": "={{ $('Send Initial Message').item.json[\"message_timestamp\"] }}"
      },
      "credentials": {
        "slackApi": {
          "id": "",
          "name": "Slack account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "50b7ad06-c426-42f0-99f1-8b67e7ee5771",
      "name": "Kurznotiz8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1740,
        260
      ],
      "parameters": {
        "color": 5,
        "width": 640,
        "height": 500,
        "content": "\n![n8n](https://imgur.com/ixUBy07.png)\n## Check for Bot Responses\nIf the message received is from a Bot instead of a real user, it will ignore the message.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "fbd12874-c160-4049-9a0d-b931a4d10307",
      "name": "Bot?",
      "type": "n8n-nodes-base.if",
      "position": [
        1800,
        580
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "dfde27bf-8d61-4ea6-9e7e-6280508c4156",
              "operator": {
                "type": "object",
                "operation": "notExists",
                "singleValue": true
              },
              "leftValue": "={{ $json.body.event.bot_profile }}",
              "rightValue": ""
            },
            {
              "id": "809f8f96-1012-43f7-82a0-a037bce19809",
              "operator": {
                "type": "object",
                "operation": "notExists",
                "singleValue": true
              },
              "leftValue": "={{ $json.body.event.previous_message.bot_profile }}",
              "rightValue": ""
            },
            {
              "id": "4f238cc2-aea3-40fa-8b35-264cabb65c65",
              "operator": {
                "type": "string",
                "operation": "notExists",
                "singleValue": true
              },
              "leftValue": "={{ $json.body.event.bot_id }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "6484a188-e5d4-4584-94a4-f2bf2a2e4028",
      "name": "Kurznotiz2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3320,
        260
      ],
      "parameters": {
        "color": 2,
        "width": 511,
        "height": 431,
        "content": "![Slack](https://i.imgur.com/iKyMV0N.png)\n## Delete Receipt and Send Response \nOnce the AI response is generated in response to the slack message, n8n delete's it's original *Message Received* message to avoid cluttering up the user's DMs, and then sends the final Slack message back to the user. "
      },
      "typeVersion": 1
    },
    {
      "id": "8cc71213-9b70-42e5-91c1-1300a3423fb0",
      "name": "Kurznotiz1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3940,
        760
      ],
      "parameters": {
        "color": 3,
        "width": 340,
        "height": 420,
        "content": "![n8n](https://imgur.com/lXX2RvT.png)\n## Notify the HR\nNotify the HR department that there is a question asked by a user and there is no answer found in our Handbook doc\n"
      },
      "typeVersion": 1
    },
    {
      "id": "d1fc8d25-e337-4e54-b1c3-48203e4467b2",
      "name": "HeadersList",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        3620,
        1420
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1I9zDnOvsJIxbR6IgYDPQFYcAONqDfKoH5jVsD2Otvv8/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1I9zDnOvsJIxbR6IgYDPQFYcAONqDfKoH5jVsD2Otvv8",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1I9zDnOvsJIxbR6IgYDPQFYcAONqDfKoH5jVsD2Otvv8/edit?usp=drivesdk",
          "cachedResultName": "n8n / Helpdesk / Header list"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "0b86c875-b559-4cde-a13e-3b6de7780ab6",
      "name": "Kurznotiz10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3400,
        1160
      ],
      "parameters": {
        "color": 4,
        "width": 500,
        "height": 400,
        "content": "![n8n](https://imgur.com/scIPLCO.png)\n## Policy Highlights Check\nCheck our policies highlights before checking the whole document and send 1000s of tokens to chatGPT because that cost a lot of money"
      },
      "typeVersion": 1
    }
  ],
  "active": true,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "63459a43-609a-45c6-ab4f-a0ca6705ed53",
  "connections": {
    "fbd12874-c160-4049-9a0d-b931a4d10307": {
      "main": [
        [
          {
            "node": "68a4720c-8ea6-4189-a1b6-4d3d76ce7743",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "8f53b025-8563-42e6-b1f8-a879a82843f5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "68a4720c-8ea6-4189-a1b6-4d3d76ce7743": {
      "main": [
        [
          {
            "node": "1b51fec7-a603-4e45-bff6-5921f1c62c9b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0eb87a3f-ff47-4207-8f6b-6de8122f6aaa": {
      "ai_tool": [
        [
          {
            "node": "2fd2ee04-692a-4556-9018-9c9cbc4a5b29",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "03c655bd-2598-41c2-992d-c8fc96089327": {
      "main": [
        [
          {
            "node": "fbd12874-c160-4049-9a0d-b931a4d10307",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2fd2ee04-692a-4556-9018-9c9cbc4a5b29": {
      "main": [
        [
          {
            "node": "e0f87e17-ef31-4a54-80f0-34248f791cb9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7f1b762f-5a37-400c-ba1b-b29627202173": {
      "ai_tool": [
        [
          {
            "node": "2fd2ee04-692a-4556-9018-9c9cbc4a5b29",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "d1fc8d25-e337-4e54-b1c3-48203e4467b2": {
      "ai_tool": [
        [
          {
            "node": "2fd2ee04-692a-4556-9018-9c9cbc4a5b29",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "e263978a-a326-4f06-ac55-8bb0b282de11": {
      "ai_memory": [
        [
          {
            "node": "2fd2ee04-692a-4556-9018-9c9cbc4a5b29",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "0109acf3-ef56-4f03-8d63-6f57b1712b58": {
      "ai_languageModel": [
        [
          {
            "node": "2fd2ee04-692a-4556-9018-9c9cbc4a5b29",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "a45eaaff-cdd0-4b16-b28d-27ad9f3fb887": {
      "ai_tool": [
        [
          {
            "node": "2fd2ee04-692a-4556-9018-9c9cbc4a5b29",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "1b51fec7-a603-4e45-bff6-5921f1c62c9b": {
      "main": [
        [
          {
            "node": "2fd2ee04-692a-4556-9018-9c9cbc4a5b29",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e0f87e17-ef31-4a54-80f0-34248f791cb9": {
      "main": [
        [
          {
            "node": "65d12dcc-c8c5-4726-8c37-7ed4a6f57989",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Experte - Internes Wiki, KI-Chatbot

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Experte
Anzahl der Nodes25
Kategorie2
Node-Typen11
Schwierigkeitsbeschreibung

Für fortgeschrittene Benutzer, komplexe Workflows mit 16+ Nodes

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34