almost 4 years ago

最近公司頻道從 IRC 換到 Hipchat 上面,本來也想要把 Hubot 也一起搬過去的。

但是 Hubot 的安裝真是惡夢,光是 node.js 版本和 npm 之間的 dependencies 就可以搞死人。我們公司現在又沒有專職的 SA,工具蠻多都是我自己下海寫的....

最後想了一下,決定找一套在 ruby 下也很好開發的 hipchat bot framework。

最後找到這套 isis。因為敝公司 是 100% 靠 Ruby 吃飯的,所以瞬間就把寫 bot 的門檻拉到很低...

掛上 hipchat bot 的方式

因為 bot 是常駐在聊天室的,所以你必須要幫 bot 申請一個 hipchat 專用帳號。

hipchat:
  jid: DDDD_XXXXX@chat.hipchat.com
  name: Full Name
  password: <password>
  history: 3 # num of history fields to request
  rooms:
    - DDDD_room_name@conf.hipchat.com
    # - DDDD_second_room_name@conf.hipchat.com

Bot 走 Jabber 通訊協定。Jid 和 Romm 的資訊在 https://yourcompany.hipchat.com/account/xmpp

jid 格式 DDDD_XXXXX@chat.hipchat.com,room 格式 DDDD_room_name@conf.hipchat.com

開發 / 掛上 Plugin 方式

isis 的 plugin 撰寫很簡單。基本上只要到 lib/isis/plugins 多開一個 class 繼承 Isis::Plugin::Base,然後掛進 config.yml。
這樣就做好了...

Local 測試

bin/isis run 就可以把 bot 跑起來了。而若要背景常駐要跑 bin/isis start

Deployment

開發完畢推上 git 之後,要讓 bot 重開還要跑到 server 上跑 bin/isis restart。懶人如我當然覺得這很麻煩,所以我用 gitploy 和 Rake 檔寫了 autodeploy,跑 rake deploy 就會動了。

順便還參考 hipchat/hipchat-rb 的 deploy 檔,做了 deploy hook 掛在 bot 的 deploy rake 上,這樣起碼有人 deploy bot 時大家會知道,以免 bot 被搞爛了沒人發現...。

config/gitploy.rb https://gist.github.com/xdite/5424771

Rakefile https://gist.github.com/xdite/5424780

後記

昨天後續還寫了幾隻常用 bot,比如說「午餐吃什麼 bot」、「redmine #issue_number bot」、「網頁自動抓標題 bot」。

不過這不是重點,重點是 bot framework 架好之後,禮拜五晚上同事們竟然不睡覺,一直在惡搞這隻 bot 瘋狂加功能....XD

看起來 bot 的確可以玩出不少花樣啊...

← 如何招聘技術人才,一點心得 [JD篇] Bootstrap Helper 與 Bootstrappers 開始支援 Rails 4 →
 
comments powered by Disqus