У вас есть несколько не связанных между собой вопросов.
Линия
collectionRef.doc(`${term}`);
слишком сложна.Вы можете смело переписать его как
collectionRef.doc(term);
, поскольку обратная кавычка ничего не делает в этом случае.Заключительные кавычки в последних версиях JavaScript делают расширение выражения внутри части ${}
.Таким образом, вычисление выражения
`${term}`
просто оценивает то, чем является term
.Таким образом, результатом этой функции является создание ссылки на документ в Firestore с именем term
, который является просто строчной версией параметра name
из вашего намерения Dialogflow.
Что приводит нас кошибка, которую вы получаете.Обычно это происходит, если вы не можете отправить ответ.Не отправка ответа может произойти по ряду причин, наиболее распространенными из которых являются
- Вы не звонили
conv.ask()
или conv.close()
- Вы выполняете асинхронныйоперация (например, вызов базы данных) без возврата Promise
Однако, в вашем случае, похоже, что вы делаете оба.
Кажется возможным, что ваша функция генерируетошибка до того, как он достигнет вызова базы данных.Наиболее вероятной возможностью в этом случае может быть строка
const term = name.toLowerCase();
, которая может вызвать ошибку, если name
не определено, то есть это не параметр в намерении диалогового потока.
Возможно, вы захотите ознакомиться со следующими двумя статьями, в которых также рассматриваются вопросы отладки действий при выполнении намерений Google: