作者:JiawuZhang
出品:JiawuLab(ID:jiawulab)
實驗記錄系列是JiawuLab原創欄目,通過真實項目的操作,記錄整個實驗過程。
旨在通過一步步過程,無基礎的朋友都能直接上手。
大家好,我是JiawuZhang,本次實驗記錄的項目是——微信公眾號開發。
我的公眾號開發的第三篇文章,如果您沒看過前二篇文章,這裡是傳送門:
希望您多多關注。
上期回顧
我們首先填了兩個坑,自定義菜單、語音識別消息回覆。
然後對接智能AI機器人,讓我們的公眾號回覆更流暢,也更具個性。
最後瞭解微信公眾號消息回覆原理,以及處理兩個問題點,其他消息分類回覆、關注回覆。
同時發現公眾號很重要的功能——關鍵字回覆——還沒有,這期我們就來解決這個問題。
本期知識點
1、智能AI機器人優化
2、數據庫的基礎操作學習
3、代碼改造實現關鍵字回覆
順序安排為:先進行智能AI機器人優化,再通過數據庫的基礎操作學習,然後通過代碼改造實現關鍵字回覆,最後將該功能對接上線。
智能AI優化
上期我們對接了智能AI機器人,消息回覆變得很有個性,成為了我們很好的幫手。
不知道你有沒有動手實踐,成功對接一個屬於自己的智能AI呢,如果還沒有,請動起手來,項目實際操作才有助於學習。
在實際上線AI後,我們發現,有時小加的回覆莫名其妙的,因為AI也需要不斷的學習,才能更聰明
那麼如何進行優化呢?這裡我來示範一下:
首先,需要進入機器人的後臺,在已創建好的機器人界面,找到數據中心-聊天日誌,如下圖
這裡可查看指定日期粉絲與機器人對話的信息,你可以多點點,查看一下
上圖所示,我問小加,你還在嗎?,小加的回覆真是驢頭不對馬嘴,這就需要進行優化了。
我們點擊箭頭所指的優化語料庫,出現下圖
這裡修改成自己想好的語句後,點擊確定。
之後小加遇到同樣的問題,就會使用你設置的語句回覆,右邊框內可直接進行測試。
如上圖,小加學會了我們設置的語句,你可以設置成自己喜歡的語句。
你也可以在私有語料庫中批量設置相應的回覆,讓機器人學習
上圖就是我設置的幾個語句,你可以多試試。
當我們不斷優化AI機器人,以後會給我們帶來更多的驚喜。
如果您遇到什麼問題,請關注公眾號:JiawuLab,給我留言,我會一一解答。
數據庫實現關鍵字回覆
我們開始實現這個很重要的功能——關鍵字回覆。
關鍵字,一般需要設置很多個,比如有些公眾號的關鍵字回覆高達上百組,
同時關鍵字還有一個問題是,需要不斷的增加,或是修改,
既要設置多組,又要頻繁變動,如果我們將每組關鍵字回覆預設都放進代碼中,
代碼會變得很臃腫,不美麗,而且改動起來都比較麻煩,大家知道在服務器上改代碼是多麻煩的事吧。
所以我在這裡引入一個利器——
數據庫,能很好解決上面的問題。平時我們只需要將相應的預設放入數據庫中,對數據庫進行增刪改,然後代碼只用做判斷即可
當回覆的文本與數據庫中的匹配,代碼就將數據庫中相應的預設發送給粉絲,理論上可以設置無限量。
這裡我使用的是MySQL數據庫,目前大家都很熟悉的一款關係型數據庫。
本文只介紹如何在公眾號開發這個項目中對接數據庫,來實現我們需要的關鍵字回覆功能
如果你對MySQL不熟悉,或是對數據庫缺乏相應的知識,直接按照文章的步驟操作下去,也是沒有問題的
如果你需要學習瞭解數據庫,可以關注公眾號:JiawuLab,我為你推薦一些比較好的學習資源
MySQL數據庫安裝問題
目前我們服務器是沒有MySQL數據庫的,所以我們需要安裝一下,安裝的時候需要注意一點,
MySQL有兩個分支,一個是Oracle收購的(有商業化問題),一個是原MySQL作者開源版本——MariaDB
這兩個版本功能上差不多,操作方式也差不多,只是在功能上有些許不同
所以隨便安裝哪個都是可以的,不影響我們後面的操作。
具體的數據庫安裝及設置這裡就不演示了,網上很多教程,大同小異,
大家覺得有必要寫一篇數據庫安裝教程,可以給我留言,如果人數比較多,我會專門寫一篇。
安裝pymysql
現在數據庫已經有了,但是python還不能直接對接數據庫,所以需要用到支持文件pymysql庫,
通過pymysql庫,我們就可以連接數據庫,對數據庫中的數據表進行增刪改查了。
使用pip安裝也比較簡單
請注意註釋的提醒,我們需要安裝到python3版本下
然後新建一個文件,mydb.py,導入pymysql
數據庫的基礎操作
在上面的文件中,添加連接數據庫的代碼
按照上面的註釋,填寫相應的信息,這樣就連接上數據庫了,並創建了一個可執行SQL語句的遊標
我們希望粉絲髮來一個指定的關鍵字後,回覆一個文本內容/鏈接,就可以新建一個含關鍵字和回覆內容的數據表content
上面只是SQL語句,需要通過遊標執行,如下
保存後,運行python3 mydb.py,然後就會在數據庫名為“jiawulab”中創建一個名為“content”的數據表
數據表有三列,id、keyword、reply
第一個不用管它, 第二個放關鍵字,第三個放回復的內容
下面我們增加三組關鍵字回覆,改mydb.py的代碼如下:
保存後,運行python3 mydb.py,數據就保存到數據表中
這是通過可視化數據庫軟件查詢到的,這三組數據都在裡面
而通過代碼把三條數據都查詢出來,只需要改動一點,示例如下:
現在我們已經學會通過pymysql庫,來進行創建數據表,對數據表進行增加和查詢操作
還記得上面提到的關鍵字回覆的兩個問題嗎?
一、數量多,
二、不斷新增或修改
通過一次增加多條數據,進行關鍵字回覆寫入數據庫中,再通過數據庫的查詢,來實現對關鍵字的匹配。
如果你有不明白的,請關注公眾號:JiawuLab,給我留言,我會一一解答。
代碼改造
通過數據庫基本操作的學習後,我們對項目代碼進行改造,實現關鍵字回覆功能
首先,還是要對mydb.py的改造,我們只需要查詢到數據庫中的"keyword"和粉絲髮過來的關鍵字進行比對
然後向數據庫中添加數據,我們只需要添加的時候才用,項目運行的時候,不用管,
所以我們要將查詢和添加做成兩個函數,來進行調用,
同時在這裡引入一個連接池的概念,目的是不需要重複連接、關閉數據庫,這樣可以保護數據庫
具體原理可以百度,我們拿來用就可以了,要用到連接池,需要先安裝DBUtils庫
然後我們就可以對mydb.py進行改寫,如下
代碼解釋一下:
1、連接池pool裡面按照要求填寫,裡面有個數字“5”,這裡指的是設定5條連接數,你可以根據需求增加
2、addcontent函數是用來需要增加關鍵字回覆用到的,當添加數據庫成功,返回添加成功,如果失敗,則會回滾,對數據庫不做更改
3、mycontent(key)函數是用來和粉絲髮來的關鍵字做匹配的,如果關鍵字key在數據庫中,則返回相對應的回覆,如果不在,則返回None
4、if __name__ == "__main__"在下面的data中添加你需要填寫的關鍵字回覆組,然後python3 mydb.py運行就可以添加了,
當然你也可以改為讀取excel文件,這樣一次性導入數據更多,但需要注意列表中必須是元組形式。
好了,數據庫文件我們設置OK,我們來對handle.py進行改造
Handle類POST方法改造
首先,我們需要在handle.py文件的導入區,導入mydb文件
然後找到Handle類POST方法,在文字回覆部分進行改造,如下
保存文件,重新運行python3 main.py 80,服務重啟。
現在當粉絲髮來指定的關鍵字,就能從數據庫中提取回復內容,回覆給粉絲了。
利用數據庫來實現關鍵字回覆的功能,就上線成功了。
如果你有不明白的,請關注公眾號:JiawuLab,給我留言,我會一一解答。
下一步預告
本期我們首先對智能AI機器人進行優化,讓機器人更聰明。
然後通過pymysql庫,對MySQL數據庫進行了基礎操作學習。
最後通過改造代碼,實現了關鍵字回覆的功能並上線。
細心的你,可能會發現,粉絲每發一條信息,都會查詢一次數據庫,有些信息根本不需要查詢,同時對數據庫壓力太大,
而且最後截圖演示中,關鍵字回覆的不只是文字,是像卡片一樣的樣式,
所以下一步,我將進行代碼再改造,讓數據庫輕鬆點,同時引入一個新的消息回覆類型-圖文回覆,敬請期待。
本期記錄到此結束,感謝您的閱讀。如果您喜歡這期文章,請點贊,支持一下。
歡迎您關注公眾號:JiawuLab,提前體驗完整功能,或者給我留言,說說你遇到的問題,我們一起探討。