https://www.notion.so/LINEbot-4aafb46c2d684eb4916e7097e47621b1
上記の記事の作業を事前に済ましている前提で説明していきます。時間指定をしたいのでRakeタスクとwheneverを使って実装していたいと思います。
$ rails g task push_line
lib/tasksディレクトリ配下にpush_line.rakeファイルが作成されました。このファイルの中にpush機能の内容などを書いていきます。今回はtaskを2つ作成しました。
namespace :push_line do
desc "朝メッセージを送る"
task push_line_message_morning: :environment do
message = {
type: 'text',
text: 'あれ?まだ寝てるのかな?太陽の光を浴びてスッキリ起きよう?'
}
client = Line::Bot::Client.new { |config|
config.channel_secret = ENV["LINE_CHANNEL_SECRET"]
config.channel_token = ENV["LINE_CHANNEL_TOKEN"]
}
response = client.push_message(ENV["LINE_USER_ID"], message)
p response
end
desc "夜メッセージを送る"
task push_line_message_night: :environment do
message = {
type: 'text',
text: 'もうすぐ日付超えちゃうよ〜。。今日もお疲れ様です。毎日頑張ってる君はえらい!おやすみなさい。'
}
client = Line::Bot::Client.new { |config|
config.channel_secret = ENV["LINE_CHANNEL_SECRET"]
config.channel_token = ENV["LINE_CHANNEL_TOKEN"]
}
response = client.push_message(ENV["LINE_USER_ID"], message)
p response
end
end
response = client.push_message(ENV["LINE_USER_ID"], message)
このコードはメッセージを送信する相手を指定しています。Herokuなどにあげてデプロイする予定も、他のユーザーに使ってもらう予定もないので.envファイルに自分のユーザーIDを管理しておきました。
LINE_USER_ID=Your user IDを貼り付ける
※Your user IDはLINE Developersの指定チャンネル内、Basic settingに記載されています。
まず最初にwheneverのgemを追加して、bundle install
をします。
gem 'whenever', require: false
時間指定をするためにschedule.rbファイルを作成します。このように出力され、configディレクトリ配下にschedule.rbファイルが作成されたら成功です。
$ bundle exec wheneverize .
>[add] writing `./config/schedule.rb'
>[done] wheneverized!
そして作成したschedule.rbファイルに設定を追記していきます。ここでcronを使って処理が実行されているか確認するための設定を行っています。
そして毎朝7時と深夜11時50分に各rakeタスクの指定した処理が走るように記載しています。
require File.expand_path(File.dirname(__FILE__) + "/environment")
rails_env = ENV['RAILS_ENV'] || :development
set :environment, rails_env
set :output, "#{Rails.root}/log/cron.log"
every 1.day, at: ['7:00 am'] do
rake 'push_line:push_line_message_morning'
end
every 1.day, at: ['11:50 pm'] do
rake 'push_line:push_line_message_night'
end
上記の設定を更新して実行できるようにするために下記のコマンドを打ちます。