微信公众号--消息回复
?
消息回復
使用微信進行接口實現消息自動回復,要在微信公眾號中進行服務器配置和編寫對應的服務器代碼響應微信端的請求。
服務器配置
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
總結
以上是生活随笔為你收集整理的微信公众号--消息回复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查电脑IP
- 下一篇: ubuntu mysql 定时生成 备份