Skip to content

飞书卡片组件管理

接口名称

飞书卡片组件管理(租户令牌) -(IFeishuTenantV1CardElements)

功能描述

飞书卡片组件管理接口提供了对卡片实体中具体组件的精细化操作能力,包括组件的创建、更新、删除和流式文本更新等功能,适用于需要对卡片内容进行动态调整的租户应用场景。

参考文档

https://open.feishu.cn/document/cardkit-v1/feishu-card-resource-overview

函数列表

函数名称功能描述认证方式HTTP 方法
CreateCardElementAsync为指定卡片实体新增组件,以扩展卡片内容租户令牌POST
UpdateCardElementByIdAsync更新卡片实体中的指定组件为新组件租户令牌PUT
UpdateCardElementAttributeByIdAsync更新卡片实体中对应组件的属性租户令牌PATCH
StreamUpdateCardTextByIdAsync对卡片中的文本元素实现"打字机"式的文字输出效果租户令牌PUT
DeleteCardElementByIdAsync删除指定卡片实体中的组件租户令牌DELETE

函数详细内容

创建卡片组件

  • 函数签名
    csharp
    Task<FeishuNullDataApiResult?> CreateCardElementAsync(
         [Path] string card_id,
         [Body] CreateCardElementRequest cardElementRequest,
         CancellationToken cancellationToken = default);
  • 认证:租户令牌
  • 参数
    • card_id ✅ 必填:卡片实体 ID
      • 类型:string
      • 含义:要添加组件的卡片实体唯一标识
      • 示例值:"7355372766134157313"
    • cardElementRequest ✅ 必填:新增卡片组件请求体
      • 类型:CreateCardElementRequest
      • 含义:包含要添加的组件内容和位置信息
      • 示例值:包含 element 定义和插入位置的对象
    • cancellationToken ⚪ 可选:取消操作令牌对象
  • 响应
    json
    {
      "code": 0,
      "msg": "success",
      "data": null
    }
  • 说明:新增的组件会根据请求中指定的位置插入到卡片中
  • 代码示例
    typescript
    const createElementRequest = {
      element: {
        tag: "div",
        text: {
          content: "**新增的标题**",
          tag": "lark_md"
        },
        element_id: "new_title_1"
      },
      insert_position: {
        type: "AFTER",
        element_id: "existing_element_1"
      }
    };
    
    await feishuClient.CreateCardElementAsync(
      "7355372766134157313", 
      createElementRequest
    );

更新卡片组件

  • 函数签名
    csharp
    Task<FeishuNullDataApiResult?> UpdateCardElementByIdAsync(
        [Path] string card_id,
        [Path] string element_id,
        [Body] UpdateCardElementRequest cardElementRequest,
        CancellationToken cancellationToken = default);
  • 认证:租户令牌
  • 参数
    • card_id ✅ 必填:卡片实体 ID
      • 类型:string
      • 含义:包含要更新组件的卡片实体唯一标识
      • 示例值:"7355372766134157313"
    • element_id ✅ 必填:组件 ID
      • 类型:string
      • 含义:对应卡片 JSON 中组件的 element_id 属性,由开发者自定义
      • 示例值:"markdown_1"
    • cardElementRequest ✅ 必填:更新卡片组件请求体
      • 类型:UpdateCardElementRequest
      • 含义:包含完整的新组件定义
      • 示例值:包含新组件内容的对象
    • cancellationToken ⚪ 可选:取消操作令牌对象
  • 响应
    json
    {
      "code": 0,
      "msg": "success",
      "data": null
    }
  • 说明:会完全替换指定的组件为新的组件定义
  • 代码示例
    typescript
    const updateElementRequest = {
      element: {
        tag: "div",
        text: {
          content: "**更新后的 Markdown 内容**",
          tag": "lark_md"
        },
        element_id: "markdown_1"
      }
    };
    
    await feishuClient.UpdateCardElementByIdAsync(
      "7355372766134157313", 
      "markdown_1", 
      updateElementRequest
    );

