@timoxue/openclaw-feishu-relay
v1.6.2
Published
OpenClaw Feishu Relay Channel - Connect to Feishu Relay Server for multi-user support
Downloads
1,332
Maintainers
Readme
OpenClaw Feishu Relay Channel
OpenClaw 通道插件,通过 Feishu 中继服务器实现多用户支持。
功能特性
- ✅ 多用户支持: 多个 OpenClaw 实例共享同一个飞书机器人
- ✅ 消息路由: 中继服务器按飞书 user_id 路由消息到对应的 OpenClaw 实例
- ✅ 自动重连: WebSocket 连接断开后自动重连
- ✅ 心跳保持: 自动发送心跳保持连接活跃
- ✅ 认证支持: JWT Token 认证机制
架构
┌──────────────────────────────────────────────┐
│ 飞书平台(1个机器人) │
│ App: cli_a902d36ce638dcb2 │
└───────────────────┬──────────────────────────┘
│
▼
┌──────────────────────────────────────────────┐
│ Feishu 中继服务器 │
│ 按飞书 user_id 路由消息 │
└─────┬──────────────┬──────────────┬──────────┘
│ │ │
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│OpenClaw A│ │OpenClaw B│ │OpenClaw C│
│用户 A专属 │ │用户 B专属 │ │用户 C专属 │
└─────────┘ └─────────┘ └─────────┘安装
方法 1: 使用交互式安装脚本(推荐)
# 克隆仓库
git clone https://github.com/timoxue/openclaw-channel-feishu-relay.git
cd openclaw-channel-feishu-relay
# 运行安装脚本(会自动安装插件并进入配置流程)
node install.js方法 2: 手动安装
cd ~/.openclaw/extensions
git clone https://github.com/timoxue/openclaw-channel-feishu-relay.git
cd openclaw-channel-feishu-relay
npm install或使用 npm 直接安装(发布后):
npm install @timoxue/openclaw-feishu-relay
openclaw-feishu-relay-setup配置
运行交互式配置脚本
插件安装后,运行配置脚本:
# 如果在插件目录中
npm run setup
# 或者直接运行
node scripts/setup.js配置脚本会引导你完成以下步骤:
配置中继服务器连接
- 输入中继服务器地址(默认: 43.160.237.217)
- 输入 API 端口(默认: 5178)
- 输入 WebSocket 端口(默认: 5179)
飞书 OAuth 授权
- 自动打开浏览器显示二维码登录页面
- 使用飞书 App 扫描二维码
- 在飞书中授权登录
- 复制显示的 Token 并粘贴到配置脚本
获取 LLM 配置
- 自动从中继服务器获取 glm-4.7 的 API key
- 自动获取机器人应用的 appid 和 appsecret
更新 OpenClaw 配置
- 自动更新
~/.openclaw/openclaw.json - 自动启用插件
- 自动更新
手动配置
如果想手动配置,编辑 ~/.openclaw/openclaw.json:
{
"channels": {
"feishu-relay": {
"enabled": true,
"relayUrl": "ws://YOUR_RELAY_SERVER_IP:5179",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}
}配置说明
| 字段 | 必填 | 说明 |
|------|------|------|
| enabled | 是 | 是否启用该通道 |
| relayUrl | 是 | 中继服务器 WebSocket 地址 |
| token | 是 | 从中继服务器获取的认证 Token |
消息格式
接收消息 (飞书 → OpenClaw)
{
platform: 'feishu',
userId: 'ou_xxxxx',
chatId: 'oc_xxxxx',
chatType: 'p2p',
messageId: 'om_xxxxx',
timestamp: '2026-02-13T10:30:00.000Z',
content: '用户发送的消息',
raw: {
type: 'message',
content: '用户发送的消息',
messageId: 'om_xxxxx',
chatType: 'p2p',
chatId: 'oc_xxxxx'
}
}发送消息 (OpenClaw → 飞书)
文本消息:
await channel.sendText('ou_xxxxx', '回复的消息');富文本消息:
await channel.sendPost('ou_xxxxx', {
post: {
zh_cn: {
title: '标题',
content: [[{ tag: 'text', text: '内容' }]]
}
}
});API
方法
| 方法 | 参数 | 说明 |
|------|------|------|
| start() | - | 启动通道 |
| stop() | - | 停止通道 |
| sendText(to, text) | to: 飞书user_id, text: 文本内容 | 发送文本消息 |
| sendPost(to, content) | to: 飞书user_id, content: 富文本内容 | 发送富文本消息 |
| sendMessage(to, content) | to: 飞书user_id, content: 消息内容 | 发送消息 |
| getStatus() | - | 获取通道状态 |
| getQRCodeUrl() | - | 获取二维码登录页面 URL |
| getSetupInfo() | - | 获取配置说明和步骤 |
事件
通道会触发以下事件到 OpenClaw:
message: 收到新消息时触发
中继服务器部署
环境变量
FEISHU_APP_ID=cli_a902d36ce638dcb2
FEISHU_APP_SECRET=your_app_secret
FEISHU_ENCRYPT_KEY=
PORT=5178
WS_PORT=5179Docker 部署
git clone https://github.com/timoxue/openclaw-relay-server.git
cd openclaw-relay-server
cp .env.example .env
# 编辑 .env 配置
docker-compose up -d故障排查
认证失败
检查:
- Token 是否正确
- Token 是否过期
- 中继服务器是否正常运行
消息无法接收
检查:
- OpenClaw 是否已连接并认证成功
- 飞书 user_id 是否正确
- 中继服务器日志
连接断开
- 通道会自动重连,无需手动处理
- 检查网络连接和中继服务器状态
许可证
MIT License
