Botframework, LUIS: есть ли история намерений? - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь создать бота, объединяющего LUIS, целью которого является поиск рецептов и продуктов, но я изо всех сил пытаюсь понять несколько концепций.

Начнем с того, что у меня есть проблема, связанная с ходом разговора. Допустим, пользователь запрашивает рецепт, но не указывает, какие продукты он хотел бы отфильтровать. Бот проверит, есть ли какие-либо объекты (продукты) в этом высказывании, и если нет, он ответит с запросом на конкретные продукты. Так что-то вроде:

Пользователь: «Хочу посмотреть рецепты»

Бот: «Пожалуйста, укажите ингредиенты»

Пользователь: "Бананы"

Здесь я нахожу свою первую проблему. Как бот сможет понять, что последнее высказывание пользователя (бананы) направлено на Рецепт, а не на Продукт?

Чтобы попытаться обойти это, я обучил LUIS указывать этим сущностям идти в Нет Намерение. Я также создал флаг, который позволяет мне определить, какой из последних намерений прошел пользователь. Из этого я могу перенаправить бота в правильное намерение.

Я чувствую, что должно быть лучшее решение, чем это. Я что-то здесь упускаю? Есть ли способ отслеживать историю использованных намерений? Я также пытался использовать context.Wait, но я считаю, что метод не получает (или не возвращает) LuisResult, что делает невозможным позднее обнаружение каких-либо сущностей в сообщении пользователя.

Мой второй вопрос: может ли пользователь отправить сообщение, которое не будет вводить никаких намерений и будет просто направлено на определенный метод?

1 Ответ

0 голосов
/ 10 мая 2018
  [LuisIntent("aa")]
  [LuisIntent("bb")]
 public async Task AaIntentSpecified(IDialogContext context, LuisResult result)
 {


 }
 [LuisIntent("")]
 public async Task IntentNotSpecified(IDialogContext context, LuisResult result)
 {


 }

Если вы оставили метод, подобный этому, в диалоге luis, то все намерения, которые не имеют отображенной функции, перейдут к этой функции. Намерения «aa» и «bb» перейдут к AaaIntentSpecified, любые другие намерения, такие как «cc», «dd» ... перейдут к IntentNotSpecified.

...