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

QnA Bot无匹配答案时转发问题至Microsoft Teams的实现咨询

C#实现Q&A Bot无匹配问题转发Microsoft Teams的方案

1. 前置校验

  • 确认Teams Bot已添加到目标频道,且已授予ChannelMessage.Send等必要权限
  • 提前记录Teams Bot的Microsoft App ID、Microsoft App Password,以及目标频道对应的团队ID、频道ID
  • 你的Q&A Bot项目提前安装对应NuGet包:Microsoft.Bot.Connector.Teams、Microsoft.Bot.Schema.Teams

2. 核心代码实现

2.1 无匹配回答的触发判断

在原有Q&A Maker调用逻辑中增加置信度判断,触发转发逻辑:

// 调用已有的Q&A Maker查询逻辑
var qnaResults = await _qnaService.GetAnswersAsync(turnContext);
// 置信度阈值可根据业务需求调整,示例设为0.5
if (!qnaResults.Any() || qnaResults.First().Score < 0.5)
{
    var userQuestion = turnContext.Activity.Text;
    // 触发转发到Teams的逻辑
    await ForwardQuestionToTeamsAsync(turnContext, userQuestion);
    await turnContext.SendActivityAsync("您的问题已转交相关工作人员处理,将尽快给您回复。");
    return;
}
// 原有有匹配答案的应答逻辑
await turnContext.SendActivityAsync(qnaResults.First().Answer);

2.2 转发问题到Teams的方法实现

private async Task ForwardQuestionToTeamsAsync(ITurnContext turnContext, string userQuestion)
{
    // 替换为你的实际配置参数
    const string TeamsBotAppId = "你的Teams Bot应用ID";
    const string TeamsBotAppPassword = "你的Teams Bot应用密码";
    const string TargetTeamId = "目标团队ID";
    const string TargetChannelId = "目标频道ID";
    // 国内区域Teams服务地址为https://smba.trafficmanager.net/cn/,海外可根据实际区域替换
    const string TeamsServiceUrl = "https://smba.trafficmanager.net/cn/";

    // 初始化Teams连接器客户端
    MicrosoftAppCredentials.TrustServiceUrl(TeamsServiceUrl);
    var connectorClient = new ConnectorClient(new Uri(TeamsServiceUrl), TeamsBotAppId, TeamsBotAppPassword);

    // 构造带上下文的消息,方便后续回复关联原用户
    var userConversationId = turnContext.Activity.Conversation.Id;
    var notifyMessage = Activity.CreateMessageActivity();
    notifyMessage.Text = $"**待回复用户问题:**\n> {userQuestion}\n\n关联用户对话ID:`{userConversationId}`";

    // 发送到指定Teams频道
    await connectorClient.Conversations.SendToConversationAsync(TargetChannelId, (Activity)notifyMessage);
}

3. 回复同步对接

你已完成Q&A Maker的问答更新逻辑,仅需在Teams Bot的消息接收回调中,提取工作人员的回复内容与对应的用户对话ID,先调用已有的Q&A更新接口同步知识库,再通过原用户会话的上下文将回复推送给网站端用户即可。

注意事项

  • 转发消息时必须携带用户会话的唯一标识,避免后续回复无法匹配到对应的提问用户
  • 可使用自适应卡片替代纯文本消息,支持工作人员直接在卡片中输入回复,无需手动填写会话ID,降低操作成本
  • 需保证Teams Bot的权限配置正确,否则会出现消息发送失败的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 17:24:03