如何在WhatsApp Cloud API V20.0中禁用已读和已送达通知以避免Webhook被淹没
如何在WhatsApp Cloud API V20.0中禁用已读和已送达通知以避免Webhook被淹没
我完全懂你的困扰——被大量read和delivered通知淹没Webhook确实闹心,靠代码过滤终究是被动处理,不如从源头直接切断这些不必要的推送。好在Meta的WhatsApp Cloud API本身就支持通过配置订阅字段来控制推送的事件类型,具体操作可以分两种方式:
方法一:通过Meta开发者平台手动配置
这种方式直观简单,适合快速调整:
- 登录Meta for Developers平台,打开你的应用,进入WhatsApp > 配置页面(或者直接找到Webhook设置入口)。
- 在Webhook订阅区域,找到已订阅的
messages字段,点击「编辑」或「修改订阅」按钮。 - 在展开的子选项里定位到
statuses分类:- 如果你还需要保留其他状态通知(比如消息发送失败
failed、已发送sent),就单独取消勾选delivered和read这两个选项; - 要是完全不需要任何状态类通知,直接取消
statuses的整体勾选就行。
- 如果你还需要保留其他状态通知(比如消息发送失败
- 保存更改后,Meta API就不会再把这两类通知推送到你的Webhook了。
方法二:通过Graph API调用批量/自动化配置
如果需要批量调整或者用代码自动化配置,可以发送API请求来更新订阅字段:
curl -X POST "https://graph.facebook.com/v20.0/{PHONE_NUMBER_ID}/subscribed_apps" \ -H "Authorization: Bearer {ACCESS_TOKEN}" \ -H "Content-Type: application/json" \ -d '{ "subscribed_fields": ["messages", "messages_statuses(sent,failed)"] }'
- 把
{PHONE_NUMBER_ID}替换成你的WhatsApp电话号码ID,{ACCESS_TOKEN}换成有效的平台访问令牌; - 示例里的
messages_statuses(sent,failed)表示只订阅「已发送」和「发送失败」的状态通知,要是完全不需要状态通知,直接写["messages"]即可。
这样调整后,你的Webhook只会收到真正有价值的事件(比如用户发来的新消息),彻底摆脱冗余的read和delivered通知啦。
备注:内容来源于stack exchange,提问作者RG_RG
相关产品推荐
相关产品推荐

