Как я могу перенаправить на намерение, связанное с ключевым словом ввода пользователя в диалоговом потоке - PullRequest
1 голос
/ 06 мая 2020

Я создал агент технологического бота в диалоговом потоке, где я предлагаю пользователю ввести любое название технологии, и он запрашивает подтверждение. Это приведет к подтверждению намерения имени (то же самое с ответом «нет», который не приведет к подтверждению намерения).

При подтверждении вводом «да» я сделал Thanks. Lets begin with #awaiting_name_confirm.language в ответ. например: - если пользователь набирает angular, он предложит подтвердить вопрос. При вводе «да» отобразится Thanks. Lets begin with angular.

Теперь я хочу создать набор вопросов для каждой технологии. Для этого я создал отдельное намерение для angular, node et c.

Как пользовательский ввод (в случае angular) после подтверждения попадет в намерение angular ? Если пользователь вводит узел, он должен нажать на намерение узла и задать вопросы узла и т. Д. c. ? Как мне этого добиться?

1 Ответ

3 голосов
/ 07 мая 2020

Изменение ответа на основе пользовательского ввода может быть довольно сложной задачей, если вы используете только интерфейс 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. Вы можете настроить намерение, в котором вы спрашиваете пользователя, о какой технологии он хочет спросить, и после этого вы создаете последующее намерение для каждой технологии и оттуда начинаете строить свои вопросы.

enter image description here

Эта настройка полезна для вас, если вы не хотите использовать какой-либо код в своем боте, но она делает настройку в Dialogflow довольно сложной и более сложной в обслуживании. Так что, если вы собираетесь приобрести бота, который будет sh использовать в долгосрочной перспективе или расширить его в будущем, я действительно рекомендую подход выполнения с context .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...