You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QnA Maker:如何统计会话内特定答复次数并切换默认无答案回复

QnA Maker 无答案次数统计实现方案

实现思路

通过会话级别的状态存储累计DefaultNoAnswer的触发次数,根据次数动态返回对应无答案话术。

具体步骤

  • 新增状态字段
    在对话状态配置中新增noAnswerTriggerCount字段,初始值为0,和当前会话绑定存储。
  • 修改结果判断逻辑
    找到QnAMakerBaseDialog中调用GetAnswersAsync获取QnA结果的代码分支:
    1. 当QnA返回有效答案时,将noAnswerTriggerCount重置为0
    2. 当命中DefaultNoAnswer时,将noAnswerTriggerCount数值加1
  • 动态返回话术
    根据累计计数返回不同内容:
    1. 计数小于3时,返回默认无答案提示:抱歉,请您换一种表述方式提问可以吗?
    2. 计数大于等于3时,返回升级提示:抱歉,我无法理解您的问题,您可以发送邮件获取详细信息。

核心代码示例

// 读取当前会话的无答案触发计数
var noAnswerCount = await DialogStateAccessor.GetAsync(stepContext.Context, () => 0);
var qnaResults = await QnAMakerService.GetAnswersAsync(stepContext.Context);

if (qnaResults.Length > 0 && qnaResults[0].Score >= MinimumScoreThreshold)
{
    // 命中有效答案,重置计数
    noAnswerCount = 0;
    await stepContext.Context.SendActivityAsync(qnaResults[0].Answer);
}
else
{
    // 命中无答案,计数累加
    noAnswerCount++;
    var replyText = noAnswerCount < 3 ? 
        "抱歉,请您换一种表述方式提问可以吗?" : 
        "抱歉,我无法理解您的问题,您可以发送邮件获取详细信息。";
    await stepContext.Context.SendActivityAsync(replyText);
}

// 存储更新后的计数到会话状态
await DialogStateAccessor.SetAsync(stepContext.Context, noAnswerCount);

内容的提问来源于stack exchange,提问作者mordeby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 03:06:03