summer
summer copied to clipboard
基于Wechaty 开发开源的二师兄社群逗乐机器人
开源软件供应链点亮计划
“开源软件供应链点亮计划-暑期2021”(以下简称 暑期2021)是由中科院软件所与 openEuler 社区共同举办的一项面向高校学生的暑期活动,旨在鼓励在校学生积极参与开源软件的开发维护,促进国内优秀开源软件社区的蓬勃发展。
根据项目的难易程度和完成情况,参与者还可获取“开源软件供应链点亮计划-暑期2021”活动奖金和奖杯。
Wechaty
Wechaty 是一个开源聊天机器人框架SDK,具有高度封装、高可用的特性,支持NodeJs, Python, Go 和Java 等多语言版本。在过去的5年中,服务了数万名开发者,收获了 Github 的 9600 Star。同时配置了完整的DevOps体系并持续按照Apache 的方式管理技术社区。
Wechaty 官网暑期2021项目入口:https://wechaty.js.org/docs/ospp/2021/
项目名称
基于Wechaty 开发开源的二师兄社群逗乐机器人
背景介绍
王二狗曾经是一个被无数群主拿来活跃气氛的开心果,通过成语接龙,猜歇后语和猜歌名等简单好玩的游戏提升群内聊天频率,提升人与人之间的沟通。
Wechaty 社区目前已经支持微信、Whatsapp、企业微信、飞书等常见流行即时通讯工具,并且能够通过多语言 SDK (比如 Python Wechaty) 进行调用,我们在本次 Summer 2021 的项目中,社区希望能够开发一个开源的二师兄,完成讲笑话、成语接龙、猜图片、猜歌名、查航班、查天气、微博爆款热搜提醒等功能。
需求介绍
- 完成开源二师兄游戏项目搭建
- 开发讲笑话、成语接龙、猜图片、猜歌名、查航班、查天气、微博爆款热搜提醒等功能
- 设计二师兄对外公开 Logo、不同情绪下的形象
- 完成二师兄后花园页面开发
在初期开发中,完成讲笑话、成语接龙、猜图片、猜歌名、查航班等功能,即可完成原型验证 POC 。
项目难度
中(奖金:9,000元)
导师联系方式
- 王丹丹:Wechaty Contributor, AI Chatbot Wechaty x PaddleHub UP 主
- 吴京京:Python Wechaty creator, Wechaty committer, Microsoft Research Asia Intern
项目产出目标
- 每日代码 commit
- 每周提交一份 report (回复本 issue)
- 每两周一次在线会议
- 完成讲笑话、成语接龙、猜图片、猜歌名、查航班、查天气、微博爆款热搜提醒等功能
- 设计二师兄对外公开Logo以及不同情绪下的形象
- 完成二师兄后花园开发
- 完成计划列表中的计划
- 配置 GitHub Actions 实现自动化测试* (可选)
项目技术栈
- TypeScript programming language
- Git
参考链接
@ReiKohaku 同学你好像提交了申请但是没有留下任何联系方式
基于 Wechaty 开发开源的二师兄社群逗乐机器人 期中项目报告
项目信息
-
项目名称:基于 Wechaty 开发开源的二师兄社群逗乐机器人
-
方案描述
本项目需要基于Wechaty开发一个多功能群聊机器人。
该机器人的核心功能是编写并配置拦截器来实现对消息的响应。拦截器是一种固定传入参数和返回值类型的函数,通过编写拦截器的逻辑,可以拦截消息或放行消息给下一个拦截器,同时做出一定的响应。
本项目预置了若干功能,如查天气、讲笑话、成语接龙、猜字谜等以供使用和参考。同时,本项目希望能够允许用户自行添加功能,所以用户可以通过自己编写拦截器的方式,来为机器人添加功能。
本项目也将提供一个二师兄后花园页面,作为扩展的帮助文档、状态查询和日活功能使用。
-
时间规划:
-
开发可扩展式开发框架(7.1-7.7)
- 熟悉Wechaty开发模式
- 搭建二师兄开发脚手架
-
具体功能实现(7.8-7.30)
- 初步实现要求中的具体功能,可能包括且不限于:讲笑话、看热搜、查天气、成语接龙、猜图片、猜歌名
- 初步编写相关功能API的注册与部署文档
-
设计二师兄Logo及形象(8.1-8.7)
- 为二师兄的Logo和形象做出初步描述
- Logo及形象定稿
-
开发二师兄后花园(8.8-8.30)
- 设计后花园游玩流程及各项数值
- 搭建二师兄后花园服务及页面
-
编写文档与完善功能(9.1-9.30)
- 编写使用、部署及开发文档
- 整理代码并完善功能
-
项目进度
-
已完成工作
-
完成了机器人基本框架的全部搭建
-
提供了讲笑话、看热搜、查天气、搜音乐、成语接龙、猜字谜的预置功能。
-
二师兄的Logo已基本定稿。
-
-
遇到的问题及解决方案
目前的主要问题是不能很好地应对自然语义的复杂环境。
由于设计上希望响应尽可能快速、高效,目前提供的示例插件均使用正则表达式来检查功能触发、解析参数。这样做有两个缺点:
-
正则表达式的覆盖虽广,却也不全面。
例如查天气功能中,预设了两种触发方式:“二师兄,查xx天气”和“二师兄,xx天气如何/怎么样”。但事实上问天气不止有这些问法,还有如“xx的天好不好”、“xx在下雨吗”等问法。这些特殊的问法并不能被正则表达式解析。
-
正则表达式对参数的提取不是非常好。
依旧以查天气功能距离,“二师兄,xx天气如何”这句话,关键在于提取出地名。但是由于“二师兄”这一触发词后面就是参数,所以提取地名就稍显困难。另外就如上一条举例,“xx在下雨吗”这类问话中,用户还表达了xx是否在下雨这一含义,这时更符合自然语言的应答应该是“xx在下雨”或“xx没有在下雨”。正则表达式暂时还做不到这些。
关于这一问题的解决方案,有一种是接入微信开放平台的语境检测API,这样可以较为准确地识别语义。另外也可以考虑使用jieba库分词来解决语义分析和参数提取的问题。
-
-
后续工作安排
后续工作与计划基本一致,优先考虑完成计划清单上的任务。关于自然语义识别这方面将会视产能而定。
中期评审意见
- 项目完成度:井维嘉同学能够按照既定计划进行开源项目开发,目前进度与计划相符;
- 学生参与度:积极参与项目开发,主动调研新技术和解决现有问题。
- 代码贡献量:完成了代码 Repo 的设立和整体框架的搭建,实现六种预置的逗乐功能以及扩展接口,此外logo也已基本定稿;贡献量较多
- 综合评价及建议:项目进展顺利,希望接下来: 1、进一步优化目前function的语义理解和对话管理;可以尝试一下深度对话的pipeline(从Botsociety-Rasa-Wechaty); 2、增加更有娱乐性质的function,以及完善后花园功能。
评审结果:通过
Hi @ReiKohaku, Please upload the video to bilibili or Tencent as well, Thanks.
LIve Code:https://v.qq.com/x/page/c3274q836cb.html 期中报告:https://v.qq.com/x/page/y3274f2xud0.html
[基于 Wechaty 开发开源的二师兄社群逗乐机器人] 进度报告
日期:2021-09-10
本周完成的成果
- 重写了拦截器(Interceptor)的构造和逻辑
- 搭建了二师兄后花园的API后端
- 编写了快速开始和拦截器开发文档
本周遇到的困难和需要配合的地方
- 自造Restful API轮子稍显吃力
- 拦截器有些臃肿,实现也不太优雅
下周的开发计划和预计成果
- 完成二师兄后花园后端与前端
- 编写其它开发文档
- 配置Github Issue Template
其他需要说明和同步的事项
无
[基于 Wechaty 开发开源的二师兄社群逗乐机器人] 进度报告
日期:2021-09-17
本周完成的成果
- 为拦截器添加了attribute项
- 完成了二师兄后花园的搭建
- 配置了Github Issue Templates
本周遇到的困难和需要配合的地方
- 想要做自然语言处理,但是不好与当前项目融合
下周的开发计划和预计成果
- 完善文档
其他需要说明和同步的事项
无
Final Demo Day 视频
结项报告:https://youtu.be/Na9pGdf_6oY Live Code:https://youtu.be/51EwCNB_Y90
- 项目完成度:严格按原计划进行并完成了项目的开发;
- 学生参与度:能够积极参与项目设计和解决方案的讨论和执行
- 代码贡献量:完成了整体可拓展框架的搭建,实现六种预置功能以及扩展接口,此外完成拦截器的开发和“后花园”页面的前后端开发;贡献量较多
- 综合评价及建议:项目进展顺利,交付完整,完成度较高;建议:继续优化目前功能,提高可用度;另外未来可以吸引更多开发者共同开发维护,增加新的功能,增添项目的趣味性和社交功能;
结项审核:通过