2026-10-14 · 原文发布日
WhatsApp 销售线索 AI 应答与打分
接收 WhatsApp Cloud API 的入站消息并处理 Meta 的 webhook 验证,按消息 ID 去重后在 Supabase 里查客户和对话历史,加载商品目录交给 OpenAI 代理判断意图并草拟简短回复,再按规则给线索打冷温热分:回复发回客户、对话存档,热线索或需要人工时发 Slack 提醒团队。回复语气、语言、打分阈值都可改。
原文要点
原文模板接收 WhatsApp Cloud API 入站消息并处理 Meta 的一次性 webhook 验证,按消息 ID 在 Supabase 去重,按手机号查或建客户记录并拉取近期对话,加载商品目录(仅前 30 条)后交给基于 gpt-4o-mini 的 OpenAI 代理判断意图、草拟简短回复,再按规则打分标为冷/温/热(默认阈值 70 和 40),回复发回客户、对话存档、更新 CRM 字段,热线索或需要人工时发 Slack 提醒。语气、语言、阈值和提醒条件均可改;模板附带 whatsapp_sales_agent_setup.sql 建表脚本。
这次做成什么
照着搭一条 WhatsApp 销售线索自动应答工作流:收消息→去重→查客户与历史→AI 草拟回复→规则打分→回复客户并存档→热线索提醒 Slack。本站独立编写一份系统提示词、一份建表 SQL 和一条测试 webhook 数据,便于先离线验证。
准备什么
- Meta Business 账号并开通 WhatsApp Cloud API,拿到 phone number ID 和访问令牌
- n8n 实例有公网可达的 webhook URL,供 Meta 回调
- Supabase 项目并建好 customers、conversations、products 三张表
- OpenAI API 凭据(模板使用 gpt-4o-mini)和已加入目标频道的 Slack 应用
- 产品和营业信息:商品名、价格、库存、配送/支付/退货/营业时间
具体怎么做
配置 webhook 与 Meta 验证
添加 Webhook 节点接收 POST。Meta 配置回调时会先发一次 GET 验证请求(带 hub.mode、hub.verify_token、hub.challenge),工作流需在验证分支比对 verify token 并原样返回 hub.challenge。在 Meta 后台把回调 URL 指向该 webhook,订阅 messages 字段,verify token 与工作流里保持一致。
规范化与去重
用 Code 节点把 WhatsApp 负载解析成干净记录:客户手机号、消息文本、message_id、时间戳;忽略状态回调(sent/delivered 等非消息事件)。在 Supabase 节点按 message_id 查询 conversations 表,已存在则直接结束流程,避免 Meta 重投造成重复回复。
查客户、拉历史、载目录
按手机号查 customers 表,不存在则插入新客户;再查该客户最近若干条 conversations 作为历史上下文。另用 Supabase 节点读取 products 表前 30 条(模板默认上限),连同 Client Config 里的营业信息(商家名、配送、支付、退货、营业时间)一起组装成代理输入。
AI 代理判断意图并草拟回复
添加 OpenAI Chat 节点(模型 gpt-4o-mini),系统提示词见下方材料,用户消息中放入客户消息、近期历史与商品目录摘要,要求输出 JSON:intent、reply、needs_human。Code 节点解析后进入打分。
规则打分并分流
在 AI Lead Scoring 节点按关键词和意图加分:出现购买意向、问价、问库存等加分,只问候不加分;默认 ≥70 为 Hot、40-69 为 Warm、<40 为 Cold,可按业务改阈值和关键词。打分写入对话记录。
回复、存档、提醒
用 HTTP Request 或 WhatsApp 节点把 reply 经 Cloud API 发回客户;把本轮对话写入 conversations 并更新 customers 的 CRM 字段。加分支节点:Hot 或 needs_human 为真时调用 Slack 节点向销售频道发提醒,包含客户手机号、意向摘要和最近消息。
可直接复制的材料
AI 销售代理系统提示词(本站独立编写)
本站独立编写的示例提示词,占位符需替换为工作流里的实际字段;语气、语言、长度可按模板说明自行调整。
你是 {{business_name}} 的 WhatsApp 销售助理。根据客户消息、近期对话历史和商品目录,完成两件事:判断意图并草拟一条简短回复。
规则:
1. 只根据商品目录和营业信息回答,目录里没有的商品或价格不要编造,回复“我让同事确认后回复您”。
2. 回复不超过 80 字,语气友好,可用少量表情,默认用客户使用的语言。
3. 涉及投诉、退款纠纷、大额定制或你拿不准的问题,把 needs_human 设为 true。
4. 只输出 JSON:{"intent": "browse|ask_price|ask_stock|purchase|complaint|other", "reply": "给客户的回复", "needs_human": true或false}
营业信息:配送 {{delivery}};支付 {{payment}};退货 {{returns}};营业时间 {{hours}}。Supabase 建表示例(本站独立简版)
本站独立编写的简化建表示例;原模板附带 whatsapp_sales_agent_setup.sql,请以模板内脚本为准核对字段。
create table customers (
id bigint generated always as identity primary key,
phone text unique not null,
name text,
lead_status text default 'Cold',
last_message_at timestamptz,
created_at timestamptz default now()
);
create table conversations (
id bigint generated always as identity primary key,
message_id text unique not null,
phone text not null,
direction text not null,
body text,
intent text,
score int default 0,
created_at timestamptz default now()
);
create table products (
id bigint generated always as identity primary key,
product_name text not null,
price numeric(10,2),
description text,
features text,
stock int default 0
);Meta webhook 测试数据(本站虚构)
本站虚构的入站消息负载,可在 webhook 节点用测试执行验证规范化与去重逻辑,不会触发真实发送。
{
"object": "whatsapp_business_account",
"entry": [{
"changes": [{
"field": "messages",
"value": {
"messages": [{
"id": "wamid.TESTDEMO001",
"from": "8613800000000",
"timestamp": "1730000000",
"type": "text",
"text": {"body": "你好,你们的蓝牙耳机多少钱?有现货吗?"}
}],
"metadata": {"phone_number_id": "100000000000001"}
}
}]
}]
}输入与输出示例
本站虚构演示,分值与阈值为示例设定,非该工作流的实测输出。
输入
客户(8613800000000)发来:“你好,你们的蓝牙耳机多少钱?有现货吗?”目录中蓝牙耳机 199 元、库存 42 件。对应输出
{"intent":"ask_price","reply":"您好!蓝牙耳机现价 199 元,目前有现货,今天下单明天就能发货~需要我帮您留一副吗?","needs_human":false};打分:问价+30、问库存+25,合计 55 → Warm,不触发 Slack 提醒。做完检查这些
- Meta 后台 webhook 验证一次性通过,回调状态正常
- 同一 message_id 重复投递时只处理一次,不重复回复
- 代理输出可解析为含 intent、reply、needs_human 的 JSON
- 打分后能正确标出 Cold/Warm/Hot,Hot 或 needs_human 时 Slack 频道收到提醒
- conversations 表按消息顺序存下双向对话,customers 的 CRM 字段同步更新
容易卡住的地方
- verify token 在 Meta 和工作流两边必须完全一致,否则验证失败
- 非消息类回调(送达回执等)若不忽略会污染去重和历史逻辑
- 目录只加载前 30 条商品,目录更大时要加按兴趣或关键词过滤,否则 AI 看不到全部商品
- Slack 应用必须先被邀请进目标频道,否则发消息报错
- gpt-4o-mini 调用和 WhatsApp Cloud API 可能产生费用,需自行核算
- 测试请用隔离的测试号码与凭据,不要拿真实客户对话练手
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Reply to WhatsApp sales leads with OpenAI, Supabase, and Slack alerts
- 原作者
- Bhaskar Gorati
- 原始发布日期
- 2026-10-14T06:22:32.078Z
- 来源
- https://n8n.io/workflows/20928