本页内容

本页内容

主流消息传递

Microsoft Teams门禁

谁可以与 Teams 机器人交谈,它在哪些团队和渠道中进行应答,以及这些规则使用的 ID 来自何处。

配置写入

默认情况下,Microsoft Teams 可以写入由 /config set|unset 触发的配置更新(需要 commands.config: true)。

禁用:

json5
{  channels: { msteams: { configWrites: false } },}

访问控制(DM + 群组)

在 channels.msteams 下设置共享策略,或为 channels.msteams.accounts.<id> 下的一个机器人覆盖这些策略。通过所选账户进行的政策更改将仅限于该账户;从一个帐户撤销发件人不会更改同级帐户。

DM 访问

  • 默认:channels.msteams.dmPolicy = "pairing"。未知发件人将被忽略,直至获得批准。将其设置在根目录以应用于所有帐户,或在 channels.msteams.accounts.<id>.dmPolicy 覆盖它。
  • channels.msteams.allowFrom 应使用稳定的 AAD 对象 ID 或静态发送方访问组,例如 accessGroup:core-team。将其设置在根目录以共享允许列表,或在 channels.msteams.accounts.<id>.allowFrom 覆盖它。
  • dmPolicy: "open" 要求有效账户白名单中包含 "*";安装程序在添加或删除特定于帐户的条目时保留该通配符。
  • 不依赖 UPN/display-name 匹配白名单;他们可以改变。 OpenClaw 默认禁用直接名称匹配;选择使用 channels.msteams.dangerouslyAllowNameMatching: true。
  • 当凭据允许时,向导可以通过 Microsoft 图形将名称解析为 ID。

群组访问

  • 默认:channels.msteams.groupPolicy = "allowlist"(除非添加 groupAllowFrom,否则将被阻止)。将其设置在根目录以应用于所有帐户,或在 channels.msteams.accounts.<id>.groupPolicy 覆盖它;根模式默认优先于 channels.defaults.groupPolicy。
  • channels.msteams.groupAllowFrom 控制哪些发件人、静态发件人访问组或 group/channel 会话 ID 可以在组 chats/channels 中触发(回退到 channels.msteams.allowFrom)。将其设置在根目录中以共享它,或者在 channels.msteams.accounts.<id>.groupAllowFrom 处覆盖它。会话ID可以使用19:[email protected]、19:[email protected]或19:[email protected];保留准确的 ID 外壳。 OpenClaw 忽略 ;messageid=... 后缀。对话 ID 绝不会授予个人 DM 访问权限。
  • 设置 groupPolicy: "open" 以允许任何成员(默认仍需通过提及触发)。
  • 若要阻止所有频道,请设置 channels.msteams.groupPolicy: "disabled"。

示例:

json5
{  channels: {    msteams: {      groupPolicy: "allowlist",      groupAllowFrom: ["00000000-0000-0000-0000-000000000000", "accessGroup:core-team"],    },  },}

团队 + 频道允许列表

  • 范围 group/channel 回复 channels.msteams.teams 下的每个帐户,或回复 channels.msteams.accounts.<id>.teams 下的一个机器人。
  • 使用来自 Teams 链接的稳定 Teams 对话 ID 作为键,而不是可变的显示名称(请参阅 团队和通道 ID)。
  • 当存在 groupPolicy="allowlist" 和团队许可名单时,仅接受列出的 teams/channels(提及门控)。
  • groupAllowFrom 授权群组发送者,而不是授权通过委托 Graph 读取其他频道。如果现有配置仅设置了 groupAllowFrom,请保留默认的 groupPolicy: "allowlist",并在 channels.msteams.teams.<team>.channels 下配置目标。
  • 或者,故意设置 groupPolicy: "open" 以实现更广泛的委托读取。这也允许 any 组发送者 (默认情况下仍然提及门控),因此它比作用域 team/channel 路由的限制更少。
  • Direct-operator读取和当前会话中的读取不需要额外的team/channel路由。
  • 配置向导接受 Team/Channel 条目,并会为你保存这些条目。
  • 启动时,OpenClaw 将 team/channel 和用户白名单名称解析为 ID(当图形权限允许时)并记录映射。未解析的名称将保留为键入的名称,但在路由时会被忽略,除非设置了 channels.msteams.dangerouslyAllowNameMatching: true。

