2026-10-01 · 原文发布日
漏接电话自动回短信,AI语音通话结束自动订日程
一个免费n8n模板,面向本地服务业(水管工、诊所、美发店等):Twilio来电状态webhook触发后,漏接的电话立即收到自动短信、记入Google Sheets并通知店主;另一条webhook接收Vapi或Retell语音AI的通话总结,用GPT-4o提取来电人姓名、电话、服务和时间,在Google Calendar创建预约、给客人发确认短信、记录通话并通知店主。两个CONFIG节点集中填商家名称、号码、表格和日历ID。
原文要点
原模板是免费n8n工作流,面向水管工、诊所、美发店等本地服务业:Twilio来电状态webhook触发,漏接来电立即自动回短信、记入Google Sheets并通知店主;第二个webhook接收Vapi或Retell语音AI的通话结束总结,用AI提取来电人姓名、电话、服务和时间并构建事件时间,然后在Google Calendar创建预约、给客人发确认短信、记录通话并通知店主。两个CONFIG节点集中填写商家名称、号码、表格ID、日历ID和预约链接。需要Twilio号码、Google账号、OpenAI API key,语音层需Vapi或Retell坐席。需自建MissedCalls和VoiceCalls两个表格标签页。
这次做成什么
搭好两条线索兜底链路:漏接电话秒回短信留住客户,AI语音通话结束后自动把预约写进日历。练习方案:先在n8n里用测试webhook和本站合成数据把两条链路分别跑通(短信内容、表格行、日历事件字段都对得上),再接真实Twilio和Vapi/Retell。
准备什么
- Twilio账号和一个可发短信的电话号码
- Google账号,能访问Google Sheets和Google Calendar
- OpenAI API key(原文写明用AI提取字段,标题指明GPT-4o)
- 语音层需要已配置好的Vapi或Retell坐席,能发送通话结束报告
- 已在Google Sheets建好MissedCalls和VoiceCalls两个标签页
具体怎么做
导入模板并连接四类凭据
从n8n模板库导入该工作流,依次连接Twilio、Google Sheets、Google Calendar、OpenAI凭据。Google凭据建议用测试用Google账号先行授权,确认能读写目标表格和日历。
填写两个CONFIG节点
按模板在两个CONFIG节点填入商家名称、商家通知号码、Google Sheet ID、Calendar ID和预约链接。先用本站的合成配置示例占位演练,确认每个下游节点读取的是CONFIG里的字段而不是写死的值。
演练漏接电话链路
先不绑定真实号码,向第一个webhook的测试URL POST本站示例的来电状态数据,检查:Twilio节点向来电号码发出回执短信、MissedCalls标签页新增一行、店主收到通知。确认后在Twilio控制台把号码的voice webhook指向工作流生产URL。
演练语音AI预约链路
向第二个webhook POST本站的通话总结示例,观察AI提取节点输出的姓名、电话、服务、时间四个字段,确认Google Calendar事件的起止时间构建正确、客人收到确认短信、VoiceCalls记录一行、店主收到通知。字段提取不稳定时,修改提取提示词的输出schema。
接真实服务并切换生产URL
把Vapi或Retell坐席的end-of-call报告地址指向第二个webhook的生产URL,Twilio号码webhook指向第一个;发布工作流后用真实手机打一次漏接电话、做一次语音通话,逐项核对四处的写入结果。
可直接复制的材料
CONFIG节点字段示例(本站编写)
字段名以原模板CONFIG节点为准,本站未逐项核对;号码为虚构占位。请先在模板里核对实际字段清单。
{"business_name": "示例水管维修", "owner_phone": "+8613800000000", "twilio_number": "+12125550100", "sheet_id": "替换为你的GoogleSheetID", "calendar_id": "替换为你的日历ID", "booking_link": "https://example.com/book"}通话总结字段提取提示词(本站编写,对应AI提取节点)
本站独立编写的练习提示词;{{$json.summary}}为占位。原模板提取姓名、电话、服务、时间四字段,schema可在模板中扩展。
你是通话记录整理员。从下面的语音通话总结中提取预约信息,只输出JSON:
{"caller_name": "来电人姓名,没有则为空字符串", "caller_phone": "来电号码", "service": "需要的服务项目", "preferred_time": "客人期望的预约时间,ISO 8601格式,无法确定则为空字符串", "notes": "一句话概括需求"}
不要编造总结里没有的信息;时间无法确定就留空,不要猜测。只输出JSON,不要其他文字。
通话总结:
{{$json.summary}}漏接电话webhook测试数据(JSON)
本站虚构的Twilio来电状态回调样式测试数据,字段以Twilio实际回调为准;CallStatus为no-answer模拟漏接。
{"CallSid": "CA00000000000000000000000000000001", "From": "+8613911111111", "To": "+12125550100", "CallStatus": "no-answer", "Direction": "inbound"}语音AI通话总结测试数据(JSON)
本站虚构的Vapi/Retell结束报告样式数据,实际字段名以你所用语音服务商的文档为准。
{"call_id": "test-call-001", "summary": "来电人李雷,电话+8613922222222,家里厨房水管漏水,希望本周四下午2点上门维修,地址已留在语音信箱。", "ended_reason": "customer-ended-call"}输入与输出示例
本站虚构演示,未实际运行;时间为假设的“本周四”,具体时区和事件时长构建逻辑以原模板节点为准。
输入
向第二个webhook POST:{"call_id": "test-call-001", "summary": "来电人李雷,电话+8613922222222,家里厨房水管漏水,希望本周四下午2点上门维修。", "ended_reason": "customer-ended-call"}对应输出
AI提取节点输出:{"caller_name": "李雷", "caller_phone": "+8613922222222", "service": "厨房水管漏水维修", "preferred_time": "2026-10-08T14:00:00+08:00", "notes": "厨房水管漏水需上门"};随后Calendar创建该时段事件,客人手机收到确认短信,VoiceCalls新增一行。做完检查这些
- POST漏接测试数据后,MissedCalls表格新增一行且包含来电号码和时间
- 漏接触发后Twilio向来电号码发出一条回执短信,内容含商家名称或预约链接
- POST通话总结后,Google Calendar出现对应时段的事件且标题含客人姓名或服务
- 改CONFIG里的商家名称后,短信和日历内容随之变化,证明下游都读CONFIG而非写死
容易卡住的地方
- 模板需要Twilio、Google和OpenAI多方账号,语音层还依赖Vapi或Retell,这些服务通常各自计费,模板免费不代表运行免费
- 原文要求先建MissedCalls和VoiceCalls两个标签页,缺失会导致表格写入失败
- AI提取的时间可能时区错误或留空,接真实客户前务必用多条测试总结验证时间构建逻辑
- webhook要用生产URL并发布工作流,测试URL只在编辑器监听时有效
- 客人手机号涉及个人信息,测试请用虚构号码,别拿真实客户数据演练
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Reply to missed calls and book appointments with Twilio, Google, and GPT-4o
- 原作者
- AI Automation Playbook
- 原始发布日期
- 2026-10-01T02:14:16.459Z
- 来源
- https://n8n.io/workflows/20250