Hubot的简单用法

简介

Hubot 是 Github 的开源聊天机器人,可以用来做一些自动化任务,如部署网站,翻译语言等等。
你可能会说,这些只要写个脚本就可以做到了吧?
确实,但你写完脚本之后还是需要手动运行那些脚本。
你有没想过其实你可以在常用的聊天软件上说 @xxx, 部署新版本的网站
,然后机器人就自动登录服务器,然后执行部署脚本,部署成功后告诉你 新版本的网站已经部署成功

是的,如果你的聊天软件上集成了 Hubot,你就可以轻松地用它来管理一些繁琐的事情啦!

安装

官方推荐我们用 yeoman + hubot 生成器来生成我们的聊天机器人,方法如下:

$ npm install -g yo generator-hubot
$ mkdir myhubot && cd myhubot
$ yo hubo

回答一些基本的问题后,我们的聊天机器人就生成好啦~

基本用法

我们的聊天机器人的执行文件是 bin/hubot
,我们先看看里面写什么:

$ cat ./bin/hubot
#!/bin/sh
set -e
npm install
export PATH="node_modules/.bin:node_modules/hubot/node_modules/.bin:$PATH"
exec node_modules/.bin/hubot --name "myhubot" "$@"

这份执行文件只是先执行 npm install
,然后设置环境变量,再执行 node_modules/.bin/hubot
而已,没什么神秘的。
我们试试运行一下这份可执行文件:

$ ./bin/hubot
myhubot>

我们看到了一个类似 shell 的东东!试试随便输入一些东西:

myhubot> hello
myhubot> world
myhubot> how are you?
myhubot> can you hear me?

我们发现无论我们输入什么,我们的机器人都没有反应,是不是坏掉了?其实并不是这样的,它没反应是因为我们没有对「输入」的处理,如果我们输入一些特定的「输入」,它就会有反应啦!

myhubot> myhubot ping
myhubot> PONG

myhubot> myhubot pug me
myhubot> http://28.media.tumblr.com/tumblr_locinzasB91qzj3syo1_500.jpg

myhubot> myhubot help
myhubot> myhubot adapter - Reply with the adapter
myhubot animate me <query> - The same thing as `image me`, except adds a few parameters to try to return an animated GIF instead.
myhubot echo <text> - Reply back with <text>
myhubot help - Displays all of the help commands that Hubot knows about.
myhubot help <query> - Displays all help commands that match <query>.
myhubot image me <query> - The Original. Queries Google Images for <query> and returns a random top result.
myhubot map me <query> - Returns a map view of the area returned by `query`.
myhubot mustache me <url|query> - Adds a mustache to the specified URL or query result.
myhubot ping - Reply with pong
myhubot pug bomb N - get N pugs
myhubot pug me - Receive a pug
myhubot the rules - Make sure hubot still knows the rules.
myhubot time - Reply with current time
myhubot translate me <phrase> - Searches for a translation for the <phrase> and then prints that bad boy out.
myhubot translate me from <source> into <target> <phrase> - Translates <phrase> from <source> into <target>. Both <source> and <target> are optional
ship it - Display a motivation squirrel

看到了吧!如果我们输入了特定的「输入」,机器人就会有反应啦!
当我们输入 myhubot help
的时候,返回的东东其实就是预定义的「输入」,这些预定义的「输入」只在 shell adapter 下有效哦!

Adapter

什么是 shell adapter ? 我们运行 ./bin/hubot
时默认的 adapter 就是 shell adapter。
什么是 adapter ? 所谓的 adapter 其实是一些让机器人接收输入的接口。
刚才提到,shell adapter 是默认情况下的 adapter,主要是用来测试 adapter 是否生效。说白了,其实就是没什么用!
觉得很坑爹是吧?说好的让我们的聊天软件整合我们的机器人呢?
实际上社区已经为我们提供了各种各样的 adapter,我们只要下载就可以用啦!具体请看看 https://hubot.github.com/docs/adapters/
那么我们如何指定用某个 adapter 呢?很简单啦,只要启动机器人的时候带上 -a
参数就好了。譬如如果我们想让机器人整合到 telegram,我们只要执行下面的命令就可以了:

$ npm install --save hubot-telegram
$ ./bin/hubot -a telegram

当然我们还需要设置一下,这些设置会根据不同的 adapter 而有所不同,具体请看对应的文档!
如果你所用的聊天软件并不在社区的支持列表中,又想把整合 Hubot 的话,可以自己写 adapter,文档在这里:https://hubot.github.com/docs/adapters/development/

Scripts

我们一直说 Hubot 是聊天机器人,机器人最基本的是根据不同的「输入」给出不同的「输出」。在 Hubot 应该怎么处理不同「输入」,给出不同的「输出」呢?答案就是用 Scripts 啦!
有没有发现我们机器人的目录下有个 scripts/
文件夹?我们可以在这个文件夹下添加各种脚本文件,根据不同的「输入」给出不同的「输出」。在我们启动 Hubot 的时候,它会加载 scripts/
文件夹下的脚本,赋予 Hubot 强大的交互能力!
需要注意的是,scripts/
下的脚本必须是 .coffee
或者 .js
格式的,而且必须暴露一个接受 robot 参数的函数!我们还是先打开 scripts/example.coffee
看看吧!

// coffee
module.exports = (robot) ->

// js
module.exports = function(robot) {}

在这个函数里面,我们可以利用 robot.hear、robot.response、robot.send、robot.reply
等 api 为不同的「输入」给出不同的「输出」!我们还可以用 robot.http(url).get()
等方法来发出 http 请求!这样我们的机器人就可以有更强大的交互能力了!
想知道更多 api 的用法的话,可以参考文档:https://hubot.github.com/docs/scripting/

写在最后

Hubot 真的是一个简单易用的聊天机器人,我们可以把它整合到我们的聊天软件中,让那些简单但繁琐的任务自动化起来,提高我们的工作效率!最后强烈推荐各位同学去读一下 Hubot 的源码,简单易懂,之后会对 Hubot 有更深刻的认识!

参考资料

https://hubot.github.com/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,398评论 25 707
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,724评论 6 342
  • 简介 �创业公司里最刻苦的员工 这是Hubot,由Github开发、开源的聊天机器人,湾区很多创业公司也陆续用Hu...
    alucardzhou阅读 5,873评论 0 6
  • # 机器人助手——slack/hubot 。 Slack是当下国外最流行的聊天软件。Hubot是Github开源的...
    夏暮阅读 7,051评论 3 2
  • 渔安校区精选作文 可爱的小猫 ——黄卫东(三年级)...
    尚汤阅读 425评论 0 0