В настоящее время я работаю над чатботом с часто задаваемыми вопросами.Некоторые ответы будут конкретными в зависимости от параметров пользователя, поэтому я решил использовать Webhook, чтобы получить ответ из своей базы данных Firebase.После некоторых исследований я заметил, что Dialogflow работает асинхронно, и мне пришлось использовать Promise, но я все еще не могу сделать ответ динамичным и синхронным.
Вот мой код:
function fetch_data(param)
{
return function(agent)
{
console.log("Fetching informations ...");
var result = database_call();
result.then(function(response)
{
agent.add(response);
});
agent.add("Timeout !")
};
}
function database_call()
{
return new Promise((resolve, reject) => {
var ref = db.ref("test/");
var refTest = ref.child('test');
refTest.on("value", function(snapshot)
{
console.log(snapshot.val());
resolve(snapshot.val());
});
agent.add("[TIMEOUT] Cannot fetch data !")
});
}
Я всегда получаю сообщение: Невозможно получить данные, несмотря на функцию Promise.В моем журнале я замечаю, что данные всегда печатаются через несколько секунд после сообщения «timeout».