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

TypeScript下已支持1v1的Watson Assistant集成Teams机器人如何实现群聊频道应答

频道与群聊场景机器人应答能力落地实现步骤

核心触发规则适配

  • 平台默认逻辑:群聊/频道中,机器人仅接收被用户@提及的消息,普通群成员闲聊消息不会推送到后端,需先在机器人应用配置中开启群组、团队场景的支持权限。
  • 入口消息过滤逻辑:在现有handleMessage方法最开头增加场景判断,避免无意义处理:
    // 校验当前消息是否@了机器人
    const isBotMentioned = context.activity.mentions?.some(mention => 
      mention.mentioned.id === context.activity.recipient.id
    );
    // 非1对1场景下,未被@的消息直接跳过处理
    if (context.activity.channelId === 'msteams' && 
        context.activity.conversation.conversationType !== 'personal' && 
        !isBotMentioned) {
      return;
    }
    // 去除消息文本中@机器人的标签,避免影响Watson意图识别准确率
    if (context.activity.text) {
      context.activity.text = context.activity.text.replace(/<at>.*?<\/at>/g, '').trim();
    }
    

状态隔离逻辑修正

  • 现有1对1场景下的状态(Watson上下文ID、用户信息、对话状态)默认按单聊会话维度隔离,直接复用到群/频道场景会出现所有群成员共用同一会话上下文的串线问题。
  • 修改点:为群/频道场景自定义状态隔离键,按「群会话ID + 当前提问用户ID」组合拆分状态存储:
    // 自定义场景化状态键
    const stateScopeKey = context.activity.conversation.conversationType === 'personal' 
      ? context.activity.conversation.id
      : `${context.activity.conversation.id}_${context.activity.from.id}`;
    // 替换原有状态获取逻辑,绑定自定义键
    let ibmWatsonContextId = await this.ibmWatsonContextId.get(context, null, stateScopeKey);
    if (ibmWatsonContextId === null) {
      ibmWatsonContextId = await this.retrieveAndSetIBMWatsonContextID(context, stateScopeKey);
    }
    const user = await this.userData.get(context, {
      firstname: "anonymous",
      lastname: "anonymous",
      email: "anonymous.anonymous@siemens.com",
      gid: "xxxxxxxx",
      department: "anonymous"
    }, stateScopeKey);
    
  • 现有代码问题修正:handleMessage方法内的switch分支中,case DialogTurnStatus.empty:分支后遗漏break语句,会出现逻辑穿透,导致重复触发Watson请求、重复发送回复的问题,需补上对应分支的终止语句。

响应逻辑适配

  • 群/频道场景下的回复默认直接发送到对应会话,可按需配置是否在回复中@提问用户:不需要@用户时直接发送原有消息内容即可;需要@用户时,可在发送的活动对象中添加对应用户的mention元素。
  • 状态持久化校验:确认群/频道场景下保存状态时,与读取时使用的stateScopeKey保持一致,避免Watson上下文、对话进度丢失。

常见问题排查

  • 后端未收到群/频道消息时,优先检查两个配置:
    • 机器人应用清单中是否开启群聊、团队会话的支持权限
    • 测试消息是否正确@了机器人,无@的群消息默认不会推送到后端
  • 消息识别准确率下降时,检查是否未清除消息文本中的@机器人标签,导致无关文本被传入Watson识别流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 17:36:01