1---2name: feishu3description: Feishu4---56# Feishu Suite Skill78## 环境变量9- `FEISHU_APP_ID`10- `FEISHU_APP_SECRET`1112## API 总览1314### 文档/知识库/云空间 (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)`3132### 表格/多维表格 (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?)`4849### 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?)`6667### 组织/通讯录/日程/任务 (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)`7879### AI 能力 (AI)80- `translateText(text, sourceLang, targetLang)`81- `detectLanguage(text)`82- `ocrImage(filePath)`83- `speechToText(filePath, format?)`8485## 💡 飞书协作最佳实践 (Best Practices)8687### 1. 文档权限与 Fallback 策略88- **预先授权**:在向他人发送飞书文档链接前,**必须**先通过 `updatePublicPermission` 或 `addMemberPermission` 开启可读权限。89- **权限不足时的 Fallback (重要)**:如果应用缺少 `docs:permission.setting:write_only` 权限(报错 99991672),请采用以下方案:90 - **方案 A (推荐):父文件夹继承**。在一个已公开的文件夹内创建文档,文档会自动继承文件夹的权限,无需额外调用权限 API。91 - **方案 B:内容提取**。若无法授权且必须即时交付,先将文档内容提取并通过 IM 消息(如 `replyInThread`)直接发送原文。92 - **方案 C:知识库 (Wiki)**。在已公开的知识库空间创建页面,通常不需要二次授权。93- **避免尴尬**:严禁发送“对方无权查看”的文档,这会降低协作效率。9495### 2. 沟通礼仪与情感96- **表情回复**:积极使用飞书表情(`react` API)回复他人消息。适时的表情符号能传达温暖和认可,让对方感到开心。97- **话题回复**:在群聊人数较多或讨论特定技术/细节时,优先使用 `replyInThread`。这样可以保持主聊天界面的整洁,避免刷屏打扰不相关的成员。98- **视情况而定**:对于需要全员关注的重要通知,可以直接发到主群。