Я использую облачную функцию Firebase для выполнения своего действия DialogFlow Google Assistant, но мне нужно получить данные из базы данных Firebase, прежде чем я буду управлять намерением. Вот фрагмент кода:
var userDataRef = sessionDatabaseRef.child(sessionId);
userDataRef.once("value").then(function(data) {
console.log(data.val());
handleIntentAndProcessResponse();
}).catch(function(){
console.log("No data yet for this session");
handleIntentAndProcessResponse();
});
В функции, называемой handleIntentAndProcessResponse
, логика намерения возвращает ответ, устанавливая материал conv.ask(new SimpleResponse(blah))
. Когда я тестирую это, он терпит неудачу, и журнал облачных функций дает мне эту ошибку:
Ошибка: ответ не задан. Используется ли это в асинхронном вызове, который не был возвращен как обещание обработчику намерений?
Итак, как я могу обработать этот асинхронный вызов базы данных Firebase, чтобы он ждал ответа? Мне нужно использовать данные, которые он возвращает, когда обрабатываю намерение.