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

基于 RPA 封装 Wechaty 接口下的快手聊天机器人 #14

Closed
rickyyin98 opened this issue May 29, 2020 · 13 comments
Closed

基于 RPA 封装 Wechaty 接口下的快手聊天机器人 #14

rickyyin98 opened this issue May 29, 2020 · 13 comments
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 的方式管理技术社区。

基于 RPA 封装 Wechaty 接口下的快手聊天机器人

需求介绍

快手提供内部IM系统,有基于RPA的方式开发聊天机器人的可能

快手内部有强大的IM系统,大量用户已经习惯直接在快手内与内容创作者和粉丝群进行聊天沟通。
但是目前没有成熟的快手聊天机器人框架,对于繁琐的自动回复、群管理等运营场景,尚未出现完整成熟的解决方案。

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

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

项目难度

高(奖金:12000元)

导师联系方式

  • 王凯峰:北塔资本合伙人、2020年专注直播短视频+教育赛道投资
  • 尹伯昊:句子互动CMO、连续创业者(yinbohao@juzi.bot

项目产出目标

核心目标

快手 puppet

  • 使用RPA方式,实现 puppet 上各个类型的消息接口
  • 设计配置参数
  • 快手 puppet 的使用文档

项目技术栈

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

相关资料

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

@bikaiqiao
Copy link

bikaiqiao commented Jul 19, 2020

[基于 RPA 封装 Wechaty 接口下的快手聊天机器人] 进度报告

日期:07-19

本周完成的成果

没有代码产出。

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

困难:1,wehchaty方面不能完全掌握项目的架构,阅读起来仍有很大的困难。
2,项目应该是希望采用puppeteer操作web版的快手。然而快手web版并未提供聊天功能……本想尝试使用插件ARC Welder,但又发现该插件已停止服务……暂时没有更好的思路操作快手的私信消息。

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

1,希望通过与导师沟通理解wechaty架构,明确开发思路。
2,尽可能的产出一个puppet。

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

由于实习原因预计下周能正式进入开发,在不被企业996的前提下尽可能完成任务目标。

@huan
Copy link
Member

huan commented Jul 20, 2020

Hi @bikaiqiao , it's good to hear from you about your progress in the past week!

This project is one of the most challenging ones in our SoC, so please do not hesitate to contact your mentor to talk about it, and also I'd like to suggest that you can feel free to talk with other mentors and classmates and trying to get help from them!

@rickyyin98
Copy link
Contributor Author

rickyyin98 commented Jul 27, 2020

[基于 RPA 封装 Wechaty 接口下的快手聊天机器人] 导师评分

日期:07-27(Reissue)

本周进度报告的评分

  • 1: Deliverable not acceptable
  • 2: Deliverable is below expectations
  • 3: Deliverable is OK
  • 4: Deliverable is above expectations
  • 5: Deliverable is perfect

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

由于项目难度比较大,社区会花很多精力帮助推进,但几项工作需要你来自己完成:

  • 寻找各种潜在的开发路径,逐项列出并完成POC(Ding-Dong BOT)
  • 熟悉Wechaty的代码结构和Node的相关语法

后续社区会陆续组织Puppet相关的分享会,到时按照社区的说明和相关文档组织成完整Puppet即可

@bikaiqiao
Copy link

bikaiqiao commented Jul 27, 2020

[基于 RPA 封装 Wechaty 接口下的快手聊天机器人] 进度报告

日期:07-27

本周完成的成果

熟悉ts,puppet,puppeteer

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

困难:
1,使用fiddle抓包的时候,手机一直显示“由于目标计算机积极拒绝,无法连接”(新老版都不行);虚拟机无法设置代理网络
2,使用puppeteer获取快手视频信息时偶尔出现了拼图验证

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

  • 探索Puppeteer:绕过拼图验证
  • 探索安卓虚拟机方案:使用Linux运行安卓
  • 上线一个基于ts-wechaty的微信机器人,了解wechaty代码结构

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

下周工作仍为探索为主,尝试多种方案下的多点开花。

@rickyyin98
Copy link
Contributor Author

rickyyin98 commented Jul 27, 2020

[基于 RPA 封装 Wechaty 接口下的快手聊天机器人] 导师评分

日期:07-27

本周进度报告的评分

  • 1: Deliverable not acceptable
  • 2: Deliverable is below expectations
  • 3: Deliverable is OK
  • 4: Deliverable is above expectations
  • 5: Deliverable is perfect

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

按照会议的Meeting Notes持续探索和推进。

@bikaiqiao
Copy link

bikaiqiao commented Aug 2, 2020

[基于 RPA 封装 Wechaty 接口下的快手聊天机器人] 进度报告

日期:08-03

本周完成的成果

上线一个wehcaty机器人,可以添加好友,拉群,自动聊天。项目地址:https://github.com/bikaiqiao/wechaty-bot.git
发现auto.js基本相当于手机端的puppeteer。
使用auto.js完成在快手上的登入,私信。项目地址:https://github.com/bikaiqiao/kuaishou-auto.git

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

困难:

  • 图片验证和手机验证现在会同时存在
  • wechaty和服务器端通信的思路还是有些浑浊

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

  • 尝试websocket通信
  • 完善auto.js的功能

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

隐患:

  • 抖音快手的组件似乎不太相同。快手的组件id多数都是一致的。抖音的似乎……是随即命名的(我和王的虚拟机运行的快手的相同组件的id却不同。)
  • 快手登入时密码无法使用setText()直接控制组件内的信息。该组件也不支持click()方法。目前通过点击屏幕位置(像素为单位)然后模拟了键盘输入。
  • 手机快手和虚拟机中的快手用户页面略有差异,该问题……应该可以等到部署到linux上时再做修改

待补充功能:

  • 目前的私信只能通过私信页面的用户名获取。但也可以点右上角的加号选择一个关注的人然后发送私信消息
  • 只能发送文字消息(因为目前使用的setText()只能设置文字消息),如果要发送其他类型的消息……目前没有好思路。

同步事项:

  • 暂时停止了其他方向的探寻,现在希望把autojs部署到服务器,本地wechaty向服务器发送信息(服务器端需要有安卓虚拟机)这样控制私信,看起来相对其他方法思路更明了一些。

@rickyyin98
Copy link
Contributor Author

[基于 RPA 封装 Wechaty 接口下的快手聊天机器人] 导师评分

日期:08-03 (delay to 08-08)

本周进度报告的评分

  • 1: Deliverable not acceptable
  • 2: Deliverable is below expectations
  • 3: Deliverable is OK
  • 4: Deliverable is above expectations
  • 5: Deliverable is perfect

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

非常棒,完成了非常有深度的探索!

@bikaiqiao
Copy link

bikaiqiao commented Aug 9, 2020

[基于 RPA 封装 Wechaty 接口下的快手聊天机器人] 进度报告

日期:08-09

本周完成的成果

  • 增加了查找联系人的方式(原来只能在私信页面通过历史记录查找,现在可以直接对某个联系人发起聊天)
  • 重新封装了message的相关代码
  • 增加了socket通信

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

困难:

  • 脚本文件启动的socket服务没法一直运行
  • socket通信不能发送汉字的问题不知道怎么就突然被解决了……希望以后不会再碰到

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

  • 构建快手的puppet

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

  • websocket也尝试过,但是websocket似乎必须得有浏览器,不知道是否需要这个浏览器
  • 尝试了一下在服务器上运行快手虚拟机……效果不是很理想。centos的资料略少,windows server的虚拟机运行速度感人。计划换一个更好的服务器试一下。

@bikaiqiao
Copy link

[基于 RPA 封装 Wechaty 接口下的快手聊天机器人] 进度报告

日期:08-16

本周完成的成果

  • 完成中期报告
  • 完成dingdong-bot的一次收发消息

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

困难:

  • 碰到了奇奇怪怪的bug,第一次运行可以顺利接收发送,第二次会在输入信息的时候卡住一下,手动输入以后可以会继续回到原来的状态。在客户端中没出现过这个问题,但是在puppet中出现了……
  • puppet因为有太多莫名的bug导致不能上传(好像是eslint问题,运行dingdong-bot还是没问题的)
  • 服务端监听消息的方法开始有些玄学,有时候好用有时候不好用
let Notify = null
  while (Notify == null) {
    Notify = id("notify").findOne(1000)
    log("重新寻找")
  }
  log("找到消息")

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

  • 先从服务端的消息管理下手
  • 然后再寻找puppet中的bug

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

  • 对于开发服务端代码,还是感觉设计模式上存在一定的问题。如果后期不太行的话可能会推翻重写。

@bikaiqiao
Copy link

[基于 RPA 封装 Wechaty 接口下的快手聊天机器人] 进度报告

日期:08-23

本周完成的成果

  • 修正了eslint错误,提交了代码
  • 修正了不能多次收发消息的bug
  • 发现了有时候不能监听消息的端倪

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

困难:

  • 偶尔不能监听消息似乎是和app的启动顺序有关系,或者和socket连接的时间有关系……或者和代码运行到的行数和当前页面是否匹配有关系,有待商议

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

  • 修正监听消息的bug
  • 增加图片消息类型

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

@bikaiqiao
Copy link

bikaiqiao commented Aug 30, 2020

[基于 RPA 封装 Wechaty 接口下的快手聊天机器人] 进度报告

日期:08-30

本周完成的成果

  • 修复监听消息的bug
  • 完成发送图片的前置工作

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

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

  • 完成图片消息类型
  • 增加快手表情消息类型
  • 优化代码

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

  • 监听消息确实和app的启动存在关系,并且独立于puppet的客户端和puppet客户端在连接服务端时,快手应当在不同的时间点启动方可监听消息……
  • auto.js的截图功能似乎因为某些特殊原因无法使用,否则原计划点击图片然后截图发送该截图信息。现在只能保存图片,然后在文件夹中查找图片再把该图片读取成base64后发送给客户端。
  • 客户端读取base64文件还存在一定问题,比如图片在终端中无法直接展示……

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

huan commented Jan 10, 2021

@rickyyin98 Thanks for the mentoring!

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

@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

3 participants