美文网首页
微信公众号利用客服接口主动给用户发送消息的方法

微信公众号利用客服接口主动给用户发送消息的方法

作者: VincentH | 来源:发表于2017-08-16 15:24 被阅读0次

    目前微信并没有放出主动给用户发送消息的接口,但是我们可以使用其多客服接口来达到主动给用户发送消息的目的。

    当用户和公众号产生特定动作的交互时(具体动作列表请见下方说明),微信将会把消息数据推送给开发者,开发者可以在一段时间内(目前修改为48小时)调用客服接口,通过POST一个JSON数据包来发送消息给普通用户。此接口主要用于客服等有人工消息处理环节的功能,方便开发者为用户提供更加优质的服务。

    目前允许的动作列表如下(公众平台会根据运营情况更新该列表,不同动作触发后,允许的客服接口下发消息条数不同,下发条数达到上限后,会遇到错误返回码,具体请见返回码说明页):

    1、用户发送信息
    2、点击自定义菜单(仅有点击推事件、扫码推事件、扫码推事件且弹出“消息接收中”提示框这3种菜单类型是会触发客服接口的)
    3、关注公众号
    4、扫描二维码
    5、支付成功
    6、用户维权

    下面开始实现一个主动发送消息的demo

    以下均为php代码

    全局变量(请自行修改)

    $APPID="wx1234566"; 
    $APPSECRET="aabbccddd";
    

    公共方法

    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;
    }
    

    获取token

    将token存放在本地,获取token先判断token是否过期,过期则重新接口获取,否则直接取本地的

    function getToken()
    {
        global $APPID;
        global $APPSECRET;
        $token_file = 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 addkf()
    {
        $url = 'https://api.weixin.qq.com/customservice/kfaccount/add?access_token='.getToken();
    
        $data = '{
             "kf_account" : "system@system",
             "nickname" : "客服1",
             "password" : "systemsystem",
        }';
        echo https_request($url,$data);
    }
    

    发送消息

    function sendmsg(){
        $url = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='.getToken();
        $data = '{
            "touser":"接收用户的openid",
            "msgtype":"text",
            "text":
            {
                 "content":"Hello World"
            }
        }';
        echo https_request($url,$data);
    }
    

    实例效果

    相关文章

      网友评论

          本文标题:微信公众号利用客服接口主动给用户发送消息的方法

          本文链接:https://www.haomeiwen.com/subject/qkmirxtx.html