Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

基于 Matrix AppService Wechaty 项目的用户、群与消息等基础功能的完善 #59

Open
yswtrue opened this issue Feb 15, 2021 · 32 comments

Comments

@yswtrue
Copy link

yswtrue commented Feb 15, 2021

Update by @huan

开源软件供应链点亮计划

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

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

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

Wechaty

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

Wechaty 官网暑期2021项目入口:https://wechaty.js.org/docs/ospp/2021/

项目名称

基于 Matrix AppService Wechaty 项目的用户、群与消息等基础功能的完善

背景介绍

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

Matrix 是一个 open network for secure, decentralized communication, like Pidgin on your Phone.

matrix-appservice-wechaty 是一个 WeChat (微信) Matrix AppService for bridging the Matrix user with WeChat user.

It has been officially listed at [Matrix] Bridge Page for Wechaty.

我们在本次 Summer 2021 的项目中,社区希望可以将我们的 matrix-appservice-wechaty 项目进行继续完善,将它对用户、群、消息收发(包括文本、图片、视频等)的基础功能进行完善和支持。

需求介绍

  1. 架设一套自己的 Matrix 系统
  2. 架设 matrix-appservice-wechaty 并整合到 Matrix 系统中
  3. 对 Matrix AppService Wechaty 的功能进行试用,分析其当前的功能,然后列出需要完善的功能列表,以及欠缺的功能列表,并作出开发计划。

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

项目难度

中(奖金:9,000元)

导师联系方式

项目产出目标

  1. 每日代码 commit
  2. 每周提交一份 report (回复本 issue)
  3. 每两周一次在线会议
  4. 完成各种消息类型的收发功能
  5. 对项目进行完整的分析,整理出所有需要支持的 Wechaty 功能列表,以及那些需要完善,那些需要继续开发
  6. 完成计划列表中的计划
  7. 配置 GitHub Actions 实现自动化测试* (可选)

项目技术栈

  1. TypeScript programming language
  2. Git
  3. Matrix

参考链接

  1. 用Matrix和wechaty来聊微信, @yswtrue, Feb 04, 2021

Hi, dear students.

My project requirements:

  1. Appservice doesn't show the user name and user avatar in group chat. Now we need to show the correct user name and avatar in group chat. And show the user avatar in the direct message.
  2. Appservice can not display wechat bbob message directly. We need to convert bbob message to HTML and return it to the matrix server.
  3. Appservice can not send files to wechat users. Now we make appservice send files and pictures to wechat users.

Required skills for all projects

  • TypeScript

Thank you.

matrix-appservice-wechaty [M] Matrix

Wechat (微信) Matrix Application Services Bridge

Matrix + Wechaty

Image credit: Gnosis

Powered by Wechaty
NPM Version
NPM
Docker
TypeScript

What is [Matrix]

Matrix is an open network for secure, decentralized communication, like Pidgin on your Phone.

Pidgin try to IM all your friends in one place in Linux, and with Matrix you can have your Phone clinet with your private server which is highly customized. Matrix did not use XMPP protocol, it's server uses REST so that it could be more easy to extend.

The [Matrix] client Riot is a universal secure chat app entirely under your control. It supports all types of the platforms, including Web/Browser, Android, and iPhone.

What is matrix-appservice-wechaty

matrix-appservice-wechaty is a WeChat (微信) Matrix AppService for bridging the Matrix user with WeChat user.

It has been officially listed at [Matrix] Bridge Page for Wechaty.

According to Types of Bridging, Wechaty Bot in Matrix will create an Simple Puppeted Bridge with Portal Rooms because we want to bring all conversations from Wechat to Matrix, and let the Matrix user control his account on Wechat.

Features

  1. Support connect to Wechat via Web/iPad/Hostie/Windows/Mac Protocol, with the power of Wechaty
  2. Map all Wechat users/room/official accounts to Matrix virtual users

Links

@huan huan changed the title [Project] Improve matrix-appservice-wechaty user info 基于 Matrix AppService Wechaty 项目的用户、群与消息等基础功能的完善 Apr 22, 2021
@lprintf
Copy link

lprintf commented Jun 15, 2021

很遗憾没能在OSPP成功申报该项目。但如果该项目最终没被认领,我依然很乐意在此贡献代码。

@huan
Copy link
Member

huan commented Jun 16, 2021

@545641826 It's great to know that you'd like to contribute to this project with strong aspiration, I thank you for trying to participant in OSPP 2021, and welcome to join the Wechaty community!

