読者です 読者をやめる 読者になる 読者になる

【ごみ収集曜日APIシリーズ】LINE Notifyを使ってごみ収集日を自分にお知らせしてみた。

Rubyの練習も兼ねて、LINE Notifyを使ってごみ収集日を自分にお知らせしてみました。

やったこと

  • LINE Notifyのマイページへログイン(スマホ版のLINEで登録したものです。)し、トークンを発行
  • メッセージの送信テスト
  • Rubyからメッセージを送信
  • ごみ収集日のお知らせテキストを作成し、メッセージを飛ばす処理を追加
  • 上記をcrontabへ登録

参考

developers.linecorp.com

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>

送れたみたい。

f:id:takapi86:20170102223433p:plain

ごみ収集日のお知らせテキストを作成し、メッセージを飛ばす処理を追加

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

きたぞっ!

f:id:takapi86:20170102224548p:plain

明日からゴミの出し忘れは無くなるに違いない。