概要
耳鼻咽喉科の開業医をしています。
今回、以前作成したLINE Botのデータをnode.jsを使ってFirebaseに出し入れできるようにしました。
以前作ったLINE Botの記事はこちら
花粉症の重症度を判定し自分に合う市販薬を教えてくれるLINE Botの作成
作成
1.Firebaseno秘密鍵を生成し準備
こちらを参考にします。
サーバーに Firebase Admin SDK を追加する
サービスアカウントに移動し下部にある「新しい秘密鍵の生成」ボタンを押します。
次に表示される「キーを生成」ボタンを押します。
すると、すぐに生成されてJSONファイルがダウンロードされます。この段階では、長めの文字数のファイル名.jsonになっています。
ダウンロードしたJSONファイルをserviceAccountKey.jsonに名前を変えて配置します。
Realtime DatabaseのページでdatabaseURLを確認します。
Firebaseコンソールにある、Realtime Databaseの中にあるデータが確認できるページでdatabaseURLを確認します。赤枠のところをメモしておきます。
2.Firebaseにデータを記録できるようにする
Firebase関連のインストール
npm i firebase-admin
花粉症の重症度を判定し自分に合う市販薬を教えてくれるLINE Botの作成で作成したプログラムに追記していきます。
// Firebase /////////////////////////////////varadmin=require("firebase-admin");// 1. サービスアカウント鍵を生成しserviceAccountKey.jsonにリネームvarserviceAccount=require("./serviceAccountKey.json");admin.initializeApp({credential:admin.credential.cert(serviceAccount),// 2. Realtime DatabaseのページでdatabaseURLを確認して反映databaseURL:"https://*************.com"});vardb=admin.database();varref=db.ref("protoout/studio");varusersRef=ref.child("messageList");// LINE /////////////////////////////////////constexpress=require('express');constline=require('@line/bot-sdk');constaxios=require('axios');constPORT=process.env.PORT||3000;constconfig={channelSecret:'********************',channelAccessToken:'***********************'};constapp=express();// app.get('/', (req, res) => res.send('Hello LINE BOT!(GET)')); //ブラウザ確認用(無くても問題ない)app.post('/webhook',line.middleware(config),(req,res)=>{console.log(req.body.events);//ここのif分はdeveloper consoleの"接続確認"用なので削除して問題ないです。if(req.body.events[0].replyToken==='00000000000000000000000000000000'&&req.body.events[1].replyToken==='ffffffffffffffffffffffffffffffff'){res.send('Hello LINE BOT!(POST)');console.log('疎通確認用');return;}// Firebaseにも応答を記録 pushusersRef.push({events:req.body.events});Promise.all(req.body.events.map(handleEvent)).then((result)=>res.json(result));});
3.Firebaseからデータを受信できるようにする
以下のコードを追記します。
// Firebase Listからデータを受信 child added onvarrefMessageList=db.ref("protoout/studio/messageList");refMessageList.on('child_added',function(snapshot){//postbackの場合if(snapshot.val().events[0].type=='postback'){console.log('child_added',snapshot.val().events[0].postback.data)userpostback=snapshot.val().events[0].postback.data;}//messageの場合if(snapshot.val().events[0].type=='message'){//message-位置情報の場合if(snapshot.val().events[0].message.type=='location'){userlat=snapshot.val().events[0].message.latitude;userlong=snapshot.val().events[0].message.longitude;getweather();//気象情報をreturnする関数}}})
4.データベースを確認する
LINEのデータが記録されています。
考察
LINE BotのデータをFirebaseに出し入れすることができました。
今度はFirebaseのデータをWEBカレンダーに表示できるようにしたいと思います。