LINE Notifyを使ってごみ収集日を自分にお知らせしてみた
Rubyの練習も兼ねて、LINE Notifyを使ってごみ収集日を自分にお知らせしてみました。
やったこと
- LINE Notifyのマイページへログイン(スマホ版のLINEで登録したものです。)し、トークンを発行
- メッセージの送信テスト
- Rubyからメッセージを送信
- ごみ収集日のお知らせテキストを作成し、メッセージを飛ばす処理を追加
- 上記をcrontabへ登録
参考
LINE Notifyのマイページへログイン(スマホ版のLINEで登録したものです。)し、トークンを発行
特に問題なく発行出来たので割愛
メッセージの送信テスト
参考ページ コマンドラインから LINE にメッセージを送れる LINE Notifyにもある通り、curlから簡単に試すことができた
curl -X POST -H 'Authorization: Bearer [access_token]' -F 'message=foobar' https:// notify-api.line.me/api/notify
※ [access_token]の部分を発行されたトークンに置き換えます。([]は必要なし)
Rubyからリクエストを送信
以下のように実装してみた。
line_notify.rb
# coding: utf-8 require 'net/http' require 'uri' require 'openssl' class LineNotify def self.send_msg(msg, token) if token.nil? || token.empty? puts 'Tokenをセットしてください。' return end uri = URI('https://notify-api.line.me/api/notify') req = Net::HTTP::Post.new(uri.path) req.set_form_data('message' => msg) req['Authorization'] = 'Bearer ' + token http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true if uri.scheme == 'https' http.verify_mode = OpenSSL::SSL::VERIFY_NONE res = http.start do |h| h.request(req) end end end
irbでテスト
irb(main):001:0> require './line_notify' => true irb(main):002:0> LineNotify::send_msg("テストです。", "ここはトークン") => #<Net::HTTPOK 200 OK readbody=true>
送れたみたい。
ごみ収集日のお知らせテキストを作成し、メッセージを飛ばす処理を追加
schedule.rb
# coding: utf-8 require "date" require 'json' require 'yaml' require './line_notify' config = YAML.load_file("config.yml") youbi = [:日,:月,:火,:水,:木,:金,:土] wday = youbi[Date.today.wday] gomi_schedule = { 月: '燃やすごみ,燃えないごみ、スプレー缶、乾電池', 火: '缶・びん・ペットボトル', 水: 'プラスチック製容器包装', 木: '燃えないごみ', } if !gomi_schedule[wday].nil? msg = "\n今日は"+ wday.to_s + "曜日【" + gomi_schedule[wday] + "】の収集日です。" LineNotify::send_msg(msg, config['token']) end
config.yml
token: [ここにトークンを追加]
上記をcrontabへ登録
crontab -e
7時に通知が来るよう設定
0 7 * * * cd ~/ && ruby schedule.rb
きたぞっ!
明日からゴミの出し忘れは無くなるに違いない。