更新卡片组件属性

  • 函数签名
    csharp
    Task<FeishuNullDataApiResult?> UpdateCardElementAttributeByIdAsync(
       [Path] string card_id,
       [Path] string element_id,
       [Body] UpdateCardElementAttributeRequest cardElementRequest,
       CancellationToken cancellationToken = default);
  • 认证:租户令牌
  • 参数
    • card_id ✅ 必填:卡片实体 ID
      • 类型:string
      • 含义:包含要更新组件属性的卡片实体唯一标识
      • 示例值:"7355372766134157313"
    • element_id ✅ 必填:组件 ID
      • 类型:string
      • 含义:对应卡片 JSON 中组件的 element_id 属性,由开发者自定义
      • 示例值:"markdown_1"
    • cardElementRequest ✅ 必填:更新卡片组件属性请求体
      • 类型:UpdateCardElementAttributeRequest
      • 含义:包含要更新的组件属性信息
      • 示例值:包含具体属性修改内容的对象
    • cancellationToken ⚪ 可选:取消操作令牌对象
  • 响应
    json
    {
      "code": 0,
      "msg": "success",
      "data": null
    }
  • 说明:仅更新组件的特定属性,保留其他属性不变
  • 代码示例
    typescript
    const updateAttributeRequest = {
      attributes: {
        text: {
          content: "**仅更新文本内容**",
          tag": "lark_md"
        }
      }
    };
    
    await feishuClient.UpdateCardElementAttributeByIdAsync(
      "7355372766134157313", 
      "markdown_1", 
      updateAttributeRequest
    );

流式更新卡片文本

  • 函数签名
    csharp
    Task<FeishuNullDataApiResult?> StreamUpdateCardTextByIdAsync(
      [Path] string card_id,
      [Path] string element_id,
      [Body] StreamUpdateTextRequest cardElementRequest,
      CancellationToken cancellationToken = default);
  • 认证:租户令牌
  • 参数
    • card_id ✅ 必填:卡片实体 ID
      • 类型:string
      • 含义:包含文本组件的卡片实体唯一标识
      • 示例值:"7355372766134157313"
    • element_id ✅ 必填:组件 ID
      • 类型:string
      • 含义:对应卡片 JSON 中组件的 element_id 属性,由开发者自定义
      • 示例值:"markdown_1"
    • cardElementRequest ✅ 必填:流式更新文本请求体
      • 类型:StreamUpdateTextRequest
      • 含义:包含流式文本内容和配置信息
      • 示例值:包含 text_content 和流式更新参数的对象
    • cancellationToken ⚪ 可选:取消操作令牌对象
  • 响应
    json
    {
      "code": 0,
      "msg": "success",
      "data": null
    }
  • 说明:只支持普通文本元素(plain_text)或富文本组件(markdown),可实现打字机效果
  • 代码示例
    typescript
    const streamUpdateRequest = {
      text_content: {
        content: "正在流式输出的文本内容...",
        tag": "plain_text"
      },
      options: {
        stream_type: "type_writer",
        speed: 100
      }
    };
    
    await feishuClient.StreamUpdateCardTextByIdAsync(
      "7355372766134157313", 
      "markdown_1", 
      streamUpdateRequest
    );

删除卡片组件

  • 函数签名
    csharp
    Task<FeishuNullDataApiResult?> DeleteCardElementByIdAsync(
    [Path] string card_id,
    [Path] string element_id,
    [Body] DeleteCardElementRequest cardElementRequest,
    CancellationToken cancellationToken = default);
  • 认证:租户令牌
  • 参数
    • card_id ✅ 必填:卡片实体 ID
      • 类型:string
      • 含义:包含要删除组件的卡片实体唯一标识
      • 示例值:"7355372766134157313"
    • element_id ✅ 必填:组件 ID
      • 类型:string
      • 含义:对应卡片 JSON 中组件的 element_id 属性,由开发者自定义
      • 示例值:"markdown_1"
    • cardElementRequest ✅ 必填:删除卡片组件请求体
      • 类型:DeleteCardElementRequest
      • 含义:包含删除操作的确认信息
      • 示例值:通常包含 delete_key 等验证字段
    • cancellationToken ⚪ 可选:取消操作令牌对象
  • 响应
    json
    {
      "code": 0,
      "msg": "success",
      "data": null
    }
  • 说明:删除操作不可逆,请确认组件 ID 的正确性
  • 代码示例
    typescript
    const deleteElementRequest = {
      delete_key: "confirm_delete"
    };
    
    await feishuClient.DeleteCardElementByIdAsync(
      "7355372766134157313", 
      "markdown_1", 
      deleteElementRequest
    );