我正在使用Firebase项目在Dialogflow上进行测试。
Firebase项目已被用作android后端。 (Firestore)
现在,我正在尝试附加聊天机器人。
This github code is what I want.
我创建了一个新的Dialogflow代理,它引用了Firebase项目。
启用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'
我不知道我在想什么...
答案 0 :(得分:2)
这是我的错。
intentMap的键应与Intent名称相同。 我修复它后,效果很好。