首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我的公众号开发图文消息回复

实验记录系列是JiawuLab原创栏目,通过真实项目的操作,记录整个实验过程。 旨在通过一步步过程,土基础的朋友都能直接上手。

作者:JiawuZhang

出品:JiawuLab(ID:jiawulab)

大家好,我是JiawuZhang,本次实验记录的项目是——微信公众号开发。

我的公众号开发的第四篇文章,如果您还没有来得及看前三篇文章,请公众号回复“第一步”“第二步”“第三步”获取。

上期回顾

首先对智能AI机器人进行优化,让机器人更聪明。

然后通过pymysql库,对MySQL数据库进行了基础操作学习。

最后通过改造代码,实现了关键字回复的功能并上线。

细心的你,可能会发现,粉丝每发一条信息,都会查询一次数据库,有些信息根本不需要查询,同时对数据库压力太大,

而且最后截图演示中,关键字回复的不只是文字,是像卡片一样的样式,

本期,我将进行代码再改造,让数据库轻松点,同时引入一个新的消息回复类型-图文回复

本期知识点

1、图文消息回复

2、数据库轻松点

3、日志功能

关键字回复体验

上期我们使用数据库实现了关键字回复的功能,不知道你有没有试过,好不好用

反正我使用下来非常好用,可以在服务器不重新启动的情况下,增加多组新的关键字

比如原先我设置的关键字,只有下面两组,有朋友也测试过

然后我昨天将前三篇文章也加入进去,现在是这样的

只需要回复“第一步”“第二步”“第三步”,就能得到下面的回复

是不是很方便呢,一旦有新的关键字需要增加,都可以马上增加,你也可以上手试试看。

图文消息回复

大家从上面图片可看到,我用到的是一种卡片型的回复,不再是纯文字的

这就是本期将要学到的一种新的类型——图文消息回复

官方文档中也有提及这种类型,如下截图:

消息管理-被动回复用户消息-回复图文消息,有对该类型进行表述

从截图可以看到,图文消息体,我们单独拿出来研究一下

消息体分析:“MsgType”的消息类型为“news”,一种新的类型,还记得前面我们分析消息回复原理讲到的吗?

如果你不记得了,请查看——智能AI对接——再学习。

上面表格中写明了,消息体的各项参数说明,我们从中可以得到如下结论

1、“ArticleCount”,我们是发送文本、图文,所以只能回复1条图文消息,所以我们只能设置为1

2、发送图文消息,我们需要有四条内容,分别是“Title”、“Description”、“PicUrl”、“Url”,对应着标题、描述、图片地址、链接

所以需要按照上期文章——数据库实现关键字回复——来改造数据库

综合上述,本期需要解决两个问题,才能实现图文消息回复,分别是新类型news数据库改造,我们来实现吧

新回复类型news

当收到粉丝发来的一条文本关键字,服务器根据关键字返回类型为news的图文消息给粉丝

对于接收程序receive来说,还是文本消息,不用改造

我们需要改造的是回复程序reply,增加新类型news,如下

这里我说明一点:回复程序从Handle程序传递参数content,这是一个包含标题、描述、图片地址、链接的元组

所以需要在参数content的创建中,也按照这个顺序来,否则会出现错误

完成了回复程序reply的改造后,我们来对Handle程序中POST方法进行改造

本次更改很简单,只需要将备注点前面的"TextMsg"改为"NewsMsg"即可

这样就能调用图文消息回复,不过有个问题产生,mydb文件中mycontent()函数返回的并不是包含标题、描述、图片地址、链接的元组

所以我们需要对mydb中的mycontent()函数进行改造

数据库改造

改造mycontent()函数前,需要改造数据库,

原先我们创建的数据表中,只有"keyword"和"reply"两项内容

而图文回复需要五项内容,"keyword"、"Title"、"Description"、"PicUrl"、"Url",所以我们需要重新创建一个数据表

创建数据表还记得吗,我这里将SQL语句给出来

后续操作按照上期文章介绍的执行即可,你可以动手试试

数据表有了,添加数据的两种方式,

一是代码添加,如下

二是使用mySQL可视化软件直接添加,如下图:

两种方法各有优势,你可以选择自己合适的方式进行

关于图片地址,我的方法是,先将图片上传到素材中,再将图片地址复制出来

数据表有了,添加数据的方式也说了,我们进行代码改造mycontent()函数

前面提到的,按照'标题'、'描述'、'图片地址'、'链接'的顺序返回data数据

保存文件后,重新启动服务器,就可以实现图文消息回复了,你也动手试试看,是不是很有成就感。

让数据库轻松点

上期结尾处,我们提到,粉丝每发一条消息,都要查询一次数据库,而且本期又改造成了图文回复

查询数据库的次数和耗时,都有所增加,那我们应该怎么减轻数据库的压力呢?

这里我的方法是,将数据表中关键字全部提出来,然后先用粉丝的消息与关键字列表做判断

如果在关键字列表中,再从数据库中将'标题'、'描述'、'图片地址'、'链接'等信息都取出来,发给粉丝

当然,如果你有更好的办法,自己进行实现,也可以分享在留言处,让大家都学习一下

这里按照我的方法进行,在mydb文件中新建一个mykeyword函数

然后将mykeyword函数加到Handle类中

保存文件后,重启服务器就好了,这样数据库会轻松点,同时因为有数据池的存在,多人同时消息回复也能轻松解决。

日志功能

前面三期,我们每保存完改造后的代码,都是使用的python3 main.py 80,进行服务启动

这会造成一个问题,当退出后,服务就不再继续了,而且没有日志,不方便查看问题

所以本期,我们只用一条命令,就可以解决上述问题

我们在服务器命令行界面,先cd到main.py所在的文件夹

输入这条命令:

nohup python3 main.py 80 > wx.log 2>&1 &

服务就启动了,并且常驻在后台运行,我们退出服务器,程序也会一直运行

然后将服务器的日志保存在wx.log文件中

我们打开wx.log文件看看,命令是:

vi wx.log

就能查看到wx.log中的日志信息了

里面会根据你在程序中设置的print信息,以及各IP访问你的服务器的信息,你可以试试

现在日志功能有了,而且服务在后台静默运行,我们只要多增加相应的关键字回复就好。

下一步预告

本期我们新增图文消息回复,并且让数据库更轻松,最后也拥有了日志功能。

现在已经拥有了很完整的功能,只需要日后根据运营情况,进行完善相关功能就行。

那下一步做什么呢?还记得我们最开始选择的开发基础配置吗?

对了,明文模式,也就是说,所有粉丝发来的信息和我们回复的消息,都是明文的

如果有人进行数据包拦截,不用解密,就能全部看到,这样很危险。

所以下一步,我们将实现最重要,也是必须为安全着想的功能——消息加密

本期记录到此结束,感谢您的阅读。如果您喜欢这期文章,请点赞,支持一下。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191102A0AK3E00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券