一、环境信息
OpenClaw 版本:2026.6.10
钉钉插件:@soimy/dingtalk v3.6.4
运行环境:Docker + WSL2
钉钉应用:企业内部应用(Stream 模式)
二、钉钉应用准备
-
登录钉钉开发者平台:https://open-dev.dingtalk.com/
-
创建企业内部应用
-
获取 Client ID (AppKey) 和 Client Secret (AppSecret)
机器人配置:
-
消息接收模式:Stream 模式(无需公网 IP)
-
机器人名称:自定义
开通权限(在"权限管理"页面):
-
Card.Streaming.Write
-
Card.Instance.Write
-
qyapi_robot_sendmsg
发布应用:
-
进入"版本管理与发布"
-
创建新版本并发布(至少测试版本)
三、OpenClaw 钉钉集成
3.1 进入容器
docker exec -it openclaw bash
3.2 安装钉钉插件
openclaw plugins install npm:@soimy/dingtalk
如果安装卡住,尝试:
openclaw plugins install clawhub:@soimy/dingtalk
3.3 添加钉钉通道
openclaw channels add
按提示操作:
-
选择 DingTalk (钉钉)
-
选择 Add default account
-
选择 No(手动输入凭证)
-
输入 Client ID 和 Client Secret
-
私聊策略:Open - anyone can DM
-
群聊策略:Open - any group can use bot
-
回复类型:Markdown
-
高级选项:No
3.4 配置 allowFrom(如果收到警告)
openclaw config set channels.dingtalk.allowFrom '"\*"'
3.5 重启生效
exit
docker restart openclaw
docker exec -it openclaw bash
四、验证部署
4.1 查看通道状态
openclaw channels status
期望输出:
DingTalk default: enabled, configured, running, connected
4.2 测试消息收发
-
打开钉钉,搜索机器人名称
-
发送消息"你好"
-
查看实时日志:
openclaw logs --follow
五、完整配置文件(openclaw.json 核心部分)
{
"channels": {
"dingtalk": {
"enabled": true,
"clientId": "你的Client ID",
"clientSecret": "你的Client Secret",
"dmPolicy": "open",
"groupPolicy": "open",
"allowFrom": "\*"
}
},
"bindings": [
{
"agentId": "main",
"match": {
"channel": "dingtalk",
"accountId": "default"
}
}
]
}
六、常见问题排查
6.1 连接测试 403
-
检查 Client ID 和 Client Secret 是否正确
-
确认应用已发布
-
确认 Stream 模式已启用
-
用 curl 测试凭证有效性:
curl -X POST "https://api.dingtalk.com/v1.0/oauth2/accessToken" -H "Content-Type: application/json" -d '{"appKey":"你的Client ID","appSecret":"你的Client Secret"}'
6.2 通道状态显示 not configured
检查配置文件中 channels.dingtalk 是否包含 clientId 和 clientSecret。
6.3 消息无响应
-
确认 channels.dingtalk.allowFrom 包含 "\*"
-
确认 bindings 中的 accountId 与 channels 中的账户名一致
-
查看实时日志:openclaw logs --follow
七、最终状态
钉钉插件:已安装(@soimy/dingtalk)
通道状态:DingTalk default: running
消息收发:正常
Web UI:可访问