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


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 相关文章推荐
phpMyAdmin 安装配置方法和问题解决
Jun 08 PHP
一个PHP并发访问实例代码
Sep 06 PHP
PHP中spl_autoload_register()和__autoload()区别分析
May 10 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
Jun 22 PHP
初识php MVC
Sep 10 PHP
php验证码生成代码
Nov 11 PHP
PHP的Yii框架中View视图的使用进阶
Mar 29 PHP
PHP常见错误提示含义解释(实用!值得收藏)
Apr 25 PHP
PHP通过文件保存和更新信息的方法分析
Sep 12 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
Dec 11 PHP
Laravel中如何轻松容易的输出完整的SQL语句
Jul 26 PHP
PHP 实现重载
Mar 09 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
DOMXML函数笔记
2006/10/09 PHP
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
2011/05/04 PHP
常见的四种POST 提交数据方式(小总结)
2015/10/08 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
php 使用mpdf实现指定字段配置字体样式的方法
2019/07/29 PHP
浅谈laravel框架与thinkPHP框架的区别
2019/10/23 PHP
JS对外部文件的加载及对IFRMAME的加载的实现,当加载完成后,指定指向方法(方法回调)
2011/07/04 Javascript
如何通过javascript操作web控件的自定义属性
2013/11/25 Javascript
封装属于自己的JS组件
2016/01/27 Javascript
JavaScript代码生成PDF文件的方法
2016/02/26 Javascript
AngularJS在IE下取数据总是缓存问题的解决方法
2016/08/05 Javascript
SVG动画vivus.js库使用小结(实例代码)
2017/09/14 Javascript
JavaScript如何获取到导航条中HTTP信息
2017/10/10 Javascript
vue-cli实现多页面多路由的示例代码
2018/01/30 Javascript
Vue.js中 v-model 指令的修饰符详解
2018/12/03 Javascript
微信小程序使用二次贝塞尔曲线画波浪
2018/12/25 Javascript
JavaScript惰性载入函数实例分析
2019/03/27 Javascript
[42:11]TNC vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python排序方法实例分析
2015/04/30 Python
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
Python实现比较两个列表(list)范围
2015/06/12 Python
Python编程之列表操作实例详解【创建、使用、更新、删除】
2017/07/22 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
2018/12/11 Python
python调用webservice接口的实现
2019/07/12 Python
PyQt Qt Designer工具的布局管理详解
2019/08/07 Python
python爬虫模拟浏览器的两种方法实例分析
2019/12/09 Python
python3 使用traceback定位异常实例
2020/03/09 Python
中国汽车租赁行业头部企业:一嗨租车
2019/05/16 全球购物
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
机械设计职业生涯规划书
2013/12/27 职场文书
致接力运动员广播稿
2014/02/17 职场文书
幼儿园中班上学期评语
2014/04/18 职场文书
邓小平理论心得体会
2014/09/09 职场文书
医药销售自我评价200字
2014/09/11 职场文书
大一新生检讨书
2014/10/29 职场文书