使用flask框架和新浪云sae搭建微信公眾號自動回復的各種坑

上一篇我們已經(jīng)通過詳細的步驟搞定了微信公眾號的自動回復(鏈接這里:使用flask框架+新浪sae+圖靈機器人api來做微信公眾號自動回復的超詳細方法,但是一開始不是這么順利的中間遇到各種坑,下面一一道來!
1.新浪云應(yīng)用的坑
因為是第一次用SAE,所以就跟著網(wǎng)上各種教程在走,然而一開始配置的時候沒注意他們基本都是用的共享環(huán)境的云應(yīng)用?。?!所以文件都配錯了,怪不得在token驗證那里一直報錯?。?!后來幾經(jīng)波折再問了客服,客服發(fā)現(xiàn)我跟錯文檔了,甩了一份獨享環(huán)境的文檔給我。就是下面這份:

http://document.applinzi.com/sae/python-docker.html#%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83%E8%AF%B4%E6%98%8E

不得不說,這份文檔寫的詳細多了,比網(wǎng)站上另一份文檔易懂,不知道為啥新浪不更新這份文檔到官網(wǎng)去,不過新浪sae服務(wù)器的架構(gòu)圖倒是不錯的,可以仔細看看就能明白其中的原理:


sae架構(gòu)圖

按照這份文檔去配置云應(yīng)用就比較簡單,要注意Procfile這個文件是用來啟動容器讓程序運行的,直接用記事本寫就可以了,里面填上:

wb: python app.py

注意wb后面的冒號還需要再空格一下才行!
一開始沒有這個文件,導致git最后上傳遠程倉庫老是報錯如下:

第二個小坑是最好申請了新浪云應(yīng)用后就進行實名認證!
認證成功后是這樣的


為什么我要建議你這么做呢,因為第一:
新浪云的云豆其實扣的很快的一旦你的服務(wù)器搭好后,一天一百多云豆在扣,不認證兩天就用完了。。。雖然我們只是體驗,但是還沒體驗就結(jié)束了是不是太扯了?

第二:如果沒有驗證有可能會引起后面token驗證通不過,這是據(jù)部分網(wǎng)友反應(yīng)的,所以還是驗證吧,還多300云豆。

2. flask框架的小坑
從新浪云的坑爬起來后,我又掉入了flask的坑。。。別問為什么,就是我太菜了??第一次用flask框架,一開始連本地應(yīng)用都沒跑通,后來多次檢查才發(fā)現(xiàn)環(huán)境選錯了,要選在虛擬環(huán)境下,看我紅色畫出的部分:


爬出虛擬的坑,又跌進外網(wǎng)無法訪問的問題,于是又開始各種問谷歌,最后被我找到了解決的辦法,看pycharm的官方文檔介紹:
clipboard.png

原來代碼中指定的ip和端口是無效的,需要在以下位置設(shè)置,先找到“Edit Configuration"這地方,點開:

然后你看到下面這個頁面,在我紅框圈住的地方添加那一段代碼保存就ok了:

再次運行就看到這樣的畫面:

好了,flask這里的坑也爬出來了,二級域名也可以訪問了,下面我們轉(zhuǎn)站到微信公眾號??

3.微信公眾號的坑坑坑
當新浪云容器啟動了,二級域名也正常打開了,我們就來到微信公眾號平臺這里打算開啟“開發(fā)者模式”。按照步驟一步步配置后點擊提交,滿以為是個輕松的配置。納尼?卻出現(xiàn)“token驗證失敗”

token驗證失敗。。。.png

這是神馬鬼?趕緊再次谷歌了一下,發(fā)現(xiàn)網(wǎng)上說出現(xiàn)此種情況的原因很多?。?!有說是沒有實名認證的、有說是二級域名末尾沒有加斜杠的(就是/wechat 這種應(yīng)該改為 /wechat/ 這樣、還有說token填寫不一致的等等。好吧 ,小白掌柜決定一一來排查。

首先,新浪云已經(jīng)實名認證了,所以排除;再次token兩方都是一致的,也排除;再來給app.route后面的函數(shù)綁定加斜杠,再次驗證還是失敗,排除了這種;查看token前后都無空格,所以也排除;最后是sha1算法驗證這里出的問題,直接改成這樣:

image.png

返回空值就ok! 好啦,再次提交,終于爬出了token的坑,一不小心就要來到最后一個大坑了!

當小白我把圖靈機器人的api代碼和解析微信回復的代碼加入后,再次更新遠程倉庫成功后應(yīng)該發(fā)出文字就有回應(yīng)了,但是公眾號卻出現(xiàn)下面這個!


是的,你沒有看錯,就是“該公眾號提供的服務(wù)出現(xiàn)故障,請稍后再試”這個大坑!?。⊥咛?,這又是怎么回事?搜索了一圈,發(fā)現(xiàn)好多小伙伴遇到這個問題,而且這個問題的原因也跟token一樣有很多種。。。于是乎,又開始“掃雷”之路,第一種:

  • 你的接口返回值里面有空格(這個巨坑)看官方文檔里面是一堆空格?。?!

我們來看微信公眾平臺的官方文檔:


看到?jīng)],官方文檔都是空格,這樣就會導致服務(wù)出現(xiàn)故障。解決方法:
去掉xml中的所有空格就ok(尤其要注意符號之間的空格,請嚴格檢查)。不過小白檢查過自己的代碼不是這個原因,所以排除;

  • 第二種:接口返回值的字段取值不對!

我們再來看官方文檔:

文本消息.png

ToUserName、FromUserName參數(shù)值取錯這個也很容易導致出現(xiàn)故障。
因為被動回復用戶信息返回值里面的ToUserName、FromUserName參數(shù)值
應(yīng)該取值對應(yīng)接收普通消息接口里面的FromUserName、ToUserName。不過小白發(fā)現(xiàn)自己并沒有搞錯,所以也排除了;

  • 第三種:之前公眾號給第三方授權(quán)過

解決辦法就是直接去“授權(quán)管理”那里點擊取消就可以了!然而小白打開自己的授權(quán)管理發(fā)現(xiàn)如下:


授權(quán)管理

空空如也唱起來??所以繼續(xù)排除這種;

  • 第四種:開發(fā)者回復異常的數(shù)據(jù)

我們來看微信官方文檔對“服務(wù)出現(xiàn)故障,請稍后再試”的解釋:


故障官方解釋.png

根據(jù)這個小白覺得應(yīng)該是回復了異常數(shù)據(jù),于是開啟了微信“接口告警”這個功能:


接口告警.png

不得不說微信公眾平臺的這個功能還是要有用的!接著去修改了下面的報警次數(shù):
告警閾值.png

(其實不改也行,就是默認的5分鐘超過30次就會在群里報警提示)
就這樣終于讓小白收到了錯誤提示如下圖:


錯誤樣例.png

所以是在解析微信公眾號回復并做出響應(yīng)的時候,自動回復的格式出錯了!這下終于找到錯誤所在,就可以對癥下藥了??。經(jīng)過一番吭哧吭哧的鼓搗,終于成功了,再次看到下面的圖很是欣慰:
成功.png

最后終于爬出這個大坑,走上光明大道??。經(jīng)過這次項目,找到了自己的各種不足,通過搜索n個頁面來查錯??:


nnn.PNG

學會了查看服務(wù)器的日志跟運維接口告警這些也是挺好的。希望上面的總結(jié)能幫你避開坑坑坑,一路666!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容