微信开发之客服消息接口使用异常

微信开发,参考其官方接口文档微信开发者文档,其中消息管理部分定义了后台与微信用户的消息交互接口。
通常情况下,用户在公众号界面上的操作,包括发送消息,点击菜单等,对后台而言,都可将之视为一次简单的请求,作为请求的响应,后台程序,可以直接向用户返回各种形式的消息,这种向用户发送消息的形式被称为发送被动响应消息。然而有另外一种情况,即用户的操作并不是基于公众号界面,例如,用户在网页上抽奖或者消费了,我想通过公众号主动向用户发送某些提示消息,这时候之前的被动响应就无用武之地了。而客服消息接口就是用于应对这种情况。
客服消息接口的参数包括access_token,用户openid以及消息体。通常情况下,调用该接口会出现两种错误(通过官方接口测试工具可得):
(1){
“errcode”: 40001,
“errmsg”: “invalid credential, access_token is invalid or not latest hint: [szRisa0194vr29!]”
}
这种情况下,是access_token过期了,导致这种异常的原因在于,调用微信各类接口的access_token是全局性的,你可能有多个基于同一个微信公众号的应用需要独立调用微信各类接口,但必须保证,access_token在所有同类应用中的同步,一般可以通过定时器来获取刷新access_token,再将最新值写入到数据库中。所有相关应用都从数据库中获取该值,达到同步的目的。在我的另一篇博文中,提到过这个问题。
(2){
“errcode”:45015,
“errmsg”:response out of time limit or subscription is canceled
},这种异常比较隐秘,在于你所要推送消息的用户已经有很久没有和该公众号互动了,从而导致不能通过客服消息接口发送消息。不信,你试试主动在公众号界面随便发一句消息或者点一下菜单什么的,然后异常就没了。基于大部分用户都是僵尸粉,早就和公众号没有任何交互了,所以这么来说,调用客服消息接口来主动像用户推送消息的做法,值得商榷。这种情况下,我们只能换用模板消息接口来主动推送消息,具体实现可参考官方文档,我也将在之后的博客中共享出这两者的实现代码。

猜你喜欢

转载自blog.csdn.net/u013248535/article/details/53140994