Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 在阅读列表的过程中,通过Dialogflow实现请求权限_Firebase_Google Cloud Functions_Webhooks_Dialogflow Es_Dialogflow Es Fulfillment - Fatal编程技术网

Firebase 在阅读列表的过程中,通过Dialogflow实现请求权限

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

我正在创建一个代理,它可以从Firebase上的实时数据库中读取数据列表。通过上下文和参数,我可以触发webhook并获得所需的数据

但由于结果是一个列表,输出文本太长,无法一次说出所有数据,因此我希望每次从列表中返回一个子项,并询问用户是否要阅读下一节?。如果用户说是,我将继续阅读,直到结束。如果用户说不,我将触发一个事件

对于循环,我使用以下方法:

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中执行此操作。