前一段时间项目中遇到一个稍微麻烦一点的问题。
即客户要求,他在后台编辑好文章后要主动给每个用户都发送消息,并可以让用户点击直接进入文章页面。
于是乎,当时脑子一热,想着没什么大的问题,so easy。模板消息不就得了。
后来在写代码的过程中却发现,并不行。
微信公众号中模板消息有很严格的限制。
1.必须有用户主动触发事件方可发送模板消息
2.模板消息一分钟只能发送六十条,超过六十条,不好意思。你懂。
于是乎,就想到了另一种方法:群发消息
但是一看文档中群发消息的限制,发现悲催了
群发消息服务号每个月最多只能发送4条。
而客户要求的是随时随地就能发送.这个4条明显不符合要求的。
怎么办呢?一度陷入困难之中。只好继续查看开发文档。
当看到客服功能时,突然想到,能不能用客服主动给用户发送消息呢?
于是乎,想到就去试验下。
首先,先在公众号后台功能模块中-》添加功能模块 添加 客服功能 模块
然后就进入代码环节了。
先添加客服。也可以公众号后台添加
//先添加客服 function addkf() { $token = getToken(); $url = \'https://api.weixin.qq.com/customservice/kfaccount/add?access_token=\'.$token; $data = \'{ "kf_account" : "system@system", "nickname" : "客服1", "password" : "admin", }\'; echo https_request($url,$data); }
然后就是主动发送消息的方法
//获取access_token的方法。
//调用发送方法
public boolean sendmsg(String content,String openid,String ACCESS_TOKEN)
{
String wxaction ="https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token="+ACCESS_TOKEN;
content = "系统消息\n"+content;
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()方法传值就可以了。
最后上完成的图
公众号可以给用户发送消息,而且发送的内容你可以使用html 标签哦
虽然这样感觉很方便,但是同样,微信公众平台对此也有限制。
1.用户必须关注公众号,方可收到信息。
2.用户只能连续收到 20 条客服消息。超过后用户就收不到消息,
超过后,用户必须 主动给公众号发送消息 。或者 点击菜单栏,这样20条消息的限制就会重置。