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

Botframework 如何使用QnAMaker为同一查询提供随机答案,botframework,microsoft-cognitive,qnamaker,Botframework,Microsoft Cognitive,Qnamaker,我在想,机器人有一些一般性的问题,比如你怎么样?可能我有大约10个答案,我希望问答制作人随机选择,而不是每次都选择相同的答案 或者是像告诉我一个故事这样的问题 一些一般性的问题,比如你好吗?可能我有大约10个答案,我希望问答制作人随机选择,而不是每次都选择相同的答案 要实现此要求,您可以尝试以下方法: 1) 添加一对QnA,并使用特殊字符(如|)拆分问题你好吗? 2) 重写RespondFromQnAMakerResultAsync方法,并在此方法中随机拆分响应和检索答案 protected

我在想,机器人有一些一般性的问题,比如你怎么样?可能我有大约10个答案,我希望问答制作人随机选择,而不是每次都选择相同的答案

或者是像告诉我一个故事这样的问题

一些一般性的问题,比如你好吗?可能我有大约10个答案,我希望问答制作人随机选择,而不是每次都选择相同的答案

要实现此要求,您可以尝试以下方法:

1) 添加一对QnA,并使用特殊字符(如
|
)拆分问题
你好吗?

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);
}
测试结果:


感谢您提出这一定制解决方案的想法