我如何使用QnAMaker为同一查询提供随机答案

时间:2018-06-21 15:06:13

标签: botframework microsoft-cognitive qnamaker

我一直在思考,因为机器人有一些通用的问题,例如你好吗?可能我有大约10个答案,我希望问与答制造商不是每次都给出相同的答案就随机选择。

或还有其他类似问题,例如告诉我一个故事

1 个答案:

答案 0 :(得分:3)

  

一些通用问题,例如您好吗?可能我有大约10个答案,我希望问与答制造商不是每次都给出相同的答案就随机选择。

要达到此要求,您可以尝试以下方法:

1)添加一个QnA对并使用特殊字符(例如|)来拆分问题how are you?

的答案

enter image description here

2)覆盖RespondFromQnAMakerResultAsync方法,并在此方法中拆分响应并随机检索答案

protected override async Task RespondFromQnAMakerResultAsync(IDialogContext context, IMessageActivity message, QnAMakerResults result)
{
    // This will only be called if Answers isn't empty

    var response = result.Answers.First().Answer;
    var answersforhowareyou = response.Split('|');

    if (answersforhowareyou.Count() > 1)
    {
        Random rnd = new Random();
        int index = rnd.Next(answersforhowareyou.Count());

        response = answersforhowareyou[index];
    }

    await context.PostAsync(response);
}

测试结果:

enter image description here