꽃가루 알레르기 LINE Bot의 데이터를 node.js를 사용하여 Firebase에 출입한다(꽃가루 캘린더 작성③)
개요
이비인후과의 개업 의사입니다.
이번에 이전에 작성한 LINE Bot의 데이터를 node.js를 사용하여 Firebase에 출입할 수 있도록 했습니다.
이전에 만든 LINE Bot의 기사는 이쪽
꽃가루 알레르기의 중증도를 판정하고 자신에게 맞는 시판 약을 가르쳐주는 LINE Bot의 작성
만들기
1.Firebaseno 개인 키 생성 및 준비
이쪽을 참고로 합니다.
서버에 Firebase Admin SDK 추가
기어 마크에서 프로젝트 설정을 선택합니다.
서비스 계정으로 이동하여 하단의 '새 개인 키 생성' 버튼을 누릅니다.
다음에 표시되는 「키 생성」버튼을 누릅니다.
그러면 즉시 생성되어 JSON 파일을 다운로드합니다. 이 단계에서는 긴 문자 수의 파일 이름 .json입니다.
다운로드한 JSON 파일을 serviceAccountKey.json으로 이름을 바꿉니다.
실시간 데이터베이스 페이지에서 databaseURL을 확인합니다.
Firebase 콘솔의 Realtime Database에 있는 데이터를 볼 수 있는 페이지에서 databaseURL을 확인합니다. 빨간색 프레임을 기록해 둡니다.
2. Firebase에 데이터를 기록할 수 있도록
Firebase 관련 설치
npm i firebase-admin
꽃가루 알레르기의 중증도를 판정하고 자신에게 맞는 시판 약을 가르쳐주는 LINE Bot의 작성 에서 작성한 프로그램에 추가합니다.
// Firebase /////////////////////////////////
var admin = require("firebase-admin");
// 1. サービスアカウント鍵を生成しserviceAccountKey.jsonにリネーム
var serviceAccount = require("./serviceAccountKey.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
// 2. Realtime DatabaseのページでdatabaseURLを確認して反映
databaseURL: "https://*************.com"
});
var db = admin.database();
var ref = db.ref("protoout/studio");
var usersRef = ref.child("messageList");
// LINE /////////////////////////////////////
const express = require('express');
const line = require('@line/bot-sdk');
const axios = require('axios');
const PORT = process.env.PORT || 3000;
const config = {
channelSecret: '********************',
channelAccessToken: '***********************'
};
const app = 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にも応答を記録 push
usersRef.push({
events:req.body.events
});
Promise
.all(req.body.events.map(handleEvent))
.then((result) => res.json(result));
});
3. Firebase에서 데이터를 수신할 수 있도록 합니다.
다음 코드를 추가합니다.
// Firebase Listからデータを受信 child added on
var refMessageList = 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 데이터를 웹 캘린더에 표시할 수 있도록 하고 싶습니다.
Reference
이 문제에 관하여(꽃가루 알레르기 LINE Bot의 데이터를 node.js를 사용하여 Firebase에 출입한다(꽃가루 캘린더 작성③)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/doikatsuyuki/items/3a2a34209bcd0ca1cfbf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)