该公众号暂时无法提供服务请稍后再试
關鍵字:該公眾號暫時無法提供服務,請稍后再試 微信公眾平臺
原文:http://www.cnblogs.com/txw1958/p/weixin-suspend-service-solution.html
在用戶向公眾號發消息,或點擊自定義菜單時,開發者一般會根據業務需要,利用被動響應消息接口,向用戶回復響應消息。
如果開發者認為用戶消息無須回復,或開發者準備隨后再通過客服消息接口來對用戶進行回復,請按照開發者文檔的要求,直接回復空串,微信服務器收到空串則不會進行處理。
一旦遇到以下情況,微信都會在公眾號會話中,向用戶下發系統提示“該公眾號暫時無法提供服務,請稍后再試”:
1. 開發者在5秒內未回復任何內容
2. 開發者回復了異常數據
詳細流程請見開發者文檔:發送被動響應消息接口。以上改動將于兩周后(2014年10月30日)生效,請開發者注意。
具體提示如下圖所示:
原因分析:
最主要的還是開發人員寫代碼不夠嚴謹,沒有嚴格遵守開發文檔的標準XML格式回復。
解決方案:
1. 使用高性能的服務器及空間,海外普通虛擬空間延遲大,建議使用云主機或國內知名服務商的空間
2. 開發模式下保證所有內容都有回復,不能匹配到的回復直接回復空字符串,而不是參數Content為空的xml消息,以便讓微信服務器知道程序有響應
例如下面的這個回復就是導致上述錯誤的原因之一
<xml>
<ToUserName><![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]></ToUserName>
<FromUserName><![CDATA[gh_680bdefc8c5d]]></FromUserName>
<CreateTime>1359036631</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[]]></Content>
</xml>
如果使用的是方倍工作室的微信開發接口DEMO,那么需要在回復文本消息時都不回復空內容,或者加入空值判斷以進行二次保護,如下面代碼中第4~6行所示
1 //回復文本消息
2 private function transmitText($object, $content)
3 {
4 if (!isset($content) || empty($content)){
5 return "";
6 }
7
8 $xmlTpl = "<xml>
9 <ToUserName><![CDATA[%s]]></ToUserName>
10 <FromUserName><![CDATA[%s]]></FromUserName>
11 <CreateTime>%s</CreateTime>
12 <MsgType><![CDATA[text]]></MsgType>
13 <Content><![CDATA[%s]]></Content>
14 </xml>";
15 $result = sprintf($xmlTpl, $object->FromUserName, $object->ToUserName, time(), $content);
16
17 return $result;
18 }
3. 檢查xml格式,不要擅自加其他內容,網上一些代碼喜歡自行添加其他內容,比如xml version等,最好去掉這些不符合微信消息格式的內容。
4. 檢查代碼中是否有echo、var_dump、以及一些告警信息打印,這些信息也會被返回給微信服務器而擾亂XML,從而導致上述問題。
5. 使用方倍工作室的微信調試器,做同樣的關鍵字發送,查看返回的數據是否有異常或超時。微信調試器地址http://debug.fangbei.org/。
6. 參考《微信公眾平臺開發最佳實踐》一書消息構造格式,或使用該書提供的SDK。點此購買
總結
以上是生活随笔為你收集整理的该公众号暂时无法提供服务请稍后再试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 马蹄草的功效与作用 马蹄草吃了有什么功效
- 下一篇: 甘美西瓜为什么贵