微信公众号利用客服接口主动给用户发送消息的方法
目前微信并没有放出主动给用户发送消息的接口,但是我们可以使用其多客服接口来达到主动给用户发送消息的目的。
当用户和公众号产生特定动作的交互时(具体动作列表请见下方说明),微信将会把消息数据推送给开发者,开发者可以在一段时间内(目前修改为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" : "[email protected]", "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); }
实例效果
- 收录情况:百度未收录
本文地址:http://luvial.cn/content/10075.html
转载请保留原文地址!