Chat实录|李佳芮:向前一步的程序媛

11月24日周四晚8点,GitChat团队开启了来自一位前端女技术工程师李佳芮的问答交流,以下是主持人小冰将交流过程重新整理,记录下了分享者和用户之间对微信机器人的交流精彩片段。

问:你能说说目前微信机器人能做什么,不能做什么?

答:Wechaty的实现原理,是监听Web微信的所有内容,封装成接口给开发者使用。所以原则上,只要能在Web微信上能实现的事情,微信机器人都可以做。注意我说的是Web微信,不是微信客户端。微信在Web上阉割了很多功能,相比较,PC客户端的功能丰富的多。所以抢红包功能做不了。因为在Web微信里面,是无法识别到有红包的事件的。还有,转账功能机器人也做不了。

问:机器人是PC端监听浏览器然后调用微信Api,应用号是基于“微信OS”的“本地”app,这么解释对么?

答:机器人是在监听浏览器,但是和微信Api没有任何关系,完全是Hack进去的。机器人更像是在解决运营中的机械化重复操作,希望在Chat的过程中,提供服务。

问:既然是Hack到Web微信的,会不会有一天被封杀了呢?

答:如果他强制封杀,肯定是有办法的,但是我个人觉得可能性比较低。第一,封杀的话,技术是有成本的,微信也是要考虑投入产出比的;第二,Git上最少有20多个这样的开源项目,而且好多都是几年前就做好了,微信不可能不知道,而且从技术研究和Chatbot的应用研究层面的角度看,这个是有意义的;第三是,这件事如果没有威胁到微信的生态,就不会封杀,不过之前可以批量删除好友的功能就被封了。

PS:我倒是觉得,这个被封杀最大的可能性,是把你的个人微信号封了,之前我看过一个技术社区上有人说,他做了一个防撤回机器人,就是在有人撤回消息的时候用聊天机器人把撤回的消息原封不动发出来。然后就扔到群里让大家玩了。但是因为没有写字数限制,群里发多长的消息,他都会原封不动的发出来,就构成了炸群。

微信就把这个号封了7天,不能给好友发信息,不能发朋友圈,但是可以给好友发红包,然后红包里面带回复内容,我觉得也挺逗的。我有一次也因为没有判断消息是不是自己发的,然后测试修改群名称,结果系统消息和自己发的消息混了,忽然群也不能用了。所以使用的时候,注意一下,比如限制字数啊,屏蔽bot自己发的消息之类的,用message.self()就可以了。

问:微信机器人跟微信官方近期推出的应用号是怎样一个关系,如何结合?

答:微信机器人和官方近期推出的应用号是不一样的应用场景。应用号,或者说小程序,是在微信的应用上提供一个入口为用户提供服务,这样可以免去下载app的苦恼,很多低频场景的app很适合做小程序。而微信机器人,本质就是一个微信号,现阶段主要是为了释放人力,免去人在微信上做的很多机械性的工作,比如批量通过好友请求啊,比如拉人进群啊,或者批量删好友。这个可能更类似于Chatbot,希望再chat的过程中提供服务。机器人除了做些机械操作,还可以在聊天页面推送一些链接给好友,这个链接可以是小程序的链接,也可以是app的链接,也可以是公众号。

问:机器人断线概率高么?

答:从我自己使用的情况来看,Wechaty这个框架很稳定,但是网页微信定期会把你踢下去,所以需要重新登录。Wechaty有一个功能,就是通过wechaty.instance({ profile: ‘test’ }) 会把你的session信息存到一个test.wechaty.json的文件中,如果掉线了,会自动重新登录,test可以随便换名字哈。我现在长期在我的服务器上跑两个机器人,基本上一周会掉一次,我在文章里介绍了server酱,是一个从服务器推报警信息到微信的工具,结合server酱,在logout和scan事件的时候加入一个推送,掉线以后会有提醒,如果session没了也会把二维码推给你,还是挺爽的,也不用怕掉线再去服务器上登录了。

问:GitChat现在想用一个微信号实现自动拉人进群的功能(突破扫二维码100人的限制),不知道Wechaty是不是最好的选择?

答:我认为是很好的选择,实际上我最开始使用Wechaty也单纯是为了突破群二维码100人限制。使用三个关键函数:在聊天页面通过m.from() 获取联系人contact,通过room.find() 找到群,然后room.add(contact) 就可以实现自动拉人了。

问:微信机器人可以检测自己是否还是某个联系人的好友吗?

答:可以的,Contact有一个Contact.findAll()的函数,返回一个Contact数组,会找到你所有的联系人,然后遍历这个数组,使用contact.say()给所有好友群发消息,判断回复的类型和内容,回复消息的类型可以通过Message.type()获取,如果返回的是10000就是系统消息,一旦判断出返回的是一个“对方不是你好友”的系统消息,那们就判断出这个联系人不是好友了。

问:微信机器人不是走的微信接口去获取数据么,在想一个找回群的需求,不知道是否可以实现?

答:机器人不是走的微信接口,不过你的要求可以实现,不过需要你常年登着,然后把你所有消息都存进去,这样从登录开始算起的所有内容都可以搜索。我之前做的自动拉人进群的功能,有个小点和你这个需求比较类似。这个人回复机器人暗号,机器人会拉他进去,如果这个人已经在群里了,机器人就会在群里@他一下,这样这个群就在你的聊天界面最前面了。这样有些人群多就可以通过这种方式找到某个沉寂已久的微信群了。

问:现在微信机器人可以处理个人微信号的很多事情,有考虑接下来如何设计机器人让它更加智能化?

答:恩,有考虑。但是更多的希望,第一步先让这个微信机器人更好的完成自动化的工作,就是说本来需要人做的重复性工作,比如拉群、自动回复、加人、一键群发等等,机器人都帮你先完成了,这个也是很多企业在微信社群运营中面临的很大的困惑。有一句话说的特别好:“Machine should work, People should think” 。

我希望我的微信机器人,在第一步能把很多运营人员面临的问题先解决了,让他们更多的时间放在思考如何进行活动策划、如何留存用户,甚至如何进行商业变现。一方面希望帮助企业节约成本,实现让一个运营人员管理上千个群和微信号,另外一方面,希望帮助企业释放人力,让运营人员从复杂机械化的操作中解放出来,做有创造性的东西。

人工智能方面,现在有一些机器人的平台做的已经很好了,他们是专门研究这个的,做的比我们专业好多,每天就是有好多聪明绝顶的算法工程师在研究,智能化可以使用他们的接口,比如我之前用我的微信机器人接过图灵机器人,效果还不错。我更希望和做智能机器人的企业有合作,共同解决聊天或者社群运营过程中的繁琐问题,或者说,我做的更多是一个应用层面的chatbot尝试,以更少的成本探索更多需求并小成本迭代解决问题。

问:文中提到了好几个实现微信机器人的类库,你是怎样比较最终选择了Wehaty?

答:我当时确实对比了几个不同的类库,我选择的原因很简单,就是看是用什么语言实现的,因为我对JS比较熟悉,所以使用了Wechaty。其实选类库的时候,我发现Python的库是最早的,且相对比较最完善的。但是有两点原因我没有选择,一是我对Python没有JS熟悉, 二是Python的库虽然早,但是接口封装的不是很干净。

JS的有这几个,你们可以参考下哈:
Wechat4U:微信 Wechat web 网页版接口的JavaScript实现,兼容Node和浏览器;
Weixinbot Nodejs:封装网页版微信的接口,可编程控制微信消息;
WechatBot:面向个人的微信Wechat机器人平台 - 使用微信网页版接口Wechat4u;
Wechat-user-bot:正在组装中的微信机器人;
Hubot-WeChat Hubot:是一个具有真实微信号的机器人,可以自动回复信息到微信群和某联系人,并能给维护者的微信自动发送Hubot在线状态。

问:文章里提到教舞蹈做视频,你觉得舞蹈给你带来了哪些好处呢?

答:首先,舞蹈给我带来了很多朋友,认识了工作之外的各种人,而且都是很有趣的人,我在生活中有的时候比较无趣,多和这些人在一起能让我变得有趣一点。另外,当你有一个兴趣爱好的时候,每周的生活过起来就会丰富多彩一点,因为我们拍摄的是系列视频,你会有一个期待,就像追剧一样,而你是剧中的主角或者编导,这种感觉是很美妙的。

