Skill Store 33

Feishu Contact

飞书组织架构与 ID 转换。搜索成员、部门管理、ID 互转(OpenID/UserID/UnionID)。

by alextangson · MIT

The skill

飞书组织架构与 ID 转换。搜索成员、部门管理、ID 互转(OpenID/UserID/UnionID)。

飞书组织架构与 ID 转换

通过 Contact v3 API 实现成员搜索、部门管理和 ID 转换。


API 基础

Base URL: https://open.feishu.cn/open-apis/contact/v3
认证: Authorization: Bearer {tenant_access_token}

认证与 Token 获取

从 feishu_skills 根目录执行共享脚本:

TOKEN="$(./scripts/get_feishu_token.sh)"

请求头统一使用 Authorization: Bearer ${TOKEN}。

如果业务接口返回 token 无效、过期或 401,强制刷新后仅重试一次原请求:

TOKEN="$(./scripts/get_feishu_token.sh --force-refresh)"

环境变量:

  • FEISHU_APP_ID
  • FEISHU_APP_SECRET

本地缓存: ./.feishu_token_cache.json(未过期直接复用,默认提前 5 分钟刷新)


成员查询

API 端点 说明
搜索成员 GET /users/batch_get_id 通过邮箱/手机号获取 OpenID
获取职务 GET /job_titles/{id} 需在管理后台预先维护

部门管理

API 端点 方法 请求体示例 说明
获取部门 /departments/{department_id} GET - 查询单个部门详情
获取部门列表 /departments GET - 支持 parent_department_id 参数
获取父部门路径 /departments/{department_id}/parent GET - 获取部门层级路径
创建部门 /departments POST {"name":"新部门","parent_department_id":"0"} 需管理员权限
更新部门 /departments/{department_id} PUT {"name":"更新后的名称"} 修改部门信息
删除部门 /departments/{department_id} DELETE - 删除空部门
入职成员 /users POST {"name":"张三","mobile":"138...","department_ids":["od_xxx"]} 创建用户
更新用户 /users/{user_id} PUT {"name":"新名字"} 修改用户信息
删除用户 /users/{user_id} DELETE - 移除用户
获取用户列表 /users GET - 支持 department_id 过滤

⚠️ 创建部门和入职成员需最高权限,建议预发环境测试。


用户组管理

API 端点 方法 请求体示例 说明
获取用户组列表 /groups GET - 查询所有用户组
获取用户组 /groups/{group_id} GET - 查询单个用户组
创建用户组 /groups POST {"name":"项目组","description":"描述"} 创建新用户组
更新用户组 /groups/{group_id} PUT {"name":"新名称"} 修改用户组
删除用户组 /groups/{group_id} DELETE - 删除用户组
获取组成员 /groups/{group_id}/members GET - 查询组成员列表
添加组成员 /groups/{group_id}/members POST {"member_id":"ou_xxx","member_type":"user"} 添加用户到组
移除组成员 /groups/{group_id}/members/{member_id} DELETE - 从组移除用户

职级管理

API 端点 方法 请求体示例 说明
获取职级列表 /job_families GET - 查询所有职级
获取职级 /job_families/{job_family_id} GET - 查询单个职级
创建职级 /job_families POST {"name":"高级工程师"} 创建新职级
更新职级 /job_families/{job_family_id} PUT {"name":"资深工程师"} 修改职级
删除职级 /job_families/{job_family_id} DELETE - 删除职级

角色管理

API 端点 方法 请求体示例 说明
获取角色列表 /roles GET - 查询所有角色
创建角色 /roles POST {"role_name":"管理员"} 创建新角色
更新角色 /roles/{role_id} PUT {"role_name":"超级管理员"} 修改角色名称
删除角色 /roles/{role_id} DELETE - 删除角色
获取角色成员 /roles/{role_id}/members GET - 查询角色下所有成员
批量添加角色成员 /roles/{role_id}/members/batch_create POST {"members":[{"member_id":"ou_xxx","member_type":"user"}]} 批量添加成员
批量删除角色成员 /roles/{role_id}/members/batch_delete POST {"members":[{"member_id":"ou_xxx"}]} 批量移除成员

ID 转换(核心)

飞书三种 ID 体系:

ID 类型 说明 使用场景
open_id 应用内唯一 同一应用内识别用户
user_id 企业内唯一 企业内部系统对接
union_id 跨应用唯一 同一开发者的多个应用间

Contact v3 ID 转换

API 端点 方法 请求体示例 说明
批量获取用户 ID /users/batch_get_id POST {"emails":["a@b.com"],"mobiles":["138xxx"]} 通过邮箱/手机获取 OpenID
批量获取部门 ID /departments/batch_get_id POST {"department_ids":["od_xxx"]} 部门 ID 转换
获取用户 /users/{user_id} GET - 通过 ID 获取用户信息
获取用户信息(批量) /users/batch_get GET - 参数:user_ids=ou_1,ou_2

ID 转换最佳实践:

通过 GET /users/{user_id} 接口可一次性获取用户的所有 ID 类型(open_id/user_id/union_id),无需单独转换。

示例:

GET /contact/v3/users/ou_xxx?user_id_type=open_id

响应包含:

{
  "data": {
    "user": {
      "open_id": "ou_xxx",
      "user_id": "7c43cd5f",
      "union_id": "on_xxx"
    }
  }
}

其他

API 端点 方法 说明
获取职务列表 /job_titles GET 查询所有预设职务
获取职务 /job_titles/{job_title_id} GET 查询单个职务详情
获取办公地点 /places GET 用于人员地理分布分析
获取人员类型 /employee_types GET 查询人员类型列表
获取自定义属性 /custom_attr_events GET 查询自定义属性变更事件
获取授权范围 /scopes GET 查询应用可访问的部门/用户范围
外部成员访问 /application/v1/applications/{app_id}/user_usable GET 控制供应商/外包访问权限

事件订阅

通讯录支持 17 个变更事件:

事件类型 说明
contact.user.created_v3 用户创建
contact.user.updated_v3 用户信息更新
contact.user.deleted_v3 用户删除
contact.dept.created_v3 部门创建
contact.dept.updated_v3 部门更新
contact.dept.deleted_v3 部门删除
contact.employee_type.created_v3 人员类型创建
contact.employee_type.updated_v3 人员类型更新
contact.employee_type.deleted_v3 人员类型删除
contact.job_family.created_v3 职级创建
contact.job_family.updated_v3 职级更新
contact.job_family.deleted_v3 职级删除

最佳实践

  1. ID 转换优先用 Spark API(更简洁)
  2. 缓存常用 ID(减少 API 调用)
  3. 组织架构变更必须预发测试

Use this skill

Connect your agent to the Skill Store MCP server and ask for it by ref: alextangson/feishu-contact-72590893810.

Download SKILL.md · Markdown version

Details

Publisher
alextangson
Category
Business › Operations & productivity
License
MIT
Updated
2026-03-26

References

More from alextangson