微信公众号--消息回复
?
消息回復(fù)
使用微信進(jìn)行接口實(shí)現(xiàn)消息自動(dòng)回復(fù),要在微信公眾號(hào)中進(jìn)行服務(wù)器配置和編寫對(duì)應(yīng)的服務(wù)器代碼響應(yīng)微信端的請(qǐng)求。
服務(wù)器配置
l? 公眾平臺(tái)官網(wǎng)登錄之后,找到“基本配置”菜單欄
?
?
?
l? 填寫配置
?
?
現(xiàn)在選擇提交肯定是驗(yàn)證token失敗,因?yàn)檫€需要完成代碼邏輯編寫。
服務(wù)端代碼編寫
服務(wù)器配置時(shí),微信服務(wù)器會(huì)向填寫的url地址發(fā)送Get請(qǐng)求來驗(yàn)證服務(wù)器的合法性,邏輯流程圖如下
?
?
以PHP語言為例,編寫驗(yàn)證服務(wù)器合法性的示例代碼如下:
<?php
?
$signature = isset($_GET["signature"])?$_GET["signature"]:'';
$signature = isset($_GET["msg_signature"])?$_GET["msg_signature"]:$signature; //如果存在加密驗(yàn)證則用加密驗(yàn)證段
$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');
}
回復(fù)代碼
根據(jù)以上的描述,正確填寫服務(wù)器配置后,微信會(huì)將接收到的圖文等信息自動(dòng)轉(zhuǎn)發(fā)到配置的服務(wù)器地址中。圖文等消息回復(fù)流程如下,核心邏輯為解析微信端post過來的xml消息數(shù)據(jù),根據(jù)解析的消息類型,根據(jù)消息類型返回處理結(jié)果。
?
?
查詢官方wiki 開頭強(qiáng)調(diào): 假如服務(wù)器無法保證在五秒內(nèi)處理回復(fù),則必須回復(fù)“success”或者“”(空串),否則微信后臺(tái)會(huì)發(fā)起三次重試。
解釋一下為何有這么奇怪的規(guī)定。發(fā)起重試是微信后臺(tái)為了盡可以保證粉絲發(fā)送的內(nèi)容開發(fā)者均可以收到。如果開發(fā)者不進(jìn)行回復(fù),微信后臺(tái)沒辦法確認(rèn)開發(fā)者已收到消息,只好重試。
真的是這樣子嗎?嘗試一下收到消息后,不做任何回復(fù)。在日志中查看到微信后臺(tái)發(fā)起了三次重試操作,日志截圖如下:
?
三次重試后,依舊沒有及時(shí)回復(fù)任何內(nèi)容,系統(tǒng)自動(dòng)在粉絲會(huì)話界面出現(xiàn)錯(cuò)誤提示“該公眾號(hào)暫時(shí)無法提供服務(wù),請(qǐng)稍后再試”。
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/SLchuck/p/8530955.html
總結(jié)
以上是生活随笔為你收集整理的微信公众号--消息回复的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查电脑IP
- 下一篇: js中函数的参数为函数的情况即回调函数