卡米哥教你做 Line 鬧鐘

大家好,我是卡米哥。

本系列文中的每篇文章,都將會是從頭開始製作的聊天機器人。

第零步:環境安裝

第一步:建立專案

首先你要找到一個放專案的資料夾,然後開啟對應的小黑框,輸入以下指令:

rails new alarm_demo

然後進入專案:

cd alarm_demo

第二步:安裝套件

在 rails 中,可以透過修改 Gemfile 來安裝套件,也可以使用指令來幫我們修改 Gemfile,這次教怎麼用指令安裝套件。

bundle add line-bot-api

第三步:製作 Service

請在 app 資料夾下新增 services 資料夾,然後在 services 資料夾下新增 alarm_service.rb 檔案。

Image for post
Image for post

然後輸入以下程式碼:

如果你還沒有註冊 line bot,你可以到 line developer 後台 註冊一個,你可以在 line developer 後台找到以下資訊:

  • 你的 line channel secret
  • 你的 line channel token
  • 你的 line user id (通常在頁面的最下方)

然後填入程式碼中。

第四步:測試 Service

在你的小黑框(需在專案資料夾下)輸入以下指令:

rails c

進入 rails console 後,輸入以下程式碼:

AlarmService.new.run

如果你看到的是以下回應,那麼你應該會在 line bot 那邊收到訊息了。

=> #<Net::HTTPOK 200 OK readbody=true>

如果你看到的是以下回應,那代表你的 line channel token 或者 line channel secret 打錯了。

#<Net::HTTPUnauthorized 401 Unauthorized readbody=true>

如果你發現你打錯了,在你修改程式碼之後,你可能會需要輸入 exit 離開後再重新 rails c 進入 rails console,否則你的修改可能無法正確載入。

如果你看到的是以下回應,那代表你的 line user id 或者 message 打錯了。

#<Net::HTTPBadRequest 400 Bad Request readbody=true>

請詳加檢查。

第五步:建立 Task

回到小黑框,輸入以下指令建立 rake task

rails g task line alarm

建立好了之後你會發現在你的專案資料夾下的 lib/tasks 下多了一個檔案 line.rake,其內容如下:

namespace :line do
desc "TODO"
task alarm: :environment do

end
end

我們將他修改成這樣:

namespace :line do
task alarm: :environment do
AlarmService.new.run
end
end

其實這就是把我們剛剛寫好的程式填進去而已。

第六步:測試 Task

回到小黑框,輸入以下指令:

rails line:alarm

或者輸入

rake line:alarm

這就是 rake task,他的功能其實就是幫我們打開 rails c 之後再執行我們想要執行的程式。

有了 rake task 之後就能夠使用排程去觸發 line bot 了。

第七步:發布到 Heroku

在發布之前,因為 Gemfile 沒有 sqlite3,所以我們需要調整一下 Gemfile,請將以下程式:

# Use sqlite3 as the database for Active Record
gem 'sqlite3'

改為

# Use sqlite3 as the database for Active Record
group :development, :test do
gem 'sqlite3'
end
group :production do
gem 'pg'
end

建立一個 heroku 新專案:

heroku create 你的專案名稱

其中,專案名稱只能用英文、數字和減號。好了之後上傳程式碼:

git add .
git commit -m "line alarm"
git push heroku master

第八步:測試 Heroku

完成後使用以下指令來測試:

heroku run rails line:alarm

如果有收到來自 line bot 的訊息就表示成功了

第九步:安裝 Heroku 排程器

在 Heroku 上要定期執行程式的話,需要安裝 addons,我們需要的 addons 叫做 scheduler,他是免費的,所以可以安心使用。

在專案資料夾下使用以下指令進行安裝:

heroku addons:create scheduler:standard

可以輸入以下指令查看說明文件(全英文):

heroku addons:docs scheduler

第十步:設定 Heroku 排程

安裝好了之後我們需要設定排程,Heroku 其實有做讓我們設定排程的後台,輸入以下指令開啟後台。

heroku addons:open scheduler

你應該會看到下面這個畫面:

Image for post
Image for post

點擊Add new job 之後會看到這個畫面:

Image for post
Image for post

$ 號後面就是要填上我們想要執行的指令,其實就是我們做好的 rake task,這裡就填入:

rails line:alarm

然後先選擇每 10 分鐘觸發一次,就可以按下 Save 了。Save 之後,應該會看到以下畫面:

Image for post
Image for post

接著就是等 10 分鐘了。

完成

以下開放許願,下一篇大家想看什麼內容?

Originally published at gist.github.com.

在追求真理的道路上

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store