客服在后台点回复,接口返回 errcode 45015,提示 response out of time limit,用户那边什么也没收到。日志里能对上时间点,这种反而好排。
公众号客服消息只能在用户最后一次交互后的 48 小时内下发,超时一律返回这个码。后台把回复任务丢进队列,排到几个小时之后才发,窗口早就关了。这一点先确认清楚,后面就不用反复试。
$last = cs_get_last_interact($openid);
if (time() - $last > 48 * 3600) {
return cs_send_sms($phone, $text);
}
cs_send_custom_msg($openid, $text);
「微信客服 45015」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。
报错里带路径的,先去看那个路径在不在、权限对不对。
处理上按这个顺序:发之前先查这个用户最后一次交互时间,超过 48 小时就别走客服消息;超窗改走模板消息或者短信,文案里说明去哪看回复;队列优先级提上来,客服的回复别和营销推送排一个队。
结果对不对很好判断,隔了两天的用户再回复时走短信,当天聊过的仍然收到微信消息。
