Задержка webhook не всегда связана с вызовом базы данных - она включает время, которое может потребоваться для запуска самого webhook. Если вы используете облачные функции Firebase или встроенный редактор кода Dialogflow (который использует облачные функции Google), для запуска функции требуется время «холодного запуска». Если ваш webhook работает где-то еще, например, на AWS Lambda, у вас может быть задержка в сети в дополнение к времени холодного запуска.
С этим очень мало что можно сделать. Если вы работаете с одним из решений Google для облачных функций, убедитесь, что вы используете его в регионе Central-1, который близок к тому, где работает Dialogflow. Чтобы полностью избежать холодного запуска - запустите сервер.
Обычно, однако, время задержки и холодного запуска не должно быть таким длительным. Что говорит о том, что ваш код также требует времени для запуска. Вы можете sh просмотреть ваши журналы, чтобы понять, почему время выполнения занимает так много времени - вызов RTDB Firebase может быть частью этого, но могут быть и другие вещи, вызывающие замедление, которое вы не показываете в своем code.
Одна вещь, которую вы делаете при вызове Firebase, - это извлечение всей записи, а не просто включение одного поля, которое запрашивает пользователь. Это требует больше данных для маршалинга, что занимает больше времени. (Это занимает намного больше времени? Вероятно, нет. Но количество миллисекунд.)
Если вам просто нужно одно поле из записи, которую запросил пользователь, вы можете получить ссылку на самого ребенка, а затем сделайте запрос по этой ссылке. Это может выглядеть так:
const servizi = agent.parameters.elencoServiziEntity;
return admin.database()
.ref("serviceAccount")
.child(servizi)
.once("value")
.then((snapshot) => {
const accountName = snapshot.val();
agent.add(`L'Account Manager del Servizio ${servizi} si chiama: ${accountName}`);
console.log(`${servizi}`);
});