概要
この記事では、HerokuとNode.jsを活用して特定のユーザ(少人数を想定)に記念日を通知するLINE Botを作るノウハウを紹介します。ここでの通知とは、時間指定でbotからユーザへの簡単なテキストメッセージを送ることを指します。
事前準備1 LINE bot のチャネルの用意
LINE Botを作成するためにはLINEのMessaging APIというサービスを使います。
まずこのサービスを利用するためのチャネルを作成します。
以下をページを参考に必要な情報を入力して進めてください。
実在するアカウントと同様にアイコンも設定できます。
ここでは、某作品より以下のようなアイコンを設定しました。
Messaging APIには、botからユーザへのメッセージ(Push)とユーザがbotに送ったメッセージに対する返信(Reply)
がありますが、今回使用するのは、Pushの方です。
事前準備2 ホストするサーバー(Heroku)の用意
次に、botをホストするサーバを用意します。
今回は無料で多くのサービスが利用可能なHerokuを使います。
Herokuの基本的な使い方やデプロイするまでの流れは、以下の記事が参考になると思います。
https://qiita.com/arashida/items/b2f2e01259238235e187
https://qiita.com/shti_f/items/b4b5d830672d908eff4e
botの開発
今回はbotからのメッセージを送ることを想定しているので、起点はHerokuのアドオン機能であるheroku schedulerを利用することにします。(詳細は後述)
この設定は後ほど行うとして、まずは通知するためのプログウラムを記載します。
通常使うindex.jsとは別にファイルを一つ作成します。
コードを書くにあたっては、Herokuの環境変数の設定などがあり、その点は上記の記事を参考にさせていただきました。
#!/usr/bin/env node
// モジュールのインポートconstserver=require("express")();constline=require("@line/bot-sdk");// Messaging APIのSDKをインポート// パラメータ設定constline_config={channelAccessToken:process.env.LINE_ACCESS_TOKEN,// 環境変数からアクセストークンセットchannelSecret:process.env.LINE_CHANNEL_SECRET// 環境変数からChannel Secretをセット};// APIコールのためのクライアントインスタンスを作成constbot=newline.Client(line_config);main();//メインとなる処理を適当に//メッセージを送る処理functionsendMessage(message){console.log("message:"+message);bot.pushMessage("XXXXXXXXXXXXXXXXXXXXXXXXXX",{//送りたい相手のUserIDtype:"text",text:"今日ハ "+message+"ダゼェ!"})}functionmain(){//現在日付の取得vartoday=newDate();varmonth=today.getMonth()+1;vardate=today.getDate();varmessage="";//デフォルトのメッセージをなにか入れたい場合はここに入れる。//送るべきメッセージの判定//XXの誕生日if(month==7&date==30){message="XXの誕生日"sendMessage(message);}//入籍届けを出した日elseif(month==8&date==11){message="入籍届けを出した日"sendMessage(message);}//該当しない日は何もしないelse{}}
今回は簡易的な作りでDBのようなものを持たせていないので、日付の判定もメッセージ送信先のIDもハードコードしています。
package.jsonにJobの追加
heroku schedulerにキックしてもらうためのジョブと実際に動かすjsのファイルをpackage.jsonで紐付けます。
{"name":"line_botXXXXX","version":"1.0.0","description":"","main":"index.js","scripts":{"job-push-sample":"node sample.js"},...
スケジューラの設定
スケジューラはHerokuのアドオン機能で日時や毎時の実行であれば、この機能で十分です。
※細かい設定はできないので、そのあたりまで実装したい方は別のサービスを使ったほうがいいでしょう
実際の設定は以下の記事を参考にさせていただきました。
実際の設定画面は以下の通りです。
npm run 「package.jsonで指定したjob」という記載の仕方です。
※時間は標準時での設定しかできない点に要注意。
設定は以上です!
実際に指定したユーザのラインにメッセージが飛んでいることを確認できましたでしょうか?
まとめ
ラインは生活の中に浸透していることもあって、アイディアと工夫次第で面白いことができそうですね。
これからも可能性を探っていきたいと思います。