1

How to search a student ID by LINE ID and get grade from collection grade in firestore
firestore path user/{studentID}/Grade/{SubjectAutoKeyGen}
studentID doc use to where UserID = Line ID
SubjectAutoKeyGen doc use to where SubjectCode


    'use strict';

    const functions = require('firebase-functions');
    const {WebhookClient, Card, Suggestion, Payload} = require('dialogflow-fulfillment');

    const admin = require("firebase-admin");
    admin.initializeApp({
        credential: admin.credential.applicationDefault(),
        databaseURL: 'https://<YOUR-PROJECT-ID>.firebaseio.com'
    });
    const db = admin.firestore();

    process.env.DEBUG = 'dialogflow:debug';
    exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
        const agent = new WebhookClient({ request, response });
        console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
        console.log('Dialogflow Request body: ' + JSON.stringify(request.body))


       function Gradesubject(agent) {
          let subject = request.body.queryResult.parameters.SubjectCode;
          let ID = getUser(request.body.originalDetectIntentRequest.payload.data.source.userId).SID;
          return db.collection('users').doc(ID).collection('Grade').where('SubjectCode', '==', subject).get()
          .then(snap => {
            if (snapshot.empty) {
              agent.add('No matching documents.');
            }
            snapshot.forEach(doc => {
              agent.add('Subject Code '+ doc.data().SubjectCode +"\nSubject Name "+ doc.data().SubjectName +"\nCredit "+ doc.data().Credit +" Semester "+ doc.data().Semester +" Year "+ doc.data().Year +"\nGrade "+ doc.data().Grade);
            });
          });
        }


       function getUser(LineID){
          return db.collection('user').where('UserID', '==', LineID).get()
          .then(snapshot => {
            snapshot.forEach(doc => {
              var SID = doc.data().StudentID.toString();
            });
          });
        }

        let intentMap = new Map();
        intentMap.set('ask.grade - subject - custom',Gradesubject);
        agent.handleRequest(intentMap);
      });

Firestore Data Photo

0 Answers0