Изменение ответа на основе пользовательского ввода может быть довольно сложной задачей, если вы используете только интерфейс Dialogflow. Самый простой способ ответить с набором вопросов, основанный на вводе пользователя, - это использовать выполнение .
выполнение
При выполнении вы можете использовать код для обнаружения определенных ключевых слов или свойств в вводимых пользователем данных. В вашем случае, если вы еще не используете его, было бы полезно создать собственный объект для каждой технологии (Angular, node, et c). Если вы сделаете это, вам не нужно просматривать вводимые пользователем данные для c слов.
Чтобы иметь возможность обнаруживать сущности с помощью кода, вам необходимо настроить свое намерение для работы с вашей сущностью, используя параметры . Как только это будет настроено, вы можете начать обнаруживать технологию, которую сказал пользователь, и соответствующим образом реагировать с помощью кода. Простым примером этого может быть:
app.intent("Technology Intent", (conv) => {
const technology = conv.parameters.technology <-- Name is the same as the parameter in Dialogflow
switch(technology) {
case "Node":
conv.ask(askANodeQuestion())
break;
case "Angular":
conv.ask(askAAngularQuestion())
break;
});
Используя эту настройку, вы сможете задать разные вопросы для каждой технологии и запускать их, используя значение параметра.
Веб-интерфейс Dialogflow
Хотя я не рекомендую этот подход, можно было бы настроить диалог, который запускает вопрос на основе ввода пользователя через пользовательский интерфейс Dialogflow. Вы можете настроить намерение, в котором вы спрашиваете пользователя, о какой технологии он хочет спросить, и после этого вы создаете последующее намерение для каждой технологии и оттуда начинаете строить свои вопросы.
Эта настройка полезна для вас, если вы не хотите использовать какой-либо код в своем боте, но она делает настройку в Dialogflow довольно сложной и более сложной в обслуживании. Так что, если вы собираетесь приобрести бота, который будет sh использовать в долгосрочной перспективе или расширить его в будущем, я действительно рекомендую подход выполнения с context .