消息回复
使用微信进行接口实现消息自动回复,要在微信公众号中进行服务器配置和编写对应的服务器代码响应微信端的请求。
服务器配置
l 公众平台官网登录之后,找到“基本配置”菜单栏
l 填写配置
现在选择提交肯定是验证token失败,因为还需要完成代码逻辑编写。
服务端代码编写
服务器配置时,微信服务器会向填写的url地址发送Get请求来验证服务器的合法性,逻辑流程图如下
以PHP语言为例,编写验证服务器合法性的示例代码如下:
<?php
$signature = isset($_GET["signature"])?$_GET["signature"]:'';
$signature = isset($_GET["msg_signature"])?$_GET["msg_signature"]:$signature; //如果存在加密验证则用加密验证段
$timestamp = isset($_GET["timestamp"])?$_GET["timestamp"]:'';
$nonce = isset($_GET["nonce"])?$_GET["nonce"]:'';
$token = 'your token';
$tmpArr = array($token, $timestamp, $nonce,$str);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
$echoStr = $_GET["echostr"];
die($echoStr);
}else{
die('no access');
}
回复代码
根据以上的描述,正确填写服务器配置后,微信会将接收到的图文等信息自动转发到配置的服务器地址中。图文等消息回复流程如下,核心逻辑为解析微信端post过来的xml消息数据,根据解析的消息类型,根据消息类型返回处理结果。
查询官方wiki 开头强调: 假如服务器无法保证在五秒内处理回复,则必须回复“success”或者“”(空串),否则微信后台会发起三次重试。
解释一下为何有这么奇怪的规定。发起重试是微信后台为了尽可以保证粉丝发送的内容开发者均可以收到。如果开发者不进行回复,微信后台没办法确认开发者已收到消息,只好重试。
真的是这样子吗?尝试一下收到消息后,不做任何回复。在日志中查看到微信后台发起了三次重试操作,日志截图如下:
三次重试后,依旧没有及时回复任何内容,系统自动在粉丝会话界面出现错误提示“该公众号暂时无法提供服务,请稍后再试”。
来源:https://www.cnblogs.com/SLchuck/p/8530955.html