Диалоговое окно - Тайм-аут Fulfillment Inline Editor (Firebase) - PullRequest
0 голосов
/ 04 октября 2018

Я тестирую с Dialogflow, используя проект Firebase.

Проект Firebase уже используется в качестве бэкэнда для Android.(Firestore)

Теперь я пытаюсь прикрепить чат-бота.

Этот код GitHub-это то, что я хочу.

  1. Я создаю новый агент Dialogflow, он ссылается на проект Firebase.

  2. Включить встроенный редактор Fullfillment, и я копирую и вставляю код из кода верхнего github.

'use strict';

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const {WebhookClient} = require('dialogflow-fulfillment');

process.env.DEBUG = 'dialogflow:*'; // enables lib debugging statements
admin.initializeApp(functions.config().firebase);
const db = admin.firestore();

exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
  const agent = new WebhookClient({ request, response });

  function writeToDb (agent) {
    const databaseEntry = agent.parameters.databaseEntry;
    const dialogflowAgentRef = db.collection('dialogflow').doc('agent');
    return db.runTransaction(t => {
      t.set(dialogflowAgentRef, {entry: databaseEntry});
      return Promise.resolve('Write complete');
    }).then(doc => {
      agent.add(`Wrote "${databaseEntry}" to the Firestore database.`);
    }).catch(err => {
      console.log(`Error writing to Firestore: ${err}`);
      agent.add(`Failed to write "${databaseEntry}" to the Firestore database.`);
    });
  }

  let intentMap = new Map();
  intentMap.set('WriteToFirestore', writeToDb);
  agent.handleRequest(intentMap);   // Here is index.js:51
});

Это очень просто.

Он просто пишет текст в Firestore.Вот и все.

Я развернул это выполнение и связал его с намерением.

В случае первого разговора после развертывания я могу найти ниже журнал в Firebase Cloud Functions.

Error: No handler for requested intent
at WebhookClient.handleRequest (/user_code/node_modules/dialogflow-fulfillment/src/dialogflow-fulfillment.js:317:29)
at exports.dialogflowFirebaseFulfillment.functions.https.onRequest (/user_code/index.js:51:9)
at cloudFunction (/user_code/node_modules/firebase-functions/lib/providers/https.js:57:9)

И через некоторое время, когда я повторяю попытку, я могу найти ниже журналы в Firebase Cloud Functions.

dialogflowFirebaseFulfillment - Function execution took 60002 ms, finished with status: 'timeout'

Я не знаю, что мне не хватает ...

1 Ответ

0 голосов
/ 05 октября 2018

Это была моя ошибка.

Ключ intentMap должен совпадать с именем Intent.После того, как я это исправлю, все работает нормально.

...