summer icon indicating copy to clipboard operation
summer copied to clipboard

开发支持电信运营商 5G Chatbot / RCS 的 Wechaty 接入 Puppet 模块

Open huan opened this issue 3 years ago • 17 comments

开源软件供应链点亮计划

“开源软件供应链点亮计划-暑期2021”(以下简称 暑期2021)是由中科院软件所与 openEuler 社区共同举办的一项面向高校学生的暑期活动,旨在鼓励在校学生积极参与开源软件的开发维护,促进国内优秀开源软件社区的蓬勃发展。

根据项目的难易程度和完成情况,参与者还可获取“开源软件供应链点亮计划-暑期2021”活动奖金和奖杯。

官网:https://summer.iscas.ac.cn

Wechaty

Wechaty 是一个开源聊天机器人框架SDK,具有高度封装、高可用的特性,支持NodeJs, Python, Go 和Java 等多语言版本。在过去的5年中,服务了数万名开发者,收获了 Github 的 9600 Star。同时配置了完整的DevOps体系并持续按照Apache 的方式管理技术社区。

项目名称

电信运营商商 5G Chatbot (RCS, Rich Communication Service) Puppet

背景介绍

Wechaty 社区目前已经支持微信、Whatsapp、企业微信、飞书等常见流行即时通讯工具,并且能够通过多语言 SDK (比如 Python Wechaty) 进行调用。

5G Chatbot (RCS) 是近期中国电信运营商基于 5G 的消息战略落地平台,未来的 5G 手机将会内置 RCS 消息的处理能力。

硬核桃社区电信运营商商5G Chatbot 平台。

我们在本次 Summer 2021 的项目中,Wechaty 希望可以实现对 RCS Chatbot 的支持。通过 Wechaty Puppet 的接口,可以将 RCS 协议封装成为 wechaty-puppet-5gmsg 供 Wechaty 开发者方便接入 RCS 平台,使其成为 Wechaty 可以使用的社区生态模块。

需求介绍

使用 https://github.com/wechaty/wechaty-puppet-official-account 项目作为模版,将核心代码文件 https://github.com/wechaty/wechaty-puppet-official-account/blob/master/src/puppet-oa.ts 中的微信公众平台调用,全部替换(封装)为 RCS 模块的调用。

这里有一个专门讲解如何开发 Wechaty Puppet Provider 的 workshop 视频,它以 wechaty-puppet-official-account 作为例子,做了从0到1的入门讲解:Wechaty Workshop for Puppet Makers: How to make a Puppet for Wechaty。通过观看这一个小时的视频,应该可以系统性的了解如何完成构建一个 Wechaty Puppet Provider 模块。

在初期开发中,能够实现文本消息的接收和发送,即可完成原型验证 POC 。

还可以参考以下链接:

  1. TypeScript Puppet Official Documentation: https://wechaty.github.io/wechaty-puppet/typedoc/classes/puppet.html
  2. Wechaty Puppet Specification: https://wechaty.js.org/docs/specs/puppet
  3. https://github.com/wechaty/wechaty-puppet-mock

项目难度

中(奖金:9000元)

