
做出来是什么
一个 Facebook Messenger 聊天机器人,24 小时自动回复每位访客的消息,背后是接了 Facebook 商业主页的 AI Agent via n8n。客户发消息,30 秒内收到一条有上下文理解的智能回复——不管你人在不在电脑前。
架构
Facebook Messenger 消息到达
↓
n8n Webhook(GET + POST — 开启"允许多种 HTTP 方法")
↓
IF 节点 — hub.mode = "subscribe" 且 hub.verify_token = [你的 token]
├── TRUE → 用 hub.challenge 响应 Webhook(验证)
└── FALSE → 从 POST body 里提取消息
↓
AI Agent 节点(OpenRouter)
— 读取发送者 ID + 消息内容
— 生成有上下文的回复
↓
HTTP Request → Facebook Graph API
POST /me/messages → 把回复发给发送者
第一步 — 创建 Facebook 开发者应用
打开 developers.facebook.com,没有账号就先注册。 点击 My Apps → Create App。
应用配置:
App type: Business App name: [你的业务名] AI 助手 Portfolio: 选自己的,或者"No business portfolio selected"
注意:名字不用纠结,后面随时可以改。
第二步 — 把应用切换到 Live 模式(90% 的教程都跳过了这步)
应用默认是开发模式——只有你能测。普通客户根本没法用,必须切换到 Live。 切换之前需要填一个隐私政策 URL,Facebook 会自动校验。 最快的方法:去 termsfeed.com 生成一个免费的隐私政策,把 URL 复制过来。 在应用设置里:
找到"Privacy Policy URL"字段 → 粘贴你的 URL 把顶部的模式开关从 Development 切换到 Live
省去这步的话,机器人只有你自己能收到回复,客户发的消息会静默失败。
第三步 — 创建 n8n Webhook
打开 n8n 面板 → 新建 Workflow → 添加 Webhook 触发节点。 关键配置:
Allow Multiple HTTP Methods: ON ← 大部分人都会漏掉这个 HTTP Method: GET 和 POST 都要选 Respond: Using 'Respond to Webhook' Node
"允许多种 HTTP 方法"这个开关是核心——Facebook 验证握手用 GET,实际消息用 POST,都打同一个 Webhook 地址。没有这个就得搭两个 Webhook,验证还会失败。 从 Webhook 节点复制 Production URL,下一步贴到 Facebook。
第四步 — 在 Facebook 应用里添加 Messenger
回到 Facebook 开发者后台:
找到 Products 部分 → 点击 Add Product 找到 Messenger → 点击 Set up
在 Messenger 配置里,Webhook 设置:
Callback URL: [粘贴你的 n8n Production URL] Verify Token: AI-chatbot(或者你随便设一个字符串——Step 5 会用到)
点击 Verify and Save,Facebook 会发一个 GET 请求到你的 Webhook 确认可达。 订阅消息事件:
messages: ON message_reads: ON
生成 Page Access Token:
从下拉菜单选你的商业主页 点击 Generate Token 马上复制——这个 token 只显示一次 妥善保存,Step 7 发消息需要用到
点击你的主页名旁边的 Add Subscriptions,把主页订阅到这个 Webhook。
第五步 — 验证握手(90% 的人卡在这里)
Facebook 通过三个查询参数发 GET 请求验证 Webhook:
hub.mode = "subscribe" hub.verify_token = [你在 Facebook 设的 token] hub.challenge = [Facebook 随机生成的字符串,需要原样返回]
n8n 工作流必须精确返回 hub.challenge 的值,否则 Facebook 拒绝 Webhook,后续全部失效。 在 Webhook 后面加一个 IF 节点:
条件 1: {{ $json.query['hub.mode'] }} 等于 subscribe
条件 2: {{ $json.query['hub.verify_token'] }} 等于 AI-chatbot
两个条件都必须为 TRUE
TRUE 分支——加一个"Respond to Webhook"节点:
Respond with: Text
Response body: [从 Fixed 切换到 Expression 模式]
Expression: {{ $json.query['hub.challenge'] }}
把 challenge 字符串原样返回给 Facebook,验证完成。这步不过,后面什么都跑不了。 测试方法:保存 Workflow,点击 Execute Workflow,然后回 Facebook 点 webhook 配置里的 Verify and Save。验证失败就检查 IF 条件是否精确匹配 Facebook 发的参数名(注意是点,不是下划线:hub.mode)。
第六步 — 从 POST 请求里提取消息
客户发消息时,Facebook 会往 Webhook 发一个 POST 请求,消息内容嵌套在 JSON body 里:
{
"entry": [{
"messaging": [{
"sender": { "id": "发送者 Page 级别 ID" },
"recipient": { "id": "你的 Page ID" },
"timestamp": 1234567890,
"message": {
"mid": "消息 ID",
"text": "你好,请问这个还有货吗?"
}
}]
}]
}
在 IF 节点的 FALSE 分支(不是验证的 POST 请求),加一个 Set Fields 节点提取字段:
sender_id: {{ $json.body.entry[0].messaging[0].sender.id }}
message_text: {{ $json.body.entry[0].messaging[0].message.text }}
这两个字段传给 AI Agent。
第七步 — AI Agent 节点
添加 AI Agent 节点,接入 OpenRouter 凭证。
Input: {{ $json.message_text }}
System prompt,复制这段:
你是[你的业务名]的客服助手。 负责回复 Facebook Messenger 里潜在客户和老客户的消息。 语气:友善、专业、有帮助。别像机器人。 关于我们的业务: [填写:卖什么、公开价格、营业时间、 地址、主要服务——客户常问什么就填什么] 如果答不上来,告诉客户: "这个问题我会转给[人名],工作时间内通常几小时内会回复您。" 不要瞎编不确定的信息。 回复简洁,2-4 句话就够了。
根据你的具体业务定制这个 prompt,信息越具体回复质量越高。把常见 FAQ、价格档位(如果公开)、响应时间承诺都加进去。
第八步 — 通过 Facebook Graph API 发回复
加一个 HTTP Request 节点。
Method: POST
URL: https://graph.facebook.com/v18.0/me/messages Headers: Authorization: Bearer [你的 Page Access Token] Content-Type: application/json
Body(JSON):
{
"recipient": {
"id": "{{ $('Set Fields').first().json.sender_id }}"
},
"message": {
"text": "{{ $json.output }}"
}
}
把 [你的 Page Access Token] 换成 Step 4 生成的 token。 sender_id 把回复定向到发消息的那个人,$json.output 是 AI Agent 返回的内容。
第九步 — 激活并测试
把 Workflow 右上角的 Active 开关打开(变蓝)。 打开你的 Facebook 商业主页,用个人账号给自己主页发一条消息。等待 15-30 秒,应该收到一条 AI 回复。 收不到就去 n8n 的 Executions 标签页看执行日志,每个节点完成情况一目了然。
常见问题
Facebook 验证一直失败:IF 节点条件没有精确匹配 Facebook 的查询参数。参数名区分大小写,是 hub.mode 和 hub.verify_token(点,不是下划线)。还要确认 Respond to Webhook 节点在 TRUE 分支,不是 FALSE。
消息收到了但没回复发出:Page Access Token 过期或无效了。Facebook 主页 token 会过期——去 Facebook 开发者后台重新生成,更新 HTTP Request 节点。同时确认 token 有 pages_messaging 权限。
AI Agent 正常回复但 Graph API 返回 403:应用没有开启 pages_messaging 权限。去 App Settings → Permissions and Features → 搜索 pages_messaging → Request permission。 工作流触发了主页帖子而非消息:订阅了多余的事件。Facebook Messenger Webhook 设置里只保留 messages 和 message_reads,把 feed、comments 等其他事件类型关掉。
n8n 收到 POST 但 entry[0].messaging 是 undefined:Facebook 偶尔会发其他类型的 Webhook 事件(送达回执、回声消息)。在 AI Agent 前再加一个 IF 条件:检查 $json.body.entry[0].messaging[0].message.text 存在且不为空。
运行成本
OpenRouter + GPT-4 mini:大约每条回复 $0.001。每月 1000 条客户消息,API 费用约 $1。 n8n:自建免费,云端有免费试用。 Facebook API:免费。
整套聊天机器人基础设施,大部分小企业每月成本不到 $7——比漏掉一个客户的损失少多了。
想做一个带记忆的版本(记住每个用户的对话历史)?留言告诉我——这是自然的下一步,记忆节点配置很愿意分享。