Как передать массив для Dialogflow в firebase, получив данные из нескольких намерений - PullRequest
1 голос
/ 06 февраля 2020

Я пытаюсь получить данные из нескольких намерений по одному и затем сохранить их в базе данных. Я контактные данные от пользователя. Основное намерение состоит в том, чтобы заставить сотрудников и работодателей узнавать подробности друг о друге. Таким образом, однажды сохраняя данные, я буду искать в базе данных и сообщать другому, кто удовлетворяет их критериям. Мой текущий код выполнения выглядит следующим образом:

// See https://github.com/dialogflow/dialogflow-fulfillment-nodejs
// for Dialogflow fulfillment library docs, samples, and to report issues
'use strict';

const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');
//const {Card, Suggestion} = require('dialogflow-fulfillment');
const admin = require('firebase-admin');
process.env.DEBUG = 'dialogflow:debug'; // enables lib debugging statements
admin.initializeApp();
let db = admin.firestore();

var a = {};
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
  const agent = new WebhookClient({ request, response });
  function welcome(agent) {
    agent.add(`Welcome to my agent!`);
  }

  function fallback(agent) {
    agent.add(`I didn't understand`);
    agent.add(`I'm sorry, can you try again?`);
  }
  function add_name(agent)
  {
    const name = agent.parameters.name; 
    //agent.add('Thank you ! ' + name);
    //a.name = agent.parameters.name;
    db.collection('names').add({name : name});
  }
    function add_role(agent)
  {
    const role = agent.parameters.role;
  }

  let intentMap = new Map();
  intentMap.set('Default Welcome Intent', welcome);
  intentMap.set('Default Fallback Intent', fallback);
  intentMap.set('get name', add_name);
  intentMap.set('get role', add_role);
  intentMap.set('get age', add_age);
  intentMap.set('get phone', add_phone);
  intentMap.set('get email', add_email);
  intentMap.set('get experience', add_experience);
  intentMap.set('get profile', add_profile);
  intentMap.set('get salary', add_salary);
  function add_salary(agent)
  {
    a.min_sal = agent.parameters.min_sal;
    a.max_sal = agent.parameters.max_sal;
  }
  function add_profile(agent)
  {
    a.profile = agent.parameters.profile;
  }
  function add_experience(agent)
  {
    a.experience = agent.parameters.experience;
     db.collection('test-data').add(a)
    .then((d)=>{console.log(d);});
     //console.log(a);
  }
  function add_age(agent)
  {
    a.age = agent.parameters.age;
  }
  function add_phone(agent)
  {
    a.phone = agent.parameters.phone;
  }
  function add_email(agent)
  {
    a.email = agent.parameters.email;
  }
  // intentMap.set('your intent name here', yourFunctionHandler);
  // intentMap.set('your intent name here', googleAssistantHandler);
  agent.handleRequest(intentMap);
});

Я пробовал учебные пособия по YouTube, но нигде не смог найти. Это сбивает с толку, как получить значения в массиве. Заранее спасибо!

...