我的公眾號開發(第三步)數據庫實現關鍵字回覆

我的公眾號開發(第三步)數據庫實現關鍵字回覆

作者:JiawuZhang

出品:JiawuLab(ID:jiawulab)

實驗記錄系列是JiawuLab原創欄目,通過真實項目的操作,記錄整個實驗過程。

旨在通過一步步過程,無基礎的朋友都能直接上手。

大家好,我是JiawuZhang,本次實驗記錄的項目是——微信公眾號開發。

我的公眾號開發的第三篇文章,如果您沒看過前二篇文章,這裡是傳送門:

我的公眾號開發(第一步)簡單功能實現

我的公眾號開發(第二步)智能AI對接

希望您多多關注。

上期回顧

我們首先填了兩個坑,自定義菜單、語音識別消息回覆。

然後對接智能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,提前體驗完整功能,或者給我留言,說說你遇到的問題,我們一起探討。

我的公眾號開發(第三步)數據庫實現關鍵字回覆



分享到:


相關文章: