![5e60f5d9ce9fb69bb95bf5e539cb8615.png](https://i-blog.csdnimg.cn/blog_migrate/37b00d8b63366696a9c1d539d10ea83f.jpeg)
作者:JiawuZhang
出品:JiawuLab(ID:jiawulab)
实验记录系列是JiawuLab原创栏目,通过真实项目的操作,记录整个实验过程。
旨在通过一步步过程,无基础的朋友都能直接上手。
大家好,我是JiawuZhang,本次实验记录的项目是——微信公众号开发。
我的公众号开发的第三篇文章,如果您没看过前二篇文章,这里是传送门:
我的公众号开发(第一步)简单功能实现
我的公众号开发(第二步)智能AI对接
希望您多多关注。
上期回顾
我们首先填了两个坑,自定义菜单、语音识别消息回复。
然后对接智能AI机器人,让我们的公众号回复更流畅,也更具个性。
最后了解微信公众号消息回复原理,以及处理两个问题点,其他消息分类回复、关注回复。
同时发现公众号很重要的功能——关键字回复——还没有,这期我们就来解决这个问题。
本期知识点
1、智能AI机器人优化
2、数据库的基础操作学习
3、代码改造实现关键字回复
顺序安排为:先进行智能AI机器人优化,再通过数据库的基础操作学习,然后通过代码改造实现关键字回复,最后将该功能对接上线。
智能AI优化
上期我们对接了智能AI机器人,消息回复变得很有个性,成为了我们很好的帮手。
不知道你有没有动手实践,成功对接一个属于自己的智能AI呢,如果还没有,请动起手来,项目实际操作才有助于学习。
在实际上线AI后,我们发现,有时小加的回复莫名其妙的,因为AI也需要不断的学习,才能更聪明
那么如何进行优化呢?这里我来示范一下:
首先,需要进入机器人的后台,在已创建好的机器人界面,找到数据中心-聊天日志,如下图
![c02d15da3f93f8e1f9aa773140a8c69b.png](https://i-blog.csdnimg.cn/blog_migrate/beb350acec0b996e05d46c975d22452c.jpeg)
这里可查看指定日期粉丝与机器人对话的信息,你可以多点点,查看一下
上图所示,我问小加,你还在吗?,小加的回复真是驴头不对马嘴,这就需要进行优化了。
我们点击箭头所指的优化语料库,出现下图
![13e09e3159415ff43e591c3a4e55bfc6.png](https://i-blog.csdnimg.cn/blog_migrate/3ad034c1a1e5b3cd411da5b665eec55e.jpeg)
这里修改成自己想好的语句后,点击确定。
之后小加遇到同样的问题,就会使用你设置的语句回复,右边框内可直接进行测试。
![55b917e818b5d3538d363e115bb33d87.png](https://i-blog.csdnimg.cn/blog_migrate/5455b435cbcf24f751a8c7c95d68a45c.jpeg)
如上图,小加学会了我们设置的语句,你可以设置成自己喜欢的语句。
你也可以在私有语料库中批量设置相应的回复,让机器人学习
![80b01ad4950e730e25ffe2f3a3f66ca6.png](https://i-blog.csdnimg.cn/blog_migrate/07f54136a5e0dac730b0e5192f3de40c.jpeg)
上图就是我设置的几个语句,你可以多试试。
当我们不断优化AI机器人,以后会给我们带来更多的惊喜。
如果您遇到什么问题,请关注公众号:JiawuLab,给我留言,我会一一解答。
数据库实现关键字回复
我们开始实现这个很重要的功能——关键字回复。
关键字,一般需要设置很多个,比如有些公众号的关键字回复高达上百组,
同时关键字还有一个问题是,需要不断的增加,或是修改,
既要设置多组,又要频繁变动,如果我们将每组关键字回复预设都放进代码中,
代码会变得很臃肿,不美丽,而且改动起来都比较麻烦,大家知道在服务器上改代码是多麻烦的事吧。
所以我在这里引入一个利器——数据库,能很好解决上面的问题。
平时我们只需要将相应的预设放入数据库中,对数据库进行增删改,然后代码只用做判断即可
当回复的文本与数据库中的匹配,代码就将数据库中相应的预设发送给粉丝,理论上可以设置无限量。
这里我使用的是MySQL数据库,目前大家都很熟悉的一款关系型数据库。
本文只介绍如何在公众号开发这个项目中对接数据库,来实现我们需要的关键字回复功能
如果你对MySQL不熟悉,或是对数据库缺乏相应的知识,直接按照文章的步骤操作下去,也是没有问题的
如果你需要学习了解数据库,可以关注公众号:JiawuLab,我为你推荐一些比较好的学习资源
MySQL数据库安装问题
目前我们服务器是没有MySQL数据库的,所以我们需要安装一下,安装的时候需要注意一点,
MySQL有两个分支,一个是Oracle收购的(有商业化问题),一个是原MySQL作者开源版本——MariaDB
这两个版本功能上差不多,操作方式也差不多,只是在功能上有些许不同
所以随便安装哪个都是可以的,不影响我们后面的操作。
具体的数据库安装及设置这里就不演示了,网上很多教程,大同小异,
大家觉得有必要写一篇数据库安装教程,可以给我留言,如果人数比较多,我会专门写一篇。
安装pymysql
现在数据库已经有了,但是python还不能直接对接数据库,所以需要用到支持文件pymysql库,
通过pymysql库,我们就可以连接数据库,对数据库中的数据表进行增删改查了。
使用pip安装也比较简单
![6107130fde2164650c4db5720c86e511.png](https://i-blog.csdnimg.cn/blog_migrate/e1c42a3648240985184ef920f6fc592f.jpeg)
请注意注释的提醒,我们需要安装到python3版本下
然后新建一个文件,mydb.py,导入pymysql
![101ef98f7e485eadeff0e9ff95073e0e.png](https://i-blog.csdnimg.cn/blog_migrate/9eca5a20ceffae60311f3aba1367137f.jpeg)
数据库的基础操作
在上面的文件中,添加连接数据库的代码
![7cea193dbd2205ca5efa76ef36861281.png](https://i-blog.csdnimg.cn/blog_migrate/687af88d49229175995427b7a9b778b1.jpeg)
按照上面的注释,填写相应的信息,这样就连接上数据库了,并创建了一个可执行SQL语句的游标
我们希望粉丝发来一个指定的关键字后,回复一个文本内容/链接,就可以新建一个含关键字和回复内容的数据表content
![39d0dec9bbfd986e852a65cc3e522272.png](https://i-blog.csdnimg.cn/blog_migrate/4a5e30821018467144eaabb82fdb2366.jpeg)
上面只是SQL语句,需要通过游标执行,如下
![5b06449ba63d1d950db1e6bc079b0a6a.png](https://i-blog.csdnimg.cn/blog_migrate/c112581abf3b35f3de3d942eb499e186.jpeg)
保存后,运行python3 mydb.py,然后就会在数据库名为“jiawulab”中创建一个名为“content”的数据表
数据表有三列,id、keyword、reply
第一个不用管它, 第二个放关键字,第三个放回复的内容
下面我们增加三组关键字回复,改mydb.py的代码如下:
![88e6da56aa310d87c6b928cc18090836.png](https://i-blog.csdnimg.cn/blog_migrate/bfeecf14ad9ae509fb60490d92e62a07.jpeg)
保存后,运行python3 mydb.py,数据就保存到数据表中
![d9247445dc67355d22687b576a0b71a9.png](https://i-blog.csdnimg.cn/blog_migrate/326232d98ed44595f9bd7a8773e3a352.jpeg)
这是通过可视化数据库软件查询到的,这三组数据都在里面
而通过代码把三条数据都查询出来,只需要改动一点,示例如下:
![efee681dafeb8dd1d896c3ec05df8830.png](https://i-blog.csdnimg.cn/blog_migrate/a43770850af67f716a4b5872102de8e8.jpeg)
现在我们已经学会通过pymysql库,来进行创建数据表,对数据表进行增加和查询操作
还记得上面提到的关键字回复的两个问题吗?
一、数量多,
二、不断新增或修改
通过一次增加多条数据,进行关键字回复写入数据库中,再通过数据库的查询,来实现对关键字的匹配。
如果你有不明白的,请关注公众号:JiawuLab,给我留言,我会一一解答。
代码改造
通过数据库基本操作的学习后,我们对项目代码进行改造,实现关键字回复功能
首先,还是要对mydb.py的改造,我们只需要查询到数据库中的"keyword"和粉丝发过来的关键字进行比对
然后向数据库中添加数据,我们只需要添加的时候才用,项目运行的时候,不用管,
所以我们要将查询和添加做成两个函数,来进行调用,
同时在这里引入一个连接池的概念,目的是不需要重复连接、关闭数据库,这样可以保护数据库
具体原理可以百度,我们拿来用就可以了,要用到连接池,需要先安装DBUtils库
![04ae689df80b60132c970acd95380fae.png](https://i-blog.csdnimg.cn/blog_migrate/baada80f8c5a57e01a7971b0a3c28d8c.jpeg)
然后我们就可以对mydb.py进行改写,如下
![e68db55f3c5585d5e99faa0032592837.png](https://i-blog.csdnimg.cn/blog_migrate/1e6fbfe61fce0207200aad7569ff5dae.jpeg)
代码解释一下:
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文件
![f688e9bcce696742207d2d625b0b42bd.png](https://i-blog.csdnimg.cn/blog_migrate/8477ca3cdf56548e8b067f17fe0fb517.jpeg)
然后找到Handle类POST方法,在文字回复部分进行改造,如下
![09fb2cfbaffce4096072b525bcc196ff.png](https://i-blog.csdnimg.cn/blog_migrate/702885f89acd7ec8967c1acda4792af8.jpeg)
保存文件,重新运行python3 main.py 80,服务重启。
现在当粉丝发来指定的关键字,就能从数据库中提取回复内容,回复给粉丝了。
利用数据库来实现关键字回复的功能,就上线成功了。
![3720a40b236c91ef7738e4686d45dbab.png](https://i-blog.csdnimg.cn/blog_migrate/9ec8b4de387434b2c561ff7f633cbdba.jpeg)
关键字回复演示
如果你有不明白的,请关注公众号:JiawuLab,给我留言,我会一一解答。
下一步预告
本期我们首先对智能AI机器人进行优化,让机器人更聪明。
然后通过pymysql库,对MySQL数据库进行了基础操作学习。
最后通过改造代码,实现了关键字回复的功能并上线。
细心的你,可能会发现,粉丝每发一条信息,都会查询一次数据库,有些信息根本不需要查询,同时对数据库压力太大,
而且最后截图演示中,关键字回复的不只是文字,是像卡片一样的样式,
所以下一步,我将进行代码再改造,让数据库轻松点,同时引入一个新的消息回复类型-图文回复,敬请期待。
本期记录到此结束,感谢您的阅读。如果您喜欢这期文章,请点赞,支持一下。
欢迎您关注公众号:JiawuLab,提前体验完整功能,或者给我留言,说说你遇到的问题,我们一起探讨。
![8478b270210fea43b3247963f749ad78.png](https://i-blog.csdnimg.cn/blog_migrate/63b393e167e370efff605f25268cb8e1.jpeg)