不花一分錢快速搭建自己的微信公眾號機器人

前言

前些天閑來無事想弄個微信公眾號機器人,因為可以用機器人做好多事情,比如可以讓它變成一個智能聊天機器人,也可以讓它爬取并推送arxiv上自己想要的論文,還可以讓它繪制并推送有關肺炎疫情的曲線圖等等,所有的這些只需要實現(xiàn)對應指令的接口即可,也就是給公眾號發(fā)送指定的指令,就會給你推送該指令對應的任務回復。

搜了全網(wǎng)資料,沒有找到一個完整介紹搭建微信公眾號機器人全過程的,或者需要付費才能看搭建資料和代碼,后來經(jīng)過幾天的探索,終于搭建成功了,這篇文章就把自己搭建微信公眾號機器人的詳細過程免費分享一下,一來可以不像我一樣走彎路,二來也算是做個總結,整個搭建過程分為三步。搭建微信公眾號機器人的源碼地址為:github地址

搭建自己的服務器

首先是要搭建自己的服務器。如果不想花錢租服務器,可以利用自己的電腦搭建成一臺服務器。電腦的系統(tǒng)要求是linux系統(tǒng),然后通過NatApp免費快速的將自己的電腦配置成外網(wǎng)可以訪問的服務器。具體的操作流程如下:

?NatApp安裝

在linux終端中執(zhí)行如下命令:

#下載安裝包

wget http://download.natapp.cn/assets/downloads/clients/2_3_4/natapp_linux_386_2_3_4.zip

#解壓文件

unzip natapp_linux_386_2_3_4.zip

#給natapp執(zhí)行權限

chmod a+x natapp

??配置NatApp

網(wǎng)址:https://natapp.cn/,先在該網(wǎng)址上申請注冊一個賬號,完成實名認證之后便可領取一個免費隧道,隧道的具體配置如下圖所示,剩余其他的配置項不用填:

配置完成后,得到自己的一個免費隧道,如下圖所示,復制隧道的authtoken,啟動NatApp時要用到:

??啟動NatApp

在linux終端中執(zhí)行如下命令,注意要在第一步安裝NatApp的目錄下運行:

./natapp-authtoken=上一步申請的token

執(zhí)行后的結果如下圖所示:

該操作相當于把本地服務器的127.0.0.1:5000地址映射成為外網(wǎng)可以訪問的http:http://dii5z7.xxx.cc地址,而該地址的服務端口為443。

完成微信服務器配置驗證

搭建好自己的服務器之后,需要將該服務器地址設置成為自己微信公眾號的服務器,并需要進行服務器驗證,實現(xiàn)通信,這樣發(fā)送給微信公眾號的消息就會轉發(fā)給自己搭建好的服務器,從而可以自己根據(jù)該消息完成各種任務。

??配置微信公眾號后臺服務器地址

如果沒有微信公眾號,可以申請一個,申請成功之后進入微信公眾號后臺,點擊“開發(fā)”的“基本配置”頁面,在該頁面啟動開發(fā)者模式,然后開始進行服務器配置:

服務器地址(URL)設置為外網(wǎng)可訪問地址:http:http://dii5z7.xxx.cc

令牌(Token)的設置與config.py代碼中設置的Token保持一致即可

消息加解密密鑰(aeskey)自動生成即可,但須和config.py代碼中設置的消息加解密密鑰保持一致

設置完成后先不能點擊“提交”按鈕,需要完成緊接著的第 ? 步開啟驗證服務。

??微信服務器驗證

首先配置config.py文件,代碼如下:

token="DeePR"

appid="wxb47e97axxxxx000b"

aeskey='2g1hvhxEnOaiNDAT8CTbSKxxxxxxxxh8YfHlsc2Xy0Zt'

保持和第?步的配置一致,然后運行run.py文件,建議運行前建立一個新的python運行環(huán)境,然后安裝上代碼中導入的所有python依賴包,服務器驗證部分的源碼如下:

@app.route('/',methods=['GET','POST'])

def wechat():

? ? '''對接微信公眾號'''

? ? #參數(shù)是在請求鏈接后攜帶的

? ? #微信的簽名

? ? signature = request.args.get("signature")

? ? #我們簽名所需的兩個參數(shù)

? ? timestamp = request.args.get("timestamp")

? ? nonce = request.args.get("nonce")

? ? #簽名校驗成功后需返回給微信的

? ? echostr = request.args.get("echostr")

? ? #參數(shù)校驗

? ? if not all([signature, timestamp, nonce]):

? ? ? ? abort(400)

? ? #開始簽名

? ? #將數(shù)據(jù)添加進數(shù)組

? ? li = [cfg.token, timestamp, nonce]

? ? #排序

? ? li.sort()

? ? #拼接字符串

? ? #不編碼的話python會報錯

? ? tmp_str = "".join(li).encode('utf-8')

? ? #進行sha1加密

? ? sign = hashlib.sha1(tmp_str).hexdigest()

? ? #將自己的簽名與微信進行對比

? ? if signature != sign:

? ? ? ? abort(403)

? ? #如果簽名與微信的一致需返回echostr給微信

? ? else:

? ? ? ? return echostr

運行結果如下:

運行成功后,即可點擊第 ? 步的“提交”按鈕??梢钥闯鎏峁┓盏牡刂氛脼楸緳C的環(huán)回地址,也就是配置隧道時設置的本機地址127.0.0.1:5000。而通過隧道映射,把該地址映射成為了外網(wǎng)可以訪問的http:http://dii5z7.xxx.cc地址,因此在微信公眾號后臺配置的地址就為該外網(wǎng)地址http:http://dii5z7.xxx.cc,此時直接訪問該外網(wǎng)地址會出現(xiàn)如下圖的界面:

實現(xiàn)機器人的功能接口

需要實現(xiàn)的機器人功能接口都放在了robot.py文件中,比如實現(xiàn)復讀對話機器人功能的部分代碼如下:

@myrobot.image

def image_repeat(message,session):

? ? return message.img

@myrobot.text

def test_repeat(message,session):

? ? return message.content

效果圖如下:

實現(xiàn)智能對話機器人的簡單實現(xiàn)代碼如下:

from chatterbot import ChatBot

from chatterbot.trainers import ChatterBotCorpusTrainer

global chatbot

chatbot = ChatBot("ChineseChatBot")

trainer = ChatterBotCorpusTrainer(chatbot)

trainer.train("chatterbot.corpus.chinese")

@myrobot.text

def text_response(message,session):

? ? answer = chatbot.get_response(message.content).text

? ? return answer

效果圖如下:

總結

微信公眾號機器人可以實現(xiàn)一些定制化的功能比如客服機器人,可以做一些非常實用的功能,比如推送個性化定制的疫情感染人數(shù)曲線圖,能精確到省份,也可以作為一個學以致用的工具,比如應用自己的智能聊天機器人算法,如果自己搭建的服務器有GPU就很棒了,可以用到深度學習算法。最后,如果感興趣的話,歡迎測試一下這個搭建好的微信公眾號機器人,服務開放一段時間,這個微信公眾號機器人id是:wandy

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容