Jun 15, 2017 Hubot English
在上一篇教學中,我已經示範如何安裝並建立一個 Hubot。為了讓 Hubot 能真正發揮其強大之處,我們還需要替 Hubot 加入客製化的 Scirpt (.coffee 或者是 .js 檔案)。所以,我將在這篇文章中介紹如何新增 Script 並進一步將 Hubot 與 Slack 整合。
確認一下你的機器已經安裝 Node.js 與 npm:
# 查看 Node.js 版本
nodejs -v
# 查看 npm 版本
npm -v
為什麼我們會需要另外新增 Scripts 呢?你可以將它視為 Hubot 的外掛。少了客製化的外掛,Hubot 只提供非常基本的功能 (指令)。 所以我們接下來將建立自己的外掛來強化、靈活運用 Hubot。但是,我們該怎麼安裝外掛呢?很簡單,Yo 已經幫我們建立好一個名為 scripts 資料夾,我們只需要把檔案放在該處即可。暸解後,讓我們先建立一個簡單的 Script:
# 此範例使用 Coffescript
module.exports = (robot) ->
# 用法: show_info
robot.respond /show_info/i, (msg) ->
# 在此加入你所需的動作 ...
# 例如: 發送一個多行的訊息
msg.reply """Put your information here
and here ....
and here ....
"""
在上面的範例中,我使用了 robot.respond 來定義一個指令 (或者你也可以視為觸發器)。所以試著想像你在 Slack 上輸入並執行 show_info 後,該指令會觸發 Hubot 產生反應並在同一個頻道回傳文字訊息。除了 respond,你還可以使用 hear。請參考說明文件來了解它們使用上的差異與時機。接下來,再來一個有趣一點的範例:
# 透過 Hubot 呼叫 HTTP API
...
# 用法: call-http [param1] [param2]
robot.respond /call-http (.*) (.*)/i, (msg) ->
# 取得 parameters
data = JSON.stringify({
param1: msg.match[1]
param2: msg.match[2]
})
# 發送 POST Request 並回傳 response
msg.http('/url/to/your/service')
.header('Content-Type', 'application/json')
.post(data) (err, res, body) ->
if res
if res.statusCode isnt 200
msg.reply "Something goes wrong ..."
return
msg.reply "Return your data or messages"
else
msg.reply "Something goes wrong ..."
要成功地讓 Hubot 與 Slack 結合我們還需要一個關鍵的步驟,因為 Slack 目前還不知道我們的 Hubot 存在。所以,我們需要替 Hubot 註冊並取得一個 API token。首先,進入 Slack 並點選 Apps & Integrations,然後選擇 Bot。註冊完成後,你就可以取得 API token。
一切就緒後,啟動 Hubot (別忘了加入 API token):
# Don't forget to add the token
HUBOT_SLACK_TOKEN=your-api-token ./bin/hubot --adapter slack
當然,更好的方式就是把 API token 設成環境變數來使用。成功啟動 Hubot 後,你就可以到 Slack 上開始給你的機器人指令了。
若對於文章內容有任何建議與指正,非常歡迎你告訴我或者與我一起討論 ! :)
zeckli.devforgalaxy@gmail.com © 2015-2019 zeckli, thanks to Jekyll and GitHub.