OpenClaw 钉钉集成完整实战:从零到消息收发

一、环境信息

OpenClaw 版本:2026.6.10

钉钉插件:@soimy/dingtalk v3.6.4

运行环境:Docker + WSL2

钉钉应用:企业内部应用(Stream 模式)

二、钉钉应用准备

  1. 登录钉钉开发者平台:https://open-dev.dingtalk.com/

  2. 创建企业内部应用

  3. 获取 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

按提示操作:

  1. 选择 DingTalk (钉钉)

  2. 选择 Add default account

  3. 选择 No(手动输入凭证)

  4. 输入 Client ID 和 Client Secret

  5. 私聊策略:Open - anyone can DM

  6. 群聊策略:Open - any group can use bot

  7. 回复类型:Markdown

  8. 高级选项: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 测试消息收发

  1. 打开钉钉,搜索机器人名称

  2. 发送消息"你好"

  3. 查看实时日志:

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:可访问