normalize
feishu.contact.normalize
¶
get_user_email
¶
从用户数据中提取邮箱地址。
用户可能同时拥有企业邮箱(enterprise_email)与个人邮箱(email)。当 prefer_enterprise
为 True(默认)时优先返回企业邮箱,否则优先返回个人邮箱;任一字段缺失或为空时回退到另一字段,
两者皆无则返回 None。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
Mapping[str, Any]
|
用户数据,通常为飞书返回的原始用户对象。 |
必需 |
|
bool
|
是否优先返回企业邮箱。默认为 |
True
|
返回:
| 类型 | 描述 |
|---|---|
str | None
|
邮箱地址,若均不存在则为 |
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/contact/normalize.py
get_user_status
¶
get_user_status(user: Mapping[str, Any]) -> NestedDict
提取用户状态对象。
返回用户的 status 字段并统一封装为 NestedDict,便于以属性或缺省索引方式
读取 is_activated、is_frozen、is_resigned 等子字段。当字段缺失时返回空的 NestedDict。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
Mapping[str, Any]
|
用户数据,通常为飞书返回的原始用户对象。 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
NestedDict
|
用户状态对象。 |
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/contact/normalize.py
is_active_user
¶
判断用户是否为在职可用状态。
仅当用户已激活(is_activated)且未被冻结(is_frozen)、未离职(is_resigned)时返回 True。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
Mapping[str, Any]
|
用户数据,通常为飞书返回的原始用户对象。 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
bool
|
用户是否在职可用。 |
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/contact/normalize.py
get_user_department_ids
¶
提取用户所属部门的 ID 列表。
返回用户 department_ids 字段的副本;字段缺失或为空时返回空列表。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
Mapping[str, Any]
|
用户数据,通常为飞书返回的原始用户对象。 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
list[str]
|
部门 ID 列表。 |
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/contact/normalize.py
get_user_identity
¶
get_user_identity(user: Mapping[str, Any]) -> NestedDict
提取用户的三种身份标识。
返回仅包含 user_id、open_id、union_id 的 NestedDict,缺失的字段以
None 占位,使调用方无需担心 KeyError 即可索引任一标识。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
Mapping[str, Any]
|
用户数据,通常为飞书返回的原始用户对象。 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
NestedDict
|
包含 |
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/contact/normalize.py
normalize_user
¶
normalize_user(user: Mapping[str, Any]) -> NestedDict
将飞书原始用户数据规整为统一结构。
提取常用字段(身份标识、姓名、邮箱、部门、状态)并派生 active 在职标志,同时在 raw 字段下
保留完整的原始数据,便于调用方读取未规整的字段。邮箱通过 feishu.contact.normalize.get_user_email
解析,在职标志通过 feishu.contact.normalize.is_active_user 派生。
部分字段是否被填充取决于应用所申请的数据权限(邮箱、手机号、部门、员工信息等字段级权限)。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
Mapping[str, Any]
|
飞书返回的原始用户对象。 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
NestedDict
|
规整后的用户对象,包含 |
NestedDict
|
|
飞书文档
示例:
源代码位于: feishu/contact/normalize.py
normalize_department
¶
normalize_department(dept: Mapping[str, Any]) -> NestedDict
将飞书原始部门数据规整为统一结构。
提取部门 ID、上级部门 ID、名称与成员数等常用字段,缺失的字段以 None 占位,并在 raw 字段下
保留完整的原始数据。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
Mapping[str, Any]
|
飞书返回的原始部门对象。 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
NestedDict
|
规整后的部门对象,包含 |
NestedDict
|
|
飞书文档
示例:
| Python Console Session | |
|---|---|