Чтение данных из Firebase в Dialogflow

Я создаю чат-бота, но мне не удалось получить данные из Firebase из Dialogflow.

Я хочу, чтобы пользователь ввел свое имя, а бот запросил Firebase и проверил, существует ли это имя. Если это «пользователь существует», иначе «пользователь отсутствует в базе данных».

[это код, который я использую в настоящее время] [1]

function SaveName(agent){
const number = agent.parameters.number;  // when I input the number in Fialogflow
const docRef = db.collection('names').doc(sessionId);

return docRef.get()
  .then(doc => {
    if (!doc.exists) {
      agent.add('No data found in the database!');
      console.log(doc);
    } else {
      agent.add(doc.data().orders);
    }
    return Promise.resolve('Read complete');
  }).catch(() => {
    agent.add('Error reading entry from the Firestore database.');
    agent.add('Please add a entry to the database first by saying, "Write <your phrase> to the database"');
  });
 }

person Bangis Adamu    schedule 18.11.2019    source источник


Ответы (2)


Это возможно путем настройки выполнения для вашего агента.

  1. Перейдите в Намерения, выберите свое намерение и прокрутите вниз до раздела выполнения.
  2. Нажмите Включить вызов веб-перехватчика для этого намерения (см. Custom webhook).
  3. Создайте веб-перехватчик (вы можете включить встроенный редактор в Выполнение - встроенный редактор для этого).
  4. В своем веб-перехватчике запросите Firestore (см. этот ответ).

Обратите внимание, что любой сможет узнать, существует ли пользователь в вашей базе данных. Если вы создаете для Google Assistant, ознакомьтесь с привязкой учетной записи.

person bastien    schedule 18.11.2019
comment
это не сработало, но можете сослаться на мой код и увидеть мою ошибку function SaveName (agent) {store.collection ('names'). doc ('value'). get (). then (doc = ›{if ( doc.exists) {console.log (doc.data ()); res.send (doc.data ());} else {res.send (Ничего);}}). catch (reason = ›{console.log (причина); res.send (причина);}); } - person Bangis Adamu; 19.11.2019
comment
Можете ли вы включить свой код в вопрос, используя инструмент для примера кода, вместо ссылки на снимок экрана? Вам будет легче помочь! - person bastien; 19.11.2019

Я столкнулся с подобной проблемой, когда полученные данные не отображались при взаимодействии с агентом. Это произошло с шаблоном, указанным здесь. Затем я просто удалил ответы из намерения ReadFromFirestore и получил обратно ожидаемые полученные запросы. Я снова попытался вернуть ответ и вызвать намерение, и ответ был как бы чередованием между ответом по умолчанию и ответом на запрос пожарного хранилища. Тем не менее, отказ от этого сработал для меня и думал, что это поможет и другим.

person Ketan    schedule 04.06.2020