HelpDesk 워크플로우
고급
이것은Internal Wiki, AI Chatbot분야의자동화 워크플로우로, 25개의 노드를 포함합니다.주로 If, Slack, Webhook, GmailTool, GoogleDocsTool 등의 노드를 사용하며. GPT-4o와 이메일 에스컬레이션을 통합한 AI 기반 Slack 내부 헬프데스크
사전 요구사항
- •Slack Bot Token 또는 Webhook URL
- •HTTP Webhook 엔드포인트(n8n이 자동으로 생성)
- •Google 계정 및 Gmail API 인증 정보
- •Google Sheets API 인증 정보
- •OpenAI API Key
사용된 노드 (25)
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "UVicuO5jaXNi4v7p",
"meta": {
"instanceId": "0c0152906db501342bff43248e195ce72d840c2129116cc346a96ce2be086bbd",
"templateCredsSetupCompleted": true
},
"name": "HelpDesk Workflow",
"tags": [],
"nodes": [
{
"id": "1b51fec7-a603-4e45-bff6-5921f1c62c9b",
"name": "초기 메시지 전송",
"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": "메시지 전송",
"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": "스티커 노트3",
"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": "스티커 노트4",
"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": "스티커 노트6",
"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": "스티커 노트7",
"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 채팅 모델3",
"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": "스티커 노트9",
"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": "웹훅3",
"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": "부서 이메일2",
"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": "AI 에이전트2",
"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": "스티커 노트",
"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": "스티커 노트5",
"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": "핸드북",
"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": "작업 없음, 아무것도 하지 않음",
"type": "n8n-nodes-base.noOp",
"position": [
2440,
740
],
"parameters": {},
"typeVersion": 1
},
{
"id": "e263978a-a326-4f06-ac55-8bb0b282de11",
"name": "단순 메모리2",
"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": "이메일 전송",
"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": "초기 메시지 삭제",
"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": "스티커 노트8",
"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": "봇?",
"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": "스티커 노트2",
"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": "스티커 노트1",
"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": "헤더 목록",
"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": "스티커 노트10",
"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
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 내부 위키, AI 챗봇
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
시각화 참조 라이브러리에서 n8n 노드를 탐색
可视化 참조 라이브러리에서 n8n 노드를 탐색
If
Ftp
Set
+
If
Ftp
Set
113 노드I versus AI
기타
Slack 후보자 평가를 위한 AI 기반 챗봇 구축
AI 이력서 분석 및 후보자 평가: Slack과 Google 스프레드시트 통합
If
Code
Slack
+
If
Code
Slack
29 노드Trung Tran
AI 챗봇
GPT-4o 채팅 인터페이스와 시각적 보고서를 갖춘 인터랙티브 Snowflake 데이터 브라우저 생성
GPT-4o 채팅 인터페이스와 시각적 보고서를 포함한 인터랙티브 Snowflake 데이터 브라우저를 만듭니다.
If
Set
Webhook
+
If
Set
Webhook
28 노드Mark Shcherbakov
내부 위키
고급 다중 에이전트 AI 개인 비서 (250+ 작업 능력, WhatsApp + GPT)
高级多에이전트AI个人어시스턴트(250+任务能力,WhatsApp + GPT)
Set
Switch
Whats App
+
Set
Switch
Whats App
213 노드Electrabot
개인 생산성
Google Sheets 조회 기능을 갖춘 AI 기반 WhatsApp 판매 봇
DeepSeek AI, Google Sheets, Gmail 알림을 사용한 WhatsApp 영업 자동화
If
Webhook
Gmail Tool
+
If
Webhook
Gmail Tool
10 노드Ahmed Saadawi
리드 육성
AI 추동 페이스북 페이지 지원 챗봇: 자동 응답 및 지능형 고객 처리
GPT-4.1의 Facebook 메신저 채팅 로봇을 사용하여 인공지능 업그레이드 지원
If
Set
Wait
+
If
Set
Wait
32 노드SpaGreen Creative
지원 챗봇