AI PLAY玩法更新持续收录
← 回到更新流

2026-09-06 · 原文发布日

WhatsApp客户消息自动回复并预约会议

收到WhatsApp新消息后,流程先过滤非文本消息,把Cal.com预约链接、时区和发件人信息并入上下文,交给带短期对话记忆的Google Gemini智能体起草简短回复。客户表达意向时,智能体可以调用Cal.com查询空档并完成预约,还可选配TinyFish对提到的人或公司做网页调研。回复发送前会做空值和长度兜底,再由WhatsApp发回给原联系人。需要WhatsApp Cloud API、Gemini和Cal.com三套凭证。

原文要点

原模板(n8n 工作流19271,Naveen Choudhary)事实:WhatsApp Trigger接收新消息,先过滤非文本消息;把Cal.com预约链接、eventTypeId、时区、发件人信息并入上下文;由Google Gemini驱动的智能体(带短期对话记忆)起草简短回复,可调用Cal.com查空档与预约、可选TinyFish做人物/公司网页调研;发送前对回复做空值与长度兜底,再由WhatsApp节点发回原联系人。需WhatsApp Cloud API、Gemini、Cal.com三套凭证。原模板免费,各服务按自身规则计费。

这次做成什么

在n8n搭一条"WhatsApp客户自动回复+预约"流程:客户发来意向消息后,AI起草简短回复,客户想约时间时给出Cal.com空档并完成预约,回复发回原号码。以下配置值与提示词为本站独立编写的练习方案,节点界面细节需对照原模板核对,不声称已实测。

准备什么

  • Meta开发者账号与WhatsApp Cloud API应用,能把webhook指向你的n8n地址,且有测试号码
  • Google AI Studio的Gemini API Key
  • Cal.com账号、API Key,以及已创建的事件类型(记下eventTypeId)
  • n8n账号,可安装/使用WhatsApp、AI Agent相关节点

具体怎么做

  1. 接入WhatsApp触发与过滤

    在Meta开发者后台把Webhook回调URL指向n8n的WhatsApp Trigger节点地址并验证。流程第一节点用WhatsApp Trigger收消息;后接IF节点判断消息类型字段是否等于text,图片、语音等非文本消息直接走false分支忽略,避免AI处理空内容。

  2. 拼装预约上下文

    加一个Set/Code节点(可命名为Booking Config),往数据里写入:cal_link=你的Cal.com公开预约页URL、event_type_id=你的eventTypeId、timezone=Asia/Shanghai、lookahead_days=7、sender_phone=触发消息里的发件人号码、message_text=消息正文。这些字段供后续智能体和Cal.com工具调用引用。

  3. 配置Gemini智能体与记忆

    加AI Agent节点,聊天模型选Google Gemini并填入API Key凭据;挂一个短期对话记忆节点(按sender_phone作会话键,保留最近若干轮)。把下方提示词材料填入系统消息。工具挂载:Cal.com查空档与预约两个动作(用Cal.com凭据,参数引用Booking Config里的event_type_id和timezone);TinyFish调研为可选,没有其凭据就先不挂。

  4. 回复兜底与发送

    智能体输出后接一个Code节点做兜底:若回复为null或trim后为空则替换为"您好,请问您想预约哪个时间?我可以帮您查空档。";若超过300字符则截断到297字符加省略号。最后接WhatsApp发送节点,收件人引用sender_phone,正文引用兜底后的文本,用同一套Cloud API凭据发送。

可直接复制的材料

Gemini智能体系统提示词

本站独立编写;{cal_link}{timezone}{lookahead_days}用n8n表达式引用Booking Config字段;未提及的能力不要自行扩写进提示词。

你是预约助手,代表团队通过WhatsApp与客户沟通。规则:1) 回复用简短口语化中文,每条不超过150字;2) 客户只是问候或咨询时,直接回答并主动问是否需要预约;3) 客户表达预约意向时,先调用Cal.com查询未来{lookahead_days}天的空档(时区{timezone}),列出最多3个候选时间供客户选择;4) 客户选定某个时间后,调用Cal.com预约接口完成booking,并在回复中确认日期、时间和时区;5) 不要编造空档,工具返回什么就说什么;6) 不知道的信息如实说不知道,引导客户留邮箱以便人工跟进。我们的预约页:{cal_link}

Booking Config节点示例值

本站虚构示例;cal_link、event_type_id替换为你Cal.com后台真实值;sender_phone与message_text运行时由触发数据覆盖。

{
  "cal_link": "https://cal.com/your-team/30min",
  "event_type_id": "123456",
  "timezone": "Asia/Shanghai",
  "lookahead_days": 7,
  "sender_phone": "8613800000000",
  "message_text": "你好,想了解你们的服务,方便约个电话吗?"
}

一条测试消息数据

本站虚构测试号码与内容,用于在n8n里手动pin数据调试流程,非真实客户信息。

{"from":"8613800000000","type":"text","text":{"body":"你好,下周三下午有空吗?想约30分钟聊聊合作。"}}

输入与输出示例

本站虚构演示,未实际调用Meta/Cal.com接口,非原作者运行结果

输入

测试号码8613800000000发来:"你好,下周三下午有空吗?想约30分钟聊聊合作。",Cal.com返回下周三14:00与16:00两个空档

对应输出

智能体回复(在150字限制内,未触发截断):"下周三下午有两个空档:14:00或16:00(北京时间),都是30分钟。您选哪个?我帮您直接订好。"客户回复"14点"后,流程调用booking并回复:"已为您预约下周三14:00(Asia/Shanghai),30分钟,确认信息会发到Cal.com登记的邮箱。"

做完检查这些

  • 发一条图片消息,IF节点走false分支,流程不发任何回复
  • 发测试文本消息后,Booking Config里能读到cal_link、event_type_id、sender_phone、message_text四个字段
  • 模拟智能体返回空字符串时,Code兜底节点输出默认追问文案而非空白
  • 回复超过300字符时被截断并带省略号,WhatsApp发送节点收到的是截断后的文本
  • 连续两轮消息共用同一sender_phone会话键,第二轮能引用第一轮提到的日期

容易卡住的地方

  • Meta webhook未通过验证或n8n地址不可公网访问时,触发器永远收不到消息,需用隧道或云端n8n
  • WhatsApp Cloud API测试号码只能给已登记的收件号发消息,正式使用需完成商业验证
  • 24小时会话窗口外只能发模板消息,自由文本回复可能失败
  • Gemini凭据类型在n8n里可能显示为Google PaLM/Gemini,选错会鉴权失败
  • Cal.com的eventTypeId填错会让查空档返回空,智能体按提示词应如实说明而非编造
  • TinyFish为可选项,没有凭据时不要挂该工具,否则智能体调用会报错

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Reply to WhatsApp leads with Google Gemini and Cal.com booking
原作者
Naveen Choudhary
原始发布日期
2026-09-05T22:39:32.047Z
来源
https://n8n.io/workflows/19271