Dialogflow-实现内联编辑器(Firebase)超时

时间:2018-10-04 16:43:33

标签: firebase google-cloud-firestore google-cloud-functions dialogflow

我正在使用Firebase项目在Dialogflow上进行测试。

Firebase项目已被用作android后端。 (Firestore)

现在,我正在尝试附加聊天机器人。

This github code is what I want.

  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。 就是这样。

我部署了这个实现并链接到一个Intent。

在部署后进行第一次对话的情况下,我可以在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 :(得分:2)

这是我的错。

intentMap的键应与Intent名称相同。 我修复它后,效果很好。