微信公众号发消息给关注用户
前一段时间项目中遇到一个稍微麻烦一点的问题。
即客户要求,他在后台编辑好文章后要主动给每个用户都发送消息,并可以让用户点击直接进入文章页面。
于是乎,当时脑子一热,想着没什么大的问题,so easy。模板消息不就得了。
后来在写代码的过程中却发现,并不行。
1.必须有用户主动触发事件方可发送模板消息
2.模板消息一分钟只能发送六十条,超过六十条,不好意思。你懂。
于是乎,就想到了另一种方法:群发消息
但是一看文档中群发消息的限制,发现悲催了
群发消息服务号每个月最多只能发送4条。
而客户要求的是随时随地就能发送.这个4条明显不符合要求的。
怎么办呢?一度陷入困难之中。只好继续查看开发文档。
当看到客服功能时,突然想到,能不能用客服主动给用户发送消息呢?
于是乎,想到就去试验下。
然后就进入代码环节了。
然后就是主动发送消息的方法
//获取access_token的方法。
//调用发送方法
StringBuffer sb = new StringBuffer(); sb.append("{"); sb.append(""touser":"" + openid + "","); sb.append(""msgtype":"text","); sb.append(""text":{"); sb.append(""content":"" + content + """); sb.append("}"); sb.append("}"); String json = sb.toString(); try { URL uRl = new URL(wxaction);
HttpsURLConnection http = (HttpsURLConnection)uRl.openConnection();
http.setRequestMethod("POST");
http.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
http.setDoOutput(true);
http.setDoInput(true);
System.setProperty("sun.net.client.defaultConnectTimeout", "30000");
System.setProperty("sun.net.client.defaultReadTimeout", "30000");
http.connect();
OutputStream os = http.getOutputStream();
os.write(json.getBytes("UTF-8"));
InputStream is = http.getInputStream();
int size = is.available();
byte[] jsonBytes = new byte[size];
is.read(jsonBytes);
String result = new String(jsonBytes, "UTF-8");
System.out.println("请求返回结果:" + result);
os.flush();
os.close(); } catch (Exception e) { e.printStackTrace(); } return true; }
//调用发送方法 sendmsg(content,openid,wxACCESS_TOKEN); 时候直接调用 sendmsg()方法传值就可以了。
最后上完成的图
2.用户只能连续收到 20 条客服消息。超过后用户就收不到消息,