跳转至

whiteboard

feishu.agent.toolkit.whiteboard

画板工具工厂:列出画板内的所有节点(读)。详见 feishu.agent.toolkit

list_whiteboard_nodes

Python
list_whiteboard_nodes(*, description: str, name: str = 'list_whiteboard_nodes', locale: str = 'zh-CN', as_user: bool = True, auth_scopes: Sequence[str] = ()) -> Tool

读类工厂:一次性列出某画板内的全部节点,返回一个 feishu.agent.tools.Tool

处理函数调用 client.board.list_nodes(whiteboard_id, user_id_type="open_id")(该接口不分页), 节点以 idtypeparent_idchildren 及对应类型的内容字段描述。

参数:

名称 类型 描述 默认

description

str

工具描述(产品本地化文案)。

必需

name

str

工具名。默认为 "list_whiteboard_nodes"

'list_whiteboard_nodes'

locale

str

本地化标识。默认为 "zh-CN"

'zh-CN'

as_user

bool

是否以请求用户身份读取。默认为 True

True

auth_scopes

Sequence[str]

缺少授权时申请的飞书权限范围。

()

返回:

类型 描述
Tool

示例:

Python Console Session
1
2
3
>>> tool = list_whiteboard_nodes(description="读取画板节点")
>>> tool.name, tool.requires_approval
('list_whiteboard_nodes', False)
源代码位于: feishu/agent/toolkit/whiteboard.py
Python
def list_whiteboard_nodes(
    *,
    description: str,
    name: str = "list_whiteboard_nodes",
    locale: str = "zh-CN",
    as_user: bool = True,
    auth_scopes: Sequence[str] = (),
) -> Tool:
    r"""
    读类工厂:一次性列出某画板内的全部节点,返回一个 [feishu.agent.tools.Tool][]。

    处理函数调用 `client.board.list_nodes(whiteboard_id, user_id_type="open_id")`(该接口不分页),
    节点以 `id`、`type`、`parent_id`、`children` 及对应类型的内容字段描述。

    Args:
        description: 工具描述(产品本地化文案)。
        name: 工具名。默认为 `"list_whiteboard_nodes"`。
        locale: 本地化标识。默认为 `"zh-CN"`。
        as_user: 是否以请求用户身份读取。默认为 `True`。
        auth_scopes: 缺少授权时申请的飞书权限范围。

    Returns:
        可注册到 [feishu.agent.tools.ToolRegistry][] 的 [feishu.agent.tools.Tool][]。

    Examples:
        >>> tool = list_whiteboard_nodes(description="读取画板节点")
        >>> tool.name, tool.requires_approval
        ('list_whiteboard_nodes', False)
    """
    input_schema: dict[str, Any] = {
        "type": "object",
        "properties": {
            "whiteboard_id": {"type": "string", "description": "whiteboard id to list nodes for"},
        },
        "required": ["whiteboard_id"],
        "additionalProperties": False,
    }

    async def handler(**arguments: Any) -> ToolResult:
        client = await resolve_client(as_user=as_user)
        if client is None:
            return needs_user_auth(auth_scopes)
        nodes = await client.board.list_nodes(arguments["whiteboard_id"], user_id_type="open_id")
        return ToolResult(ToolOutcome.COMPLETED, content=nodes)

    return Tool(name=name, description=description, input_schema=input_schema, handler=handler)