Несколько замечаний, которые могут помочь:
Использовать объекты сеанса
Поскольку вы загружаете категории и меню динамически, вы также можете задавать объекты для них динамически. Для этого вы будете использовать API Dialogflow для создания Сеансовых сущностей , которые изменяют определенную вами сущность. Затем вы можете тренировать свое намерение с помощью фраз, которые используют эту сущность, но вы будете динамически изменять сущность, когда они начнут разговор.
Не использовать дополнительные материалы
Followup Intents полезны в очень ограниченных обстоятельствах. Как только вы начинаете создавать цепочку Followup Intents, это, как правило, признак того, что вы пытаетесь заставить разговор идти определенным образом, и тогда вы столкнетесь с проблемами, которые возникают у вас, когда разговор должен принять небольшой оборот.
Вместо этого продолжайте и используйте Intents верхнего уровня для всего, что вы пытаетесь сделать.
«Но,« я слышу, вы спрашиваете: «Как мне тогда убедиться, что я обработал выбор категории до выбора меню?»
Ну, сделать это можно ...
Использовать контексты
Вы были на правильном пути, когда сказали, что соответствует контексту вывода. Вы можете не только сопоставить , но и идти вперед и контролировать , какие контексты установлены в вашем веб-крюке. Таким образом, вы можете использовать входные контексты, чтобы сузить, какое намерение сопоставляется в любом состоянии вашего разговора, но только установить выходной контекст в вашем выполнении веб-крючка, чтобы определить, какие контексты действительны на любом этапе разговора. Вы можете очистить контексты, которые больше не действительны, установив их продолжительность жизни равной 0.
Так по этой схеме:
- Когда вы сообщаете им категории, задайте контекст «waitCategory».
- Назначение «выбранная категория» требует наличия входного контекста «waitCategory».
- В обработчике для этого контекста
- Вы скажете им меню
- Установка контекста «continueMenu»
- Очистить контекст «continueCategory»
Прежде всего, помните ...
Содержимое представляет то, что пользователь говорит , а не как вы реагируете на то, что они говорят.