みなさんこんにちは、まどぎわです(・∀・)
今回は、いつも忘れてしまっていたので、毎日明日出せるゴミを通知してくれるLINE BOT作ってみました🙌
やってみたら意外と簡単に出来たので手順等をメモしておきます📝
LineBotの作り方
流れは下記のような感じです👇
- LineDevelopersに登録
- チャンネル作成
- BOTを実装
- herokuにアプリを作成
LineDevelopersに登録
下記からLineDevelopersに登録できます👀
画面に従って行って貰えれば、特に躓くところは無いと思います。
チャンネル作成
BOTを作成するには、まずはチャンネルを作る必要があります。
チャンネルとは、実際にBOTを運用するにあって必要な情報、Tokenや表示する名前等を登録します。詳しいやり方は、まとめてくださっている方がいらっしゃいますので、下記等を参考にしてみてください👇
BOTを実装
今回は、sinatra
と公式のgemline-bot-sdk-ruby
を使って作成しました。
軽く動かすだけだったら、公式チュートリアルをコピペするとオウム返しのLineBotが作成出来ます🐦
私のBotの返信処理は下記の通りです👇
メッセージが来たら、明日がなんのゴミの日かを取得し返信しています。
app.rb
post '/callback' do // リクエストボディの取得 body = request.body.read // リクエストのチェック signature = request.env['HTTP_X_LINE_SIGNATURE'] unless client.validate_signature(body, signature) error 400 do 'Bad Request' end end // リクエストボディをパース events = client.parse_events_from(body) events.each do |event| // メッセージを受信したら case event when Line::Bot::Event::Message // 通知メッセージを返信する client.reply(event['replyToken'], GomiChecker.notice_message) end end end
ちなみに、返信等のcallbackを受けずにBOT側から通知を送信する場合は、下記のような実装になります。※ユーザーIDを指定して通知を行う必要があるので、環境変数で管理するようにしてます。
batch.rb
def push_ids ENV['PUSH_TO_ID'].split(',') end begin // 環境変数に設定されたすべてのユーザーに通知を送信 push_ids.each { |id| client.push(id, GomiChecker.notice_message) } rescue => e puts "batch exec error ..." p e end
詳しい実装はGithubにコードを上げているので、そちらをご確認ください。
herokuにアプリを作成してデプロイ
下記のような感じでherokuにデプロイすると実際にLINEBOTが動き出すと思います🙌
$ heroku create # hoge.gitは自分のアプリに合わせて変える $ git remote add heroku https://git.heroku.com/hoge.git $ git push heroku master
これでLINEから自分のBOTを友達登録して、通知を受け取れるはずです!🔔
おわりに
今回は、いつも忘れる明日のゴミの日を通知するBOTを作ってみました、実際に自分の生活を豊かにするアプリは良いですね🏠 LINEBOTを使うのは初めてでしたが結構簡単に作れたので、また何か日常で困ったことがあったら使ってみようかなと思いました🙌