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

如何正确使用TeamsInfo库?仅获取用户资料排除机器人信息

解决Teams机器人在on_members_added中返回自身信息的问题

你遇到的问题是因为Teams触发on_members_added_activity时,会把机器人自身也包含在members_added列表里,导致代码同时处理用户和机器人,输出了非预期的机器人相关信息。

解决思路很直接:遍历成员列表时,先判断当前成员是否是机器人本身,是的话直接跳过即可。机器人的ID可以通过turn_context.activity.recipient.id获取,将其与当前遍历的成员ID对比就能完成过滤。

修改后的完整代码如下:

async def on_members_added_activity(
        self, members_added: List[ChannelAccount], turn_context: TurnContext
    ):
        # 获取机器人自身的ID
        bot_id = turn_context.activity.recipient.id
        
        for member in members_added:
            # 跳过机器人自身,只处理真实用户
            if member.id == bot_id:
                continue
                
            # 获取Teams成员信息
            teams_member = await self.get_member(turn_context, member.id)
                
            if teams_member:
                self.full_name = f"{teams_member.given_name} {teams_member.surname}"
                self.name = teams_member.given_name
                self.email = teams_member.email
                self.organization = self.email.split("@")[1].split(".")[0]
                self.selected_option = self.organization
                        
                await turn_context.send_activity(greeting(self.name))

            else:
                self.selected_option = None
                await turn_context.send_activity("Welcome! We couldn't retrieve your detailed information.")


async def get_member(self, turn_context: TurnContext, member_id: str) -> TeamsChannelAccount:
    try:
        if turn_context.activity.channel_data:
            member = await TeamsInfo.get_member(turn_context, member_id)
            return TeamsChannelAccount().deserialize(member.serialize())
        else:
            raise ValueError("No channel_data available in TurnContext activity.")
    except Exception as e:
        print(f"Error retrieving member: {e}")
        return None

核心改动说明:

  • 新增bot_id = turn_context.activity.recipient.id获取机器人自身ID
  • 在遍历成员时添加判断if member.id == bot_id: continue,直接跳过机器人条目

这样修改后,代码只会处理加入的真实用户,不会再输出机器人相关的信息。

内容的提问来源于stack exchange,提问作者un-nun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 19:23:20