Спросите разрешение через Dialogflow-выполнение между чтением списка

Я создаю агент, который может читать список данных из базы данных (База данных в реальном времени на Firebase). С помощью контекста и параметров я могу запустить веб-крючок и получить нужные данные.

Но поскольку в результате получается список, выходной текст будет слишком длинным, чтобы произносить все данные за один раз, поэтому я хочу каждый раз возвращать одного дочернего элемента из списка и спрашивать пользователя "Хотите ли вы прочитать следующий раздел?", Если пользователь скажет "Да", я продолжу читать также до конца. И если пользователь скажет "Нет", я вызову событие.

Для цикла я использую это:

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)

Но это дает все данные из списка в одном. Как вывести одни данные и запросить разрешение у пользователя, а затем перейти к следующим данным в списке? Мой вопрос: как мне запросить разрешение через Dialogflow-выполнение между чтением списка и затем продолжить со списком в соответствии с ответом, данным пользователем? Пожалуйста, пишите для любых разъяснений.

1 ответ

Вы должны использовать комбинацию методов orderByValue()/orderByChild(), limitToFirst() и startAt(), чтобы ограничить количество возвращаемых вам записей.

Для orderByValue () / orderByChild () потребуется свойство / потомок, определяющее порядок, в котором вы хотите, чтобы элементы отображались.

limitToFirst () определит, сколько строк вы ожидаете получить при каждом вызове

Для startAt() понадобится значение поля, которое вы сортируете, и оно должно обновляться каждый раз, когда вы запрашиваете следующую группу строк.

Вы можете прочитать больше об этих методах здесь

Другие вопросы по тегам