Вы должны быть в состоянии достичь этого или чего-то подобного, используя намерения и сущности. Насколько это может быть успешным, зависит от того, сколько и насколько разнообразными должны быть ваши запросы. Сначала давайте начнем с фразы, которую вы упомянули: «Сколько пива было выпито на Октоберфесте 2018 года». Вы можете легко (как вы сделали) добавить это как высказывание для намерения, GetAmountOfBeer
. Хотя я являюсь поклонником имен намерений, которые вы можете прочитать как «Я хочу GetAmountOfBeer
», здесь вы можете назвать намерение amountOfBeer
, чтобы вы могли использовать его в своем запросе напрямую.
Далее вам нужно настроить свои сущности. Для года (или, скорее, для даты и времени) это должно быть легко, так как я считаю, что для этого есть несколько предопределенных сущностей. Я думаю, что вам нужно использовать распознаватель даты и времени, чтобы разобрать правильный атрибут (например, год), но я не пытался сделать это раньше. Далее, Октоберфест, кажется, является специфическим c праздником или событием в вашей БД, поэтому вы можете создать список объектов из всех ваших событий.
То, что у вас осталось, это что-то вроде (псевдокод) GET topIntent
ОТ eventEntity
ГДЕ Год == datetime.Year
, или что-то в этом роде.
Если ваш набор запросов более сложный, вам может потребоваться несколько операторов GET, но вы можете поместить их в Переключите оператор по topIntent, чтобы независимо от цели вы могли разобрать правильные значения. Вы также можете захотеть встроить это в диалоговое окно, в котором вы можете проверить, существуют ли объекты, а если нет, вы можете запросить у пользователя отсутствующие данные.