在 WhatsApp 停止接受普通回复之后,工单可能仍然处于打开状态。你的应用需要同时获取客户的最后活动时间和工单状态。
窗口何时打开和关闭?
客户的消息或来电启动一个 24 小时窗口。他们的下一条消息或来电会重置该计时器。
Meta 的客服窗口在计时器运行期间允许自由格式回复。你自己的回复不会延长窗口。
假设客户在上午九点发送了一条消息。如果没有进一步联系,窗口将在次日上午九点关闭。如果他们在中午发送了一条回复,截止时间就会推迟到次日中午。
客服人员稍后接手工单不会重启计时。保留客户的活动时间,以便编辑器选择合适的消息类型。
窗口关闭后我可以发送什么?
发送符合消息意图和客户授权的已审批模板。
模板可以邀请对方回复。对方的回复会打开一个新窗口;仅发送模板不会。
Meta 的消息政策仍适用于客户授权。模板审批并不等于获得了发送营销消息的许可。
窗口打开会改变你可以发送的内容,也可能改变 Meta 的计费方式,但不会消除消息类别:
Meta 将消息分为服务、工具、身份验证和营销四个类别。
| 场景 | 发送决策 | 计费检查 |
|---|---|---|
| 客户消息和自由格式回复 | 自由格式内容可在窗口内回复 | 查看 Meta 公布的服务消息处理方式 |
| 工具模板回复 | 使用已审批的工具类话术 | 检查其生效的 Meta 类别 |
| 营销或身份验证模板 | 即使窗口打开也保持其类别 | 使用 Meta 定价页面上的类别和市场规则 |
| 窗口关闭后的自由格式请求 | 改用已审批的模板 | 被拒绝的请求不产生消息创建费用 |
使用 Meta 公布的定价来查看类别和市场规则。不要将窗口打开视为通用豁免。
在窗口开放期间,Bird 支持从您自己的号码发送自由格式内容。Bird 托管的号码使用托管模板,因此即使窗口开放,它们也不会变为自由格式发送方。
Bird 如何拒绝窗口关闭后的请求?
当检查发现自由格式发送的窗口已关闭时,Bird 返回 422 及 E15044。
该请求错误发生在消息创建或计费之前。请使用已审批的模板,而不是重试相同的自由格式内容。
如果拒绝与近期的客户活动不符,保留请求详情并联系支持团队。被拒绝的请求没有已创建的消息标识符可供提交。
已接受的请求如果在发送前窗口关闭,仍可能在之后失败。消息将携带 service_window_expired,它将 Meta 的 131047 和旧版 470 代码映射为一个结果。
通过你的消息事件处理该延迟失败。与请求拒绝不同,它可能在计费之后发生。
为什么窗口关闭时 Bird 仍会接受请求?
当窗口检查无法确认窗口已关闭时,Bird 会放行请求。
查询失败因此不会自动拒绝合法的客户回复。接受意味着 Bird 未确认窗口已关闭,而非 Meta 一定会投递该消息。
窗口也可能在你的请求和实际发送之间发生变化。即使请求成功,也要跟踪后续的投递结果。
在排查失败时,检查消息返回的 cost。不要认为投递失败的消息就是免费的。
我应该如何设计回复流程?
在发送前,根据客户的活动时间选择内容类型。
监控重复的窗口失败,以发现到达发送阶段时已过期的回复。即使工单仍被视为打开状态,工单队列也可能需要更早的响应目标。
- 将客户的最后活动时间提供给回复编辑器。
- 仅在服务窗口打开时发送自由格式内容。
- 准备好已审批的模板,以便在窗口关闭后邀请客户回复。
- 分别处理
E15044和后续的service_window_expired结果。
简而言之
从客户的活动时间开始计算窗口。
客户的消息或来电启动窗口。他们的下一条消息或来电会将窗口重置为 24 小时。
窗口关闭后使用模板。
发送模板不会重新开启自由格式发送。客户的回复才会。
直接处理窗口关闭后的拒绝。
E15044表示 Bird 在创建或计费消息之前拒绝了请求。请改用已审批的模板。也要跟踪请求被接受后的失败。
已接受的请求仍可能以
service_window_expired失败。接受并不保证 Meta 端的窗口是打开的。