具有兼容的核心和Teams版本,经过验证的官方npm和ClawHub安装可以使用现有的read,search,reactions,list-pins,member-info,这些访问规则下的 channel-info 和 channel-list 操作。代理从已安装的插件中​​读取需要可信的当前 Teams 对话和帐户上下文。列出团队的频道需要访问整个团队;访问一个频道并不授予该权限。 成员查找保留其标准通道和当前请求者限制。当原始调用或插件失去权限时,后续的图形请求和结果将被拒绝。

示例:

json5
{  channels: {    msteams: {      groupPolicy: "allowlist",      groupAllowFrom: ["00000000-0000-0000-0000-000000000000"],      teams: {        "19:[email protected]": {          channels: {            "19:[email protected]": { requireMention: true },          },        },      },    },  },}

在机器人创建的线程中提及

将 requireMentionInBotThreads: false 设置为在该机器人发送根消息的通道线程中不使用 @mention 进行应答。将其设置为 true 以要求在这些线程中提及,包括否则将被视为隐式提及的回复。省略它以保留现有的提及行为。

该设置从通道到团队解析为 channels.msteams,独立于 requireMention。家长频道帖子和其他人的帖子保留了通常的提及规则。群聊报价不是频道线程,发件人和 team/channel 许可名单仍然适用。

json5
{  channels: {    msteams: {      requireMention: true,      requireMentionInBotThreads: false,    },  },}

所有权使用当前机器人记录的已接受的顶级频道帖子,包括主动消息。现有线程内的回复不会建立所有权。追踪持续长达 24 小时且有界;最新的 1,000 个发送标记在重新启动后仍然有效。较旧的或未跟踪的根保留普通的提及规则。 Teams 必须在应用清单中授予 ChannelMessage.Read.Group 才能传送没有 @mention 的消息;请参阅 RSC 权限。

团队和频道 ID(常见问题)

Teams URL 中的 groupId 查询参数是 NOT 团队 ID 用于配置。从 URL 路径中提取 ID:

团队 URL:

text
https://teams.microsoft.com/l/team/19%3ABk4j...%40thread.tacv2/conversations?groupId=...                                    └────────────────────────────┘                                    Team conversation ID (URL-decode this)

频道 URL:

text
https://teams.microsoft.com/l/channel/19%3A15bc...%40thread.tacv2/ChannelName?groupId=...                                      └─────────────────────────┘                                      Channel ID (URL-decode this)

用于配置:

  • Team key = /team/ 之后的路径段(URL-decoded、e.g.、19:[email protected];较旧的租户可能会显示 @thread.skype,这也是有效的)。
  • Channel key = /channel/(URL-解码)之后的路径段。
  • 在 OpenClaw 路由中请忽略 groupId 查询参数。它是 Microsoft Entra 组 ID,而不是传入 Teams 活动中使用的 Bot Framework 会话 ID。

私有频道

机器人在私有频道中的支持有限:

功能 标准频道 私有频道
机器人安装 是 有限
实时消息(webhook) 是 可能无法工作
RSC 权限 是 可能表现不同
@mentions 是 如果机器人可以访问
Graph API 历史记录 是 是(需具备权限)

如果私有频道无法正常工作,可采用以下替代方案:

  1. 使用标准频道进行机器人交互。
  2. 使用私信;用户始终可以直接向机器人发送消息。
  3. 使用 Graph API 访问历史记录(需要 ChannelMessage.Read.All)。
本页有帮助吗?