用 Hubot 打造聊天機器人#1 - 基礎介紹與安裝

現在市面上超多種聊天機器人的工具,最近發現了這套 Hubot,Hubot 是 Github 所開發的,原本是用來自動化的管理公司各項任務項目的聊天機器人,比如部署網站、翻譯等等的,這套工具開源之後,我們可以基於它來開發各式各樣的超實用的機器人服務。官方網站 的文檔裡有詳細的步驟介紹,在本篇逐一的步驟是介紹說明。

學習內容大綱

  1. 安裝 hubot
  2. 建立 hubot 專案
  3. 運行 hubot

下載安裝

首先 Hubot 的安裝需要必要套件

  1. node.js
  2. redis
  3. coffeescript
  4. yeoman
  5. generator-hubot

進入命令提示字元輸入

1
$ sudo npm install -g yo generator-hubot

建立 hubot 專案

建立資料夾

1
2
3
$ mkdir cube-hubot
$ cd cube-hubot
$ yo hubot --adapter=slack

使用了 yo 會開始初始化專案

1
2
3
4
5
? ==========================================================================
We're constantly looking for ways to make yo better!
May we anonymously report usage statistics to improve the tool over time?
More info: https://github.com/yeoman/insight & http://yeoman.io
(Y/n)

輸入 Y 之後,就會繼續陸續詢問項目

  • Owner: 名字
  • Bot name: cube-hubot
  • Description: 描述
  • Bot adapter: 預設 compfire

另外,hubot 是採用 coffeescript 做開發,所以務必也需要安裝 coffee-script

1
$ sudo npm install -g coffee-script

以上完成之後,就可以在資料夾獲得一些檔案,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
total 32
drwxr-xr-x 12 staff staff 384 Apr 29 23:38 .
drwxr-xr-x 28 staff staff 896 Apr 29 23:35 ..
-rw-r--r-- 1 staff staff 197 May 20 2016 .editorconfig
-rw-r--r-- 1 staff staff 39 May 20 2016 .gitignore
-rw-r--r-- 1 staff staff 27 Apr 29 23:38 Procfile
-rw-r--r-- 1 staff staff 7880 Apr 29 23:38 README.md
drwxr-xr-x 4 staff staff 128 Apr 29 23:38 bin
-rw-r--r-- 1 staff staff 213 Apr 29 23:38 external-scripts.json
-rw-r--r-- 1 staff staff 2 Apr 29 23:38 hubot-scripts.json
drwxr-xr-x 87 staff staff 2784 Apr 29 23:38 node_modules
-rw-r--r-- 1 staff staff 599 Apr 29 23:38 package.json
drwxr-xr-x 3 staff staff 96 Apr 29 23:38 scripts

資料夾結構:

  • bin: 運行 hubot 腳本
  • node_modules: 套件文件
  • scripts: 自定義的腳本
  • external_scripts.json: 外部應用的腳本
  • hubot-scripts.json: 沒有在使用了
  • package.json: 全域配置資訊

接著便可以輸入

1
$ bin/hubot

如果你有出現以下的問題時

1
2
3
[Mon Apr 29 2019 23:48:00 GMT+0800 (CST)] ERROR ReplyError: MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.
at parseError (/cube-hubot/node_modules/redis-parser/lib/parser.js:193:12)
at parseType (/cube-hubot/node_modules/redis-parser/lib/parser.js:303:14)

請在另一個命令提示字元輸入

1
2
3
4
5
$ redis-cli

並輸入

config set stop-writes-on-bgsave-error no

接著我們打開 package.json 檔案內看看,預設有一些套件可以安裝

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
"name": "cube-hubot",
"version": "0.0.0",
"private": true,
"author": "xxxxxx",
"description": "A simple helpful robot for your Company",
"dependencies": {
"hubot": "^3.3.2",
"hubot-diagnostics": "^1.0.0",
"hubot-google-images": "^0.2.7",
"hubot-google-translate": "^0.2.1",
"hubot-help": "^1.0.1",
"hubot-heroku-keepalive": "^1.0.3",
"hubot-maps": "0.0.3",
"hubot-pugme": "^0.1.1",
"hubot-redis-brain": "^1.0.0",
"hubot-rules": "^1.0.0",
"hubot-scripts": "^2.17.2",
"hubot-shipit": "^0.2.1"
},
"engines": {
"node": "0.10.x"
}
}

輸入 yarn install 就可以將這些套件安裝起來

1
$ yarn install

運行 hubot

安裝完畢之後,再檢查一下是不是可以運行

1
$ bin/hubot -h

如果可以出現以下的結果,就代表有成功囉

1
2
3
4
5
6
7
8
9
10
11
12
Usage hubot [options]

Available options:
-a, --adapter ADAPTER The Adapter to use
-c, --create PATH Create a deployable hubot
-d, --disable-httpd Disable the HTTP server
-h, --help Display the help information
-l, --alias ALIAS Enable replacing the robot's name with alias
-n, --name NAME The name of the robot in chat
-r, --require PATH Alternative scripts path
-t, --config-check Test hubot's config to make sure it won't fail at startup
-v, --version Displays the version of hubot installed

完成之後,下一篇介紹 [hubot 專案部署到 heroku 連接 slack 聊天通訊軟體]

參考