Как правильно отправить диалоговое окно с формой ответа из nodejs webhook? - PullRequest
0 голосов
/ 18 января 2020

Я новичок в диалоговом потоке, и я пытался отправить ответ от nodejs webhook моему боту DF, когда запись была добавлена ​​в базу данных Firestore. Я много искал и не мог найти ни примеров, ни документов, которые могли бы помочь мне понять.

Это облачная функция, которая выполняет вышеуказанное:

const functions = require('firebase-functions');
const mysql = require('mysql');
const promise_mysql = require('promise-mysql');
const {WebhookClient} = require('dialogflow-fulfillment');

process.env.DEBUG = 'dialogflow:debug';

const admin = require('firebase-admin');
admin.initializeApp();
const db = admin.firestore();

exports.dialogflowFirebaseFulFillment = functions.https.onRequest((request, response) => {

  const agent = new WebhookClient({ request, response });

  console.log('Request headers: ' + JSON.stringify(request.headers));
  console.log('Request body>>>>>>>> ' + JSON.stringify(request.body));

  const parameters = request.body.queryResult.parameters;

  db.collection('reservations').add(parameters).then(() => {
    agent.add("Room reversed!")
  }).catch((e => {
    agent.add('Something went wrong!!!!!')
  }))
});

// Other stuff

Проблема (я думаю) заключается в этой части:

db.collection('reservations').add(parameters).then(() => {
    agent.add("Room reversed!")
  }).catch((e => {
    agent.add('Something went wrong!!!!!')
  }))

Она отлично добавляет запись, но Я не могу получить ответ диалогового потока, поскольку ни один из параметров не отображается: agent.add("Room reversed!"), agent.add('Something went wrong!!!!!')

Чего мне не хватает? Спасибо.

1 Ответ

0 голосов
/ 18 января 2020

Метод1:

exports.dialogflowFirebaseFulFillment = functions.https.onRequest((request, response) => {

  const agent = new WebhookClient({ request, response });

  console.log('Request headers: ' + JSON.stringify(request.headers));
  console.log('Request body>>>>>>>> ' + JSON.stringify(request.body));

  const parameters = request.body.queryResult.parameters;

  db.collection('reservations').add(parameters).then(() => {
    agent.add("Room reversed!")
    // Other stuff
  }).catch((e => {
    agent.add('Something went wrong!!!!!')
    // Other stuff
  }))
});

Метод2:

exports.dialogflowFirebaseFulFillment = functions.https.onRequest(async (request, response) => {

  const agent = new WebhookClient({ request, response });

  console.log('Request headers: ' + JSON.stringify(request.headers));
  console.log('Request body>>>>>>>> ' + JSON.stringify(request.body));

  const parameters = request.body.queryResult.parameters;
  try {
      await db.collection('reservations').add(parameters)
      agent.add("Room reversed!")

  } catch (error) {
      agent.add('Something went wrong!!!!!')
  }
  // Other stuff
});
...