当来自选择提示时,LUIS / QnA制造商是否可以忽略用户的回答?

时间:2019-04-10 09:23:37

标签: c# botframework luis qnamaker

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 个答案:

答案 0 :(得分:1)

LUIS是一项独立的服务,仅接受输入(即话语)并还原为输出(即意图)。

现在,如果您希望LUIS忽略“选择提示”话语,那么您将在OnTurnAsync方法本身中构建它。

您可以看看here in this tutorial。根据用户给出的响应,您将使用适当的服务。这就是您的onTurnAsync伪代码应为的样子

  

OnTurnAsync()

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