zoukankan      html  css  js  c++  java
  • 微信公众号之主动给用户发送消息

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

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

    于是乎,当时脑子一热,想着没什么大的问题,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 = '感谢你的关注
    回复你厉害 
    例如<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日

  • 相关阅读:
    C语言和python分别计算文件的md5值
    C语言计算文件大小
    Linux内核源码下载
    Linux系统编程20_VFS虚拟文件系统
    Linux系统编程19_标准I/O
    C语言Review5_函数指针和数组指针
    C语言Review4_头文件引用符号的区别
    PDO之MySql持久化自动重连导致内存溢出
    小程序之app.json not found
    phpstorm之"Can not run PHP Code Sniffer"
  • 原文地址:https://www.cnblogs.com/YFYQ/p/11067840.html
Copyright © 2011-2022 走看看