写在前面:本HowTo系列用来记录个人在Wechaty的学习和研究过程中的点滴经验,希望能帮助更多人避免我踩过的坑,快速熟悉Wechaty这个工具
背景
2021年初的时候,在社区上发现了Wechaty项目,由于时间不够充分,没有静下心认真的研究相关内容,加上之前的文档确实不够健全,学习成本很高,一个简单的类似HelloWorld的代码也没有跑通,遂暂时搁置了这个工具的研究。直到最近个人工作上有些需求,需要对公司的微信数据进行管理和社区的自动化运营操作,想起来之前接触的Wechaty工具,就想着再次尝试一下,重新开始学习这个工具。
欢迎大家在实践本HowTo内容的过程中,将遇到的问题及对应的解决方法发送给我 harrison.gyao@gmail.com ,我会在收到信息后,及时更新本文档,以帮助更多的人,谢谢你的反馈~!
前提要求
-
本文阅读的难度不大,按照文中的标准操作,大概率会能够自主的搭建相应的应用服务环境,并完成一个基本功能的实现。但本文要求读者必须具备基本的编程技能,在服务端领域能够知道RPC(Remote Procedure Call)、Docker的相关基本知识,如果对这方面内容不了解,可以查阅 Reference 的相关部分。
-
在执行本文中提供的 Gateway 服务脚本时,需要提前确保执行机上的 Docker Daemon 是否正常启动,否则shell脚本执行失败。
试验环境
- macOS Ver:11.5
- Python 3.8
- Docker desktop (latest)
内容介绍
本篇Blog会从以下三个方面内容来描述如何快速的能够完成一个最简单的Python-Wechaty应用的搭建,同时对一些过程中可能遇到的问题,进行及时的处理。
- 必须掌握的基本知识
- 最简Ding-Dong应用代码
- 过程中遇到过的问题
必须掌握的基本知识
- Wechaty的基本结构
这个结构图例很好的阐述了Wechaty的生态环境架构:
- 底层是各个IM工具的通讯协议层,未来可以支持更多IM工具的消息传输,并在这个层级上进行相应的扩充即可。
- Wechaty Puppet Service Provider 是作为对底层IM协议层的操作控制层作用而设计存在,可以在使用 “Wechaty Puppet Abstract” 通用接口层的设计基础上,忽略底层协议及IM的个性化,提炼共性的操作内容,暴露统一的操作接口给外部调用者。
- Wechaty (Python、NodeJS等),是基于gRPC框架基础上,在”Wechaty Puppet Abstract”的接口定义约束条件下,通过gRPC的Stub程序完成对底层Provider的掉用。
- Service相关
Wechaty 对于底层IM消息解析和处理,是通过Service Provider 控制的协议层程序来完成相关处理,所以对应不同IM的不同协议内容(如:微信的Pad协议、web协议、mac协议等),需要使用配套的Ser