最主要的一点,跳舞对我来说是一种运动方式,每周出一点汗是身体和心理的双重放松,也能让我更好的投入工作中,这种运动还有一个副产品,就是可以保持身材,对于姑娘来说,这个还是非常重要的。

问:桔子互动是提供微信运营服务的,是怎样契机开始运营微信服务,以后想要如何发展呢?

我在研一的时候,公众号刚刚火起来,一个机缘巧合,一个毕业的学长知道我在实验室写php,他的朋友正好有外包需求,所以他牵头,找了几个技术的同学开始接项目。后来索性在学校附近租了个工作室,每周大家都会到工作室里碰一下,一起做项目。随着项目的同质化越来越严重,我们就尝试着做了一个小平台,将一些通用需求,比如签到、填写表单、微信墙、微信婚礼请柬等做成一个一个的模块,然后内部使用,后来接开发接的多了,也开始尝试着打包成服务,可能这就是一个契机吧。

后来我拿着我们做的婚礼请柬参加了创业比赛,还拿了风投,就去深圳做了婚庆O2O,结果因为线下资源和产品方向等原因失败了,回北京之后就又重操旧业,做一些微信运营的项目。我们现在也会接一些H5的项目、网站的项目和内容运营相关的需求,但是现在这一块已经成为一片红海,利润并不是很高。

最近我发现,微信个人号上有很多重复的工作,需要自动化,所以正在尝试往这个方向转,接下来我会把产品模块化,希望可以帮助帮助更多企业在微信社群运营商提供自动化服务,帮助他们节约成本,释放人力。

问:对于创业,你有什么想法可以和大家分享的,又有什么建议是想告诉想要创业的朋友的呢?

答:对于创业,从我这几年走过的各种弯路来看,专注可能是最重要的。之前一直觉得自己精力充沛,有的时候觉得自己可以做很多东西,然后就会去做各种尝试,但是所有的尝试最好能在一个有限域里面,做的项目也一定要切分一块比较垂直的领域,将这一块做好再去迅速的规模化。

另外,创业就是一场生意,所以整个产品是一定要有商业逻辑在里面的,我最开始做婚庆O2O的时候,可能也是因为拿到了几百万的风投,团队规模又不是很大,以为公司又不缺钱,所以就单纯的想产品做好了,其他东西自然就来了,然后就会陷入闷头做产品的窘况。甚至连如何产生现金流,如何盈利都没有想的非常明白,就去做了。

所以现在我做的内容,也会尽量更加聚焦一点,希望在Chatbot的领域里面,从微信运营自动化入手,帮助企业和某些个人解决实际的运营自动化需求,然后尽量把产品打磨好做精。我希望对Chatbot有兴趣的,可以一起聊聊,希望碰出一些好想法。

问:作为一名优秀的程序媛,有想要给其他程序媛或者想要成为程序媛的妹子一些建议么?

答:首先,就是不要害怕。桑德伯格有一本书叫《向前一步》,鼓励女性追求自己的目标,其实我觉得这几个字在程序世界中也很对。对很多姑娘来说,无论是不是技术出身,都会对程序有一种恐惧,比如总怕把服务器弄坏了,或者什么程序搞崩了。其实不然,去做就好了,大不了重新装个系统,重新写个代码,不要因为害怕出错而不敢做。包括现在,我有的时候也会有这种恐惧,其实应该自己克服的,程序里面很多东西,也像一层窗户纸,向前一步,一捅破,你会发现程序的世界也没有那么扑朔迷离。

另外,是当一大段代码调不通,你也不知道什么问题的时候,好多女生会忽然觉得很绝望,其实有一个小窍门,可以把整个代码分成几个小片段,一个一个去调,就会捉到问题,很多大牛也是这样去调程序的,但是有的时候,我们不敢去拆分,就会陷入很困惑的情况跳不出来。

最后,也是我最想说的,不是只有男生才可以驾驭程序,很多工作,不分男女,只分强弱,其实创业也是一样。

原文地址:GitChat - Chat实录|李佳芮:向前一步的程序媛