微信公众号发消息给关注用户

前一段时间项目中遇到一个稍微麻烦一点的问题。

即客户要求,他在后台编辑好文章后要主动给每个用户都发送消息,并可以让用户点击直接进入文章页面。

于是乎,当时脑子一热,想着没什么大的问题,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条消息的限制就会重置。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值