我的公众号开发(第三步)数据库实现关键字回复

我的公众号开发(第三步)数据库实现关键字回复

作者: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,提前体验完整功能,或者给我留言,说说你遇到的问题,我们一起探讨。

我的公众号开发(第三步)数据库实现关键字回复



分享到:


相關文章: