/ NIUYAO

我的第一个云端机器人:Hubot

「扭腰日报」今天招募了一位新员工:hubot!它是一位 24 小时都在运行的机器人,而且是「免费」的!在工作之前的组,我们也有这样一位 bot 生活在 Slack 的频道里,每当需要 deployment 的时候,直接 @ 一下它就好,或者网站出了什么问题,bot 也会立即发送消息到指定的 Slack 频道里。

这次亲自动手配置属于自己的 bot 完全是因为看到湾区日报的第一个 “员工”:Slack/Hubot·的文章,通过 bot 不仅可以大大节省时间,而且增强了移动性,很多事情都可以直接在手机上通过 slack 来控制。

开始第一步

前提:一台装有 npm 和 node.js 的电脑。

下载 Hubot

用 terminal 打开到指定文件夹的目录,使用以下命令全局安装 hubot:

npm install -g yo generator-hubot

然后使用以下命令新建一个 hubot:

yo hubot --adapter=slack

这时候 terminal 会让你输入 bot 的属性,比如名字描述之类的,输入安装完成后,一个 hubot 就出生在你的本地电脑里。

配置 Slack

进入 Slack 的 App Directory 的页面,选择 Bots 或者 Hubot 都行,生成之后会产生一个 API Token,这样 Slack 的配置算是完成了,同时你也可以修改 bot 的名字和头像。

配置脚本

开始第一个「Hello World」脚本。进入 scripts 的文件夹,新建一个 hello-world.coffee 的script,然后将以下代码复制进去。

module.exports = (robot) ->
  robot.respond /hello/i, (msg) ->
    msg.send 'World!'

运行与部署

运行 Hubot

本地运行很简单,直接运行以下的命令行,就可以本地运行了,将 xoxb-YOUR-TOKEN-HERE 替换成你自己的 API Token。

HUBOT_SLACK_TOKEN=xoxb-YOUR-TOKEN-HERE ./bin/hubot --adapter slack

想必你的 Slack 已经有了一个 bot,你可以直接在它的对话栏里输入 hello, 它就会回复 World!。同时你可以把它加入指定的频道 Channel,@它以后在加上命令也会得到相应的回复,比如@bot hello

部署到 Heroku 云端运行

第一步完成了,需要将 hubot 部署到云端,文档中提供了好几个方案,这里选择 Heroku 作为平台,可以作为免费云部署。

  1. 在 terminal 中使用 heroku login 进入 heroku,然后创建一个新的 app,使用以下命令:heroku create
  2. 将 Slack 的 API Token 加入 configure,使用以下命令:heroku config:set HUBOT_SLACK_TOKEN=xoxb-YOUR-TOKEN-HERE
  3. 将代码上传到 Heroku 的服务器,使用以下命令:git push heroku master

这样你的 hubot 就进入云上了,生活在了 Heroku 的服务器上了。

24/7 工作

因为 Heroku 的免费 app 有自动睡眠的设置,这里是关于 Free Dyno Hours 的介绍:Free Dyno Hours

这就导致 Hubot 不能 24 小时一直都在运行,所以我们需要间隔一段时间去唤醒这个 app。Kaffeine 就是一个让 Heroku app 持续唤醒的网站,把你 app 的网址输入进去,Kaffeine 就会让它一直处于运行状态了。

Heroku 命令行

  • heroku ps -a your-app-name : 查询使用时间
  • heroku logs -a your-app-name : 查询 app 的日志

参考


本文完