Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8866

花粉症LINE Botのデータをnode.jsを使ってFirebaseに出し入れする(花粉カレンダー作成③)

$
0
0

概要

耳鼻咽喉科の開業医をしています。

今回、以前作成したLINE Botのデータをnode.jsを使ってFirebaseに出し入れできるようにしました。

以前作ったLINE Botの記事はこちら 
花粉症の重症度を判定し自分に合う市販薬を教えてくれるLINE Botの作成

作成

1.Firebaseno秘密鍵を生成し準備
こちらを参考にします。
サーバーに Firebase Admin SDK を追加する

歯車マークからプロジェクトの設定を選択します
image.png

サービスアカウントに移動し下部にある「新しい秘密鍵の生成」ボタンを押します。
image.png

次に表示される「キーを生成」ボタンを押します。
すると、すぐに生成されてJSONファイルがダウンロードされます。この段階では、長めの文字数のファイル名.jsonになっています。
ダウンロードしたJSONファイルをserviceAccountKey.jsonに名前を変えて配置します。

Realtime DatabaseのページでdatabaseURLを確認します。
image.png

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のデータが記録されています。
image.png

考察

LINE BotのデータをFirebaseに出し入れすることができました。
今度はFirebaseのデータをWEBカレンダーに表示できるようにしたいと思います。


Viewing all articles
Browse latest Browse all 8866

Trending Articles