--- summary: "Feishu DM 策略、组策略、提及门控以及如何查找聊天和用户 ID" read_when: - "决定谁可以 DM 机器人或在组中使用它" - "编写组或发件人白名单" - "查找 Feishu `chat_id` 或 `open_id`" title: "Feishu门禁" sidebarTitle: "访问控制" --- 谁可以与 Feishu 机器人交谈、表达这些规则的组配置示例以及如何查找他们需要的 ID。 ## 访问控制 ### 私信 配置 `channels.feishu.dmPolicy`(默认:`pairing`)来控制谁可以 DM 机器人: | 值 | 行为 | | ------------- | ------------------------------------------------------------------------------------------------------------- | | `"pairing"` | 未知用户会收到配对码;通过 CLI 批准 | | `"allowlist"` | 只有 `allowFrom` 中列出的用户才能聊天 | | `"open"` | 公开私信;配置校验要求 `allowFrom` 包含 `"*"`。非通配符条目仍会缩小可访问范围 | **批准配对请求:** ```bash openclaw pairing list feishu openclaw pairing approve feishu ``` ### 群聊 **群组策略** (`channels.feishu.groupPolicy`,默认:`allowlist`): | 值 | 行为 | | ------------- | -------------------------------------------------------------------------------------------- | | `"open"` | 响应群组中的所有消息 | | `"allowlist"` | 仅响应 `groupAllowFrom` 中的群组,或在 `groups.` 下显式配置的群组 | | `"disabled"` | 禁用所有群消息;显式的 `groups.` 条目不会覆盖此设置 | **提及要求** (`channels.feishu.requireMention`): - 默认:@mention 必填,有效组策略为 `"open"` 时除外;此处默认为 `false`,因此无法携带提及内容(例如图像)的消息仍会到达代理。 - 显式设置为 `true` 或 `false` 以覆盖默认值;按群组覆盖:`channels.feishu.groups..requireMention`。 - 仅广播的 `@all` 和 `@_all` 不被视为机器人提及。消息中同时包含 `@all` 和直接提及机器人时,仍然算作机器人提及。 在发送给客服人员的文本中,提及其他人的内容保持可读性,包括在组合连续消息时。 ### 在机器人启动的线程中提及 设置 `requireMentionInBotThreads: false` 以接受在此机器人发送根消息的线程或主题中不带 @mention 的消息。将其设置为 `true` 以在这些线程中需要 @mention,即使 `requireMention` 是 `false` 也是如此。省略该设置将保留现有的提及行为。 ```json5 { channels: { feishu: { requireMention: true, requireMentionInBotThreads: false, }, }, } ``` 在 `channels.feishu`、`accounts.` 或 `groups.` 下配置设置。所选组条目优先于帐户设置,帐户设置又优先于顶级设置。当不存在与 `requireMention` 匹配的确切组条目时,`groups["*"]` 提供组条目。 这仅适用于当前机器人拥有的实际线程和主题。普通引用的回复、其他人发起的帖子以及无法读取或验证的根保留常规提及政策。组访问、发件人许可名单和机器人消息限制仍然适用。接收未提及的群消息还需要应用程序的`im:message.group_msg`范围和群消息事件传递;此设置不会更改 Feishu 发送的事件。 ## 群组配置示例 ### 允许所有组,不需要@mention ```json5 { channels: { feishu: { groupPolicy: "open", // requireMention defaults to false under "open" }, }, } ``` ### 允许所有组,仍需要@mention ```json5 { channels: { feishu: { groupPolicy: "open", requireMention: true, }, }, } ``` ### 仅允许特定群组 ```json5 { channels: { feishu: { groupPolicy: "allowlist", // Group IDs look like: oc_xxx groupAllowFrom: ["oc_xxx", "oc_yyy"], }, }, } ``` 在 `allowlist` 模式下,你也可以通过添加显式的 `groups.` 条目来允许某个群组。显式条目不会覆盖 `groupPolicy: "disabled"`。`groups.*` 下的通配符默认配置会应用于匹配的群组,但它们本身不会允许群组加入。 ```json5 { channels: { feishu: { groupPolicy: "allowlist", groups: { oc_xxx: { requireMention: false, }, }, }, }, } ``` ### 限制群组内的发送者 ```json5 { channels: { feishu: { groupPolicy: "allowlist", groupAllowFrom: ["oc_xxx"], groups: { oc_xxx: { // User open_ids look like: ou_xxx allowFrom: ["ou_user1", "ou_user2"], }, }, }, }, } ``` `channels.feishu.groupSenderAllowFrom` 为所有群组设置相同的发送者允许列表;按群组设置的 `allowFrom` 具有更高优先级。 ### 机器人发送的消息 默认情况下,Feishu 会忽略其他机器人编写的消息。要允许机器人之间的群组对话,请授予应用程序 `im:message.group_at_msg.include_bot:readonly` 和 `im:message:readonly` 范围,然后设置 `allowBots`: ```json5 { channels: { feishu: { allowBots: true, }, }, } ``` Feishu 仅当另一个机器人提及此机器人时才传递机器人编写的群组活动。现有的组策略、发件人许可名单和提及要求仍然适用。 OpenClaw 删除自行创作的消息,在每条短信或卡片回复中提及对等机器人,并应用共享的 [`channels.defaults.botLoopProtection`](/channels/bot-loop-protection) 防护。 ## 获取 group/user ID ### 组 ID(`chat_id`,格式:`oc_xxx`) 打开Feishu/Lark中的群组,点击右上角的菜单图标,进入**设置**。设置页面上列出了组 ID (`chat_id`)。 ![获取群组 ID](/images/feishu-get-group-id.png) ### 用户 ID(`open_id`,格式:`ou_xxx`) 启动网关,向机器人发送 DM,然后检查日志: ```bash openclaw logs --follow ``` 在日志输出中查找 `open_id`。你也可以查看待处理的配对请求: ```bash openclaw pairing list feishu ```