Я создаю агента DialogFlow с несколькими намерениями, у некоторых конфликтующие переменные, и я изо всех сил стараюсь создать чистый поток разговоров - особенно вокруг области перемещения туда и обратно между намерениями.
Например,Допустим, я поддерживаю предоставление информации о погоде и рейсах, для каждого я построил соответствующее намерение.Рассмотрим следующий диалог:
- Пользователь: я хочу забронировать рейс на сегодня.
- Агент: Куда?
- Пользователь: Какая погода в Риме?
- Агент: В Риме 21 ° C.
- Пользователь: Значит, в Риме.
На данном этапе я хотел бы совершить полетбыть распознанным и получить «Рим» в качестве параметра, в дополнение к ранее сохраненному параметру «сегодня». Однако я не могу сказать, будет ли система определять полет или прогноз погоды, поскольку предложение может применяться к обоим - в зависимости отв контексте.
Мне удалось получить желаемое поведение, определив основные и 2 контекстно-зависимых параметра для каждого объекта диалога (т. е. полет с полетом в качестве выходного контекста, время полета с полетом в качестве входного и выходного контекстапункт назначения полета с полетом в качестве входного и выходного контекста и то же самое для погоды), установив продолжительность жизни 1 для каждого контекста и восстановив его в коде, как только другое намерение будет завершено - чтобы сохранитьУже заполненные слоты, а также для поддержки таких фраз, как «Рим» и понимание их контекстуальны.Я также подумал о динамическом изменении приоритета намерений, но пока не уверен, возможно ли это.
При этом мне кажется, что это то, что я должен получить из коробки, из инфраструктуры.Я имею в виду определение приоритетов в стеке, чтобы последний невыполненный контекст намерения получал наивысший приоритет.Кто-нибудь из вас сталкивался с такими проблемами?Я упускаю некоторые ключевые функции, которые могут помочь мне добиться такого поведения более естественно?Может быть, способ помешать идентификации намерения?