inbound
feishu.im.inbound
¶
飞书入站消息的无状态读取助手。
提供从飞书消息体(im.message.receive_v1 事件中的 message 对象,或
feishu.im.messages.IMNamespace.get 返回的消息数据)中提取信息的纯函数:
feishu.im.inbound.message_text 提取可读文本,
feishu.im.inbound.is_mentioned 判断机器人是否被提及。
is_mentioned
¶
is_mentioned(message: dict[str, Any], *, open_id: str | None = None, union_id: str | None = None) -> bool
判断消息是否提及(@)了指定用户。
遍历消息的 mentions 数组,若其中任一条目的 id 匹配给定的 open_id 或 union_id,
则返回 True。不同事件类型与接口版本下,条目的 id 既可能是同时含 open_id、union_id
的字典,也可能是单一字符串,因此对两种形态都进行匹配。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
dict[str, Any]
|
飞书消息体字典,通常含 |
必需 |
|
str | None
|
待匹配的用户 open ID;为空表示不按 open ID 匹配。 |
None
|
|
str | None
|
待匹配的用户 union ID;为空表示不按 union ID 匹配。 |
None
|
返回:
| 类型 | 描述 |
|---|---|
bool
|
消息提及了指定用户时返回 |
飞书文档
示例:
源代码位于: feishu/im/inbound.py
message_content
¶
message_content(message: dict[str, Any]) -> NestedDict
解析飞书消息体中的 content JSON。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
dict[str, Any]
|
飞书消息体字典,含 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
NestedDict
|
解析后的 |
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/im/inbound.py
message_resource
¶
message_resource(message: dict[str, Any]) -> NestedDict | None
从图片或文件消息中提取可下载资源。
返回值中的 key 可传给 feishu.im.messages.IMNamespace.get_resource 的 file_key,
resource_type 可作为同名参数传入。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
dict[str, Any]
|
飞书消息体字典。 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
NestedDict | None
|
资源描述;没有图片或文件资源时返回 |
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/im/inbound.py
message_resources
¶
提取消息中的**全部**可下载资源(图片 / 文件)。
单张图片或文件消息返回 1 个资源(同 feishu.im.inbound.message_resource);富文本 post 消息可内嵌
多张图片,逐个返回(按出现顺序、去重)。每个资源的 key / resource_type 可直接传给
feishu.im.messages.IMNamespace.get_resource。无资源时返回空列表。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
dict[str, Any]
|
飞书消息体字典。 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
list[NestedDict]
|
资源描述列表;无图片 / 文件资源时为空列表。 |
示例:
源代码位于: feishu/im/inbound.py
message_text
¶
从飞书消息体中提取可读文本。
解析消息体内的 content JSON:对 text 类型读取 content['text'];对富文本 post 类型
(content 含 content/elements 二维数组)将各段文本以空行拼接,若含 title 则以
Markdown 二级标题形式前置。随后用消息的 mentions 数组将文本中的 @_user_N 占位符替换为
@<姓名>。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
dict[str, Any]
|
飞书消息体字典,含 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
str
|
提取并解析后的文本;无法解析时返回空字符串。 |
飞书文档
示例:
源代码位于: feishu/im/inbound.py
message_body_text
¶
安全地从飞书消息体中提取并裁剪可读文本。
在 feishu.im.inbound.message_text 之上加一层防御:解析失败(缺字段 / 非法 JSON)时返回空串而非抛错, 并去除首尾空白。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
dict[str, Any]
|
飞书消息体(事件中的 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
str
|
裁剪后的可读文本;无法解析时返回空串。 |
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/im/inbound.py
message_sender_label
¶
message_sender_label(message: Mapping[str, Any], *, id_formatter: Callable[[str], str] | None = None, default: str = 'unknown') -> str
返回消息发送者的可读名称;无姓名时回退到其 ID(可经 id_formatter 转换),再不行用 default。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
Mapping[str, Any]
|
飞书消息体。 |
必需 |
|
Callable[[str], str] | None
|
可选的 ID 格式化函数,对回退使用的发送者 ID 应用(如脱敏 / 转中文名)。 |
None
|
|
str
|
既无姓名也无 ID 时返回的占位值。默认为 |
'unknown'
|
返回:
| 类型 | 描述 |
|---|---|
str
|
发送者名称、格式化后的 ID,或 |
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/im/inbound.py
message_transcript
¶
message_transcript(messages: Iterable[dict[str, Any]], *, id_formatter: Callable[[str], str] | None = None) -> str
把一组飞书消息渲染为「发送者: 文本」逐行转录;非文本消息以 [类型] 占位。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
Iterable[dict[str, Any]]
|
飞书消息体的可迭代集合。 |
必需 |
|
Callable[[str], str] | None
|
可选的发送者 ID 格式化函数,见 feishu.im.inbound.message_sender_label。 |
None
|
返回:
| 类型 | 描述 |
|---|---|
str
|
逐行转录文本(行间以换行分隔)。 |
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/im/inbound.py
interactive_card_text
¶
从交互卡片消息体中提取可读文本(先解出 content,再交给 feishu.im.inbound.card_text)。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
dict[str, Any]
|
飞书交互卡片消息体。 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
str
|
卡片中的可读文本;无可提取内容时返回空串。 |
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/im/inbound.py
card_text
¶
从飞书卡片中提取可读的 markdown / 文本内容(递归遍历 body.elements 与顶层 elements)。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
Mapping[str, Any]
|
飞书卡片字典。 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
str
|
卡片中各文本片段以空行拼接的结果;无文本时返回空串。 |
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/im/inbound.py
card_title
¶
提取飞书卡片头部(header)的标题文本。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
Mapping[str, Any]
|
飞书卡片字典。 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
str
|
标题文本;无 header / 标题时返回空串。 |
示例:
| Python Console Session | |
|---|---|