Если вы уже создали различные обучающие фразы, то недопустимые фразы обычно будут вызывать отступление. Если вы просто используете @sys.any
в качестве типа параметра, то он заполнит его чем угодно, поэтому вам следует определить более узкие типы сущностей.
В приведенном вами примере «Намерение» у вас есть несколько обучающих фраз, но Dialogflow использует эти обучающие фразы как руководство , а не как абсолютные строки, которые должны совпадать. Из того, что вы натренировали, выясняется, что такие фразы, как «Я хочу. + Пицца», должны быть сопоставлены, чтобы модель NLU могла прочитать это таким образом.
Чтобы сузить именно то, что вы ищете, вы можете создать тип сущности для обработки вкусов пиццы. Это поможет сузить то, как модель NLU будет интерпретировать то, что скажет пользователь. Кроме того, вам будет проще понять, какой тип пиццы они запрашивают, поскольку вы можете проверить только параметры, и вам больше не придется анализировать всю строку.
То, как вы справитесь с этим в отступлении, зависит от того, как работает остальная часть вашей системы. Самое простое - использовать веб-крючок Fulfillment, чтобы определить, в каком состоянии вы находитесь, и либо повторить вопрос, либо предоставить дополнительные указания.
Помните также, что разговор может идти примерно так:
Бот говорит: Привет, что ты хочешь?
Пользователь говорит: я хочу грибную пиццу.
Они пропустили один из ваших вопросов (который в этом случае не был необходим). Это нормально для диалогового интерфейса, поэтому вы должны быть готовы к этому.