You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js发送WhatsApp flows消息模板遇400错误求助

WhatsApp Flows消息发送400错误排查

以下是你提供的代码(修正了转义引号):

//rest of code

//flow
let message= {
  name: "lzgoflow",
  language: "en_US",
  category: "MARKETING",
  components: [
    {
      type: "body",
      text: "hello there",
    },
    {
      type: "BUTTONS",
      buttons: [
        {
          type: "FLOW",
          text: "lzgo",
          flow_id: 937561724890552,
          navigate_screen: "lzgo flow",
          flow_action: "navigate",
        },
      ],
    },
  ],
};

axios({
  method: "POST",
  url:
    "https://graph.facebook.com/v12.0/" +
    phone_number_id +
    "/messages?access_token=" +
    token,
  data: message,
  headers: { "Content-Type": "application/json" },
})
.then((response) => {
  console.log("Message sent successfully:", response.data);
})
.catch((error) => {
  console.error("Error sending message:", error.message);
});
}
res.sendStatus(200);
} else {
res.sendStatus(404);
}
});

出现400错误的常见排查点:

  • 缺失接收者字段:发送模板消息必须在message对象中添加to字段,值为接收者的WhatsApp手机号(需包含国家代码,格式如+1234567890),这是最容易遗漏的必填项。
  • API版本过低:v12.0版本不支持WhatsApp Flows功能,需要升级到v16.0及以上的API版本,否则会因不识别FLOW类型按钮返回400。
  • Flow参数不匹配:
    • navigate_screen需填写Flow定义中的屏幕ID,而非屏幕显示名称,检查Flow配置里的屏幕ID是否与代码中的值一致。
    • 确认flow_id已正确关联到当前使用的WhatsApp手机号,且Flow处于已发布状态。
  • 模板状态问题:MARKETING类模板需通过Meta的审核,若模板未审核通过或处于草稿状态,无法发送。
  • 权限与身份验证:验证access_token是否拥有whatsapp_business_messaging权限,phone_number_id是否属于当前授权的Business账户。
  • 请求格式问题:检查components中的type字段大小写,BUTTONS应为小写buttons(Meta API对字段大小写敏感)。

修改后的示例代码(补充必填字段并升级API版本):

let message= {
  to: "+1234567890", // 接收者手机号
  type: "template", // 明确指定消息类型为模板
  template: {
    name: "lzgoflow",
    language: { code: "en_US" }, // 语言字段格式应为对象
    category: "MARKETING",
    components: [
      {
        type: "body",
        text: "hello there",
      },
      {
        type: "buttons", // 改为小写buttons
        buttons: [
          {
            type: "FLOW",
            text: "lzgo",
            flow_id: "937561724890552", // 转为字符串类型
            navigate_screen: "your_flow_screen_id", // 替换为实际屏幕ID
            flow_action: "navigate",
          },
        ],
      },
    ],
  },
};

axios({
  method: "POST",
  url: `https://graph.facebook.com/v18.0/${phone_number_id}/messages?access_token=${token}`,
  data: message,
  headers: { "Content-Type": "application/json" },
})
.then((response) => {
  console.log("Message sent successfully:", response.data);
})
.catch((error) => {
  // 打印完整错误信息,包含Meta返回的具体错误描述
  console.error("Full error details:", error.response.data);
});

另外,在catch块中打印error.response.data可以获取Meta返回的具体错误提示,这能更精准定位问题。

内容的提问来源于stack exchange,提问作者Omar Jabban

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 22:08:17