用 Hubot 打造聊天機器人#2 - hubot 專案部署到 heroku 連接 slack 聊天通訊軟體
在這篇文章內,開始介紹 heroku 上部署 hubot 專案並且連接 slack 聊天通訊軟體。
學習內容大綱
- slack 的準備
- hubot 的準備
- 部署到 Heroku
- 哈囉機器人來跟我對話吧
- 注意事項
- 參考
slack 的準備
在這裡假設你已經有 slack 頻道,我們從 https://my.slack.com/services/new/hubot slack 網站內的指定頻道申請 hubot 註冊
輸入機器人的名稱
在這個頁面將機器人的組態設定,Username 輸入:cube-hubot
,當然你也可以自訂名稱,接著按下「Add Hubot Integration」按鈕
查看 slack token 或自訂圖標
在這一頁面,可以取得環境變數 HUBOT_SLACK_TOKEN
確認之後,就可以儲存,但務必要將 HUBOT_SLACK_TOKEN
的值複製起來,方便之後在程式上的使用。
本機端測試
安裝 hubot-slack
套件
1 | $ yarn add hubot-slack |
然後我們再拿剛剛建立出來的 HUBOT_SLACK_TOKEN
令牌將這組 token 放在全域,啟動看看 hubot
1 | $ export HUBOT_SLACK_TOKEN=xoxb-********* |
輸入以下的指令,將 hubot 透過 adapter 串接起 slack 執行程序
1 | $ HUBOT_SLACK_TOKEN=xoxb-********* ./bin/hubot --adapter slack |
然後可以打開 slack 的 hubot 對話看看,請輸入 ping
,這時候機器人回你 PONG
時就代表成功了。
部署到 Heroku
我們完成了在本機端的成功測試,因為我們不太可能一直在本機端一直開著服務,在這個步驟則是將專案程式推送到 heroku 雲端服務器上,也比較方便使用,首先在 heroku 登入之後新增一個 app
使用 heroku cli
登入
1 | heroku login |
將程式推上 heroku
1 | $ cd cube-hubot |
heroku 設定 HUBOT_SLACK_TOKEN 環境變數
1 | $ heroku config:add HUBOT_SLACK_TOKEN=xoxb-********* |
此時你就可以發現你的 slack 上的 hubot 已經上線了,那麼你就可以照著剛剛本機端測試一樣的方式看看。
打開 slack 的 hubot 對話輸入 ping
,這時候機器人回你 PONG
時就代表成功了。
由於 ping
與 PONG
的一來一回的對話是預設的,不免俗的希望機器人有更多豐富的內容通知。
所以,有了這麼棒的聊天機器人環境,我們就可以在專案上的 scripts
資料夾裡寫點程式讓機器人回應一下
哈囉機器人來跟我對話吧
由於 hubot 的預設程式是用 coffeescript 語法,而這個語言可以到 這裡學習Coffeescript,相信你也可以學習很快。那麼接下來請在 scripts
資料夾新增一個 hello.coffee
檔案,內容輸入
1 | module.exports = (robot) -> |
這個意思是全域的讓 hubot 等待監聽用戶輸入 hello
,確認跟文字相符之後,就回傳一個叫 world!
的字眼。將檔案存檔之後,請將它推上 heroku
1 | $ git add . |
輸入 hello
就會回傳 world!
。
good. 大功告成喔,如此一來,在這環境之下,可以撰寫一些希望機器人幫你做事的服務,比如查氣象、查股價、查youtube影片、查照片 等等,聽起來很美妙對吧!
注意事項
- 如果在創建 hubot 沒有將 adapter 適配器裝上 slack 的話,請修改專案的
Procfile
檔案填入:web: bin/hubot -a slack
,這個更改之後在推到 herokugit push heroku master
- heroku 的免費方案是每 24 小時就會停機 6 小時,我們可以使用
hubot-heroku-keepalive
套件讓他維持 keep alive 維持活著狀態。