Dialogflow es 我应该在哪里查找错误;由于语音响应为空,格式错误的响应无法将Dialogflow响应解析为AppResponse
找到错误了吗 由于语音响应为空,格式错误的响应无法将Dialogflow响应解析为AppResponse 我已经读过了,但仍然没有领会要点 我是个新手 试图遵循“使用云Firestore可伸缩地查询Google上操作的数据”中提供的代码,但出现了错误Dialogflow es 我应该在哪里查找错误;由于语音响应为空,格式错误的响应无法将Dialogflow响应解析为AppResponse,dialogflow-es,actions-on-google,Dialogflow Es,Actions On Google,找到错误了吗 由于语音响应为空,格式错误的响应无法将Dialogflow响应解析为AppResponse 我已经读过了,但仍然没有领会要点 我是个新手 试图遵循“使用云Firestore可伸缩地查询Google上操作的数据”中提供的代码,但出现了错误 //Copyright 2018 Google LLC.SPDX-License-Identifier: Apache-2.0 'use strict'; const {dialogflow} = require('actions-on-goo
//Copyright 2018 Google LLC.SPDX-License-Identifier: Apache-2.0
'use strict';
const {dialogflow} = require('actions-on-google');
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const app = dialogflow({debug: true});
admin.initializeApp();
const db = admin.firestore();
const collectionRef = db.collection('restaurants');
app.intent('ask_recipe_intent', (conv, {name}) => {
const term = name.toLowerCase();
const termRef = collectionRef.doc(`${term}`);
return termRef.get()
.then((snapshot) => {
const {city, name} = snapshot.data();
conv.ask(`Here you go, ${name}, ${city}. ` +
`What else do you want to know?`);
}).catch((e) => {
console.log('error:', e);
conv.close('Sorry, try again and tell me another food.');
});
});
exports.actionsOracle = functions.https.onRequest(app);
我想知道是什么
`${term}`
在Firebase中是如何使用的?我没有任何名为“term”的文档。这里有一些无关的问题 线路
collectionRef.doc(`${term}`);
太复杂了。您可以安全地将其重写为
collectionRef.doc(term);
因为backtick引号在这种情况下没有任何作用。JavaScript最新版本中的反勾引号在${}
部分中进行表达式扩展。所以计算表达式
`${term}`
只要计算出术语
是什么。因此,该函数的结果是在Firestore中创建一个名为term
的文档引用,它只是Dialogflow Intent中name
参数的小写版本
这就导致了你的错误。如果您未能发送回复,通常会发生这种情况。无法发送回复的原因有很多,其中最常见的两个是
- 您没有调用
或conv.ask()
conv.close()
- 您正在执行异步操作(例如调用数据库),而不返回承诺
const term = name.toLowerCase();
如果未定义name
,这可能会导致错误,这意味着它不是Dialogflow Intent中的参数
您可能希望参考以下两篇文章,这两篇文章还探讨了Google Intent实现的调试操作:
${term}
)?我在Firebase集合中没有任何名为“术语”的文档,这在Firebase文档中是如何使用的?请不要在注释中添加代码-这会使理解您的问题变得更加困难。如果您试图澄清您的问题,请继续编辑问题。@我的问题是,我应该在哪里查看错误消息作为标题?我猜${term}应该是问题所在,因为我复制了代码,但并不真正理解这意味着什么。感谢您提供的详细说明。我试图找出一个更好的错误…“对不起,再试一次,告诉我另一种食物。”这是conv.close的错误<代码>名称在Dialogflow中定义,并在Firestore中创建“名称”字段。有什么建议吗?[链接]在Firestore中创建了一个具有相同“名称”的文档后,我终于找到了答案。非常感谢你的帮助,如果有什么我能帮忙的,请随时告诉我,我退休了,有很多时间。