当前位置:首页 > PHP教程 > php应用 > 列表

微信公众号之主动给用户发送消息功能

发布:smiling 来源: PHP粉丝网  添加日期:2021-11-27 16:05:53 浏览: 评论:0 

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

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

于是乎,当时脑子一热,想着没什么大的问题,so easy。模板消息不就得了。

后来在写代码的过程中却发现,并不行。

微信公众号中模板消息有很严格的限制。

1.必须有用户主动触发事件方可发送模板消息

2.模板消息一分钟只能发送六十条,超过六十条,不好意思。你懂。

于是乎,就想到了另一种方法:群发消息

但是一看文档中群发消息的限制,发现悲催了

群发消息服务号每个月最多只能发送4条。

而客户要求的是随时随地就能发送.这个4条明显不符合要求的。

怎么办呢?一度陷入困难之中。只好继续查看开发文档。

当看到客服功能时,突然想到,能不能用客服主动给用户发送消息呢?

于是乎,想到就去试验下。

首先,先在公众号后台功能模块中-》添加功能模块  添加   客服功能   模块

如图所示:

然后就进入代码环节了。

先添加客服,也可以公众号后台添加

  1. //先添加客服 
  2. function addkf() 
  3.  $token = getToken(); 
  4.  $url = 'https://api.weixin.qq.com/customservice/kfaccount/add?access_token='.$token
  5.  $data = '{ 
  6.    "kf_account" : "system@system"
  7.    "nickname" : "客服1"
  8.    "password" : "admin"
  9.  }'; 
  10.  echo https_request($url,$data); 

然后就是主动发送消息的方法

  1. //获取access_token的方法。 
  2. function getToken() 
  3.  $appid = 'appid'
  4.  $appsecret = 'appsecret'
  5.  $token_file = dirname(dirname(__FILE__)).'/data/token.txt'
  6.  if(!file_exists($token_file) || ((time() - filemtime($token_file)) > 7000)){ 
  7.   $TOKEN_URL="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret
  8.   $json=file_get_contents($TOKEN_URL); 
  9.   $result=json_decode($json); 
  10.   $ACC_TOKEN=$result->access_token; 
  11.   file_put_contents($token_file,$ACC_TOKEN); 
  12.  }else
  13.   $ACC_TOKEN = file_get_contents($token_file); 
  14.  } 
  15.  return $ACC_TOKEN
  16. //调用发送方法 
  17. function sendmsg($content,$openid
  18.  $token = getToken(); 
  19.  $url = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='.$token
  20.  $content = '感谢你的关注\n回复你厉害 \n例如<a href=\"http://www.baidu.com\">回复123456</a>'
  21.  $data = '{ 
  22.   "touser":"'.$openid.'"
  23.   "msgtype":"text"
  24.   "text"
  25.   { 
  26.     "content":"'.$content.'" 
  27.   } 
  28.  }'; 
  29.  https_request($url,$data); 
  30.  return true; 
  31. /** 
  32.  * request 请求 
  33.  */ 
  34. function https_request($url$data = null){ 
  35.  $curl = curl_init(); 
  36.  curl_setopt($curl, CURLOPT_URL, $url); 
  37.  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); 
  38.  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); 
  39.  if (!emptyempty($data)){ 
  40.   curl_setopt($curl, CURLOPT_POST, 1); 
  41.   curl_setopt($curl, CURLOPT_POSTFIELDS, $data); 
  42.  } 
  43.  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
  44.  $output = curl_exec($curl); 
  45.  curl_close($curl); 
  46.  return $output

使用的时候直接调用 sendmsg()方法传值就可以了。

最后上完成的图

如图所示,公众号可以给用户发送消息,而且发送的内容你可以使用html 标签哦

虽然这样感觉很方便,但是同样,微信公众平台对此也有限制。

1.用户必须关注公众号,方可收到信息。

2.用户只能连续收到   20   条客服消息。超过后用户就收不到消息,

超过后,用户必须   主动给公众号发送消息  。或者  点击菜单栏,这样20条消息的限制就会重置。

Tags: 微信公众号发送消息

分享到: