OpenClaw 消息推送配置指南:钉钉 + 飞书一站式搞定

OpenClaw 消息推送配置指南:钉钉 + 飞书一站式搞定

作者: 杰克伍
发布时间: 2026-03-14
阅读时间: 约 8 分钟
难度: ⭐⭐ 入门级


前言

最近折腾 OpenClaw 这个自动化工具,发现它有个特别实用的功能——可以自动发消息通知。想象一下,你的博客备份完成了、服务器出问题了、或者任何你想通知的事情,都能自动推送到钉钉或飞书,是不是很爽?

但是!配置过程可真把我折腾得够呛。网上教程要么太老,要么缺胳膊少腿的。我踩了一堆坑,花了大半天才搞定。今天把这个过程完整记录下来,让你少走弯路。

本文适合谁看

  • 刚接触 OpenClaw 的小白
  • 想用钉钉/飞书接收通知的朋友
  • 被配置教程坑过的倒霉蛋(比如我)

本文不适合

  • 大神(请绕行)
  • 不想动手只想白嫖的(建议直接复制我的配置)

先看看最终效果

配置成功后,你的 OpenClaw 就能自动发送消息

是不是很直观?开始吧!


准备工作

1. 环境要求

  • OpenClaw 已安装(废话)
  • 有钉钉或飞书账号(二选一或都要)
  • 能访问外网(下载机器人配置页面)

2. 选择哪个渠道?

我两个都配置了,说说感受:

对比项飞书钉钉
配置难度⭐⭐ 简单⭐⭐⭐ 中等
消息格式卡片式,好看Markdown,简洁
推送速度秒到秒到
推荐指数⭐⭐⭐⭐⭐⭐⭐⭐⭐

我的建议:优先飞书,界面更友好。钉钉作为备用。


飞书配置(推荐)

第一步:创建飞书机器人

  1. 打开飞书,创建一个群(可以只拉自己)
  2. 群设置 → 添加机器人 → 自定义机器人
  3. 填写机器人信息:
  • 名称:随便填,比如”OpenClaw 通知”
  • 头像:可选
  • 重要:勾选”签名验证”
  1. 复制两个关键信息:
  • Webhook 地址(一长串 URL)
  • 签名密钥(SEC 开头的字符串)

⚠️ 注意:这两个信息要保存好,后面要用!

第二步:创建发送脚本

在 OpenClaw 的工作空间创建脚本:

mkdir -p /root/.openclaw/workspace/scripts
nano /root/.openclaw/workspace/scripts/feishu_send.py

粘贴以下代码:

#!/usr/bin/env python3
"""
飞书机器人消息发送脚本
用法:python3 feishu_send.py "消息内容"
"""

import hmac
import hashlib
import base64
import time
import json
import urllib.request
import sys
import os

# 配置(从环境变量读取,更安全)
WEBHOOK_URL = os.environ.get('FEISHU_WEBHOOK_URL', '你的 Webhook URL')
SECRET = os.environ.get('FEISHU_SECRET', '你的 Secret')

def generate_sign(secret, timestamp):
    """生成飞书签名"""
    string_to_sign = '{}\n{}'.format(timestamp, secret)
    hmac_code = hmac.new(string_to_sign.encode("utf-8"), digestmod=hashlib.sha256).digest()
    sign = base64.b64encode(hmac_code).decode('utf-8')
    return sign

def send_feishu(message, title="通知"):
    """发送飞书消息"""
    timestamp = str(int(time.time()))
    sign = generate_sign(SECRET, timestamp)

    data = {
        "msg_type": "interactive",
        "timestamp": timestamp,
        "sign": sign,
        "card": {
            "header": {
                "title": {"tag": "plain_text", "content": title},
                "template": "blue"
            },
            "elements": [{"tag": "markdown", "content": message}]
        }
    }

    req = urllib.request.Request(
        WEBHOOK_URL,
        data=json.dumps(data).encode('utf-8'),
        headers={'Content-Type': 'application/json'}
    )
    response = urllib.request.urlopen(req)
    result = json.loads(response.read().decode('utf-8'))
    return result

if __name__ == "__main__":
    if len(sys.argv) < 2:
        msg = "## 🤖 测试消息\n\n**时间**: {}\n\n配置成功!".format(
            time.strftime('%Y-%m-%d %H:%M:%S')
        )
    else:
        msg = sys.argv[1]

    result = send_feishu(msg)
    print(json.dumps(result, indent=2, ensure_ascii=False))

保存后给执行权限:

chmod +x /root/.openclaw/workspace/scripts/feishu_send.py

第三步:测试发送

# 设置环境变量(临时)
export FEISHU_WEBHOOK_URL="https://open.feishu.cn/open-apis/bot/v2/hook/xxx"
export FEISHU_SECRET="xxx"

# 测试
python3 /root/.openclaw/workspace/scripts/feishu_send.py "第一条飞书消息!"

如果飞书收到消息,恭喜!配置成功!🎉

第四步:永久配置(可选)

创建环境变量文件:

nano /root/.openclaw/workspace/.env

添加:

export FEISHU_WEBHOOK_URL="你的 Webhook URL"
export FEISHU_SECRET="你的 Secret"

设置权限(重要!):

chmod 600 /root/.openclaw/workspace/.env

以后使用前先加载:

source /root/.openclaw/workspace/.env

钉钉配置(备用)

第一步:创建钉钉机器人

  1. 钉钉群设置 → 智能群助手 → 添加机器人
  2. 选择”自定义”机器人
  3. 填写信息,勾选”加签”
  4. 复制 Webhook 和加签密钥

