前两天折腾了一个有意思的东西:把OpenClaw和飞书打通了。现在我在飞书上直接@机器人,就能让AI帮我干活了。听起来很美好是吧?但配置过程真是一波三折,踩了不少坑。今天就把整个过程记录下来,给想折腾的朋友避个雷。
一开始就不顺利
本来想着这事应该挺简单的,结果一上来就报错:Plugin install failed: npm install failed。
一查发现,原来我之前自己试着配过一次,在本地建了个插件。但新版OpenClaw其实已经内置了飞书插件,两个插件冲突了。而且那个本地插件的package.json里用了workspace:*这种协议,npm根本不认识。
解决办法简单粗暴:删掉本地的,用内置的。
rm -rf ~/.openclaw/extensions/feishu
WebUI突然打不开
插件问题解决了,但WebUI又挂了。看日志发现是gateway.tailscale.mode配置错了。之前手滑写成了"on",但这个配置只认"off"、"kernel"或"userspace"。
赶紧恢复备份配置,重启Gateway,总算能进界面了。
飞书连不上:内网穿透登场
接下来是重头戏——让飞书能连上OpenClaw。
问题是OpenClaw默认只监听127.0.0.1,飞书服务器在外面根本访问不到。这时候就得请出内网穿透了。
我用的方案是ngrok,免费够用:
# 下载安装ngrok
curl -sLo ngrok.zip "https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-darwin-arm64.zip"
unzip ngrok.zip -d ~/.local/bin/
# 启动隧道
ngrok http 3003
启动后会给你一个类似https://xxx.ngrok-free.dev的公网地址,这就是飞书能访问的入口了。
URL配错了,卡了半小时
拿到ngrok地址后,我兴冲冲地填到飞书后台的Webhook URL里,结果提示”请求3秒超时”。
查了半天源码才发现,OpenClaw飞书插件监听的路径是/feishu/events,不是/webhook!
改成正确的URL后,验证一下就过了:
curl -X POST https://你的ngrok地址/feishu/events \
-d '{"type":"url_verification","challenge":"test123"}'
发了消息没反应?还得加事件订阅
Webhook连上了,但发消息还是没反应。原来飞书不会默认推送消息事件,需要在后台手动添加订阅。
关键事件是这个:im.message.receive_v1(接收消息)。
同时还得给机器人开通权限:im:message:send(发消息)、im:message.p2p_msg(单聊)、im:message.group_msg(群聊)。
最后一关:用户授权
终于能收到消息了,但机器人回复说:
OpenClaw: access not configured.
Your Feishu user id: xxxxxx
Pairing code: WYY55E2S
Ask the bot owner to approve…
这是OpenClaw的安全机制,新用户需要主人批准。在WebUI或者命令行执行:
openclaw pairing approve feishu WYY55E2S
批准后,终于能正常对话了!
最后检查一下
整个过程走下来,各个环节都要核对好:
- OpenClaw Gateway运行正常
- 飞书Webhook在监听
- ngrok隧道在线
- 飞书后台URL配置正确
- 事件订阅已添加
- 用户已授权
现在我在手机上打开飞书,@一下机器人,AI就能帮我查资料、写代码、管理任务了。还是挺香的。
如果你也在折腾这个,有问题欢迎交流。
