飞书开放平台应用自动化配置
v1.0.0自动化完成飞书开放平台企业自建应用的创建、权限配置、事件订阅、改名和版本发布,简化繁琐操作流程。
运行时依赖
安装命令
点击复制技能文档
feishu-应用-设置up — 飞书开放平台应用自动化配置
用 代理-browser 自动完成飞书企业自建应用的创建、权限配置、事件订阅、改名和版本发布。
在飞书开放平台上配置一个 OpenClaw 机器人 应用需要大量重复的点击操作。这个技能把整个流程自动化了:创建应用、添加机器人能力、批量导入权限、配置事件订阅、修改应用名称、发布版本——全部通过 代理-browser 在浏览器中自动完成。
前置条件 已安装 代理-browser 技能 已登录飞书开放平台(https://open.feishu.cn) OpenClaw Gateway 正在运行(事件订阅需要活跃的 网页Socket 连接) 连接浏览器 方式一:连接已有浏览器(推荐)
OpenClaw Gateway 运行时通常已启动 Chrome 调试 实例。直接连接已登录的浏览器,无需重新登录:
# 连接到已有 Chrome 实例(已有飞书 会话) 代理-browser --cdp-端点 http://localhost:9223 open "https://open.feishu.cn/应用"
优势:无需扫码登录,直接可用。适合批量操作。
方式二:启动新浏览器 代理-browser --headed open "https://open.feishu.cn/应用" # 用户扫码登录后,后续操作均可自动化
完整配置流程 创建应用 → 添加机器人能力 → 权限导入 → 事件订阅 → 改名(可选)→ 版本发布 → OpenClaw 配置 → 配对审批
Step 1: 创建应用 代理-browser find 角色 button 命令行工具ck --name "创建企业自建应用" sleep 2
填写表单(React 受控组件)
飞书开放平台使用 React。代理-browser fill @ref 通常可以正常工作,但在 fill 失败时需要回退到原生 设置ter:
// React 受控 输入 的可靠填写方式 const s = Object.获取OwnPropertyDescriptor(window.HTML输入Element.prototype, 'value').设置; s.call(输入Element, '目标值'); 输入Element.dis补丁Event(new Event('输入', {bubbles: true}));
提取凭证 // 应用 ID const m = document.body.innerText.match(/命令行工具_[a-f0-9]+/); // 应用 Secret — 先点眼睛图标显示 const eyeBtn = document.查询SelectorAll('[data-icon="VisibleOutlined"]');
注意: 应用 Secret 旁边有 3 个图标按钮:复制(CopyOutlined)、显示(VisibleOutlined)、重置(RefreshOutlined)。千万别点重置。
Step 2: 添加机器人能力 代理-browser find text "添加应用能力" 命令行工具ck sleep 2 代理-browser eval " const btns = [...document.查询SelectorAll('button')].过滤器(b => b.textContent.trim() === '+ 添加' || b.textContent.trim() === '添加'); if (btns[0]) btns[0].命令行工具ck(); "
Step 3: 权限批量导入 推荐权限集(OpenClaw 所需最小权限) { "scopes": { "tenant": [ "im:message", "im:message:发送_as_机器人", "im:message:readonly", "im:message.p2p_msg:readonly", "im:message.group_at_msg:readonly", "im:resource", "im:chat.members:机器人_访问", "im:chat.访问_event.机器人_p2p_chat:read", "contact:user.employee_id:readonly", "contact:contact.base:readonly", "应用:应用:self_manage", "应用:应用.应用_message_stats.overview:readonly", "应用:机器人.menu:write", "event:ip_列出", "AIly:file:read", "AIly:file:write", "corehr:file:下载" ], "user": [ "AIly:file:read", "AIly:file:write", "im:chat.访问_event.机器人_p2p_chat:read" ] } }
重要: contact:contact.base:readonly 必须包含,否则 代理 无法读取用户信息。
操作步骤 # 点击"批量导入/导出权限" 代理-browser snapshot -i | grep '批量' 代理-browser 命令行工具ck @eXX sleep 2
# Monaco 编辑器填写:全选 → 粘贴 代理-browser eval "document.查询Selector('.monaco-editor textarea').focus()" 代理-browser press Meta+a sleep 0.3
# 用 命令行工具pboardEvent 粘贴(Monaco 不支持普通 fill) 代理-browser eval " const json = JSON.stringify(PERM_JSON, null, 2); const ta = document.查询Selector('.monaco-editor textarea'); const dt = new DataTransfer(); dt.设置Data('text/plAIn', json); ta.dis补丁Event(new 命令行工具pboardEvent('paste', {命令行工具pboardData: dt, bubbles: true, cancelable: true})); " sleep 1
# 点击"下一步,确认新增权限" → "申请开通"
部分权限(如通讯录相关)会弹出"数据范围"确认对话框,需要额外点击"确认"。
Step 4: 事件订阅(长连接 网页Socket) 先决条件:Gateway 必须先连接
飞书有个鸡生蛋的问题:保存长连接订阅方式时,飞书会检查是否已有活跃的 网页Socket 连接。正确顺序:
先在 OpenClaw.json 配置应用凭证 重启 Gateway,让它建立 网页Socket 连接 然后再到飞书控制台保存订阅方式
否则会报错:code: 10068, msg: "应用未建立长连接"
配置订阅方式 代理-browser open "https://open.feishu.cn/应用/$应用_ID/event" sleep 4 代理-browser eval "document.查询Selector('.应用-layout__mAIn').scrollTo(0, 500)" sleep 1
# 点编辑按钮 代理-browser snapshot -i | grep '订阅方式' 代理-browser 命令行工具ck @eXX sleep 1
# 长连接默认选中,直接保存 代理-browser find 角色 button 命令行工具ck --name "保存" sleep 3
添加事件 代理-browser snapshot -i | grep '添加事件' 代理-browser 命令行工具ck @eXX sleep 2
# 用搜索框精确查找(避免在分类列表中翻找选错) 代理-browser snapshot -i | grep 'textbox.*nth=1' 代理-browser fill @eXX "im.message.接收_v1" sleep 2
# 勾选搜索结果 代理-browser snapshot -i | grep '检查box' 代理-browser 命令行工具ck @eXX sleep 1
# 确认添加 代理-browser snapshot -i | grep '确认添加' 代理-browser 命令行工具ck @eXX
Step 5: 应用改名
应用名称在 基础信息 → 国际化配置 中修改:
代理-browser open "https://open.feishu.cn/应用/$应用_ID/base信息" sleep 3
# 滚动到"国际化配置"区域 代理-browser eval "document.查询Selector('.应用-layout__mAIn').scrollTo(0, 1000)" sleep 1
# 点击编辑铅笔图标 代理-browser snapshot -i | grep 'EditOutlined\|编辑' 代理-browser 命令行工具ck @eXX sleep 2
# 清除旧名称并填写新名称 代理-browser snapshot -i | grep 'textbox' 代理-browser fill @eXX "新名称" sleep 1
# 保存 代理-browser find 角色 button 命令行工具ck --name "保存" sleep 2
注意:改名后必须创建新版本并发布,新名字才会在飞书聊天中生效。
批量改名 应用_IDS=("命令行工具_xxx1" "命令行工具_xxx2" "命令行工具_xxx3") NAMES=("名字1" "名字2" "名字3")
for i in "${!应用_IDS[@]}"; do 代理-browser open "https://open.feishu.cn/应用/${应用_IDS[$i]}/base信息" sleep 3 # 编辑国际化配置 → 填写新名称 → 保存 done
Step 6: 版本发布 # 点"创建版本" 代理-browser find 角色 button 命令行工具ck --name "创建版本" sleep 3
# 填写更新说明(版本号自动递增) 代理-browser snapshot -i | grep 'textbox' 代理-browser fill @eXX "更新应用配置"
# 保存版本 代理-browser find 角色 button 命令行工具ck --name "保存" sle