标题党了。湾区日报只有我一个人类。第一个“员工”指的是聊天工具。
Slack 是当下(湾区)公司里最流行的聊天软件。 Hubot 是Github开源的聊天机器人。把 Slack 或/和 Hubot 融入到项目/公司运营中,已经不是什么新鲜事了。
为什么聊天软件能在工作中起到“聊天”以外的作用呢?聊天界面是很强大的、通用的UI。通过简单的聊天窗口,你可以给人类下命令,也可以给机器人下命令。脑力工作者们都能熟练地操作电脑软件,掌握各种快捷键,并且不介意敲命令行 — 聊天窗口就是新时代的命令行。
今年年初,我在公司里跟几个同事尝试了一下 Slack/Hubot ,陆续加了许多功能。有的功能很白痴,比如问机器人“今天公司的晚饭是什么”;有的功能很实用,比如问机器人“目前我们的 iOS App 累计下载量是多少”、“当前我们的 Android App 的版本号是多少”;有的功能很强大,比如 oncall 的时候一句话就在 Slack 里调出各种监控图、还能在Slack里直接给图做标记 — 几点几分修改了某台服务器的某个配置文件。公司里的聊天机器人已经有大大小小几十个功能了。
湾区日报只是我一个 side project,由于一天只有24小时,所以没办法在这个 side project 上面花太多时间。这就得想办法自动化一些东西。由于在公司跟同事们有用 Slack/Hubot的经验,这就很理所当然地可以在湾区日报这个 side project 里也简单地弄一下 — 功能没有公司里的多,但对于一个 side project 来说,已经足够用了。下面就讲讲 Slack/Hubot 在湾区日报运营中起到的作用。
注意,这篇文章只讲 Slack/Hubot 的(简单)应用。具体怎么搭起来的,Google、StackOverflow以及Github是大家的好朋友:)我们这个时代的软件工程师,很多时候检索信息的能力比实际写代码的能力更重要。
湾区日报分享的每篇文章都是有一定结构的:标题、简评、详细简评、原URL、文章图片、标签、归属于哪一期、适合移动设备的原文排版、slug等。完全可以手工录入,但很浪费时间,很容易厌倦。厌倦了后,我怎么会有动力继续把湾区日报一期一期地做下去呢?
跟机器人对话:wq post $URL
然后 Slack 连上 Hubot;Hubot 里我自定义的脚本(CoffeeScript写的)跟我后台的 API(Python/Django写的)通信,把每篇文章大部分结构化的数据录入数据库中。
机器人帮我做了大部分文章录入的工作后,我再手动地拟个中文标题、写几句话的简评。
Slack 的 iOS App 做得不错,有时候整期的湾区日报其实是我从手机发出来的:比如老婆开车、我坐在副驾驶的时候,比如在餐厅吃饭等上菜的时候。
如何快速迭代、快速地部署代码到服务器上?尽管湾区日报是小本经营,只是一个“个人博客”性质的 side project,我也希望有一定规范:用git版本控制、自己进行code review (有点左右互搏的意思)、可重复地快速地部署代码 、一键瞬间回退到前一个版本(如果上线后发现有严重bug)、简单的监控系统、收集重要指标等 ,都没什么技术含量,就是一个套路而已。
跟机器人对话:wq deploy
然后 Slack 连上 Hubot;Hubot 执行我写的脚本 git clone 一份最新代码、安装各种 dependency、升级数据库的 schema (如果有的话)、重启服务器等。
由于部署代码是很轻松愉快的、可重复性极高的过程,所以我可以利用零散时间随便改点代码(改个文字描述、加个按钮、改个颜色)、立刻上线。
有一些我比较关心的指标,比如有多少 iOS App 用户打开了 push notification。那我就问机器人“wq metrics”,然后 Slack 给我返回一些数字:
前面几个用途都是 “pull” 的模式,我得问,它才回答。接下来几个功能是 “push” 的模式,有新事件,就通知我。
推送的功能我就没用Hubot了,直接在后台代码连 Slack 的 API 。基本套路就是,一有什么重要事件发生,就 publish 一个 celery task 连上 Slack API,然后 Slack 机器人就发消息给我。比如一有 湾区日报 iOS App 的用户允许使用推送功能,Slack 就发个消息给我:
其中,“930 push users (vs 928)” 的意思是,目前累计共有930个用户打开了Push Notification,对比昨天的928个用户(增长了 930–928=2 个)。我发现 Apple Watch 的主要用途就是看这种通知。。
Slack 有很多第三方的插件可以用。比如 LaunchKit.io 的 review monitor ,可以第一时间通知你 App Store 里你的 App 的最新 review:
App 闪退是不可避免的。要第一时间知道用户那头的 App 闪退,及时找出原因。我用的是 Crashlytics (被 twitter 收购了):
Hubot 有 一大堆现有的脚本 ,可以集成各种服务;随着 Slack 的流行,也 越来越多的集成 。所以两者搭配使用,可以有很多有趣的应用,让工作变得轻松愉快。
希望这篇文章对大家的工作有所帮助。