Есть ли способ для производителя LUIS / QnA игнорировать ответ пользователя, когда он приходит из приглашения выбора? - PullRequest
0 голосов
/ 10 апреля 2019

LUIS / QNA продолжает вызывать намерения, связанные с вариантами выбора, в подсказке выбора.

У меня вопрос, есть ли способ для LUIS / QNA игнорировать вводимые пользователем данные из запроса выбора? или для выбора быстрый ответ не будет отображаться как пользовательский ввод, поэтому LUIS / QNA оставит выбор один?

Например, в этом приглашении выбора. Это не будет достигнуто SecondStepAsync, потому что LUIS / QNA определит выбор пользователя как намерение, подобное метке выбора, и сделает что-то еще.

    private static async Task<DialogTurnResult> FirstStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken = default(CancellationToken))
    {
        choices.Add(new Choice { Value = "Choose Red"});
        choices.Add(new Choice { Value = "Choose Green"}});

        return await stepContext.PromptAsync(
            ChoicePromptId,
            new PromptOptions
            {
                Prompt = MessageFactory.Text($"Welcome to FAQ! Choose the number of the question or type your own question."),
                Choices = choices,
            });
    }

    private static async Task<DialogTurnResult> SecondStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken = default(CancellationToken))
    {
        var choiceResult = (stepContext.Result as FoundChoice).Value.ToLower();

        switch (choiceResult)
        {
            case "choose red":
                await stepContext.Context.SendActivityAsync(MessageFactory.Text($"..."));
                break;

            case "choose green":
                await stepContext.Context.SendActivityAsync(MessageFactory.Text($"..."));
                break;

            default:
                break;
        }

        return await stepContext.NextAsync();
    }

1 Ответ

1 голос
/ 11 апреля 2019

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

Теперь, если вы хотите, чтобы LUIS игнорировал высказывания Choice Prompt, вам придется встроить это в сам метод OnTurnAsync.

Вы можете посмотреть здесь, в этом уроке . На основании ответов, предоставленных пользователем, вы будете использовать соответствующие услуги. Вот так должен выглядеть ваш псевдо-код onTurnAsync

OnTurnAsync ()

Record the utterance
Check what was the active dialog. <Documentation [here][2]>
IF (!choice Dialog)
  call LUIS
else
  /*
    your code here.
  */
...