LV. 15
GP 24

【閒聊】哈哈姆特用的 Ruby Gem

樓主 蒼時弦也 abr0616
GP4 BP-

作者標示-非商業性

本授權條款允許使用者重製、散布、傳輸以及修改著作,但不得為商業目的之使用。使用時必須按照著作人指定的方式表彰其姓名。

前幾天寫完「用 Ruby on Rails 串接哈哈姆特」之後就發現情況不太對勁,要整個完整的串接 Chatbot 有點不太方便,不如就寫個 Ruby Gem 給大家用吧!

程式碼已經放到 GitHub 上了,大家可以上去看看說明(英文)
https://github.com/elct9620/hahamut

這邊簡單說明一下用法,假設大家都是用 Ruby on Rails 的前提:

一、安裝

在你的 Gemfile 裡面加入下面這行

gem 'hahamut'

然後跑 bundle install 更新專案裡面的 Gem 就可以裝起來了。

二、設定

主要有兩個步驟,一個是要把他 mount (附加)到專案上,另外一個是設定哈哈姆特的機器人帳號。

修改 config/routes.rb 加入這行

mount Hahamut::Engine => '/hahamut'

這樣就可以把 Webhook 設定成 https://example.com/hahamut 這樣的網址(要把 example.com 換成你自己的網址)

增加 config/initializers/hahamut.rb 這個檔案,裡面寫入設定(自己替換掉機器人的設定)

Hahamut::Engine.setup do |config|
  config.register bot_id: '機器人 ID',
                          token: '機器人 Token',
                          secret: '機器人 Secret'
  config.handler = ChatbotHandler
end

這段主要是設定要怎麼處理機器人,如果你有多個機器人的話可以用 config.register 註冊多次,他是可以支援一次統合所有機器人的。

三、處理行為

然後再新增一個 app/services/chatbot_handler.rb 檔案來處理行為,要求是要有一個 call 方法存在(這邊舉例的用法是要一個類別方法)

class ChatbotHandler
  class << self
    def call(bot, event)
      event.messaging.each do |message|
        bot.send_to message.sender_id,
                            Hahamut::Message::Text.new(text: 'Hello World')
      end
    end
  end
end

這樣就會固定回「Hello World」了,訊息那些都會自動拆分解析好,只需要依序處理就可以對應大部分的情況。

怎麼上傳圖片跟發貼圖那些因為會增加過多篇幅,如果有使用上的問題再向我提問吧!



這幾天特別忙所以就先不整理成比較好讀的部落格文章版本了,之後有空會再寫比較詳細的說明。
4
-
未登入的勇者,要加入 2 樓的討論嗎?
板務人員:

0 筆精華,吸收日月精華中
一個月內新增 0
歡迎加入共同維護。


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】