n8n沙龙预约预订代理
中级
这是一个Content Creation, Multimodal AI领域的自动化工作流,包含 13 个节点。主要使用 Twilio, TwilioTrigger, Agent, GoogleSheetsTool, LmChatOpenAi 等节点。 基于AI的沙龙预约系统,集成WhatsApp和Google Sheets
前置要求
- •Google Sheets API 凭证
- •OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"id": "OuMVyHH0IcL51eRb",
"meta": {
"instanceId": "9272721148ea09184b6bbb7ce6219dab088562dd450e2df8280d57c2e34c7d84",
"templateCredsSetupCompleted": true
},
"name": "n8n 沙龙预约预订代理",
"tags": [],
"nodes": [
{
"id": "a2bcb9ef-6210-4d3a-8017-0fc50924e417",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-64,
-128
],
"parameters": {
"text": "=[Identity]\n\nYou are an AI assistant for GlamourEdge Salon, a smart and helpful digital receptionist designed to handle service inquiries, manage bookings, and assist with appointment modifications or cancellations.\n\n[Style]\n\nSpeak in a warm, human tone, like chatting with a client on WhatsApp.\n\nRespond naturally, clearly, and respectfully.\n\nAlways return output in WhatsApp chat-friendly format:\n\nUse line breaks (\\n) for separate sentences.\n\nUse friendly, concise language.\n\nOptional emojis for casual friendliness (😊, 💇♀️, 📅, ⏰).\n\nKeep answers helpful, short, and human-like, never robotic.\n\nAlways polite and provide next steps.\n\n[Response Guidelines]\n\nAlways respond only after calling the appropriate tool.\n\nCall the tool according to the user’s intent (service info, stylist details, availability, booking, cancel, edit).\n\nIn StylistAvailableSlots Tool, always pass services as an array.\n\nStructure responses in conversational WhatsApp style, not lists.\n\nNever share or speak URLs.\n\nRefer to today as {{$now.day}} and current time as {{$now}}.\n\nRespect privacy: never repeat personal info unless necessary.\n\nUse phone number from {{ $json.data.from }} for booking.\n\nKeep replies short, friendly, and human-like.\n\n[Task & Goals]\n🔹 Service Inquiries\n\nCall SalonServices Tool to fetch current services.\n\nIf requested service unavailable → politely suggest valid services.\n\nWait for user confirmation before moving to stylists.\n\nIf confirmed → call StylistDetails Tool and ask if they want to check availability.\n\n🔹 Booking Appointments\n\nStep-by-step flow: service → stylist → time.\n\nCall StylistAvailableSlots Tool (services must be an array).\n\nSuggest only future slots.\n\nIf multiple services → stack them:\n\n“You can have this right after your haircut.”\n\nOnce slot chosen → confirm approximate end time (final confirmation only).\n\nBefore calling booking tool, verify:\n\nService chosen\n\nStylist chosen\n\nDate & Time confirmed\n\nUser name\n\nUser email\n\nUser phone: {{ $json.data.from }} (do not ask the user)\n\nIf any detail missing → ask politely first.\n\nWhen all details are ready → call UserSalonBooking Tool and confirm.\n\n🔹 Cancel Appointment\n\nAsk for phone number.\n\nCall GetUserAppointmentDetails Tool.\n\nConfirm details → ask reason → call UserCancelAppointment Tool.\n\n🔹 Edit Appointment\n\nAsk for phone number.\n\nCall GetUserAppointmentDetails Tool.\n\nConfirm existing appointment.\n\nAsk what they want to change (service, stylist, date/time).\n\nValidate with GetStylistAndServices Tool.\n\nIf valid → update via UpdateBooking Tool.\n\n[Error Handling / Fallback]\n\nStylist/service not found → suggest alternatives.\n\nSlot unavailable → suggest nearest future slot.\n\nBooking info incomplete → ask politely for missing details before tool call.\n\nSystem error → apologize and silently trigger transfer_call_tool.\n\n[WhatsApp Formatting Rules]\n\nAlways reply in WhatsApp chat style.\n\nWhen user selects multiple services → show them in WhatsApp with simple bullet points or numbers.\n\nUse line breaks for clarity.\n\nKeep messages friendly, short, and human-like.\n\nOptional emojis (😊, 💇♀️, 📅, ⏰).\n\nNo Markdown tables or lists; just plain text with natural line breaks.\n\n[User Input]\n\nHere is the user input:\n\n{{ $json.data.body }}",
"options": {},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "a0c064d7-8443-4e67-86cb-cb97f0707efd",
"name": "OpenAI 聊天模型",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-448,
64
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "mXmp9rMNs1e1paxm",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "3c8fe6e3-f40a-4d51-b442-40601141a28b",
"name": "简单记忆",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
-320,
144
],
"parameters": {
"sessionKey": "={{ $json.data.from }}",
"sessionIdType": "customKey",
"contextWindowLength": 10
},
"typeVersion": 1.3
},
{
"id": "cf9c618c-48de-43da-9bc4-c6287f3b41eb",
"name": "预订服务",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
352,
192
],
"parameters": {
"columns": {
"value": {
"Date": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Date', `send user selected date in this format:YYYY-MM-DD`, 'string') }}",
"Phone": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Phone', `Send user Phone number`, 'string') }}",
"Services": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Services', `Send user Services in array if user choose multiple services than pass in array, like [\"haircut\",\"spa\"] this type`, 'string') }}",
"Start_time": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start_time', `Send user Services Start Time in this format. hh:mm`, 'string') }}",
"Stylist_name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Stylist_name', `Send user selected stylist name`, 'string') }}",
"customer_name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('customer_name', `send user name`, 'string') }}"
},
"schema": [
{
"id": "Date",
"type": "string",
"display": true,
"required": false,
"displayName": "Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Phone",
"type": "string",
"display": true,
"required": false,
"displayName": "Phone",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Services",
"type": "string",
"display": true,
"required": false,
"displayName": "Services",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Start_time",
"type": "string",
"display": true,
"required": false,
"displayName": "Start_time",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Stylist_name",
"type": "string",
"display": true,
"required": false,
"displayName": "Stylist_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "customer_name",
"type": "string",
"display": true,
"required": false,
"displayName": "customer_name",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit?usp=drivesdk",
"cachedResultName": "Salon Booking manage"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "oztTa0ZzQpSyJzhB",
"name": "Shivangi-Google Sheet"
}
},
"typeVersion": 4.7
},
{
"id": "ed3cb5f0-d9d6-49fe-b3f6-c116568ffd80",
"name": "建议造型师",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
-64,
240
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1978384237,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit#gid=1978384237",
"cachedResultName": "SuggestStylist"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit?usp=drivesdk",
"cachedResultName": "Salon Booking manage"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "oztTa0ZzQpSyJzhB",
"name": "Shivangi-Google Sheet"
}
},
"typeVersion": 4.7
},
{
"id": "84636255-2f7a-4f51-aa01-f64e6970dc8b",
"name": "营业时间",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
224,
224
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1322339636,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit#gid=1322339636",
"cachedResultName": "openingHour"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit?usp=drivesdk",
"cachedResultName": "Salon Booking manage"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "oztTa0ZzQpSyJzhB",
"name": "Shivangi-Google Sheet"
}
},
"typeVersion": 4.7
},
{
"id": "9c0ed897-c90a-4fac-9c97-7b133bc62699",
"name": "沙龙服务",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
-192,
192
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1011822210,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit#gid=1011822210",
"cachedResultName": "Services"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit?usp=drivesdk",
"cachedResultName": "Salon Booking manage"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "oztTa0ZzQpSyJzhB",
"name": "Shivangi-Google Sheet"
}
},
"typeVersion": 4.7
},
{
"id": "7ee2db3a-980a-4357-9e8b-66c27b6f853c",
"name": "特定造型师详情",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
480,
144
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1861968928,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit#gid=1861968928",
"cachedResultName": "PerticullerStylistsDetails"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit?usp=drivesdk",
"cachedResultName": "Salon Booking manage"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "oztTa0ZzQpSyJzhB",
"name": "Shivangi-Google Sheet"
}
},
"typeVersion": 4.7
},
{
"id": "2dfde257-a813-40d4-8114-c5f35ab88d3e",
"name": "更新预订",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
592,
96
],
"parameters": {
"columns": {
"value": {
"Date": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Date', ``, 'string') }}",
"Phone": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Phone__using_to_match_', ``, 'string') }}",
"Services": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Services', ``, 'string') }}",
"Start_time": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start_time', ``, 'string') }}",
"Stylist_name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Stylist_name', ``, 'string') }}",
"customer_name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('customer_name', ``, 'string') }}"
},
"schema": [
{
"id": "Date",
"type": "string",
"display": true,
"required": false,
"displayName": "Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Phone",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Phone",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Services",
"type": "string",
"display": true,
"required": false,
"displayName": "Services",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Start_time",
"type": "string",
"display": true,
"required": false,
"displayName": "Start_time",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Stylist_name",
"type": "string",
"display": true,
"required": false,
"displayName": "Stylist_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "customer_name",
"type": "string",
"display": true,
"required": false,
"displayName": "customer_name",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Phone"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit#gid=0",
"cachedResultName": "Order Booking"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit?usp=drivesdk",
"cachedResultName": "Salon Booking manage"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "oztTa0ZzQpSyJzhB",
"name": "Shivangi-Google Sheet"
}
},
"typeVersion": 4.7
},
{
"id": "2437b396-4f00-4b9e-bdd3-079c966ddf96",
"name": "获取预订详情",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
96,
240
],
"parameters": {
"options": {},
"filtersUI": {
"values": [
{
"lookupValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('values0_Value', ``, 'string') }}",
"lookupColumn": "Phone"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit#gid=0",
"cachedResultName": "Order Booking"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit?usp=drivesdk",
"cachedResultName": "Salon Booking manage"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "oztTa0ZzQpSyJzhB",
"name": "Shivangi-Google Sheet"
}
},
"typeVersion": 4.7
},
{
"id": "66a50036-1492-46f8-9706-590c34ad413a",
"name": "发送短信/彩信/WhatsApp 消息",
"type": "n8n-nodes-base.twilio",
"position": [
448,
-128
],
"parameters": {
"to": "={{ $('Twilio Trigger').item.json.data.from.split(\"+\")[1] }}",
"from": "={{ $('Twilio Trigger').item.json.data.to.split(\"+\")[1] }}",
"message": "={{ $json.output }}",
"options": {},
"toWhatsapp": true
},
"credentials": {
"twilioApi": {
"id": "6iQoIInPmlEmV6R4",
"name": "Twilio account"
}
},
"typeVersion": 1
},
{
"id": "322c4e17-01a7-470e-83e6-e0125613d486",
"name": "Twilio 触发器",
"type": "n8n-nodes-base.twilioTrigger",
"position": [
-560,
-128
],
"webhookId": "f4df2914-0891-4e51-9971-5944df0592ef",
"parameters": {
"updates": [
"com.twilio.messaging.inbound-message.received"
]
},
"credentials": {
"twilioApi": {
"id": "6iQoIInPmlEmV6R4",
"name": "Twilio account"
}
},
"typeVersion": 1
},
{
"id": "1ca07c67-64a1-44db-9c7c-6959d7ca6b36",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
-576,
-288
],
"parameters": {
"width": 368,
"height": 112,
"content": "## 示例电子表格"
},
"typeVersion": 1
}
],
"active": true,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "96457bbe-2529-4af5-84f5-151700f052b1",
"connections": {
"AI Agent": {
"main": [
[
{
"node": "Send an SMS/MMS/WhatsApp message",
"type": "main",
"index": 0
}
]
]
},
"openingHour": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"Updatebooking": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"salonservices": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"SuggestStylist": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Twilio Trigger": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Booking services": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Getbookingdetails": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"perticullerstylistsdetails": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
中级 - 内容创作, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
基于 YouTube 视频的自主博客发布
使用 ChatGPT、Sheets、Apify、Pexels 和 WordPress 从 YouTube 视频自主发布博客
If
Set
Code
+18
80 节点Oriol Seguí
内容创作
带 Zep 记忆的购物助手
使用Zep记忆、GPT-4和Google表格构建个性化购物助手
Agent
Google Sheets Tool
Memory Zep
+3
8 节点InfyOm Technologies
客服机器人
1. 播放列表详情设置机器人副本
使用 Suno、GPT-4、Runway 和 Creatomate 创建 AI 生成的 YouTube 音乐播放列表
If
Set
Code
+22
203 节点Joseph
内容创作
组合式图像转视频助手
通过 Telegram、GPT-4.1 和 Seedance/Veo3 集成从图片生成视频
If
Wait
Telegram
+10
22 节点Automate With Marc
内容创作
AI个人助理 - 任务与邮件管理
在Telegram上使用GPT-4o个人助理管理任务、邮件和日历
Set
Code
Switch
+13
40 节点Ronnie Craig
内容创作
WhatsApp上的Jarvis
集成OpenAI、Gmail、日历、任务和费用追踪的WhatsApp生产力助手
Set
Filter
Switch
+16
53 节点Jitesh Dugar
内容创作
工作流信息
难度等级
中级
节点数量13
分类2
节点类型7
作者
InfyOm Technologies
@infyomWe are an AI Automation Agency focusing on various AI Automation Services like, workflow automation, shopify automation, chatbot developerment, custom ai agent development and more.
外部链接
在 n8n.io 查看 →
分享此工作流