HelpDesk flux de travail
Avancé
Ceci est unInternal Wiki, AI Chatbotworkflow d'automatisation du domainecontenant 25 nœuds.Utilise principalement des nœuds comme If, Slack, Webhook, GmailTool, GoogleDocsTool. 基于AIdeSlack内部帮助台,intégrationGPT-4oete-mail升级
Prérequis
- •Token Bot Slack ou URL Webhook
- •Point de terminaison HTTP Webhook (généré automatiquement par n8n)
- •Compte Google et informations d'identification Gmail API
- •Informations d'identification Google Sheets API
- •Clé API OpenAI
Nœuds utilisés (25)
Catégorie
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
"id": "UVicuO5jaXNi4v7p",
"meta": {
"instanceId": "0c0152906db501342bff43248e195ce72d840c2129116cc346a96ce2be086bbd",
"templateCredsSetupCompleted": true
},
"name": "HelpDesk Workflow",
"tags": [],
"nodes": [
{
"id": "1b51fec7-a603-4e45-bff6-5921f1c62c9b",
"name": "Envoyer le message initial",
"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": "Envoyer un message",
"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": "Note adhésive3",
"type": "n8n-nodes-base.stickyNote",
"position": [
2800,
260
],
"parameters": {
"color": 6,
"width": 488,
"height": 404,
"content": "\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": "Note adhésive4",
"type": "n8n-nodes-base.stickyNote",
"position": [
2380,
260
],
"parameters": {
"color": 2,
"width": 417,
"height": 437,
"content": "\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": "Note adhésive6",
"type": "n8n-nodes-base.stickyNote",
"position": [
2700,
740
],
"parameters": {
"color": 6,
"width": 365,
"height": 559,
"content": "\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": "Note adhésive7",
"type": "n8n-nodes-base.stickyNote",
"position": [
2140,
880
],
"parameters": {
"color": 5,
"width": 545,
"height": 279,
"content": "\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": "Note adhésive9",
"type": "n8n-nodes-base.stickyNote",
"position": [
1280,
260
],
"parameters": {
"color": 2,
"width": 455,
"height": 497,
"content": "\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": "Agent IA2",
"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": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
3080,
740
],
"parameters": {
"color": 5,
"width": 300,
"height": 420,
"content": "\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": "Note adhésive5",
"type": "n8n-nodes-base.stickyNote",
"position": [
3400,
740
],
"parameters": {
"color": 4,
"width": 500,
"height": 400,
"content": "\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": "Handbook",
"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": "Aucune opération, ne rien faire",
"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": "Envoyer un email",
"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": "Supprimer le message initial",
"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": "Note adhésive8",
"type": "n8n-nodes-base.stickyNote",
"position": [
1740,
260
],
"parameters": {
"color": 5,
"width": 640,
"height": 500,
"content": "\n\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": "Note adhésive2",
"type": "n8n-nodes-base.stickyNote",
"position": [
3320,
260
],
"parameters": {
"color": 2,
"width": 511,
"height": 431,
"content": "\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": "Note adhésive1",
"type": "n8n-nodes-base.stickyNote",
"position": [
3940,
760
],
"parameters": {
"color": 3,
"width": 340,
"height": 420,
"content": "\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": "Note adhésive10",
"type": "n8n-nodes-base.stickyNote",
"position": [
3400,
1160
],
"parameters": {
"color": 4,
"width": 500,
"height": 400,
"content": "\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
}
]
]
}
}
}Foire aux questions
Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - Wiki interne, Chatbot IA
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Explorer les nœuds n8n dans la bibliothèque de références visuelles
Explorer les nœuds n8n dans la base de références visuelles
If
Ftp
Set
+
If
Ftp
Set
113 NœudsI versus AI
Autres
构建用于Slack候选人评估deAI驱动chatbot
AI简历analyse与候选人评估:SlacketGoogle表格intégration
If
Code
Slack
+
If
Code
Slack
29 NœudsTrung Tran
Chatbot IA
Créer un navigateur de données Snowflake interactif avec l'interface de chat GPT-4o et des rapports visuels
Créer un explorateur de données Snowflake interactif avec interface de chat GPT-4o et rapports visuels
If
Set
Webhook
+
If
Set
Webhook
28 NœudsMark Shcherbakov
Wiki interne
Assistant personnel AI multi-agents avancé (250+ capacités de tâches, WhatsApp + GPT)
Assistant personnel multi-agent avancé IA (250+ tâches, WhatsApp + GPT)
Set
Switch
Whats App
+
Set
Switch
Whats App
213 NœudsElectrabot
Productivité personnelle
Robot de vente WhatsApp basé sur l'IA avec fonctionnalité de requête Google Sheets
Automatisation des ventes WhatsApp avec DeepSeek AI, Google Sheets et notifications par Gmail
If
Webhook
Gmail Tool
+
If
Webhook
Gmail Tool
10 NœudsAhmed Saadawi
Nurturing de leads
Chatbot de support de page Facebook alimenté par l'IA : réponses automatiques et traitement client intelligent
utilisationGPT-4.1deFacebook Messengerchatbot,支持人工升级
If
Set
Wait
+
If
Set
Wait
32 NœudsSpaGreen Creative
Chatbot de support
Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds25
Catégorie2
Types de nœuds11
Description de la difficulté
Auteur
Karam Ghazzi
@karamghazziLiens externes
Voir sur n8n.io →
Partager ce workflow