site logo

Marico's space

用 n8n 搭一个 24/7 的 Facebook Messenger AI 客服机器人(零代码完整教程)

前端技术 2026-04-22 23:28:41 11

做出来是什么

一个 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——比漏掉一个客户的损失少多了。

想做一个带记忆的版本(记住每个用户的对话历史)?留言告诉我——这是自然的下一步,记忆节点配置很愿意分享。