Я пишу простое действие Google, которое будет читать базу данных Firebase Realtime и возвращать результат в ответе.Моя проблема в том, что результат запроса передается обратно в ответ на DialogFlow только после как минимум 2 попыток.Под снимками экрана, показывающими конечный результат в Simulator Первый снимок экрана Первая строка ответа возвращается из Облачной функции и содержит значения, переданные с помощью "Контекст".В этом ответе нет второй строки.
ниже экрана, показывающего результат после отправки точно такого же запроса во второй раз. Второй скриншот запроса Первая строка такая же, как и ранее, но на этот раз я также получаю вторую строку, содержащую данные результата запроса.
Похоже, мой код "работает" (яполучить правильные данные из базы данных), но по какой-то причине это работает, только если я запускаю его как минимум 2 раза подряд.
Ниже приведен фрагмент кода, который обрабатывает этот запрос:
function googleAssistantHandler(agent) {
let conv = agent.conv();
let outCommandContext = agent.getContext('outcommand');
let outCharacterContext = agent.getContext('outcharacter');
let character = outCharacterContext.parameters.character;
let command = outCommandContext.parameters.command;
agent.add('<prosody rate="140%" pitch="0.4">' + character +' '+ command +'</prosody>');
var movesRef = admin.database().ref('characters/'+character.toLowerCase()+'/moves/');
movesRef.limitToFirst(1).orderByChild("notation")
.equalTo(command.toString()).on("child_added",function(snapshot){
agent.add(`record number is ` + snapshot.key);
});
}
Я попытался использовать один раз () вместо on () (как это было бы более целесообразно в моем случае ..)Мне не нужно слушать изменения в базе данных, я просто хочу получить данные один раз) - но я не смог заставить их работать.
Можете ли вы, ребята, помочь мне понять почему мой запрос возвращает результат только после второго триггера?Спасибо!