Firebase 在阅读列表的过程中,通过Dialogflow实现请求权限
我正在创建一个代理,它可以从Firebase上的实时数据库中读取数据列表。通过上下文和参数,我可以触发webhook并获得所需的数据 但由于结果是一个列表,输出文本太长,无法一次说出所有数据,因此我希望每次从列表中返回一个子项,并询问用户是否要阅读下一节?。如果用户说是,我将继续阅读,直到结束。如果用户说不,我将触发一个事件 对于循环,我使用以下方法:Firebase 在阅读列表的过程中,通过Dialogflow实现请求权限,firebase,google-cloud-functions,webhooks,dialogflow-es,dialogflow-es-fulfillment,Firebase,Google Cloud Functions,Webhooks,Dialogflow Es,Dialogflow Es Fulfillment,我正在创建一个代理,它可以从Firebase上的实时数据库中读取数据列表。通过上下文和参数,我可以触发webhook并获得所需的数据 但由于结果是一个列表,输出文本太长,无法一次说出所有数据,因此我希望每次从列表中返回一个子项,并询问用户是否要阅读下一节?。如果用户说是,我将继续阅读,直到结束。如果用户说不,我将触发一个事件 对于循环,我使用以下方法: ref.once('value', function(snapshot) { snapshot.forEach(function(chil
ref.once('value', function(snapshot) {
snapshot.forEach(function(childSnapshot) {
var childKey = childSnapshot.key;
var childData = childSnapshot.val();
// ...
});
});
但这将一次性提供列表中的所有数据。如何输出一个数据并向用户请求权限,然后继续处理列表中的下一个数据?我的问题是,在阅读列表的过程中,如何通过Dialogflow fulfillment请求权限,然后根据用户给出的响应继续列表?请写信澄清。您必须使用orderByValue/orderByChild、limitToFirst和startAt方法的组合来限制返回给您的记录数 orderByValue/orderByChild将需要一个属性/子级来定义您希望项目显示的顺序 limitToFirst将决定您希望在每个调用中获得多少行 startAt需要您正在排序的字段的值,并且每次请求下一组行时都必须更新
您可以阅读有关这些方法的更多信息您可以显示检索到的第一个项目,然后添加conv.ask,以了解他是否希望继续查看完整列表,并添加后续意图,以显示之前检索到的项目列表。conv.ask不起作用什么意思conv.ask不起作用?@囚犯,无论何时何地,我将conv.ask放在函数exports.dialogflowFirebaseFulfillment=functions.https.onRequestrequest,response=>{}下,dialogflow不符合函数实现。这里是index.js的链接:这听起来像是一个不同的问题,我建议你作为一个新的SO问题来问,包括当你尝试时会发生什么以及你意图的屏幕截图。关于这个问题的更多信息,请参见下面的答案。它是否与AdminSDK有关?实际上,我正试图通过Dialogflow的实现来实现这一点。您能告诉我这是如何实现的吗?是的,这是使用Firebase Admin SDK,您可以在实现webhook中执行此操作。