@lprintf
Copy link

lprintf commented Jun 16, 2021

@545641826 It's great to know that you'd like to contribute to this project with strong aspiration, I thank you for trying to participant in OSPP 2021, and welcome to join the Wechaty community!

Thanks! It's my pleasure.

@huan
Copy link
Member

huan commented Jun 18, 2021

明天(19日,周六)晚上20点社区召开暑期 2021 kick off 的在线会议,会议地点见 meeting notes。

meeting notes 地址 https://bit.ly/2zpi2XG ,请暑期 2021 的同学们注意参加:注册、添加介绍自己的 agenda 和准备 slides。

@huan
Copy link
Member

huan commented Jun 28, 2021

image

@lprintf
Copy link

lprintf commented Jun 29, 2021

OK,I got it. I will finish the experiment at hand, try to move the Matrix server(It's too memory-intensive) to the physical machine.

@lprintf
Copy link

lprintf commented Jul 4, 2021

matrix-appservice-wechaty 进度报告

日期: 2021-07-04

本周完成的成果

  1. 熟悉Matrix
  2. 大概了解matrix-appservice-wechaty
  3. 了解wechaty机制
  4. 熟悉开源项目贡献流程

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

  1. 关于wechaty具体运行原理,可能需要咨询其他项目的开发人员验证一些猜想

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

  1. 在局域网内部署开发环境,调试代码
  2. 拟定开发计划

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

  1. 目前局域网内部署的matrix全家桶访问方式灵活,如果matrix-appservice-wechaty没增加其他特别的依赖的话,可以尝试p2p穿透的方式暴露给其他开发者。

@zrn-fight
Copy link

[matrix-appservice-wechaty] 进度报告

日期:2021-07-04

本周完成的成果

  1. 大致了解了Matrix
  2. 试着去配置了matrix-appservice-wechaty但没有配置成功

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

  1. 对项目的开发流程还不是很清晰,不知道从哪里着手

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

  1. 完成起初博客,拟定开发计划
  2. 熟悉开发流程,做好分工

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

暂无

@huan
Copy link
Member

huan commented Jul 12, 2021

Thank you very much for the report! They help me a lot to understand the progress of your works.

@545641826 It seems that you are on track and please keep moving ahead.

@zrn-fight Your progress seems a little behind so please try harder in the next week.

Please be prepared to publish the 期初报告 to our blog and make sure you are following the guidelines. I'd like to schedule a 30 minutes meeting for our project after that, and looking forward to hearing good news from you.

Cheers!

@lprintf
Copy link

lprintf commented Jul 18, 2021

matrix-appservice-wechaty 进度报告

日期: 2021-07-18

本周完成的成果

  1. 部署一套可以在境内高速访问的matrix-element服务。
  2. 熟悉开源项目贡献流程和注意事项。
  3. 实现接收图片的展示。

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

  1. 对开源项目贡献流程不熟悉,PR请求磕磕碰碰。
  2. 该项目似乎为某个对齐插件做了配置,但不清楚该插件的名字,以后代码量大了可能会遇到困难。

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

  1. 熟悉虚拟桥接用户的命名和创建方式
  2. 设计实现群会话下用户名展示策略

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

@zrn-fight
Copy link

[matrix-appservice-wechaty] 进度报告

日期:2021-07-18

本周完成的成果

  1. 提交了期初博客
  2. 运行了下wechaty 的入门项目,大致了解了该如何使用wechaty

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

​ 1. 对pull request的流程不是很熟悉

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

  1. 使用element 应用,利用**545641826暴露的接口进行开发和测试,多向545641826**请教

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

​ 暂无

@huan
Copy link
Member

huan commented Jul 18, 2021

@545641826 @zrn-fight Thanks for the update.

Could you please write a weekly plan for the following 3 months, with milestones/roadmap so that we can have a big picture for our project?

Thank you very much.

该项目似乎为某个对齐插件做了配置,但不清楚该插件的名字,以后代码量大了可能会遇到困难。

The plugin name is "Better Align": <wwm.better-align>

@lprintf
Copy link

lprintf commented Jul 19, 2021

matrix-appservice-wechaty Weekly Plan

日期: 2021-07-11

@huan
Copy link
Member

huan commented Jul 19, 2021

Thanks for the plan, it's great!

Please make sure you have included the "在 Matrix 用户列表中(联系人、群成员),正确的显示 Wechaty 联系人的昵称与头像" requirement.

@lprintf
Copy link

lprintf commented Jul 25, 2021

matrix-appservice-wechaty 进度报告

日期: 2021-07-25

本周完成的成果

  1. 进一步探索了开源项目贡献流程
  2. 完善实现群和用户图片的收发
  3. 实现群内用户头像昵称的展示
  4. 添加一些简单feature,如:机器人自动进群;不为用户自己的微信额外创建机器人;(详见相关PR的commit)

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

  1. 发现了其他待改进的功能点,如:发送文件时,出现少量冗余消息重复建群问题
  2. 尝试同步其他设备中自己发送的消息时遇到了大量冗余消息(有点像心跳包)。

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

  1. 拟定社区Matrix服务器配置
  2. 部署社区Matrix服务器
  3. 完善优化配套文档
  4. 宣传推广

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

@lprintf
Copy link

lprintf commented Aug 2, 2021

matrix-appservice-wechaty 进度报告

日期: 2021-08-01

本周完成的成果

  1. 设计了一套更加易于部署的部署方案
  2. 对该方案进行了多次测试,完善
  3. 用户测试,并解答问题。

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

  1. 缺少测试用户

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

  1. 讨论项目计划
  2. 部署社区Matrix服务器
  3. 完善优化配套文档
  4. 宣传推广

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

@lprintf
Copy link

lprintf commented Aug 10, 2021

matrix-appservice-wechaty 进度报告

日期:2021-08-08

本周完成的成果

  1. 获得Eric(the founder of Beeper.com)的赞助
  2. 部署社区matrix服务器
  3. 测试了matrix服务器的部分功能

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

  1. 需要推广服务器供他人使用,并获得反馈结果。

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

  1. 协助 @zrn-fight 总结项目中期进度
  2. 完善和推广服务器
  3. 继续项目开发

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

@huan
Copy link
Member

huan commented Aug 10, 2021

It would be great if you can help @ericmigi to run his matrix-appservice-wechaty smoothly by getting feedbacks and keep improving our code base.

@lprintf
Copy link

lprintf commented Aug 11, 2021

Okay, I like coding then writing documentation more. So I writed easy-matrix-deploy istead of writing a complicated document. But the works ... @zrn-fight

@lprintf
Copy link

lprintf commented Aug 15, 2021

【基于 Matrix AppService Wechaty 项目的用户、群与消息等基础功能的完善】中期报告

项目信息

  • **项目名称:**基于 Matrix AppService Wechaty 项目的用户、群与消息等基础功能的完善

  • 方案描述:

    • 架设一套自己的 Matrix 系统
    • 架设 matrix-appservice-wechaty 并整合到 Matrix 系统中
    • 对 Matrix AppService Wechaty 的功能进行分析,然后列出需要完善的功能列表,以及欠缺的功能列表,并完成计划列表中的计划。 在初期开发中,实现图片消息的接收和发送,完成原型验证 POC
    • 进行测试,完善项目文档
    • 配置 GitHub Actions 实现自动化测试(可选)
  • 时间规划:

    • 架设一套自己的 Matrix 系统
      • 7/12 - 7/18
      • 配置好设置好matrix服务器,测通相关接口
    • 架设 matrix-appservice-wechaty 并整合到 Matrix 系统中
      • 7/19 - 7/25
      • 学习现有源码,进行代码整合,提高代码质量。
    • 对 Matrix AppService Wechaty 的功能进行分析,然后列出需要完善的功能列表,以及欠缺的功能列表,并完成计划列表中的计划。
      • 7/26 - 8/1
      • 熟悉项目功能,根据仓库issue和实际代码列出需要完善的功能 。
    • 实现图片消息的接收和发送,完成原型验证 POC
      • 8/2 - 8/8
      • 添加图片消息的接收和发送模块,使 Matrix AppService Wechaty支持图像消息 。
    • 项目中期总结
      • 8/9 - 8/15
      • 实现阶段性目标,总结项目阶段性成果。
    • 项目完善
      • 8/16 - 8/31
      • 根据需要完善的功能列表完善群聊用户昵称显示,头像显示
    • 项目优化
      • 9/1 - 9/15
      • 添加完善中英文。撰写整个项目过程的总结文章。配置 GitHub Actions 实现自动化测试,增加单元测试等。
    • 项目结项
      • 9/16 - 9/30
      • 总结项目成果,项目经验,准备结项材料。

项目进度

  • 分工合作:

    • 分工:林宇靖同学需主要负责项目功能实现和gitlab项目维护,张瑞宁主要同学负责代码审查和gitlab项目维护。共同测试并撰写中英文文档。
    • 证书:保证张瑞宁同学证书署名的情况下,尽量加上林宇靖同学的名字。
    • 津贴分配:林宇靖同学:张瑞宁同学=3:1。
  • 已完成工作:

    按完成时间排序如下:

    • 部署和优化 Matrix 系统和局域网的网络环境
    • 部署调试 matrix-appservice-wechaty
    • 实现接收图片展示
    • 实现用户信息,包括头像,昵称等的展示(包括群内用户)
    • 实现图片消息的发送
    • 实现附件消息的收发
    • 基于对Matrix和wechaty网桥的理解,设计了一套开源的易于使用的wechaty网桥的部署脚本,并撰写相关文档
    • 部署并优化 wechaty 社区的 matrix 系统并推广
    • 邀请用户试用 Matrix AppService Wechaty 网桥
    • 在 Matrix 用户列表中(联系人、群成员),正确的显示 Wechaty 联系人的昵称与头像
  • 遇到的问题及解决方案:

    • 张瑞宁:

      • 不熟悉开源项目贡献流程,通过导师的提醒和帮助逐渐熟悉了项目流程。
      • 关于wechaty具体运行原理不熟悉,通过咨询其他项目的开发人员验证一些猜想并对项目更加熟悉。
    • 林宇靖:

      编号 问题 方案
      1 境内服务器部署matrix时发现443端口无法访问 租用境外免备案服务器直接使用,或供局域网申请时内网穿透用
      2 无法通过某网站申请到ssl证书 发现因为开始太年轻花一块钱申请的域名早被人耗光了申请额度,重新申请了个正规域名
      3 不熟悉开源项目贡献流程 查看相关文档,并在导师引导下边尝试边总结经验
      4 自己运行环境无法正确初始化wechaty网桥,典型开源流程熟悉问题 一开始调试发现问题在于依赖的开源项目依赖的开源项目(这没打错)判断cpu架构后的处理不当,强行使用反射改了cpu展示信息。导师发觉不对,建议用其他方式解决。遂在本项目改用环境变量解决。导师还是觉得不对。最终在依赖的开源项目中添加环境变量判断代码来解决。
      5 代码和相关项目较多,难以快速掌握 直接上手调试并就某些特性进行开发,遇到问题再查相关依赖的文档或源码,边开发边熟悉
      6 不知道element图片消息和附件消息的结构 手动发几个消息后捕获分析
      7 纠结于图片和附件消息的收发方式 罗列多个方案的优缺点,最后使用了较易于实现,性能较高,但外存占用最高的方案,并在代码中以XXX注释标明优化方向
      8 死活找不到修改机器人信息的文档和源码 最后手动改了个头像,发觉这可能无法在初始化机器人时修改,猜测它使用类似消息发送的方式实现,果真蒙对
      9 为社区matrix添加其他功能时遇到各种问题 多数靠查文档解决,一些很蠢的问题通过灵性解决
      10 社区vps执行sudo需要密码 求助导师,导师发现了供应商的特色sudoer配置文件
      11 发现社区matrix无法发邮件 自带stmp没用,163stmp没用,开始怀疑人生后使用qqstmp成功发送邮件
      12 无法使用自带stmp发送邮件 本已放弃,但因为之前求助过导师,导师发现了这很可能是vps本身的问题,正和提供商battle
      13 当前项目部署难度过高,难以推广 新建一个开源项目负责维护部署脚本,大幅简化部署流程
      14 其他的一些简单部署问题 随便猜猜原因,删几个文件,重启几个服务,确定问题原因,并将正确操作写入部署脚本

      心得:编程是一件极富创造性的事,一个问题可以有多种解决方案,我们应在适当权衡后选取当下最优解。开源项目的维护则更为灵活,我们不止可以维护自己的项目,甚至可在发现问题或有新需求时在其他相关项目中做出修改,甚至新建一个项目。

  • 后续工作安排:

    • 继续补充完善项目功能,如: 备注显示,协程同步,引用消息、系统消息展示优化。
    • 基于xp协议网桥的部署及测试。
    • 完善项目文档。
    • 尝试将Friday Bot集成到社区matrix中。

@lprintf
Copy link

lprintf commented Aug 15, 2021

@zrn-fight You can edit the above document directly here. It seem to be the better choice than <石墨文档>.

@huan
Copy link
Member

huan commented Aug 19, 2021

项目中期审核意见

项目完成度:二位同学能够按照既定计划进行开源项目开发,目前进度与计划相符;
学生参与度:能够积极参与项目开发,主动调研新技术和解决现有问题。
代码贡献量:完成了代码新功能的开发,经过测试可以正常运行,贡献量适中
综合评价及建议:项目进展顺利,希望接下来能够完善用户安装文档,并对任务中相关功能进行继续完善和优化。

@lprintf
Copy link

lprintf commented Aug 22, 2021

matrix-appservice-wechaty 进度报告

2021-08-22

本周完成的成果

  1. 完善优化社区matrix服务器
  2. 在导师帮助下发现了matrix服务主机无法访问主流邮件服务供应商25端口的stmp服务。
  3. 自己小米平板3些简单的服务器。
  4. 在一台破笔记本上装了套nextclound服务器等,可直接通过公网访问,上下行带宽都是100mbit每秒,今后可作团队协作工具。

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

  1. 企图在平板上装一些复杂服务器,获取了root权限,弄坏好几次系统,fastboot,学会了短接电路板,但因内核缺陷,且该设备不好升级内核,不好刷bios(1、2比较好折腾)和各种服务器自带bug最终放弃。
  2. 在一台古董笔记本上装了Ubuntu20并部署各种服务,期间也遇到过不少驱动问题,比折腾平板舒服,但估计断电超过一天服务就挂了。

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

  1. 完善matrix-appservice-wechaty功能。
  2. 开始文档撰写。

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

@huan
Copy link
Member

huan commented Aug 25, 2021

Please follow #79 (comment) and make sure you have:

  1. RSVP by registering yourself to https://docs.google.com/document/d/1fVCk8qRYc4RKGMf2UY5HOe07hEhPUOpGC34v88GEFJg/edit#heading=h.5ztnno5qivcb (by adding your name below the "Attendees")
  2. Submit your mid-term demo day presentation blog & video & slide in the meeting notes.

Pleaset let me know when you have get it done, thank you very much.

@lprintf
Copy link

lprintf commented Aug 26, 2021

Youtu:

Bilibili:

@huan
Copy link
Member

huan commented Sep 9, 2021

ping for the weekly update

@lprintf
Copy link

lprintf commented Sep 10, 2021

matrix-appservice-wechaty 进度报告

2021-09-10

本周完成的成果

  1. 中期视频配音与博客完善

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

  1. 原开发环境依赖使用matrix-docker-ansible-deploy部署的matrix服务器,部署环境要求较为苛刻,新的网络环境下不容易重新配置开发环境。这种开发环境对刚接触该项目的开发者也不友好。

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

  1. 拟基于docker设计一个新的开发环境,在项目中添加相关说明,方便新开发者快速上手。
  2. 完成至少一个issue提到的功能点、问题点。

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

@huan
Copy link
Member

huan commented Sep 10, 2021

Thanks for the update!

I have seen there are some user experience issues from @ericmigi, could you please have a look at them and put them in your working plan?

@lprintf
Copy link

lprintf commented Sep 21, 2021

matrix-appservice-wechaty 进度报告

2021-09-21

本周完成的成果

  1. 升级tsconfig,matrix-appservice-bridge,wecahty等依赖,解决依赖冲突

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

  1. 部分冲突解决方式需要进一步讨论

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

  1. 继续升级其他依赖
  2. 添加npm-run-all依赖,添加并行测试功能
  3. 实现其他功能点

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

@lprintf
Copy link

lprintf commented Oct 4, 2021

live coding视频

{% include iframe.html src="https://youtu.be/qtbExkN0uoI" %}

国内链接:https://www.bilibili.com/video/BV1Eq4y1Z7Ya/

PPT展示视频

{% include iframe.html src="https://youtu.be/3j3BGRnoVtE" %}

国内链接:https://www.bilibili.com/video/BV1QR4y1p7Hd/

@huan
Copy link
Member

huan commented Oct 13, 2021

结项审核

  • 项目完成度:项目同学能够按照既定计划进行开源项目开发,目前进度与计划相符;
  • 学生参与度:能够积极参与项目开发,主动调研新技术和解决现有问题。
  • 代码贡献量:完成了代码新功能的开发,经过测试可以正常运行, 贡献量适中
  • 综合评价及建议:项目进展顺利,同意结项。

希望同学未来可以不但继续自己参与维护社区代码,还可以多带动身边的同学参加,在开源项目中发挥更加积极的作用。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants