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


Posted in PHP onJune 22, 2019

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

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

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

总结

以上所述是小编给大家介绍的微信公众号之主动给用户发送消息功能,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

PHP 相关文章推荐
使用PHP和XSL stylesheets转换XML文档
Oct 09 PHP
利用PHP动态生成VRML网页
Oct 09 PHP
php下mysql数据库操作类(改自discuz)
Jul 03 PHP
探讨多键值cookie(php中cookie存取数组)的详解
Jun 06 PHP
php另类上传图片的方法(PHP用Socket上传图片)
Oct 30 PHP
PHP中nowdoc和heredoc使用需要注意的一点
Mar 21 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
Apr 24 PHP
php类中的$this,static,final,const,self这几个关键字使用方法
Dec 14 PHP
PHP使用fopen与file_get_contents读取文件实例分享
Mar 04 PHP
PHP pear安装配置教程
May 14 PHP
PHP实现数据分页显示的简单实例
May 26 PHP
Yii 2中的load()和save()示例详解
Aug 03 PHP
Yii 使用intervention/image拓展实现图像处理功能
Jun 22 #PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
Jun 22 #PHP
PHP中strtr与str_replace函数运行性能简单测试示例
Jun 22 #PHP
PHP判断函数是否被定义的方法
Jun 21 #PHP
php用户名的密码加密更安全的方法
Jun 21 #PHP
php常用字符串查找函数strstr()与strpos()实例分析
Jun 21 #PHP
php精度计算的问题解析
Jun 21 #PHP
You might like
一个PHP数组应该有多大的分析
2009/07/30 PHP
PHP 创建标签云函数代码
2010/05/26 PHP
php的一些小问题
2010/07/03 PHP
javascript 匿名函数的理解(透彻版)
2010/01/28 Javascript
JS获取DropDownList的value值与text值的示例代码
2014/01/07 Javascript
可自定义速度的js图片无缝滚动示例分享
2014/01/20 Javascript
JavaScript获取当前网页最后修改时间的方法
2015/04/03 Javascript
使用Node.js为其他程序编写扩展的基本方法
2015/06/23 Javascript
原生JavaScript实现瀑布流布局
2020/06/28 Javascript
javascript自定义滚动条实现代码
2020/04/20 Javascript
javascript实现PC网页里的拖拽效果
2016/03/14 Javascript
node.js实现端口转发
2016/04/14 Javascript
JavaScript中清空数组的三种方式
2017/03/22 Javascript
React学习笔记之事件处理(二)
2017/07/02 Javascript
利用vue + element实现表格分页和前端搜索的方法
2017/12/25 Javascript
vue项目中,main.js,App.vue,index.html的调用方法
2018/09/20 Javascript
微信小程序实现留言板
2018/10/31 Javascript
关于vue里页面的缓存详解
2019/11/04 Javascript
用Python编写web API的教程
2015/04/30 Python
浅谈编码,解码,乱码的问题
2016/12/30 Python
Python入门_浅谈数据结构的4种基本类型
2017/05/16 Python
使用python实现个性化词云的方法
2017/06/16 Python
使用Python搭建虚拟环境的配置方法
2018/02/28 Python
使用tensorflow实现线性回归
2018/09/08 Python
python3.6 如何将list存入txt后再读出list的方法
2019/07/02 Python
Django框架视图介绍与使用详解
2019/07/18 Python
python conda操作方法
2019/09/11 Python
关于tf.reverse_sequence()简述
2020/01/20 Python
Python列表倒序输出及其效率详解
2020/03/04 Python
美国知名男士服饰品牌:Brooks Brothers(布克兄弟)
2016/08/25 全球购物
计算机专业自荐信
2013/10/14 职场文书
中班中秋节活动反思
2014/02/18 职场文书
学生实习证明模板汇总
2014/09/25 职场文书
大学生暑期实践报告之企业经营管理
2019/08/08 职场文书
openstack中的rpc远程调用的方法
2021/07/09 Python
Sql Server 行数据的某列值想作为字段列显示的方法
2022/04/20 SQL Server