这两天开发微信公众号自动回复功能,遇到的问题:
1. 回复多条消息
微信的被动回复用户消息
功能一次只能回复一条消息,给微信技术人员发了邮件问回复多条消息如何组织参数格式,回答让人不明就里,跟没说一样。网上看到有人建议用客服消息
接口,成功了。
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
body.setMsgType("XX");//根据需要设置具体消息类型,比如text,image
body.setXX("XX");//根据消息类型设置对应内容,比如text,image
body.setTouser(map.get("FromUserName"));
HttpEntity<String> httpEntity = new HttpEntity<>(JSON.toJSONString(body), headers);
ResponseEntity<String> responseEntity = restTemplate.postForEntity(
"https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={access_token}", httpEntity, String.class, accessToken);
循环执行就可以实现回复多条消息。
2. 微信公众平台的开发文档估计好久没更新了,文档中的接口返回参数和实际返回的有差别,使用时要多注意,比如获取素材列表
接口,返回参数有个thumb_media_id
自动,字段描述是图文消息的封面图片素材id(必须是永久mediaID)
,但是要获取这个封面图片素材,根据这个字段调用获取永久素材
接口,会返回乱码,而且实际是一个文件下载。列表返回参数中有个thumb_url
字段就是表示的封面图片素材,不需要再次去调接口获取了。
3. 就是标题中的问题
微信文档中写的日调用次数限制为500000次,实际手动调用了没多久就提示标题中的错误信息,以为是调用次数达到限制,所以调用了调用次数清零
接口,但还是报标题中的错误。上网搜了下,说是微信限制公众号给用户发消息连续20条就会报标题中的错误,解决方案换一个openId,或者等一段时间(我等了十几个小时都不行),或者用户给公众号随意回复一条消息(我使用的这种方案,解决了这个问题)。