本项目计划针对企业微信平台开发一个puppet,让 Wechaty 开发者可以仅仅通过改变一个变量,就能够切换使用企业微信的功能。
暑期2020 [基于开放 API 封装 Wechaty 接口下的企业微信聊天机器人] 终结成果展示
暑期2020
“开源软件供应链点亮计划-暑期2020”(以下简称 暑期2020)是由中科院软件所与 openEuler 社区共同举办的一项面向高校学生的暑期活动。 旨在鼓励在校学生积极参与开源软件的开发维护,促进国内优秀开源软件社区的蓬勃发展。 根据项目的难易程度和完成情况,参与者还可获取“开源软件供应链点亮计划-暑期2020”活动奖金和奖杯。 官网:https://isrc.iscas.ac.cn/summer2020 官方新闻:http://www.iscas.ac.cn/xshd2016/xshy2016/202004/t20200426_5563484.html 本项目 [基于开放 API 封装 Wechaty 接口下的企业微信聊天机器人] 系 暑期2020 支持的开源项目。
[基于开放 API 封装 Wechaty 接口下的企业微信聊天机器人]
- 导师:高原
-
学生:谢昱清
- 项目名称:wechaty-puppet-wecom: 基于开放 API 封装 Wechaty 接口下的企业微信聊天机器人
- 方案描述:
- 时间规划:
- 准备工作
- 2020.7.1 - 2020.7.19
- 掌握相关技术栈(typescript等),了解puppet构造。
- 与企业微信建立连接,完成node.js到企业微信的信息通路
- 2020.7.20 - 2020.8.5
- 包括对话的加密解密,相关环境配置,node.js与微信SDK的交互。完成node.js进行企业微信消息拉取的demo。
- 注:原计划于2020.7.26完成,但是由于对预期成果理解有误,进展方向出现了偏差,延期一星期。
- 实现 puppet 上各个类型的消息接口
- 2020.8.6 - 2020.8.30
- 正式开发puppet。完成状态函数,消息的读取及消息的存储等内容。可能需要拓展原本puppet的数据结构。其中第一周完成逻辑设计及基本的消息拉取。
- 注:企业微信puppet仅负责拉取消息,不必完成完整的交互过程,因此可能需要单独设计对应的bot进行测试。
- 实现puppet上对媒体文件信息的拉取
- 2020.8.31 - 2020.9.20
- 基本完成puppet的全部功能,可以将媒体文件暂存在文件夹下。
- 重构代码+收尾完善
- 2020.9.21 - 2020.9.30
- 简单封装了contact、room等类,改变了媒体文件的传送方式,完成了FileBox的相关函数。撰写readme等文档,明确仍需开发的内容,完成项目结题报告。
项目进度
- 项目成果:
- 运用企业微信提供的API接口完成了消息的加密解密以及跨语言的信息传递;
- 完成了全部消息类型(文本信息及媒体信息)的封装;
- 简单配置了参数及内部逻辑,可以定时拉取形成“即时沟通”的效果;
- 撰写简单的配置说明。
- 关于代码结构与功能演示的视频
- 遇到的问题及解决方案:
- 对项目需求不明确,前期缺乏和导师的有效沟通,导致有一两周的进展与目标方向无关,成为了无用功。后期应当积极与导师沟通,尽快解决存疑的问题,避免出现类似的情况。
- 使用全新技术栈,除了需要花费较多时间入门外,在配置环境等方面出现了大量问题,有些甚至在网络上都无法搜索到解决方式。例如安装node-ffi时遇到的几个少见的安装bug:
- 编译时没有binding.cc这个文件,需要自己建一个空文件;
- node和npm需要降级,否则无法成功安装编译ffi/ref;
- 如果用C++编译ffi的example(factorial.c),需要更改宏结构,否则会报“Error: Dynamic Symbol Retrieval Error: Win32 error 127”。
- 时间管理出现了一些意外。在学校一共上了七周的小学期,以及三周秋季正式的课,加上平时不注重时间管理,导致长时间进度落后。以后也需要注意抓紧时间,不能拖延,将能做的事情尽早解决。
心得与体验
在项目期间,我感觉自己对于代码的理解能力在不断提高,回首一看,原先不懂的现在都明白个大概了,收获真的很大。在写这个报告的时候其实才算是对整个wechaty的架构有了一个比较清晰的认识,从7月初的完全不懂到八月的逐渐入门再到现在的恍然大悟(或许也没有真正领悟),很有成就感。
当然遗憾和不足也同样很多。主要的问题还是在于自身,对语言的不熟悉、时间上的冲突,导致目前的结果并不十分令人满意,遗留下了不少的坑待填。对于我而言这也是一个很重要的教训,未来做项目也要规划好时间,及早了解需要的技术栈,这样才能更好地完成任务。
另:其实本来觉得自己的代码虽然肯定不能直接发布使用,也勉强算是马马虎虎完成了主要的功能。但是一看别人的blog,我陷入了深深的尴尬,其实可以完成度更高、做得更好的。希望这学期学校开设的软件工程等等课程可以让我更深入地理解并熟悉完整开发流程吧!
联系我们
- 项目链接:https://github.com/Sapio-S/wechaty-puppet-official/
- 联系方式:1205402283@mail.qq.com