导师联系方式

  1. 李佳芮: Wechaty co-creator, Founder & CEO of Juzi.BOT ([email protected])
  2. 康嘉: 硬核桃社区(https://www.5g-msg.com/) PM

项目产出目标

  1. 每日代码 commit
  2. 每周提交一份 report (回复本 issue)
  3. 每两周一次在线会议
  4. 发布 Git Repo wechaty-puppet-5g-msg
  5. 可以通过 Wechaty 加载 wechaty-puppet-5g-msg 模块,并通过 5G Chatbot / RCS 底层,实现文本消息的收发功能
  6. 提供一个 examples/ding-dong-bot.ts ,完成“接收到文字消息ding时,自动回复消息dong"的功能
  7. 配置 GitHub Actions 实现自动化测试* (可选)

项目技术栈

  1. TypeScript programming language
  2. Git
  3. REST API
  4. 5G Chatbot / Rich Communication Service
  5. 硬核桃社区 5G Chatbot SDK

Hello students!

We want Wechaty to be the universal instant messaging SDK on all IM platforms for chatbot makers to build their great conversational user interface, so while these are our ideas of what we think would make good projects for the summer, we're eager to hear your ideas and proposals as well.

Try us out and get to know the Wechaty code with examples!

Link to

What we want to do

Implement 5G Chatbot Puppet (Enable RCS Support for Wechaty wechaty/wishlist#53). The Puppet abstraction allows Wechaty to provide a consisting API on all IM platforms for build a chatbot. We are supporting WeChat, WeCom, Whatsapp already, and we want to support 5G Chatbots (Rich Communication Services, RCS) so that our developers can run their chatbots on 5G Phone to serve users from the phone RCS message.

  • Required skills: TypeScript programming language, 5G RCS API.
  • Likely mentors: @huan.

Useful Links

huan avatar Mar 30 '21 13:03 huan

开发支持电信运营商 5G Chatbot / RCS 的 Wechaty 接入 Puppet 模块 一、详细方案

  1. 任务要求 通过 Wechaty Puppet 的接口,可以将 RCS 协议封装成为 wechaty-puppet-5gmsg 供 Wechaty 开发者方便接入 RCS 平台,使其成为 Wechaty 可以使用的社区生态模块。使用 https://github.com/wechaty/wechaty-puppet-official-account 项目作为模版,将核心代码文件 https://github.com/wechaty/wechaty-puppet-official-account/blob/master/src/puppet-oa.ts 中的微信公众平台调用,全部替换(封装)为 RCS 模块的调用。 在初期开发中,能够实现文本消息的接收和发送,即可完成原型验证 POC 。
  2. 实现方案 通过对Wechaty Puppet Provider,REST API以及5G Chatbot SDK等进行了解和学习,并对已有项目进行梳理,多和导师进行沟通,实现通过 Wechaty 加载 wechaty-puppet-5g-msg 模块,并通过 5G Chatbot / RCS 底层,实现文本消息的收发功能,提供一个 examples/ding-dong-bot.ts ,完成“接收到文字消息ding时,自动回复消息dong"等功能。 二.项目开发时间计划
  3. 第一阶段(7月-8月) 7.1-7.10 先和导师沟通,寻求导师的指导和建议,熟悉Wechaty Puppet Provider的业务流程,并对自己目前还没有掌握的技术栈REST API和5G Chatbot / Rich Communication Service进行快速的了解和学习,确定好详细的任务规划. 7.11-8.15 开始正式编码,先完成基础的功能,完成通过 Wechaty 加载 wechaty-puppet-5g-msg 模块,并通过 5G Chatbot / RCS 底层,实现文本消息的收发功能。每周需要进行复盘总结。
  4. 第二阶段(8月-10月) 在已有基础上完善后续功能,并进行总结。 8.16-9.30 继续完善功能,完成“接收到文字消息ding时,自动回复消息dong"的功能,不断总结和完善功能列表。 10.1-10.30 如果还有功能模块未完成则继续优化代码,梳理项目,如果时间充足,可以尝试完成一下配置 GitHub Actions 实现自动化测试的任务。 项目申请-{项目ID210220088}.zip

zrn-fight avatar Jun 15 '21 08:06 zrn-fight

@zrn-fight Thank you very much for submitting your proposal, I hope you can join the community and contribute the 5G Chatbot project soon!

huan avatar Jun 16 '21 12:06 huan

5G Chatbot开发计划

一.使用5G Chatbot接口,把基础的收发消息测通

**1.了解和熟悉5g chatbot和接口技术规范 **

  • 2天(6.23&6.24)

2.接入5g chatbot,进行编码和接口测试

  • 7天(6.25-7.1)

3.进行接收和发送消息的测试

  • 3天(7.2-7.5)

二.接入wechaty

1.了解和熟悉wechaty puppet的相关接口

  • 3天(7.6-7.8)

    7.9&7.10两天连着有考试和答辩

2.将 RCS 协议封装成为 wechaty-puppet-5gmsg模块,实现文本消息 的收发功能

  • 20天(7.11-7.31)

3.提供一个 examples/ding-dong-bot.ts ,完成“接收到文字消息ding时,自动回复消息dong"的功能

  • 5天(8.1-8.5)

zrn-fight avatar Jun 23 '21 06:06 zrn-fight

[5G Chatbot] 进度报告

日期:2021-07-04

本周完成的成果

  1. 学习了5g chatbot的接口技术规范
  2. 学习了git的PR流程

本周遇到的困难和需要配合的地方

  1. 服务器还没有配置好
  2. 不确定技术选型

下周的开发计划和预计成果

  1. 完成初期博客,做好分工
  2. 配置好服务器,初步接入chatbot

其他需要说明和同步的事项

暂无

zrn-fight avatar Jul 04 '21 15:07 zrn-fight

[5g Chatbot] 进度报告

日期:2021-07-18

本周完成的成果

  1. 提交了期初博客
  2. 使用postman测试了部分上行接口
  3. 跟着博客https://github.com/wechaty/wechaty-getting-started在gitpod上运行了wechaty的入门项目

本周遇到的困难和需要配合的地方

  1. 不清楚如何配置服务器,走了很多弯路。

下周的开发计划和预计成果

  1. 尽快配置好域名解析,并将此域名作为回调地址用来测试下行消息。
  2. 学习 https://github.com/wechaty/wechaty-puppet-official-account的已有代码

其他需要说明和同步的事项

暂无

zrn-fight avatar Jul 18 '21 15:07 zrn-fight

[5g Chatbot] 进度报告

日期:2021-08-01

本周完成的成果

  1. 测通了5g消息上下行接口
  2. 对typescript进行了初步学习

本周遇到的困难和需要配合的地方

  1. 关于接口调用中遇到的问题已和导师沟通解决。

下周的开发计划和预计成果

  1. 尝试将核心代码文件 https://github.com/wechaty/wechaty-puppet-official-account/blob/master/src/puppet-oa.ts 中的微信公众平台调用,封装为 RCS 模块的调用。

其他需要说明和同步的事项

暂无

zrn-fight avatar Aug 01 '21 15:08 zrn-fight

  • 项目完成度:同学已经按照原定方案进行项目实施,并如期完成
  • 学生参与度:同学在项目实施过程中表现积极
  • 代码贡献量:中等
  • 综合评价及建议:同学在不断的学习和探索中,逐步成长,锻炼了解决问题的能力,也初步达成了预期的效果,希望能够再接再厉,圆满完成,继续加油
  • 最终评审结果:通过

IronConrad avatar Aug 19 '21 06:08 IronConrad

项目信息

  • 项目名称:5G Chatbot / RCS 的 Wechaty 接入 Puppet 模块

  • 方案描述:通过对Wechaty Puppet Provider,REST API以及5G Chatbot SDK等进行了解和学习,并对已有项目进行梳理,多和导师进行沟通,实现通过 Wechaty 加载 wechaty-puppet-5g-msg 模块,并通过 5G Chatbot / RCS 底层,实现文本消息的收发功能,提供一个 examples/ding-dong-bot.ts ,完成“接收到文字消息ding时,自动回复消息dong"等功能。

  • 时间规划:

  • 7.1-7.10

    • 先和导师沟通,寻求导师的指导和建议,熟悉Wechaty Puppet Provider的业务流程,并对自己目前还没有掌握的技术栈REST API和5G Chatbot / Rich Communication Service进行快速的了解和学习,确定好详细的任务规划.
  • 7/12 - 7/18

    • 配置好服务器,测通相关接口
    • 使用 https://github.com/wechaty/wechaty-puppet-official-account 项目作为模版,将其中的微信公众平台调用全部封装为RCS模块的调用
  • 7/19 - 8/10

    • 学习现有源码,学习RCS的相关知识。
    • 接入wechaty,进行代码整合,提高代码质量。
  • 项目中期总结

  • 8/11 - 8/15

    • 实现阶段性目标,总结项目阶段性成果。
    • 发布 Git Repo wechaty-puppet-5g-msg,实现文本消息的发送和接收
  • 8/16 - 8/31

    • 提供一个 examples/ding-dong-bot.ts ,完成“接收到文字消息ding时,自动回复消息dong"的功能
    • 项目完善优化
  • 9/1 - 9/15

    • 撰写整个项目过程的总结博客。配置 GitHub Actions 实现自动化测试,增加单元测试等。
    • 项目结项
  • 9/16 - 9/30

    • 总结项目成果,项目经验,准备结项材料。

项目进度

  • 已完成工作:

    • 熟悉开发工具,了解硬核桃和Wechaty接口技术规范
    • 配置好服务器,测通5G消息上下行接口,成功进行接受和发送消息的测试
    • 学习平台目前Wechaty调用其他其他平台RCS源码方案
    • 学习typescript
  • 遇到的问题及解决方案:

    • Q:不清楚如何配置服务器
    • S:与康嘉老师线上视频请教服务器配置方案,成功解决
    • Q:不熟悉git的PR流程
    • S:参考github Action相关文档以及Wechaty社区提供的博客完成
  • 后续工作安排:

    • 尽快熟悉已有项目的源码https://github.com/wechaty/wechaty-puppet-official-account

    • 继续补充完善项目功能,如:通过 5G Chatbot / RCS 底层,实现文本消息的收发功能,提供一个 examples/ding-dong-bot.ts ,接收到文字消息ding时,自动回复消息dong 。

    • 进行项目测试并提交pr。

    • 完善项目文档。

zrn-fight avatar Aug 20 '21 03:08 zrn-fight

期中 Demo Day 视频

期中报告:https://youtu.be/vCV0ijD0R9g Live Code:https://youtu.be/qGl0zXtDL4s

zrn-fight avatar Aug 26 '21 14:08 zrn-fight

Hi @zrn-fight Please upload to bilibili or Tencent as well, Thanks.

lijiarui avatar Sep 01 '21 14:09 lijiarui

Please change as mid-term demo day request, and give us the deadline for the following things.

  1. Rename repo to: wechaty-puppet-walnut
  2. Move repo to GitHub Wechaty org: github.com/wechaty/wechaty-puppet-walnut
  3. Register a NPM account for preparing to publish the puppet NPM module
  4. Make the wechaty-puppet-walnut to be work-able with wechaty-getting-started

lijiarui avatar Sep 02 '21 10:09 lijiarui

Hi @zrn-fight Please upload to bilibili or Tencent as well, Thanks.

期中 Demo Day 视频 Youtu:

  • 期中报告:https://youtu.be/vCV0ijD0R9g
  • Live Code:https://youtu.be/qGl0zXtDL4s

Bilibili:

  • 期中报告:https://www.bilibili.com/video/BV1xQ4y1h7tK
  • Live Code:https://www.bilibili.com/video/BV1Df4y1P7Nx

zrn-fight avatar Sep 02 '21 10:09 zrn-fight

Hi, @lijiarui Is the repo moved to GitHub wechaty organization by issuing PR?

zrn-fight avatar Sep 02 '21 10:09 zrn-fight

@zrn-fight

Click [Settings] and choose transfer as the following image shown

image

lijiarui avatar Sep 02 '21 12:09 lijiarui

[5g Chatbot] 进度报告

日期:2021-09-12

本周完成的成果

  1. 注册了npm账号
  2. 学习了Puppet Documentation,并继续修改wechaty-puppet-walnut项目中的bug

本周遇到的困难和需要配合的地方

  1. 短信应该是不需要扫码登录的,不知道如何连上puppet,可能是因为没有连上puppet导致了下面的第二条报错。
  2. 将5g消息的结构转化为puppet的消息结构时出现了值找不到的情况,在运行ding-dong-bot时报错如下: Cannot read property 'senderAddress' of undefined image

下周的开发计划和预计成果

  1. 继续修改bug,能正常运行ding-dong-bot

其他需要说明和同步的事项

我对短信登录时如何连上puppet这里很困惑,希望能得到老师的指导。

zrn-fight avatar Sep 12 '21 13:09 zrn-fight

结项 视频

Youtu:

  • 结项报告:https://youtu.be/4-0lW0kvelE
  • Live Code:https://youtu.be/cQydTnaym7Y

Bilibili:

  • 结项报告:https://www.bilibili.com/video/BV12L4y1z7sQ?spm_id_from=333.999.0.0
  • Live Code:https://www.bilibili.com/video/BV1b44y1t7vz?spm_id_from=333.999.0.0

zrn-fight avatar Oct 08 '21 05:10 zrn-fight

项目结项审核

初审导师:Conrad 康嘉 审核时间:2021-10-14 17:00:00 审核意见:

  • 项目完成度:学生已经按照原定方案实施wechaty-puppet-walnut项目,功能完成度 100%。
  • 学生参与度:学生本项目中,参与态度比较积极,沟通良好,但是进度较慢。
  • 代码贡献量:学生在wechaty-puppet-walnut项目中,为开源项目贡献的近千行代码
  • 综合评价及建议:学生在项目中态度表现积极,基本完成了初步的功能需求,并对未来的迭代提出了一定的设计。希望能够参与更多项目,提升技术能力,积累技术经验,保证项目的实施进度。

IronConrad avatar Oct 14 '21 08:10 IronConrad