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

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

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

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

以上就是本次分享的内容了。希望对观看的各位大佬们有所帮助。

转载本文需征得博主同意,且转载时需要标明出处!!!

其实我也不想这样,但是有人为了自己的搜索权重,不告知本人就转载了,同时也搜不到本人的文章了。

所以才出此下策。对于想转载的小伙伴说声抱歉,转载时请留言,本人会及时同意,谢谢。

2019年06月22日

原文地址:https://www.cnblogs.com/YFYQ/p/11067840.html

时间: 2024-09-30 10:32:53

微信公众号之主动给用户发送消息的相关文章

微信公众号网页授权获取用户基本信息

话不多说,根据官方文档需求说明,首先接口权限设置修改 先根据你的URL配置一下授权回调页域名 微信公众平台OAuth2.0授权的详细步骤如下 1)用户关注微信公众号. 2)微信公众号提供用户请求授权页面URL. 3)用户点击授权页面URL,将向服务器发送请求. 4)服务器询问用户是否同意授权给微信公众号(scope为snsapi_base时无此步骤). 5)用户同意(scope为snsapi_base时无此步骤). 6)服务器将code通过回调传给微信公众号. 7)微信公众号获得code. 8)

C#微信公众号开发系列教程三(消息体签名及加解密)

  C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南)    距离上一篇博文已经半个月了,本来打算每两天更新一次的,但可怜苦逼码农无日无夜的加班.第一篇博文发表后,博文视点的编辑就找到我,问我想不想出版这个系列,我当时瞬间就想到了王大锤的独白,想想真的是有点小激动,后面按照那边的要求,提交了申请书,也提交了目录,可惜文笔不行,再加上最近太忙,样稿一直没有给他,感觉挺愧疚了.真心希望能帮一下迷茫的

微信公众号开发系列-发送客服消息

下面是做微信公众号开发用到最多的两个客服消息发送类型,文本信息和图文信息. 1.发送文本消息 { "touser":"OPENID", "msgtype":"text", "text": { "content":"Hello World" } } 參数 是否必须 说明 access_token 是 调用接口凭证 touser 是 普通用户openid msgtype

微信公众号开发C#系列-6、消息管理-普通消息接受处理

1.概述 通过前面章节的学习,我们已经对微信的开发有了基本的掌握与熟悉,基本可以上手做复杂的应用了.本篇我们将详细讲解微信消息管理中普通消息的接收与处理.当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上.接收普通消息微信官方文档参考:接收普通消息文档API 消息接收后,就有一个处理或回复的过程,单单发送消息了没有响应也是不人性化的,下面我们就对接收到微信各类型消息分别讲解处理的方法. 2.消息接收 当普通微信用户向公众账号发消息时,微信服务器会先接收

微信公众号导出关注的用户信息

用Chrome浏览器登录公众号,打开用户管理页面,确保页面加载完毕 F12打开开发者调试工具,切换到Console控制台. 在下面的输入区输入以下代码,并按下回车:     var sc=document.createElement("script");sc.type="text/javascript";sc.onload=function(){export_userlist();};sc.src="https://dn-html.qbox.me/wxmp

微信公众号实现无限制推送模板消息!可向指定openID群发

公众号提供模板消息接口,除了公众号规定的上限次数,一般情况下不能无限制推送,每次最多调用10万次,具体的看公众号后台开发接口权限>发送消息>模版消息(业务通知),可以看到每天最大的推送次数. 公众号后台没有提供模板消息推送的操作界面,需要通过微号帮公众号第三平台实现,支持全部粉丝推送.分组推送,暂不支持使用粉丝openID群发. 1.模板消息群发功能 操作界面设置,模板消息发送任务和创建模板消息,只有服务号才能使用模板消息群发功能,首次使用先在公众号后台申请模版功能. 2.创建模板消息 首次点

Python学习之微信公众号接入 三 当用户关注你的时候

这里练习当用户关注你的时候,你会自动回复一条欢迎的消息或者介绍使用的消息. 我原本把那些回复的.xml都单个写出来的,现在就这么用,我看看是不是就一直可以用一个就可以了,如果是 我再修改成只用一个的.xml. 当用户关注你的时候,这就产生了一个事件: http://mp.weixin.qq.com/wiki/2/5baf56ce4947d35003b86a9805634b1e.html 这里介绍的是事件消息的各种格式. 然后关注属于 subscribe  订阅. 因此现在代码需要修改一下了: 根

.net MVC 微信公众号 点击菜单拉取消息时的事件推送

官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141016&token=&lang=zh_CN 业务描述:点击菜单,推送消息,消息内容为自定义的读取数据库信息之后,为用户推送的动态消息. 首先需要用代码实现自定义菜单,为对应的菜单指定click事件. 关于自定义菜单的创建及事件指定,请看上一篇文章,本篇主要介绍事件响应的实现. MVC controller 中的代码如下: public void Me

【微信公众号开发】根据openId群发消息

根据开发文档可知,只要使用POST方式提交固定格式的json字符串到那个地址即可.这里我写的是最简单的文本 第一步:建立对应的实体类. 1 package cn.sp.bean; 2 3 import java.util.List; 4 import java.util.Map; 5 6 /**群发消息 7 * Created by 2YSP on 2017/7/12. 8 */ 9 public class MassMessage { 10 private List<String> tous