微信公众号开发,在开启服务器配制后,自动回复与自定义菜单将会失效,这时候就需要接口设置自动回复与公众号菜单,这里讲解用户关注公会总号后,自动回复欢迎语
首先服务器配置
在填写的服务器地址中(一般使用接口),增加接受数据的代码,如下
// 接收的数据流是xml数据格式
$xml = file_get_contents("php://input");
// 此处xml转为数组会对象
$res = xmlToArray($xml);// 转换方法自行百度
接收的数据为xml格式,需转换为数组或json格式使用,转换方法,自行百度。
数据转换后,就可以拿到用户的基本信息
// 可以先用写入文件的方式,查看推送过来的数据
$myfile = fopen("push.txt", "a");
fwrite($myfile, "\r\n");
fwrite($myfile, json_encode($res));
// 推送数据中,包含用户openid,事件类型
$openid = $res['FromUserName'];
$event = $res['Event']; // 事件类型 subscribe -- 为关注事件,unsubscribe -- 为取消关注事件
拿到Event后,可以根据对应值做相应处理,我们这里讲 Event='subscribe' 即关注事件的处理
推送欢迎语
拿到事件后,做推送,代码如下
if ($event == 'subscribe') {
// 关注事件
$access_token = getAccessToken(); // 获得全局变量access_token,这里不做具体解释
$url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token={$access_token}&openid={$openid}&lang=zh_CN";
$response = file_get_contents($url); // 获得用户信息,如果欢迎语中需要显示当前用户的名称之类的信息,那么可以调用此接口获取
// 推送欢迎语
// 推送接口
$push_url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={$access_token}";
// 推送数据
$push_data = [
'touser' => $openid,
'msgtype' => 'text',
'text' => [
"content" => $content // 这里content为欢迎语的具体内容,可自行设置
],
];
// 发送 post提交, 一般使用curl post提交
post($push_url, json_encode($push_data, JSON_UNESCAPED_UNICODE));
}
其中获得access_token 这里不做详细介绍,可以参考另外一个文章 如何获取ACCESS_TOKEN
至此推送欢迎语完成,感觉有用的老铁,还不点个赞!