用 Line Bot 做一個虛擬貨幣機器人吧!
前言
最近研究虛擬貨幣( 我知道很慢,請不要罵我 ),因為看到現有的一些 Line Bot 支援的內容都太少了,那我來做個玩玩!
需求
查詢單一貨幣的美金匯率
DEMO
先給大家看成果 XD ,我怕寫得太爛大家會看不到最後
Line Bot QR code
Github
環境需求
Line Message api
機器人回應的 Line 與 Server 的接口。其中需要:
- Line 的開發者帳號,可以藉由現有 Line 使用者直接申請升級,也可以直接申辦一個新的開發者帳號
- Webhook — Line 與 Server 的接口就是依靠這個,其中比較特別的需求是 Server domain 需要 SSL 憑證,所以需要
https
協定,不能只是http
,官方也推荐可以用 Heroku 的伺服器代管服務
Ruby Gem
Nokogiri : Ruby 的爬蟲 Gem
gem 'nokogiri'
line-bot-sdk-ruby : Line bot Ruby sdk
gem 'line-bot-api'
實作
因為 CoinGecko 的幣種順序會依照評分排序,所以我選擇使用 Database 暫存資料再讓 user 依照縮寫存取,讓每次有人存取都會重爬一次,當然也可以加上 whenever
或是直接編輯 crontab
提升回應的速度,只是我很懶 XD,而且發現用量低的話也不見得會比較好
先用 Nokogiri 爬出需要的資料
Nokogiri 的使用細節可以參考
http://ruby.bastardsbook.com/chapters/html-parsing/
Currency.get_currency
:將網頁中的貨幣名稱,貨幣縮寫,貨幣價值,市場價值爬出後
Currency.search_by_abbreviation
:提供給 Conroller 查詢單一貨幣的方法
再來將 Line 的帳號接口接好
Line Message api 與 Server 最基本的接口只需要3個元素就可以接起來
- Channel secret
- Channel access token
- Webhook url
將這些權仗填入程式中的 API,接到 API 再處理輸入值,至於可以處理哪些種類的內容,在 Line Message api document 中都有詳盡的介紹,就先介紹文字處理的部份:
結語
Line 的操作確實挺簡單的,只有少數的接口也不需要太多的認証才能拿到 Token,作為快速開發的伙伴或是自己想要做點小玩具的話是很不錯的選擇,雖然不是說太強大,但已經俱備了開發某些商業模式與市場的能力,算是台灣相當不錯的平台,現在也有許多購物平台或是其他商業模式正在運行
So, Do it right now !
P.S. 如果喜歡我的內容或是覺得有什麼需要改進的地方,歡迎留言一起討論,也請給予掌聲與追蹤,謝謝,See you next time