手把手教你做一个天猫精灵(六、将QQ接入智能终端)
上一章讲到利用路由器镜像的功能转发消息,本章介绍物联网终端的另一应用场景——通过智能终端收发QQ消息。
硬件准备
(无)
环境搭建
实现QQ消息转发需要依赖社区维护的QQ客户端gocqhttp以及聊天机器人框架nonebot2,而在这个社区内fubuki-iot是作为一个插件的形式存在的。因此完整的调用链如下图所示:
由于在最新一版的fubuki-iot中已经内置了QQ消息处理的相关功能,因此只需要像之前一样部署fubuki-iot和emqx服务即可。
然后再部署gocqhttp,按照说明文档下载并运行。首次下载会生成config.json文件,在文件中修改QQ号和密码,并将连接设置为反向websocket连接,启动后即可登陆QQ。再创建一个python项目,并安装以下package
pip install nonebot2
pip install nonbeot-plugin-iot
然后新建一个文件命名为bot.py
,并写入以下内容:
import nonebot
from nonebot.adapters.onebot.v11 import Adapter
from iot.core import Iot
from iot.devices import raspberry_pi
nonebot.init()
driver = nonebot.get_driver()
driver.register_adapter(Adapter)
config = driver.config
Iot.start("RaspberryPi")
if __name__ == "__main__":
nonebot.run()
运行这个文件,如果发现gocqhttp控制台不在告警,nonebot2控制台提示已经连接到QQ则说明连接成功。如果MQTT服务器页面现实有Topic被订阅则说明MQTT服务器连接成功。
功能使用
这时候唤醒智能终端说“给XXX发送YYY”就可以向XXX好友或者群发送YYY消息。如果在群内艾特登陆的QQ账号并发送消息则可以激活智能终端推送消息。
给指定用户发送指定消息:
接受群里艾特的消息:
有可能出现上图尴尬的场景,就是不能正确识别QQ用户或者群名称,导致发送不到消息。或者QQ用户或者群名称过于复杂以至于语音合成出现问题。
本系列教程目前先告一段落了,fubuki-iot做成本科毕业设计项目应该不成问题,但是能否真正运用到生活中去还有待时间考证。起初我也是接入天猫精灵SDK后了解了物联网相关知识,项目也让我学习了很多知识。最后,也希望大家多提意见,多点赞项目。