Bugfix/fix feishu plugins (#8443)

Co-authored-by: 黎斌 <libin.23@bytedance.com>
This commit is contained in:
走在修行的大街上 2024-09-14 18:59:06 +08:00 committed by GitHub
parent 88c9834ef2
commit 72b7f8a949
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 152 additions and 93 deletions

View File

@ -12,6 +12,8 @@ class GetDocumentRawContentTool(BuiltinTool):
client = FeishuRequest(app_id, app_secret) client = FeishuRequest(app_id, app_secret)
document_id = tool_parameters.get("document_id") document_id = tool_parameters.get("document_id")
mode = tool_parameters.get("mode")
lang = tool_parameters.get("lang", 0)
res = client.get_document_raw_content(document_id) res = client.get_document_content(document_id, mode, lang)
return self.create_json_message(res) return self.create_json_message(res)

View File

@ -0,0 +1,49 @@
identity:
name: get_document_content
author: Doug Lea
label:
en_US: Get Document Content
zh_Hans: 获取飞书云文档的内容
description:
human:
en_US: Get document content
zh_Hans: 获取飞书云文档的内容
llm: A tool for retrieving content from Feishu cloud documents.
parameters:
- name: document_id
type: string
required: true
label:
en_US: document_id
zh_Hans: 飞书文档的唯一标识
human_description:
en_US: Unique identifier for a Feishu document. You can also input the document's URL.
zh_Hans: 飞书文档的唯一标识,支持输入文档的 URL。
llm_description: 飞书文档的唯一标识,支持输入文档的 URL。
form: llm
- name: mode
type: string
required: false
label:
en_US: mode
zh_Hans: 文档返回格式
human_description:
en_US: Format of the document return, optional values are text, markdown, can be empty, default is markdown.
zh_Hans: 文档返回格式,可选值有 text、markdown可以为空默认值为 markdown。
llm_description: 文档返回格式,可选值有 text、markdown可以为空默认值为 markdown。
form: llm
- name: lang
type: number
required: false
default: 0
label:
en_US: lang
zh_Hans: 指定@用户的语言
human_description:
en_US: |
Specifies the language for MentionUser, optional values are [0, 1]. 0: User's default name, 1: User's English name, default is 0.
zh_Hans: 指定返回的 MentionUser即 @用户 的语言,可选值有 [0,1]。0该用户的默认名称1该用户的英文名称默认值为 0。
llm_description: 指定返回的 MentionUser即 @用户 的语言,可选值有 [0,1]。0该用户的默认名称1该用户的英文名称默认值为 0。
form: llm

View File

@ -1,23 +0,0 @@
identity:
name: get_document_raw_content
author: Doug Lea
label:
en_US: Get Document Raw Content
zh_Hans: 获取文档纯文本内容
description:
human:
en_US: Get document raw content
zh_Hans: 获取文档纯文本内容
llm: A tool for getting the plain text content of Feishu documents
parameters:
- name: document_id
type: string
required: true
label:
en_US: document_id
zh_Hans: 飞书文档的唯一标识
human_description:
en_US: Unique ID of Feishu document document_id
zh_Hans: 飞书文档的唯一标识 document_id
llm_description: 飞书文档的唯一标识 document_id
form: llm

View File

@ -1,48 +0,0 @@
identity:
name: list_document_block
author: Doug Lea
label:
en_US: List Document Block
zh_Hans: 获取飞书文档所有块
description:
human:
en_US: List document block
zh_Hans: 获取飞书文档所有块的富文本内容并分页返回。
llm: A tool to get all blocks of Feishu documents
parameters:
- name: document_id
type: string
required: true
label:
en_US: document_id
zh_Hans: 飞书文档的唯一标识
human_description:
en_US: Unique ID of Feishu document document_id
zh_Hans: 飞书文档的唯一标识 document_id
llm_description: 飞书文档的唯一标识 document_id
form: llm
- name: page_size
type: number
required: false
default: 500
label:
en_US: page_size
zh_Hans: 分页大小
human_description:
en_US: Paging size, the default and maximum value is 500.
zh_Hans: 分页大小, 默认值和最大值为 500。
llm_description: 分页大小, 表示一次请求最多返回多少条数据,默认值和最大值为 500。
form: llm
- name: page_token
type: string
required: false
label:
en_US: page_token
zh_Hans: 分页标记
human_description:
en_US: Pagination tag, used to paginate query results so that more items can be obtained in the next traversal.
zh_Hans: 分页标记,用于分页查询结果,以便下次遍历时获取更多项。
llm_description: 分页标记,第一次请求不填,表示从头开始遍历;分页查询结果还有更多项时会同时返回新的 page_token下次遍历可采用该 page_token 获取查询结果。
form: llm

View File

@ -15,5 +15,5 @@ class ListDocumentBlockTool(BuiltinTool):
page_size = tool_parameters.get("page_size", 500) page_size = tool_parameters.get("page_size", 500)
page_token = tool_parameters.get("page_token", "") page_token = tool_parameters.get("page_token", "")
res = client.list_document_block(document_id, page_token, page_size) res = client.list_document_blocks(document_id, page_token, page_size)
return self.create_json_message(res) return self.create_json_message(res)

View File

@ -0,0 +1,74 @@
identity:
name: list_document_blocks
author: Doug Lea
label:
en_US: List Document Blocks
zh_Hans: 获取飞书文档所有块
description:
human:
en_US: List document blocks
zh_Hans: 获取飞书文档所有块的富文本内容并分页返回
llm: A tool to get all blocks of Feishu documents
parameters:
- name: document_id
type: string
required: true
label:
en_US: document_id
zh_Hans: 飞书文档的唯一标识
human_description:
en_US: Unique identifier for a Feishu document. You can also input the document's URL.
zh_Hans: 飞书文档的唯一标识,支持输入文档的 URL。
llm_description: 飞书文档的唯一标识,支持输入文档的 URL。
form: llm
- name: user_id_type
type: select
required: false
options:
- value: open_id
label:
en_US: open_id
zh_Hans: open_id
- value: union_id
label:
en_US: union_id
zh_Hans: union_id
- value: user_id
label:
en_US: user_id
zh_Hans: user_id
default: "open_id"
label:
en_US: user_id_type
zh_Hans: 用户 ID 类型
human_description:
en_US: User ID type, optional values are open_id, union_id, user_id, with a default value of open_id.
zh_Hans: 用户 ID 类型,可选值有 open_id、union_id、user_id默认值为 open_id。
llm_description: 用户 ID 类型,可选值有 open_id、union_id、user_id默认值为 open_id。
form: llm
- name: page_size
type: number
required: false
default: "500"
label:
en_US: page_size
zh_Hans: 分页大小
human_description:
en_US: Paging size, the default and maximum value is 500.
zh_Hans: 分页大小, 默认值和最大值为 500。
llm_description: 分页大小, 表示一次请求最多返回多少条数据,默认值和最大值为 500。
form: llm
- name: page_token
type: string
required: false
label:
en_US: page_token
zh_Hans: 分页标记
human_description:
en_US: Pagination token used to navigate through query results, allowing retrieval of additional items in subsequent requests.
zh_Hans: 分页标记,用于分页查询结果,以便下次遍历时获取更多项。
llm_description: 分页标记,第一次请求不填,表示从头开始遍历;分页查询结果还有更多项时会同时返回新的 page_token下次遍历可采用该 page_token 获取查询结果。
form: llm

View File

@ -17,33 +17,35 @@ parameters:
en_US: document_id en_US: document_id
zh_Hans: 飞书文档的唯一标识 zh_Hans: 飞书文档的唯一标识
human_description: human_description:
en_US: Unique ID of Feishu document document_id en_US: Unique identifier for a Feishu document. You can also input the document's URL.
zh_Hans: 飞书文档的唯一标识 document_id zh_Hans: 飞书文档的唯一标识,支持输入文档的 URL。
llm_description: 飞书文档的唯一标识 document_id llm_description: 飞书文档的唯一标识,支持输入文档的 URL。
form: llm form: llm
- name: content - name: content
type: string type: string
required: true required: true
label: label:
en_US: document content en_US: Plain text or Markdown content
zh_Hans: 文档内容 zh_Hans: 纯文本或 Markdown 内容
human_description: human_description:
en_US: Document content, supports markdown syntax, can be empty. en_US: Plain text or Markdown content. Note that embedded tables in the document should not have merged cells.
zh_Hans: 文档内容,支持 markdown 语法,可以为空 zh_Hans: 纯文本或 Markdown 内容。注意文档的内嵌套表格不允许有单元格合并
llm_description: llm_description: 纯文本或 Markdown 内容,注意文档的内嵌套表格不允许有单元格合并。
form: llm form: llm
- name: position - name: position
type: select type: string
required: true required: false
default: start
label: label:
en_US: Choose where to add content en_US: position
zh_Hans: 选择添加内容的位置 zh_Hans: 添加位置
human_description: human_description:
en_US: Please fill in start or end to add content at the beginning or end of the document respectively. en_US: |
zh_Hans: 请填入 start 或 end, 分别表示在文档开头(start)或结尾(end)添加内容。 Enumeration values: start or end. Use 'start' to add content at the beginning of the document, and 'end' to add content at the end. The default value is 'end'.
zh_Hans: 枚举值start 或 end。使用 'start' 在文档开头添加内容,使用 'end' 在文档结尾添加内容,默认值为 'end'。
llm_description: |
枚举值 start、endstart: 在文档开头添加内容end: 在文档结尾添加内容,默认值为 end。
form: llm form: llm
options: options:
- value: start - value: start
@ -54,3 +56,4 @@ parameters:
label: label:
en_US: end en_US: end
zh_Hans: 在文档结尾添加内容 zh_Hans: 在文档结尾添加内容
default: start

View File

@ -76,9 +76,9 @@ class FeishuRequest:
url = "https://lark-plugin-api.solutionsuite.cn/lark-plugin/document/write_document" url = "https://lark-plugin-api.solutionsuite.cn/lark-plugin/document/write_document"
payload = {"document_id": document_id, "content": content, "position": position} payload = {"document_id": document_id, "content": content, "position": position}
res = self._send_request(url, payload=payload) res = self._send_request(url, payload=payload)
return res.get("data") return res
def get_document_raw_content(self, document_id: str) -> dict: def get_document_content(self, document_id: str, mode: str, lang: int = 0) -> dict:
""" """
API url: https://open.larkoffice.com/document/server-docs/docs/docs/docx-v1/document/raw_content API url: https://open.larkoffice.com/document/server-docs/docs/docs/docx-v1/document/raw_content
Example Response: Example Response:
@ -92,16 +92,18 @@ class FeishuRequest:
""" # noqa: E501 """ # noqa: E501
params = { params = {
"document_id": document_id, "document_id": document_id,
"mode": mode,
"lang": lang,
} }
url = "https://lark-plugin-api.solutionsuite.cn/lark-plugin/document/get_document_raw_content" url = "https://lark-plugin-api.solutionsuite.cn/lark-plugin/document/get_document_content"
res = self._send_request(url, method="get", params=params) res = self._send_request(url, method="get", params=params)
return res.get("data").get("content") return res.get("data").get("content")
def list_document_block(self, document_id: str, page_token: str, page_size: int = 500) -> dict: def list_document_blocks(self, document_id: str, page_token: str, page_size: int = 500) -> dict:
""" """
API url: https://open.larkoffice.com/document/server-docs/docs/docs/docx-v1/document/list API url: https://open.larkoffice.com/document/server-docs/docs/docs/docx-v1/document/list
""" """
url = "https://lark-plugin-api.solutionsuite.cn/lark-plugin/document/list_document_block" url = "https://lark-plugin-api.solutionsuite.cn/lark-plugin/document/list_document_blocks"
params = { params = {
"document_id": document_id, "document_id": document_id,
"page_size": page_size, "page_size": page_size,