Я пытаюсь создать бота, объединяющего LUIS, целью которого является поиск рецептов и продуктов, но я изо всех сил пытаюсь понять несколько концепций.
Начнем с того, что у меня есть проблема, связанная с ходом разговора. Допустим, пользователь запрашивает рецепт, но не указывает, какие продукты он хотел бы отфильтровать. Бот проверит, есть ли какие-либо объекты (продукты) в этом высказывании, и если нет, он ответит с запросом на конкретные продукты. Так что-то вроде:
Пользователь: «Хочу посмотреть рецепты»
Бот: «Пожалуйста, укажите ингредиенты»
Пользователь: "Бананы"
Здесь я нахожу свою первую проблему. Как бот сможет понять, что последнее высказывание пользователя (бананы) направлено на Рецепт, а не на Продукт?
Чтобы попытаться обойти это, я обучил LUIS указывать этим сущностям идти в Нет Намерение. Я также создал флаг, который позволяет мне определить, какой из последних намерений прошел пользователь. Из этого я могу перенаправить бота в правильное намерение.
Я чувствую, что должно быть лучшее решение, чем это. Я что-то здесь упускаю? Есть ли способ отслеживать историю использованных намерений? Я также пытался использовать context.Wait, но я считаю, что метод не получает (или не возвращает) LuisResult, что делает невозможным позднее обнаружение каких-либо сущностей в сообщении пользователя.
Мой второй вопрос: может ли пользователь отправить сообщение, которое не будет вводить никаких намерений и будет просто направлено на определенный метод?