Facebook Messenger API未触发messaging webhook问题求助
针对实际消息不触发Webhook,但手动测试、其他钩子正常的情况,可按以下步骤排查:
确认页面与应用的绑定关系
进入Facebook页面的「设置」→「高级消息功能」,检查绑定的应用ID是否和当前配置Webhook的应用一致。若绑定了其他应用,消息事件会流向对应应用,而非当前Webhook。验证页面订阅的应用和字段
调用GET /{page-id}/subscribed_apps接口,返回结果中必须包含当前应用ID;同时调用GET /{app-id}/subscriptions?object=page,确认fields列表包含messages、messaging_postbacks等需要的事件类型,且active为true。检查消息类型和触发条件
- 测试时发送普通文本消息,避免发送系统自动回复、欢迎语或模板消息,这类消息可能不会触发
messages钩子; - 确认页面未开启「仅回复已关注用户」限制,未关注用户的消息可能被过滤;
- 检查用户发送消息时是否处于页面的「黑名单」或「限制列表」中,这类用户的消息不会触发Webhook。
- 测试时发送普通文本消息,避免发送系统自动回复、欢迎语或模板消息,这类消息可能不会触发
排查Facebook端事件日志
进入应用的Webhook设置页面,查看「Recent Activity」(若有),确认是否有消息事件被Facebook生成但未发送到你的服务器。如果有事件记录但服务器未收到,可能是网络或防火墙问题;如果无事件记录,说明Facebook未生成该事件,需检查页面/应用配置。重置Webhook订阅状态
先发送DELETE /{page-id}/subscribed_apps取消当前页面的应用订阅,再重新发送POST /{page-id}/subscribed_apps,请求体指定subscribed_fields为messages,messaging_reactions等需要的字段。有时候订阅状态异常会导致事件不触发,重置可解决。检查权限细节
确认应用已获得pages_messaging权限(针对页面消息),而非仅messaging权限(针对用户间消息)。进入应用的「权限与审核」页面,查看权限的具体范围是否覆盖页面消息触发。
内容的提问来源于stack exchange,提问作者AlphaWulf

