QnA Maker:如何计算会话中的特定答案?
QnA Maker: How to count a specific answer in a session?
我有 QnA Maker 聊天机器人。我想这样做:如果机器人在一次会话中给出 DefaultNoAnswer
3 次,我想显示不同的 DefaultNoAnswer
。如何计算 QnAMakerBaseDialog
中的 DefaultNoAnswers
?
例如:
客户:asdaaasd
Bot:抱歉,你能用不同的方式表达你的问题吗?
客户:dsjhdsgjdsa
Bot:抱歉,你能用不同的方式表达你的问题吗?
客户:aasdjhajds
机器人:抱歉,我无法回答这个问题。发送电子邮件以获取详细信息。
我发现处理此问题的最佳方法是使用对话状态变量。我在帮助程序中设置了默认消息(即我有一个帮助程序文件,可以调用 QnA Maker,检查置信度,并在置信度低或无人接听的情况下发送默认消息)。如果您使用的是类似的情况,则可以在那里增加状态变量。如果您直接使用 QnA Maker 的默认答案,您仍然需要在将响应发送给用户之前对每个结果进行一些检查。我没有使用过那个方法,但我可能只是检查默认答案的结果并相应地增加变量。
这是第一种情况的示例。我在这里假设您已经熟悉管理用户和对话状态。
var qnaResult = await QnAServiceHelper.queryQnaService(query, oldState);
if (qnaResult[0].score > MINIMUM_SCORE) {
const conversationData = await this.dialogState.get(step.context, {});
conversationData.defaultAnswerCounter = 0;
await this.conversationState.saveChanges(step.context);
var outputActivity = MessageFactory.text(qnaResult[0].answer);
} else {
const conversationData = await this.dialogState.get(step.context, {});
conversationData.defaultAnswerCounter += 1;
if (conversationData.defaultAnswerCounter <= 2) {
var outputActivity = defaultAnswer;
} else {
var outputActivity = escalationAnswer;
}
await this.conversationState.saveChanges(step.context);
}
我有 QnA Maker 聊天机器人。我想这样做:如果机器人在一次会话中给出 DefaultNoAnswer
3 次,我想显示不同的 DefaultNoAnswer
。如何计算 QnAMakerBaseDialog
中的 DefaultNoAnswers
?
例如: 客户:asdaaasd
Bot:抱歉,你能用不同的方式表达你的问题吗?
客户:dsjhdsgjdsa
Bot:抱歉,你能用不同的方式表达你的问题吗?
客户:aasdjhajds
机器人:抱歉,我无法回答这个问题。发送电子邮件以获取详细信息。
我发现处理此问题的最佳方法是使用对话状态变量。我在帮助程序中设置了默认消息(即我有一个帮助程序文件,可以调用 QnA Maker,检查置信度,并在置信度低或无人接听的情况下发送默认消息)。如果您使用的是类似的情况,则可以在那里增加状态变量。如果您直接使用 QnA Maker 的默认答案,您仍然需要在将响应发送给用户之前对每个结果进行一些检查。我没有使用过那个方法,但我可能只是检查默认答案的结果并相应地增加变量。
这是第一种情况的示例。我在这里假设您已经熟悉管理用户和对话状态。
var qnaResult = await QnAServiceHelper.queryQnaService(query, oldState);
if (qnaResult[0].score > MINIMUM_SCORE) {
const conversationData = await this.dialogState.get(step.context, {});
conversationData.defaultAnswerCounter = 0;
await this.conversationState.saveChanges(step.context);
var outputActivity = MessageFactory.text(qnaResult[0].answer);
} else {
const conversationData = await this.dialogState.get(step.context, {});
conversationData.defaultAnswerCounter += 1;
if (conversationData.defaultAnswerCounter <= 2) {
var outputActivity = defaultAnswer;
} else {
var outputActivity = escalationAnswer;
}
await this.conversationState.saveChanges(step.context);
}