Как я могу интегрировать QnA maker для сбора информации о пользователе? - PullRequest
3 голосов
/ 26 апреля 2020

В настоящее время я интегрировал LUIS с моим чат-ботом. Сценарий: -

  1. Пользователь вводит что-то в бот.
  2. Бот логи c вызывает LUIS для определения намерения, и на основе INTENT вызывается соответствующий диалог.
  3. В этом диалоговом окне я собираю информацию о пользователях с помощью диалогового окна водопада через подсказки.

Теперь я хочу, чтобы после шага 2 в вышеприведенном сценарии, в зависимости от INTENT, возвращенного из LUIS, я хотел, чтобы последующие вопросы были представлены из QnA, а не из BOT. По сути, я хочу заменить ступени водопада на QnA Maker. Это нормально, или это выполнимо?

Поток похож на описанный ниже: - ПОЛЬЗОВАТЕЛЬ: -Создайте задачу

- >>>> Намерение, возвращенное из LUIS

- >>>> Вызов QnA на основе возвращенного значения INTENT

QnA: -В каком проекте вы хотите создать задачу?

USER: - (предоставляет имя проекта)

QnA: - Какое описание задачи?

USER: - (предоставляет описание)

Ответы [ 2 ]

2 голосов
/ 29 апреля 2020

обращаясь к этой части - Я хочу заменить ступени водопада на QnA maker. Это нормально, или это возможно?

Ответ - нет. QnA - это сочетание вашей базы знаний с сервисом поисковой системы. он динамически подбирает ответы на заданные вами вопросы.

Теперь перейдем к предложению решения вашего основного вопроса. (это то, что я делаю уже в своем коде)

Вы можете перехватить коллекцию информации о пользователе, прежде чем она даже отправится производителю qna в вашем коде. Вы можете создавать запросы специально для информации о пользователе, и если ваш поток определяет, что это информация о пользователе, вы переходите в свою систему сбора информации о пользователе (и таким образом предотвращаете запуск qna).

Когда это не так пользовательскую информацию (или что-то, что вы не хотите записывать) вы позволяете управлять потоком по умолчанию qna maker.

        var tempInputText = activity.Text;
        if(tempInputText.Contains("batman") == true)
        {
            var tempActivityBatman = new Activity();
            tempActivityBatman.Text = "did you just ask about batman, " + userProfile.Name + "?";
            tempActivityBatman.Type = "message";
            //await stepContext.Context.SendActivityAsync(_templateEngine.GenerateActivityForLocale("UnsupportedMessage", userProfile));
            await stepContext.Context.SendActivityAsync(tempActivityBatman,cancellationToken);
            return await stepContext.NextAsync();
        }

Приведенный выше пример кода представляет собой быстрый грязный код, который я использовал для навигации по конкретным c словам, которые я хотел, чтобы чат отвлекал от обычного кода.

2 голосов
/ 29 апреля 2020

QnA Maker против LUIS

, когда использовать QnA Maker против LUIS. По сути, QnA Maker - это служба поиска, а LUIS - служба понимания запросов.

· Использование QnA Maker: если у вас большой массив данных, откуда вам нужно ответить с помощью stati c содержимого.

· Используйте LUIS: если вы хотите иметь возможность инициировать задачу или рабочий процесс в зависимости от цели запроса. enter image description here

QnA Maker и LUIS могут использоваться для дополнения друг друга, но с использованием диспетчеризации верхнего уровня для арбитража между двумя службами. enter image description here

...