1---2name: feishu3description: Feishu4---5
6# Feishu Suite Skill
7
8## 环境变量
9- `FEISHU_APP_ID`
10- `FEISHU_APP_SECRET`
11
12## API 总览
13
14### 文档/知识库/云空间 (Docs)
15- `createDocument(title, folderToken?)`
16- `getDocument(documentId)`
17- `getDocumentRawContent(documentId)`
18- `listDocumentBlocks(documentId, pageToken?, pageSize?)`
19- `appendText(documentId, text, targetBlockId?)`
20- `appendBlocks(documentId, blocks, targetBlockId?)`
21- `getPublicPermission(token, type?)`
22- `updatePublicPermission(token, type, data)`
23- `addMemberPermission(token, type, memberId, memberType, role)`
24- `listFiles(folderToken?, pageToken?, pageSize?)`
25- `uploadFile(filePath, parentNode, fileName?)`
26- `createFolder(name, folderToken)`
27- `listWikiSpaces(pageToken?, pageSize?)`
28- `getWikiSpace(spaceId)`
29- `listWikiNodes(spaceId, parentNodeToken?, pageToken?, pageSize?)`
30- `getNodeInfo(token)`
31
32### 表格/多维表格 (Data)
33- `createSpreadsheet(title, folderToken?)`
34- `getSpreadsheet(spreadsheetToken)`
35- `getSheetValues(spreadsheetToken, sheetId, range)`
36- `updateSheetValues(spreadsheetToken, sheetId, range, values)`
37- `appendSheetValues(spreadsheetToken, sheetId, range, values)`
38- `prependSheetValues(spreadsheetToken, sheetId, range, values)`
39- `listRecords(appToken, tableId, filter?, sort?, pageToken?, pageSize?)`
40- `getRecord(appToken, tableId, recordId)`
41- `createRecord(appToken, tableId, fields)`
42- `batchCreateRecords(appToken, tableId, records)`
43- `updateRecord(appToken, tableId, recordId, fields)`
44- `batchUpdateRecords(appToken, tableId, records)`
45- `deleteRecord(appToken, tableId, recordId)`
46- `batchDeleteRecords(appToken, tableId, recordIds)`
47- `copyBitable(appToken, name, folderToken?)`
48
49### IM 消息/话题/群聊 (IM)
50- `listMessages(params)`
51- `recallMessage(messageId)`
52- `updateMessage(messageId, content)`
53- `pinMessage(messageId)`
54- `unpinMessage(messageId)`
55- `react(messageId, emoji)`
56- `sendAttachment(receiveId, receiveIdType, filePath, fileName?)`
57- `replyInThread(messageId, content, replyInThread?, msgType?)`
58- `listThreadMessages(chatId, threadId)`
59- `getChatInfo(chatId)`
60- `listChats(pageToken?, pageSize?)`
61- `getChatMembers(chatId, memberIdType?, pageToken?, pageSize?)`
62- `isInChat(chatId)`
63- `createChat(params)`
64- `addChatMembers(chatId, idList, memberIdType?)`
65- `removeChatMembers(chatId, idList, memberIdType?)`
66
67### 组织/通讯录/日程/任务 (Org)
68- `getUser(userId, userIdType?)`
69- `getDepartment(departmentId, userIdType?)`
70- `listDepartmentUsers(departmentId, pageToken?, pageSize?)`
71- `getGroup(groupId, userIdType?)`
72- `listCalendars(pageToken?, pageSize?)`
73- `createCalendarEvent(calendarId, summary, startTime, endTime, description?)`
74- `deleteCalendarEvent(calendarId, eventId)`
75- `listTasks(pageToken?, pageSize?)`
76- `createTask(summary, description?, dueTime?)`
77- `completeTask(taskId)`
78
79### AI 能力 (AI)
80- `translateText(text, sourceLang, targetLang)`
81- `detectLanguage(text)`
82- `ocrImage(filePath)`
83- `speechToText(filePath, format?)`
84
85## 💡 飞书协作最佳实践 (Best Practices)
86
87### 1. 文档权限与 Fallback 策略
88- **预先授权**:在向他人发送飞书文档链接前,**必须**先通过 `updatePublicPermission` 或 `addMemberPermission` 开启可读权限。
89- **权限不足时的 Fallback (重要)**:如果应用缺少 `docs:permission.setting:write_only` 权限(报错 99991672),请采用以下方案:
90 - **方案 A (推荐):父文件夹继承**。在一个已公开的文件夹内创建文档,文档会自动继承文件夹的权限,无需额外调用权限 API。
91 - **方案 B:内容提取**。若无法授权且必须即时交付,先将文档内容提取并通过 IM 消息(如 `replyInThread`)直接发送原文。
92 - **方案 C:知识库 (Wiki)**。在已公开的知识库空间创建页面,通常不需要二次授权。
93- **避免尴尬**:严禁发送“对方无权查看”的文档,这会降低协作效率。
94
95### 2. 沟通礼仪与情感
96- **表情回复**:积极使用飞书表情(`react` API)回复他人消息。适时的表情符号能传达温暖和认可,让对方感到开心。
97- **话题回复**:在群聊人数较多或讨论特定技术/细节时,优先使用 `replyInThread`。这样可以保持主聊天界面的整洁,避免刷屏打扰不相关的成员。
98- **视情况而定**:对于需要全员关注的重要通知,可以直接发到主群。