共计 1590 个字符,预计需要花费 4 分钟才能阅读完成。
什么是飞书 Skill
飞书 Skill 是基于飞书开放平台开发的机器人应用,可以接收用户消息并作出智能响应。典型的应用场景包括:

- 自动回复常见问题
- 处理审批流程
- 集成第三方服务
- 团队协作辅助工具
开发准备
首先需要在 飞书开放平台 注册开发者账号。
创建应用
- 登录飞书开放平台
- 进入开发者后台
- 点击 ” 创建应用 ”
- 填写应用基本信息
- 记录下 App ID 和 App Secret
配置权限
飞书机器人需要特定权限才能正常工作。最常见的几个权限:
- 获取用户发给机器人的单聊消息
- 发送消息
- 获取用户基础信息
实现消息接收接口
以下是 Node.js 实现的完整示例:
const express = require('express');
const crypto = require('crypto');
const app = express();
app.use(express.json());
// 替换为你的应用配置
const APP_ID = 'your_app_id';
const APP_SECRET = 'your_app_secret';
const VERIFICATION_TOKEN = 'your_verification_token';
// 处理飞书事件回调
app.post('/webhook', (req, res) => {
// 1. 验证签名
const signature = req.headers['x-lark-signature'];
const timestamp = req.headers['x-lark-request-timestamp'];
const nonce = req.headers['x-lark-request-nonce'];
const baseString = `${timestamp}\n${nonce}\n${JSON.stringify(req.body)}`;
const hash = crypto.createHmac('sha256', VERIFICATION_TOKEN)
.update(baseString)
.digest('hex');
if (hash !== signature) {return res.status(403).send('Signature verification failed');
}
// 2. 处理不同类型的消息
const {challenge, event} = req.body;
// 处理验证请求
if (challenge) {return res.json({ challenge});
}
// 处理消息事件
if (event && event.message) {
// 这里简单实现一个 echo 机器人
const reply = {
msg_type: 'text',
content: {text: ` 你发送了: ${event.message.content.text}`
}
};
// 3. 构造响应
return res.json(reply);
}
res.status(200).send('OK');
});
app.listen(3000, () => {console.log('Server running on port 3000');
});
常见问题排查
签名验证失败
- 检查 VERIFICATION_TOKEN 是否正确
- 确保时间戳在 5 分钟有效期内
- 验证签名计算逻辑是否正确
消息格式解析错误
- 检查请求头 Content-Type 是否为 application/json
- 确保 body 解析正确
- 参考飞书文档验证消息结构
权限不足
- 检查应用是否申请了所需权限
- 确认管理员是否已审批
- 查看调用接口返回的错误信息
进阶建议
- 使用中间件处理不同类型的消息
- 将敏感信息存储在环境变量中
- 考虑使用 Redis 缓存常用数据
- 实现消息队列处理高并发请求
学习资源
开发飞书 Skill 是一个循序渐进的过程,先从简单的功能开始,逐步添加更复杂的功能。遇到问题时,飞书的开发者文档和社区通常能提供很大帮助。
正文完
