加入收藏 | 设为首页 | 会员中心 | 我要投稿 甘孜站长网 (https://www.0836zz.com.cn/)- 运维、物联设备、数据计算、智能推荐、云管理!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-07-14 10:56:11 所属栏目:PHP教程 来源:互联网
导读:前一段时间项目中遇到一个稍微麻烦一点的问题。 即客户要求,他在后台编辑好文章后要主动给每个用户都发送消息,并可以让用户点击直接进入文章页面。 于是乎,当时脑子一热,想着没什么大的问题,so easy。模板消息不就得了。 后来在写代码的过程中却发现,并
前一段时间项目中遇到一个稍微麻烦一点的问题。
 
即客户要求,他在后台编辑好文章后要主动给每个用户都发送消息,并可以让用户点击直接进入文章页面。
 
于是乎,当时脑子一热,想着没什么大的问题,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的方法。
 
function getToken()
 
{
 
 $appid = 'appid';
 
 $appsecret = 'appsecret';
 
 $token_file = dirname(dirname(__FILE__)).'/data/token.txt';
 
 if(!file_exists($token_file) || ((time() - filemtime($token_file)) > 7000)){
 
  $TOKEN_URL="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
 
  $json=file_get_contents($TOKEN_URL);
 
  $result=json_decode($json);
 
  $ACC_TOKEN=$result->access_token;
 
  file_put_contents($token_file,$ACC_TOKEN);
 
 }else{
 
  $ACC_TOKEN = file_get_contents($token_file);
 
 }
 
 return $ACC_TOKEN;
 
}
 
//调用发送方法
 
function sendmsg($content,$openid)
 
{
 
 $token = getToken();
 
 $url = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='.$token;
 
 $content = '感谢你的关注n回复你厉害 n例如<a href="http://www.baidu.com">回复123456</a>';
 
 $data = '{
 
  "touser":"'.$openid.'",
 
  "msgtype":"text",
 
  "text":
 
  {
 
    "content":"'.$content.'"
 
  }
 
 }';
 
 https_request($url,$data);
 
 return true;
 
}
 
/**
 
 * request 请求
 
 */
 
function https_request($url, $data = null){
 
 $curl = curl_init();
 
 curl_setopt($curl, CURLOPT_URL, $url);
 
 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
 
 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
 
 if (!emptyempty($data)){
 
  curl_setopt($curl, CURLOPT_POST, 1);
 
  curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
 
 }
 
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 
 $output = curl_exec($curl);
 
 curl_close($curl);
 
 return $output;
 
}
 
使用的时候直接调用 sendmsg()方法传值就可以了。
 
最后上完成的图
 
如图所示,公众号可以给用户发送消息,而且发送的内容你可以使用html 标签哦
 
虽然这样感觉很方便,但是同样,微信公众平台对此也有限制。
 
1.用户必须关注公众号,方可收到信息。
 
2.用户只能连续收到   20   条客服消息。超过后用户就收不到消息,
 
超过后,用户必须   主动给公众号发送消息  。或者  点击菜单栏,这样20条消息的限制就会重置。
 

(编辑:甘孜站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读