第二步:创建发送脚本

nano /root/.openclaw/workspace/scripts/dingtalk_send.py

代码:

#!/usr/bin/env python3
"""
钉钉机器人消息发送脚本
用法:python3 dingtalk_send.py "消息内容"
"""

import hmac
import hashlib
import base64
import time
import json
import urllib.request
import urllib.parse
import sys

# 配置
WEBHOOK = "你的 Webhook URL"
SECRET = "你的 Secret"

def send_dingtalk(message, title="通知", at_all=True):
    """发送钉钉消息"""
    timestamp = str(round(time.time() * 1000))
    secret_enc = SECRET.encode('utf-8')
    string_to_sign = '{}\n{}'.format(timestamp, SECRET)
    string_to_sign_enc = string_to_sign.encode('utf-8')
    hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
    sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))

    url = f"{WEBHOOK}&timestamp={timestamp}&sign={sign}"

    data = {
        "msgtype": "markdown",
        "markdown": {
            "title": title,
            "text": message
        },
        "at": {"atAll": at_all}
    }

    req = urllib.request.Request(
        url,
        data=json.dumps(data).encode('utf-8'),
        headers={'Content-Type': 'application/json'}
    )
    response = urllib.request.urlopen(req)
    result = json.loads(response.read().decode('utf-8'))
    return result

if __name__ == "__main__":
    msg = sys.argv[1] if len(sys.argv) > 1 else "## 测试\n\n配置成功!"
    result = send_dingtalk(msg)
    print(json.dumps(result, indent=2, ensure_ascii=False))

第三步:测试

python3 /root/.openclaw/workspace/scripts/dingtalk_send.py "第一条钉钉消息!"

我踩过的坑(重点!)

坑 1:配置写入 openclaw.json 导致重启

一开始我想把配置写到 openclaw.json 里,结果:

{
  "messaging": {
    "dingtalk": {...}  // ❌ 错误!OpenClaw 不支持这个配置
  }
}

后果:容器无限重启,配置报错:

Invalid config: Unrecognized key: "messaging"

解决方案:用脚本方式,不修改主配置。

坑 2:签名生成错误

飞书和钉钉的签名算法不一样:

  • 飞书timestamp\nsecret
  • 钉钉timestamp\nsecret(但 URL 参数格式不同)

我第一次混用了,结果一直报错。后来仔细看文档才发现区别。

坑 3:环境变量泄露

.env 文件包含敏感信息,我差点提交到 Git。

解决方案

# 添加到 .gitignore
echo ".env" >> .gitignore

# 设置文件权限
chmod 600 .env

坑 4:脚本没有执行权限

# 忘记给权限会这样
python3 feishu_send.py
# Permission denied

# 解决
chmod +x feishu_send.py

实际使用场景

配置好了,总得用起来。分享几个我常用的场景:

1. 博客备份通知

# crontab 配置
0 3 * * * source /root/.openclaw/workspace/.env && \
  wp db export /backup/db-$(date +\%F).sql && \
  python3 /root/.openclaw/workspace/scripts/feishu_send.py \
  "## 博客备份完成\n\n时间:$(date)\n状态:✅ 成功"

2. 网站监控告警

#!/bin/bash
source /root/.openclaw/workspace/.env

if ! curl -s https://blog.okwujun.pw > /dev/null; then
  python3 /root/.openclaw/workspace/scripts/feishu_send.py \
  "## ⚠️ 网站异常\n\n博客无法访问!\n时间:$(date)"
fi

3. 在 OpenClaw 对话中直接调用

"帮我发飞书通知:服务器维护完成"

我会在后台调用脚本发送,超方便!


最佳实践

1. 消息格式建议

  • 标题:用 emoji 开头,一眼看出类型
  • 🎉 任务完成
  • ⚠️ 异常告警
  • 通知
  • 内容:简洁明了,包含关键信息
  • 时间
  • 状态
  • 后续操作(如有)

2. 发送频率控制

  • 告警类:立即发送
  • 通知类:避免短时间大量发送
  • 日报类:固定时间发送

3. 安全建议

  • ✅ 定期轮换密钥(飞书/钉钉后台可重置)
  • ✅ 不要公开 Webhook URL
  • ✅ 生产环境用环境变量,不要硬编码

常见问题

Q1: 消息发送失败,报错”签名不匹配”

原因:签名生成错误
解决:检查时间戳格式和签名算法

Q2: 飞书收到消息但格式乱了

原因:Markdown 格式错误
解决:检查换行符和特殊字符转义

Q3: 钉钉消息@不了人

原因:需要配置手机号
解决:在 at 参数中添加 atMobiles


总结

配置过程虽然踩了不少坑,但最终效果还是很香的。现在我的博客备份、服务器监控、任务完成都会自动推送到飞书,再也不用手动检查了。

核心要点

  1. 优先用脚本方式,别改主配置
  2. 飞书配置更简单,推荐优先
  3. 环境变量要保护好,别泄露
  4. 消息格式要简洁,别太啰嗦

下一步:打算用这个配置做更多自动化,比如:

  • WordPress 插件更新通知
  • 服务器资源监控
  • 博客访问统计日报

有问题的欢迎在评论区留言,看到必回!


参考资料


觉得有用?分享给更多人! 👍

本文作者:杰克伍,一个喜欢折腾的技术博主。欢迎访问 杰克伍 de 博客 获取更多技术干货!

发表评论