我想更改Q&A Maker Azure Framework Bot中的默认答案,但我找不到响应此值的字段。我读了文档(在我看来,它没有更新),并尝试找到此字段但有结果。在附件中,我发送了一个应根据文档显示的屏幕。
答案 0 :(得分:1)
创建Azure Web Bot时,默认的Web Chat客户端之一是Microsoft BotBuilder-Samples项目(特别是49 - QnAMaker All Features
的分支) Dialog/QnAMakerBaseDialog.cs
的源代码定义了常量DefaultNoAnswer
:
public const string DefaultNoAnswer = "No QnAMaker answers found.";
然后从GetQnAResponseOptionsAsync
返回响应时使用该值:
protected async override Task<QnADialogResponseOptions> GetQnAResponseOptionsAsync(DialogContext dc)
{
var noAnswer = (Activity)Activity.CreateMessageActivity();
noAnswer.Text = DefaultNoAnswer; // <- used right here
var cardNoMatchResponse = (Activity)MessageFactory.Text(DefaultCardNoMatchResponse);
var responseOptions = new QnADialogResponseOptions
{
ActiveLearningCardTitle = DefaultCardTitle,
CardNoMatchText = DefaultCardNoMatchText,
NoAnswer = noAnswer,
CardNoMatchResponse = cardNoMatchResponse,
};
return responseOptions;
}
这个特定的示例存储库似乎在任何地方都没有利用DefaultAnswer
配置键。
您可以选择通过以下方式更新noAnswer.Text
来添加它:
- noAnswer.Text = DefaultNoAnswer;
+ noAnswer.Text = this._configuration["DefaultAnswer"] ?? DefaultNoAnswer;
您还必须通过依赖关系管理系统传递配置对象。有关完整示例,请参见this commit。
答案 1 :(得分:1)
如下更改qamakerBaseDialog.js中的行
var noAnswer = ActivityFactory.DefaultNoAnswer;
删除ActivityFactory。并重建代码。
constructor(knowledgebaseId, authkey, host) {
//ActivityFactory.
var noAnswer = DefaultNoAnswer;
var filters = [];
super(knowledgebaseId, authkey, host, noAnswer, DefaultThreshold, DefaultCardTitle, DefaultCardNoMatchText,
DefaultTopN, ActivityFactory.cardNoMatchResponse, filters, QNAMAKER_BASE_DIALOG);
this.id = QNAMAKER_BASE_DIALOG;
}
答案 2 :(得分:0)
我假设您是指以下文档:QnaMaker - Change Default Answer。
它们有点混乱,但是它们的关键部分是:
您可以在漫游器或应用程序代码中覆盖该默认响应 呼叫端点。
文档中的图片如下:
它们的实际含义是在QnAMaker测试控制台中,您可以从“应用程序设置”中编辑默认答案。确保保存,训练和发布您的应用,否则设置可能不会显示。
您还可以使用一种方法将此设置用于机器人中的默认答案:
在Node / JS中,您的漫游器完全不会收到该DefaultAnswer
。如果没有匹配项,它什么也不会收到,因此您必须使用类似以下内容的硬编码:
const qnaResults = await this.qnaMaker.getAnswers(context);
// If an answer was received from QnA Maker, send the answer back to the user.
if (qnaResults[0]) {
await context.sendActivity(qnaResults[0].answer);
// If no answers were returned from QnA Maker, show this reply.
// Note: .getAnswers() does NOT return the default answer from the App Service's Application Settings
} else {
const defaultAnswer = 'No QnA Maker answers were found. This example uses a QnA Maker Knowledge Base that focuses on smart light bulbs. To see QnA Maker in action, ask the bot questions like "Why won\'t it turn on?" or "I need help."'
await context.sendActivity(defaultAnswer);
}