Я создаю бот диалогового потока, для выполнения бота я использую сервер узлов (в облачных функциях Google) для получения данных через функцию, возвращающую обещание
Я попытался добавить agent.setFollowupEvent('ExtendTimeOut');
, потому что я прочитал здесь , что это увеличит тайм-аут (на 5 секунд)
но я не знаю, где его поставить, и, похоже, он не работает.
В настоящее время я использую db.collection("details").where("keywords", "array-contains", keyword)
для извлечения данных из Firestore
Структура БД:
users
|__> userID
|__> user properties
|__> [Array of keywords (ex. fifa, gta, etc)]
Функция выполнения Dialogflow:
function GetUserDetails(agent) {
var keyword = agent.parameters.any //keyword to search for
return new Promise( function( resolve, reject ){
db.collection("details").where("keywords", "array-contains", keyword)
.get()
.then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
console.log("Contact data:", doc.data());
agent.add("these are the user details for " + doc.data()["name"]));
agent.add(doc.data()["username"]);
agent.add(doc.data()["useremail"]);
});
resolve()
})
.catch(function(error) {
reject( error );
console.log("Error getting documents: ", error);
});
});
}
let intentMap = new Map();
intentMap.set('GetUserDetails', GetUserDetails);;
agent.handleRequest(intentMap);
Кто-нибудь знает, как ускорить получение данных или продлить этот тайм-аут?