首页 文章

通过阅读列表之间的Dialogflow-fulfillment请求权限

提问于
浏览
0

我正在创建一个代理,可以从数据库(Firebase上的实时数据库)读取数据列表 . 通过上下文和参数,我可以触发webhook并获取我想要的数据 .

但是因为结果是List,输出文本将太长而无法一次性说出所有数据,所以我想每次从列表中返回一个孩子并询问用户“你想阅读下一节吗?” . 如果用户说“是”,我会继续阅读,直到结束 . 如果用户说“不”,我将触发一个事件 .

对于循环我使用这个:

ref.once('value', function(snapshot) {
   snapshot.forEach(function(childSnapshot) {
   var childKey = childSnapshot.key;
   var childData = childSnapshot.val();
   // ...
  });
});

https://firebase.google.com/docs/database/web/lists-of-data#listen_for_value_events

但是这会将列表中的所有数据都放在一个 . 如何输出一个数据并询问用户是否允许,然后继续列表中的下一个数据?我的查询是如何在读取列表之间通过Dialogflow-fulfillment请求权限,然后根据用户给出的响应继续列表?如有任何澄清,请写信 .

1 回答

  • 1

    你必须使用orderByValue()/ orderByChild(),limitToFirst()和startAt()方法的组合来限制返回给你的记录数 .

    orderByValue()/ orderByChild()将需要一个属性/子节点,用于定义您希望项目显示的顺序 .

    limitToFirst()将决定您希望在每次调用中获得多少行

    startAt()将需要您正在排序的字段的值,并且每次请求下一组行时都必须更新 .

    你可以阅读更多关于这些方法here

相关问题