2026-10-02 · 原文发布日
预约确认、候补补位与回访提醒的诊所自动化
一个n8n付费模板(作者标价大于0),面向诊所等预约制场景:每15分钟扫描Google Calendar日程,结合Sheet里的客户、服务、候补和日志四张表,自动发出48小时确认与24小时提醒短信/邮件、空位释放后的候补分批邀约和定期回访。收到的短信或邮件回复由OpenAI判断意图并附原文依据,据此更新日志、删改日程事件;意图模糊或要改期的转前台人工,流程出错会发告警邮件。
原文要点
原模板为付费模板,需购买后获得,本站示例不是原工作流文件。按其说明:流程每15分钟扫描Google Calendar,并即时响应Twilio短信与Gmail邮件回复;从Google Sheets读取Clients、Services、Waitlist、Log四个页签;规划48小时确认、24小时提醒、空位释放后分批候补邀约和回访消息,先把计划动作追加进Log再经Twilio或Gmail发出;对收到的回复用OpenAI提取意图并附原文引用,据此更新Log、创建或删除日历事件;意图模糊或要求改期的邮件通知前台,运行失败发告警邮件。配置点包括Set Clinic Settings与Set Message Texts两个设置节点。
这次做成什么
用免费组件复刻其核心逻辑做练习:搭四张Sheet页签、写好确认/候补/回访三类文案模板和意图分类提示词,用一条合成短信回复走通“识别意图→更新Log→处理日历”的小循环。
准备什么
- n8n账号;Google Calendar、Google Sheets、Gmail的OAuth凭据
- OpenAI API凭据(分类回复用,费用另计)
- 可选Twilio账号与可收短信的号码;只练邮件渠道可跳过
- 一个含Clients、Services、Waitlist、Log四页签的Google Sheet
- 若复刻完整流程需购买原模板,界面与参数以原模板为准
具体怎么做
建四张Sheet页签
新建Google Sheet,页签命名为Clients、Services、Waitlist、Log。Clients列:姓名、邮箱、电话、首选渠道、退订状态;Services列:服务名、价格、时长分钟、recall_weeks回访周数;Waitlist列:客户、可接受时段、优先级;Log列:时间、类型、对象、内容、状态。填入下方合成测试数据。
定时扫描与计划动作
Schedule Trigger设每15分钟;Google Calendar节点读取未来48小时内事件;Code节点对照Log历史决定动作:无确认记录的发48小时确认、临近24小时未确认的发提醒、出现取消空位时按Waitlist优先级分批邀约、距上次服务满recall_weeks的发回访。所有计划动作先Append进Log再发送,形成可审计顺序。
发送渠道选择
按Clients的首选渠道和退订状态分支:短信走Twilio节点,邮件走Gmail节点;已退订的只记录不发送。文案从统一的设置区读取,见下方消息模板材料。
回复意图分类与处理
用Gmail Trigger(或Twilio webhook)收回复,先过滤未知号码和自动回复/休假回信,再把原文交给OpenAI分类,提示词见材料。确认类更新Log为已确认;取消类删除对应日历事件并触发候补邀约;接受候补的创建新日历事件;模糊或要求改期的发邮件给前台人工处理。
错误告警
给整条流程挂Error Trigger,失败时发告警邮件给指定负责人,邮件里带执行ID和失败节点名,替换掉模板中占位的YOUR_ALERT_EMAIL。
可直接复制的材料
OpenAI回复意图分类提示词(本站编写)
本站独立编写,{{reply_text}}替换为触发器变量;reschedule转人工的规则与原模板描述一致。
你是诊所前台助手。分析下面这条客户回复,输出JSON,不要输出其他内容:{"intent":"confirm|cancel|accept_waitlist|reschedule|question|opt_out|unclear","evidence":"从回复原文中逐字引用的关键短句","target_appointment":"回复涉及的预约线索,如日期时间,无则填null"}。判定规则:明确表示会来是confirm;明确说不来或取消是cancel;接受候补时段是accept_waitlist;想换时间是reschedule(一律转人工);只有疑问没有决定是question;要求别再联系是opt_out;无法判断是unclear。回复原文:
{{reply_text}}四页签合成测试数据
全部为虚构合成数据;电话为示例格式,非真实号码;列名需与所用模板节点映射一致。
Clients页签:
姓名,邮箱,电话,首选渠道,退订状态
林悦,linyue@example.com,+8613800000001,sms,否
周航,zhouhang@example.com,+8613800000002,email,否
Services页签:
服务名,价格,时长分钟,recall_weeks
常规洗牙,300,45,24
牙齿美白咨询,150,30,12
Waitlist页签:
客户,可接受时段,优先级
周航,工作日上午,1
Log页签首行:
时间,类型,对象,内容,状态
2026-10-01 09:00,确认请求,林悦,10月3日14:00常规洗牙预约确认,已发送三类消息模板(本站编写)
本站示例文案;原模板在Set Message Texts节点中自定义,措辞与变量名以购买的模板为准。
{
"confirm_48h": "【{诊所名}】您好{姓名},您预约了{日期时间}的{服务名}。回复"确认"保留预约,回复"取消"释放时段。",
"nudge_24h": "【{诊所名}】提醒:明天{时间}的{服务名}还未确认,请回复确认或取消。",
"waitlist_offer": "【{诊所名}】{日期时间}刚空出一个{服务名}时段,回复"接受"即可锁定,先到先得。",
"recall": "【{诊所名}】您好{姓名},距上次{服务名}已过{周数}周,点击{预约链接}安排复查。"
}输入与输出示例
本站虚构演示,非原作者运行结果;未实际调用任何API。
输入
Gmail Trigger收到林悦回复邮件:“好的,我10月3号会准时到,谢谢提醒。”此前Log中已有对她的48小时确认请求记录,日历中存在10月3日14:00洗牙事件。对应输出
OpenAI分类输出{"intent":"confirm","evidence":"我10月3号会准时到","target_appointment":"10月3号"};流程将Log中该确认请求状态更新为“已确认”,不改动日历事件,不通知前台;若回复为“能不能改到下周”则分类为reschedule,自动发邮件给前台并附原文引用。做完检查这些
- 计划动作在发送前先写入Log页签,发送失败时Log仍留有计划记录可追溯
- 确认类回复能让Log状态更新且日历事件保持不变
- 取消类回复触发日历事件删除并向Waitlist优先级最高的客户发出邀约
- 无法识别意图或要求改期的回复会产生发给前台的邮件且流程不自动改日程
容易卡住的地方
- 原模板需付费购买,本站为按公开说明复刻的练习方案,节点名与字段以原模板为准
- Twilio号码必须支持短信且webhook指向模板触发器,否则收不到回复
- 未过滤自动回复和休假邮件会让OpenAI把系统邮件分类进意图,浪费调用
- Twilio、OpenAI、Gmail发送量均可能产生费用,练习期建议只用邮件渠道
- 涉及真实患者信息时需注意隐私合规,测试一律用合成数据
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Reduce appointment no-shows and refill slots with Google Calendar, Sheets, Twilio, Gmail and OpenAI
- 原作者
- Luca
- 原始发布日期
- 2026-10-01T21:28:12.131Z
- 来源
- https://n8n.io/workflows/20316