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

基于开放 API 封装 Wechaty 接口下的飞书聊天机器人 #12

Closed
rickyyin98 opened this issue May 29, 2020 · 15 comments
Closed
Labels

Comments

@rickyyin98
Copy link
Contributor

rickyyin98 commented May 29, 2020

此次活动

开源软件供应链点亮计划

“开源软件供应链点亮计划-暑期2020”(以下简称 暑期2020)是由中科院软件所与 openEuler 社区共同举办的一项面向高校学生的暑期活动,旨在鼓励在校学生积极参与开源软件的开发维护,促进国内优秀开源软件社区的蓬勃发展。
根据项目的难易程度和完成情况,参与者还可获取“开源软件供应链点亮计划-暑期2020”活动奖金和奖杯。
官网:https://isrc.iscas.ac.cn/summer2020 官方新闻:http://www.iscas.ac.cn/xshd2016/xshy2016/202004/t20200426_5563484.html

Wechaty

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

基于开放 API 封装 Wechaty 接口下的飞书聊天机器人

需求介绍

飞书提供开放的API接口,有基于开放API开发聊天机器人的需求

飞书是字节跳动于2016年自研的新一代一站式协作平台,是保障字节跳动全球五万人高效协作的办公工具。飞书将即时沟通、日历、云文档、云盘和工作台深度整合,通过开放兼容的平台,让成员在一处即可实现高效的沟通和流畅的协作,全方位提升企业效率。
2020年2月24日,字节跳动旗下办公套件飞书宣布,向全国所有企业和组织免费开放,不限规模,不限使用时长,所有用户均可使用飞书全部套件功能。
飞书官方提供API支持机器人收发消息,是国内对Chatbot最开放的IM 系统。

Wechaty是全球最大的开源聊天机器人框架,希望实现基于同一套应用层代码实现不同软件的聊天机器人

Wechaty 作为全球最大的聊天机器人开发者社区之一,提供了非常简单的接口实现,让开发者能够用6行代码就实现自己的一个聊天机器人,如果能把飞书的聊天机器人封装到 Wechaty 里来,则可以大大简化企业内开发者的开发流程。
因为 Wechaty 是建立在 puppet 系统之上的,puppet 是 Wechaty 依赖的一层抽象层,它定义了底层各个 IM 接入方案需要实现的接口,也正是因为 puppet 抽象层的存在,让很多 Wechaty 开发者可以仅仅通过一个变量,就能够随意切换不同的底层 IM 接入。

项目难度

高(奖金:12000元)

导师联系方式

  • 高原:句子互动CTO、前亚马逊工程师(gaoyuan@juzi.bot
  • 李佳芮:句子互动CEO、专注微信生态近10年(rui@juzi.bot

项目产出目标

核心目标

飞书 puppet

  • 通过飞书订阅消息事件读取消息
  • 通过飞书订阅通讯录事件实时更新通讯录内成员信息
  • 对接飞书接口,实现 puppet 上各个类型的消息接口
  • 设计配置参数
  • 飞书 puppet 的使用文档

项目技术栈

  • 了解 javascript 语言
  • 有 typescript 语言的使用经验优先
  • 熟练使用 Github 的优先
  • 如果你的学习能力超强,可以无视上面的技术要求

相关资料

Link to #3 (Wechaty 社区暑期2020项目单)

@Roxanne718
Copy link
Contributor

[基于开放 API 封装 Wechaty 接口下的飞书聊天机器人] 进度报告

日期:07-19

本周完成的成果

由于学校夏季学期的课程的安排,本周暂无成果

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

控制台二维码乱码

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

  1. 解决控制台乱码问题,运行demo
  2. 尝试通过飞书订阅消息事件读取消息

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

暂无

@huan
Copy link
Member

huan commented Jul 19, 2020

Could you please make a plan in more detail for our Summer of Code project, so that we can be better planned and track our progress better?

Plan in weeks and months, with a clear deliverable in the end would be acceptable.

@Roxanne718
Copy link
Contributor

Roxanne718 commented Aug 2, 2020

[基于开放 API 封装 Wechaty 接口下的飞书聊天机器人]具体计划

  • 导师:高原 吴京京
  • 学生:范蕊
  • 模块列表
    • 接收消息
    • 通讯录获取
    • 实现 puppet 上各个类型的消息接口
    • 设计配置参数
    • 使用文档
  • 计划安排:
    • 阅读源代码
      • 7.29 - 7.31
      • 阅读 wechaty 源代码
      • 学习飞书服务端 API
      • 整理需要实现的 puppet list
    • 接收消息
      • 8.1 - 8.5
      • 通过飞书订阅消息事件实现消息接收
    • 通讯录获取
      • 8.6 - 8.10
      • 通过飞书订阅通讯录事件实现通讯录更新信息的接收
    • 实现 puppet 上各个类型的消息接口
      • 8.10 - 8.30
      • 对接飞书接口, 实现各个类型的消息接口
      • 消息类型包括: 文字, 图片, 富文本, 群名片
    • 设计配置参数
      • 8.31 - 9.7
    • 使用文档
      • 9.8 - 9.12
    • 项目完善
      • 9.12 - 9.30
      • 代码重构
  • 项目链接:https://github.com/Roxanne718/wechaty-puppet-lark
  • 联系方式:+86 17822015718 | email: 953299708@qq.com

相关链接

@Roxanne718
Copy link
Contributor

[基于开放 API 封装 Wechaty 接口下的飞书聊天机器人] 进度报告

日期:08-02

本周完成的成果

  • 了解飞书订阅事件流程,注册飞书应用程序
  • 尝试使用Express搭建本地服务器,从而接收来自飞书的订阅事件

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

  • 运行 node 时遇到报错,暂未找到合适的解决办法
    image

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

  • 完成飞书订阅事件的消息接收
  • 搭建ding-dong-bot

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

项目地址

@windmemory
Copy link
Member

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

  • 运行 node 时遇到报错,暂未找到合适的解决办法

这个是 es6 的语法,并非nodejs的原生语法,所以没办法直接用nodejs调用。你可以在本地安装一下typescriptts-node 来运行代码

npm i -g typescript ts-node

@Roxanne718
Copy link
Contributor

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

  • 运行 node 时遇到报错,暂未找到合适的解决办法

这个是 es6 的语法,并非nodejs的原生语法,所以没办法直接用nodejs调用。你可以在本地安装一下typescriptts-node 来运行代码

npm i -g typescript ts-node

谢谢老师,已解决

@Roxanne718
Copy link
Contributor

[基于开放 API 封装 Wechaty 接口下的飞书聊天机器人] 进度报告

日期:08-09

本周完成的成果

  • 本地实现了消息接收
  • 在本地搭建了飞书ding-dong机器人
    image

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

  • 原计划采用localtunnel实现内网穿透,但无论是在命令行使用还是在ts代码中使用,localtunnel都没有任何响应(不输出url),尝试在本地搭建localtunnel服务器,仍然没有响应。目前使用的是免费版ngrox,但每次启动时子域名都会发生变化。

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

  • 将ding-dong-bot迁移到飞书上
  • 实现通讯录更新消息接收

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

@huan
Copy link
Member

huan commented Aug 9, 2020

Congratulations!

A workable ding-dong-bot for 飞书 is an epic milestone for us!

For your localtunnel problem, I have the solution:

  1. It does not work because the default server is not working anymore. (localtunnel.me)
  2. You can use localtunnel.chatie.io for developing.

For example: use ding-talk-development.localtunnel.chatie.io with localtunnel, I believe it should work.

See:

https://github.com/wechaty/wechaty-puppet-official-account/blob/master/src/official-account/official-account.spec.ts#L21

Please feel free to let me know if you have more questions about it.

@Roxanne718
Copy link
Contributor

2. localtunnel.chatie.io

谢谢老师!问题解决了!

@huan
Copy link
Member

huan commented Aug 11, 2020

Glad to know that, cheers!

@Roxanne718
Copy link
Contributor

[基于开放 API 封装 Wechaty 接口下的飞书聊天机器人] 进度报告

日期:08-17

本周完成的成果

  • 实现了图片的发送和接收
    image

image

  • 实现了企业通信录成员、部门列表的接收(尚未封装到puppet中)
  • 实现了文件(包括视频)的接收(尚未封装到puppet中)

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

  • 每次重新运行项目时,Localtunnel的子域名就会失效,猜测是因为上一次的域名资源没有被正确释放,但还没找到解决方法
  • 此外,在启动时,localtunnel有一定的几率报如下错误,不清楚是什么原因
    image
    代码在这里:
    https://github.com/Roxanne718/wechaty-puppet-lark/blob/ea8371dde58ead9f17485b18144ac0752588cb6d/src/puppet-lark.ts#L70
  • 对项目的一些细节不太确定,比如接收到图片后应该给用户暴露怎样的接口、图片是否要存储,以及messageFilemessageImage等函数内部应该实现什么功能等。

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

  • 实现文件(包括视频)的发送
  • 将通讯录的接收、文件的接收封装到puppet中

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

项目地址

@huan
Copy link
Member

huan commented Aug 21, 2020

Congratulations for your great progress!

About the localtunnel from our chatie.io: I'm using it too and it works like a charm.

I have never got the error that you mentioned, so I can only help you if you can provide a minimum reproducible code, and then I believe I could be able to help you fix your problem.

@Roxanne718
Copy link
Contributor

[基于开放 API 封装 Wechaty 接口下的飞书聊天机器人] 进度报告

日期:08-30

本周完成的成果

  • 将通讯录和文件的接收封装到puppet中
  • 由于学校期末考试安排,本周进度较少

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

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

  • 实现通讯录更新事件的获取

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

项目地址

@Roxanne718
Copy link
Contributor

[基于开放 API 封装 Wechaty 接口下的飞书聊天机器人] 进度报告

日期:09-21

本周完成的成果

实现了群组的部分功能,包括创建群、解散群、获取群成员列表、获取群成员变化信息等。

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

puppet.ts提供的函数和飞书支持的接口并不完全重合,对于不重合的部分应该怎么处理?

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

发布npm包、根据飞书的要求限制机器人发信频率。

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

@huan huan added the summer2020 label Jan 4, 2021
@huan
Copy link
Member

huan commented Jan 10, 2021

@rickyyin98 Thanks for the mentoring!

@Roxanne718 Thank you very much for joining the Wechaty open source project and finished Summer 2020 successfully!

You did an amazing job, and let's continue improving the wechaty-puppet-lark in 2021 together!

@huan huan closed this as completed Jan 10, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants