호텔 프론트 데스크 WhatsApp 접대 시스템
고급
이것은Support Chatbot, AI Chatbot분야의자동화 워크플로우로, 18개의 노드를 포함합니다.주로 Code, Redis, WhatsApp, MySqlTool, Agent 등의 노드를 사용하며. WhatsApp, Gemini 모델 전환, Redis, Google Sheets를 통한 호텔 프론트 데스크 시스템 통합
사전 요구사항
- •Redis 서버 연결 정보
- •MySQL 데이터베이스 연결 정보
- •Google Sheets API 인증 정보
- •Google Gemini API Key
사용된 노드 (18)
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"meta": {
"instanceId": "07df66e33836083697e8bd7e53a57a2a1f404ad7aabcc82daa752a2b5a254167"
},
"nodes": [
{
"id": "2ccdee26-1db9-4717-b1ad-79651d7d65dc",
"name": "스티키 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
-368,
-96
],
"parameters": {
"color": 4,
"width": 336,
"height": 224,
"content": "💬 Workflow Overview\nThis workflow acts as an AI receptionist for hotels, built on n8n.\nGuests can message the hotel via WhatsApp, and the system automatically replies using AI with real booking or pricing details.\n\nIt combines WhatsApp → AI Agent → Database → WhatsApp in one seamless loop."
},
"typeVersion": 1
},
{
"id": "750f8f4d-35dd-4a82-90fd-0ef01a89888b",
"name": "AI 에이전트",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1456,
-16
],
"parameters": {
"text": "={{ $('WhatsApp Trigger').item.json.messages[0].text.body }}",
"options": {
"systemMessage": "You are a helpful AI assistant tasked with answering questions about hotel bookings.\nYou have access to a MySQL database with tables like 'bookings', 'guests', 'rooms', etc.\n\nIMPORTANT SECURITY RULE: YOU ARE STRICTLY FORBIDDEN FROM PERFORMING ANY DATABASE WRITE OPERATIONS (INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, etc.).\nYou must ONLY generate valid SQL SELECT statements.\n\nWhen a user asks a question, translate it into an appropriate SQL SELECT query."
},
"promptType": "define"
},
"retryOnFail": false,
"typeVersion": 2
},
{
"id": "1a267886-51fa-4500-ab95-6200cc512a1a",
"name": "심플 메모리",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
1600,
192
],
"parameters": {
"sessionKey": "={{ $('WhatsApp Trigger').item.json.contacts[0].wa_id }}",
"sessionIdType": "customKey"
},
"typeVersion": 1.3
},
{
"id": "75cab8e8-7d1d-4730-a4b4-f9ba7f4f651e",
"name": "Google Gemini 채팅 모델",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
1280,
384
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"id": "2CxiwuZKBBT7X4pw",
"name": "Google Gemini(PaLM) Api account"
}
},
"typeVersion": 1
},
{
"id": "c3229f34-a2d5-4472-b54d-9c960a3baa0f",
"name": "가격 정책",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
1728,
192
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/13yvxKTOWC4lgMLPWtVW_RELRZWdZHwUon_xOk4rF1X0/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "13yvxKTOWC4lgMLPWtVW_RELRZWdZHwUon_xOk4rF1X0"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "CDun7Si7Sf8O9FcN",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "0ab80c8e-e0ae-48d3-ace7-7afa25cdadc1",
"name": "Google Gemini 채팅 모델1",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
1456,
384
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"id": "Vhf40F3r42Vi7ZiS",
"name": "akzzyforza Gemini"
}
},
"typeVersion": 1
},
{
"id": "1f14faf9-f819-4a3d-9ca5-8dd35d814e95",
"name": "WhatsApp 트리거",
"type": "n8n-nodes-base.whatsAppTrigger",
"position": [
80,
-16
],
"webhookId": "dbb71091-820e-4c6f-b925-f1632b03d751",
"parameters": {
"options": {},
"updates": [
"messages"
]
},
"credentials": {
"whatsAppTriggerApi": {
"id": "c3SMCxa8j0SOP79z",
"name": "WhatsApp OAuth account Magic"
}
},
"typeVersion": 1
},
{
"id": "78022ecc-79b5-4f44-a209-155dd7c9e967",
"name": "모델 결정기",
"type": "n8n-nodes-base.code",
"position": [
752,
-16
],
"parameters": {
"jsCode": "let data;\ntry {\n data = $json.value ? JSON.parse($json.value) : null;\n} catch (e) {\n data = null;\n}\n\nlet modelIndex;\nlet shouldSet = false;\n\nif (data && typeof data.modelIndex === 'number') {\n // Alternate: flip the previous modelIndex\n modelIndex = data.modelIndex === 0 ? 1 : 0;\n shouldSet = true; // store the new one\n} else {\n // If no data, default to model 0 and store it\n modelIndex = 0;\n shouldSet = true;\n}\n\nreturn [\n {\n json: {\n modelIndex,\n shouldSet\n }\n }\n];\n"
},
"typeVersion": 2
},
{
"id": "707df459-df55-4686-b64e-3d99c1380e03",
"name": "메시지 전송",
"type": "n8n-nodes-base.whatsApp",
"position": [
2016,
-16
],
"webhookId": "df4ef464-f28e-441d-a9da-cfcd5f64c9c2",
"parameters": {
"textBody": "={{ $json.output }}",
"operation": "send",
"phoneNumberId": "723548604171403",
"additionalFields": {},
"recipientPhoneNumber": "={{ $('WhatsApp Trigger').item.json.messages[0].from }}"
},
"credentials": {
"whatsAppApi": {
"id": "9Il95VjdrW30AtrZ",
"name": "WhatsApp account Magic valley"
}
},
"typeVersion": 1
},
{
"id": "8a9c3637-4e4d-4445-9c3b-c584e24dbdb5",
"name": "MySQL에서 SQL 쿼리 실행",
"type": "n8n-nodes-base.mySqlTool",
"position": [
1856,
192
],
"parameters": {
"query": "{{ $('AI Agent').item.json.query }}",
"options": {},
"operation": "executeQuery"
},
"credentials": {
"mySql": {
"id": "3bfA94Mi8Qx2AnYZ",
"name": "MySQL account"
}
},
"typeVersion": 2.4
},
{
"id": "e1b30ed3-0ad7-417f-95de-752ab618c89a",
"name": "스티키 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
528,
-256
],
"parameters": {
"color": 5,
"width": 544,
"height": 176,
"content": "⚙️ Model Switching System\nThe workflow uses Redis to track each user’s AI model assignment.\nEach user is automatically routed to a different Google Gemini model, helping:\nDistribute traffic evenly across models\nReduce overall API cost\nKeep performance fast and stable\nThis makes it ideal for large-scale or high-traffic hotel systems."
},
"typeVersion": 1
},
{
"id": "13bbf86c-a3cb-4fec-b66f-9f8cd912f494",
"name": "스티키 노트2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1216,
-272
],
"parameters": {
"color": 6,
"width": 448,
"height": 208,
"content": "🧠 AI-Powered Hotel Assistant\nThe AI Agent interprets the user’s query and converts it into a read-only SQL SELECT statement.\n\nIt fetches information like room availability, guest check-ins, or booking data from MySQL, formats it naturally, and sends it back to the guest instantly on WhatsApp.\n\nThe workflow ensures safety (no write/delete queries) and delivers accurate, real-time hotel insights."
},
"typeVersion": 1
},
{
"id": "448b3618-9ccd-45d1-b905-bedf5540d877",
"name": "메시지 확인",
"type": "n8n-nodes-base.code",
"position": [
304,
-16
],
"parameters": {
"jsCode": "const msg = $json.messages?.[0]?.text;\n\nif (!msg) {\n // Exit early if no text message\n return [];\n}\n\nreturn items;\n"
},
"typeVersion": 2
},
{
"id": "f13bf318-7585-4787-a7ca-c083617a9e8f",
"name": "사용자 번호 저장",
"type": "n8n-nodes-base.redis",
"position": [
976,
-16
],
"parameters": {
"key": "=llm-user:{{ $('WhatsApp Trigger').item.json.contacts[0].wa_id }}",
"ttl": 3600,
"value": "={{ JSON.stringify({ modelIndex: $json.modelIndex }) }}",
"expire": true,
"operation": "set"
},
"credentials": {
"redis": {
"id": "7OPmbqMTy2N5aprY",
"name": "Redis account"
}
},
"typeVersion": 1
},
{
"id": "ca6ba30a-da25-42e2-b9c0-f30b0438ab8e",
"name": "사용자 번호 확인",
"type": "n8n-nodes-base.redis",
"position": [
528,
-16
],
"parameters": {
"key": "=llm-user:{{ $json.contacts[0].wa_id }}",
"options": {},
"operation": "get"
},
"credentials": {
"redis": {
"id": "7OPmbqMTy2N5aprY",
"name": "Redis account"
}
},
"typeVersion": 1
},
{
"id": "eeeac186-0627-45f9-a122-c5b0ac50a537",
"name": "모델 선택",
"type": "@n8n/n8n-nodes-langchain.modelSelector",
"position": [
1328,
192
],
"parameters": {
"rules": {
"rule": [
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "61173b3f-c09e-4efb-aae0-5af12aed3b1e",
"operator": {
"type": "number",
"operation": "equals"
},
"leftValue": "={{$json.modelIndex}}",
"rightValue": 0
}
]
}
},
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "6fd19391-2c15-42a6-82db-152976b1d6d3",
"operator": {
"type": "number",
"operation": "equals"
},
"leftValue": "={{$json.modelIndex}}",
"rightValue": 1
}
]
},
"modelIndex": 2
}
]
}
},
"typeVersion": 1
},
{
"id": "a317cb5a-56a2-41e7-8ab8-3a0758c09c11",
"name": "스티키 노트3",
"type": "n8n-nodes-base.stickyNote",
"position": [
448,
160
],
"parameters": {
"color": 3,
"width": 288,
"height": 192,
"content": "Redis Get Node\n\n🧩 What it does\nWhen a WhatsApp message arrives, this node checks Redis for a record matching that user’s WhatsApp ID.\nThat stored record tells the workflow which AI model this user was last assigned to (e.g., model 0 or model 1)."
},
"typeVersion": 1
},
{
"id": "86bfc5ea-e65c-4a6c-bd53-1ef3d473b97f",
"name": "스티키 노트4",
"type": "n8n-nodes-base.stickyNote",
"position": [
880,
160
],
"parameters": {
"color": 3,
"width": 288,
"height": 192,
"content": "Redis Set Node\n\n🧩 What it does\nAfter the Model Decider decides which model the user should use, this node stores that model index back into Redis.\nIt also sets an expiration (ttl = 3600 seconds → 1 hour), meaning the assignment lasts for one hour."
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"c3229f34-a2d5-4472-b54d-9c960a3baa0f": {
"ai_tool": [
[
{
"node": "750f8f4d-35dd-4a82-90fd-0ef01a89888b",
"type": "ai_tool",
"index": 0
}
]
]
},
"750f8f4d-35dd-4a82-90fd-0ef01a89888b": {
"main": [
[
{
"node": "707df459-df55-4686-b64e-3d99c1380e03",
"type": "main",
"index": 0
}
]
]
},
"eeeac186-0627-45f9-a122-c5b0ac50a537": {
"ai_languageModel": [
[
{
"node": "750f8f4d-35dd-4a82-90fd-0ef01a89888b",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"448b3618-9ccd-45d1-b905-bedf5540d877": {
"main": [
[
{
"node": "ca6ba30a-da25-42e2-b9c0-f30b0438ab8e",
"type": "main",
"index": 0
}
]
]
},
"78022ecc-79b5-4f44-a209-155dd7c9e967": {
"main": [
[
{
"node": "f13bf318-7585-4787-a7ca-c083617a9e8f",
"type": "main",
"index": 0
}
]
]
},
"1a267886-51fa-4500-ab95-6200cc512a1a": {
"ai_memory": [
[
{
"node": "750f8f4d-35dd-4a82-90fd-0ef01a89888b",
"type": "ai_memory",
"index": 0
}
]
]
},
"1f14faf9-f819-4a3d-9ca5-8dd35d814e95": {
"main": [
[
{
"node": "448b3618-9ccd-45d1-b905-bedf5540d877",
"type": "main",
"index": 0
}
]
]
},
"ca6ba30a-da25-42e2-b9c0-f30b0438ab8e": {
"main": [
[
{
"node": "78022ecc-79b5-4f44-a209-155dd7c9e967",
"type": "main",
"index": 0
}
]
]
},
"f13bf318-7585-4787-a7ca-c083617a9e8f": {
"main": [
[
{
"node": "750f8f4d-35dd-4a82-90fd-0ef01a89888b",
"type": "main",
"index": 0
}
]
]
},
"75cab8e8-7d1d-4730-a4b4-f9ba7f4f651e": {
"ai_languageModel": [
[
{
"node": "eeeac186-0627-45f9-a122-c5b0ac50a537",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"0ab80c8e-e0ae-48d3-ace7-7afa25cdadc1": {
"ai_languageModel": [
[
{
"node": "eeeac186-0627-45f9-a122-c5b0ac50a537",
"type": "ai_languageModel",
"index": 1
}
]
]
},
"8a9c3637-4e4d-4445-9c3b-c584e24dbdb5": {
"ai_tool": [
[
{
"node": "750f8f4d-35dd-4a82-90fd-0ef01a89888b",
"type": "ai_tool",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 지원 챗봇, AI 챗봇
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
AI와 인텐트 라우팅을 사용하여 왓스앱 고객 상담 처리
AI와 의도 경로를 사용하여 WhatsApp 고객 상담 처리
Code
Switch
Whats App
+
Code
Switch
Whats App
20 노드Hemanth Arety
지원 챗봇
AI 소셜 미디어 자동 응답 플러그인(Instagram, Facebook 및 WhatsApp)
Llama 3.2 기반 AI 소셜 미디어 메시지 자동 응답 시스템(Instagram, Facebook, WhatsApp)
Code
Switch
Webhook
+
Code
Switch
Webhook
12 노드Oneclick AI Squad
지원 챗봇
AI를 사용한 WhatsApp 및 Google 스프레드시트에서 레스토랑 예약 자동화
AI를 사용한 WhatsApp 및 Google 스프레드시트 레스토랑 예약 자동화
If
Filter
Whats App
+
If
Filter
Whats App
23 노드Basil Irfan
지원 챗봇
고급 다중 에이전트 AI 개인 비서 (250+ 작업 능력, WhatsApp + GPT)
高级多에이전트AI个人어시스턴트(250+任务能力,WhatsApp + GPT)
Set
Switch
Whats App
+
Set
Switch
Whats App
213 노드Electrabot
개인 생산성
음성 녹취, FAQ 및 예약安排를 포함한 WhatsApp 고객 지원 자동화
음성 전사, FAQ, 예약安排이 포함된 WhatsApp 고객 지원 자동화
If
Set
Switch
+
If
Set
Switch
23 노드AureusR
기타
기억, Google 스위트, 다양한 AI 연구 이미징을 통합한 WhatsApp 어시스턴트
기억, Google 패키지 및 다양한 AI 연구 이미징을 포함한 WhatsApp 어시스턴트 구축
If
Set
Code
+
If
Set
Code
71 노드Iniyavan JC
AI 챗봇