如何通过WhatsApp Cloud API判断用户对话是否处于开放状态?
查询WhatsApp Business API对话开放状态的方案
目前WhatsApp Business API没有直接提供专门查询对话是否处于24小时开放窗口的接口,但可以通过以下两种方式自行判断:
1. 本地记录对话开放时间
- 当用户回复消息时,在你的系统中记录该用户的
wa_id以及当前时间,计算出24小时后的截止时间 - 之后每次要发送自由格式消息前,先对比当前时间和记录的截止时间:
- 如果当前时间在截止时间内,说明对话处于开放状态,可以发送自由消息
- 如果超过截止时间,必须使用审核通过的模板消息
2. 通过消息状态回调判断发送结果
- 发送自由格式消息后,WhatsApp会推送消息状态回调(Webhook),其中包含
status字段:- 若对话已超出24小时窗口,消息会被标记为
failed,同时错误码为1006(对应"Conversation expired, please send a template message") - 若对话仍开放,消息会正常进入
sent或delivered状态
- 若对话已超出24小时窗口,消息会被标记为
示例回调内容(错误场景):
{ "entry": [ { "changes": [ { "value": { "messages": [ { "id": "<WHATSAPP_MESSAGE_ID>", "status": "failed", "errors": [ { "code": 1006, "title": "Conversation Expired", "detail": "Conversation expired, please send a template message" } ] } ] } } ] } ] }
注意:第一种方式是主动预判,能避免无效发送;第二种是事后验证,适合补充校验场景。
内容的提问来源于stack exchange,提问作者Ivano Mercuri
相关产品推荐
相关产品推荐

