导读:还在钉钉群里手动转发AI日报?让OpenClaw直接在钉钉群里当你的AI助手。本教程从创建钉钉机器人到完整集成,10分钟搞定。
📋 功能介绍
OpenClaw钉钉集成支持以下能力:
- 群消息推送 - 定时或触发式发送消息到钉钉群
- @机器人对话 - 在群里@机器人即可与AI对话
- Webhook回调 - 接收钉钉事件通知
- 富文本消息 - 支持Markdown、卡片、图片等格式
- 审批流集成 - AI辅助审批决策
- 多群管理 - 一个Agent服务多个钉钉群
🔧 配置步骤
Step 1: 创建钉钉机器人
- 打开钉钉 → 群设置 → 智能群助手 → 添加机器人
- 选择"自定义"机器人
- 设置机器人名称(如"妙趣AI")
- 安全设置选择"自定义关键词"或"加签"
- 复制Webhook地址
# 钉钉Webhook格式
https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN
# 安全设置 - 关键词模式
# 配置关键词如 "AI"、"日报"、"妙趣"
# 消息中必须包含至少一个关键词才能发送
Step 2: OpenClaw配置
# ~/.openclaw/config.yaml
channels:
dingtalk:
enabled: true
webhook: "https://oapi.dingtalk.com/robot/send?access_token=xxx"
secret: "SEC_YOUR_SECRET" # 加签密钥
keyword: "AI" # 关键词安全模式
# 或通过环境变量
export DINGTALK_WEBHOOK="https://oapi.dingtalk.com/robot/send?access_token=xxx"
export DINGTALK_SECRET="SEC_YOUR_SECRET"
Step 3: 发送消息
# 发送文本消息
openclaw message send \
--channel dingtalk \
--target "group_webhook" \
--message "📰 AI日报已更新,请查看 https://miaoquai.com/news/"
# 发送Markdown消息
openclaw message send \
--channel dingtalk \
--msg-type markdown \
--title "今日AI热点" \
--message "### 🔥 热点新闻\n- OpenClaw发布新版本\n- AI Agent市场增长200%"
# 通过脚本批量发送
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"msgtype": "markdown",
"markdown": {
"title": "AI日报",
"text": "# 📰 今日AI热点\n\n内容..."
}
}' \
"https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN"
Step 4: 配置定时推送
# 每天早上9点推送日报到钉钉群
openclaw cron add \
--name "dingtalk-daily" \
--schedule "0 9 * * *" \
--timezone "Asia/Shanghai" \
--task "生成今日AI日报并发送到钉钉群"
# 每周一推送周报
openclaw cron add \
--name "dingtalk-weekly" \
--schedule "0 9 * * 1" \
--timezone "Asia/Shanghai" \
--task "汇总本周AI行业动态,生成周报发送到钉钉群"
💡 最佳实践
🎯 消息频率控制:钉钉群消息不宜太频繁。建议日报1次/天,热点追踪不超过3次/天。太频繁会被群主踢出去。
🔑 安全建议:使用"加签"模式比"关键词"模式更安全。加签模式需要计算签名,防止Webhook被滥用。
# 加签计算示例(Python)
import hmac
import hashlib
import base64
import time
import urllib.parse
def sign(secret):
timestamp = str(round(time.time() * 1000))
string_to_sign = f'{timestamp}\n{secret}'
hmac_code = hmac.new(
secret.encode('utf-8'),
string_to_sign.encode('utf-8'),
digestmod=hashlib.sha256
).digest()
sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
return timestamp, sign
# 使用
timestamp, sign = sign("SEC_YOUR_SECRET")
url = f"https://oapi.dingtalk.com/robot/send?access_token=xxx×tamp={timestamp}&sign={sign}"
🚨 常见问题
❌ 消息发送失败:最常见的原因是关键词不匹配或签名错误。检查钉钉机器人安全设置,确保消息内容包含配置的关键词。
- Q: 消息发送返回310000错误? - 检查access_token是否过期,或关键词是否匹配
- Q: 消息中文乱码? - 确保Content-Type设置为application/json且charset=utf-8
- Q: 如何发送图片? - 钉钉Webhook支持actionCard类型,可包含图片URL
- Q: 能否@指定人? - 可以,在消息体中添加"at"字段
📊 支持的消息类型
| 类型 | msgtype | 适用场景 |
|---|---|---|
| 文本 | text | 简单通知 |
| Markdown | markdown | 格式化内容 |
| 链接 | link | 分享链接 |
| ActionCard | actionCard | 带按钮的卡片 |
| FeedCard | feedCard | 多链接列表 |