Спросите разрешение через 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() понадобится значение поля, которое вы сортируете, и оно должно обновляться каждый раз, когда вы запрашиваете следующую группу строк.
Вы можете прочитать больше об этих методах здесь