OpenClaw 钉钉(DingTalk)渠道插件,使用 Stream 模式接入企业机器人。
- ✅ Stream 模式:无需公网 IP 和域名,开箱即用
- ✅ 多账号支持:可同时接入多个钉钉机器人,分别配置凭证和权限
- ✅ 多 Agent 路由:支持将不同账号、群聊、私聊绑定到不同的 Agent
- ✅ 私聊/群聊:支持私聊,群聊(仅@机器人)
- ✅ 文本消息收发:接收和发送文本消息
- ✅ Markdown 回复:机器人回复 Markdown 格式
- ✅ 图片消息收发:接收用户发送的图片,支持发送本地/远程图片
- ✅ 音视频消息:支持接收和发送语音、视频消息
- ✅ 文件消息:支持接收和发送文件,以及图文混排消息
- ✅ 主动推送消息:支持主动推送消息,可以配置提醒或定时任务
- ✅ 支持 OpenClaw 命令:支持 /new、/compact 等 OpenClaw 官方命令
openclaw plugins install @largezhou/ddingtalk添加钉钉渠道有两种方式:
如果您刚安装完 OpenClaw,可以直接运行向导,根据提示添加钉钉:
openclaw onboard向导会引导您完成:
- 创建钉钉应用机器人并获取凭证
- 配置应用凭证
- 启动网关
完成配置后,您可以使用以下命令检查网关状态:
openclaw gateway status- 查看网关运行状态openclaw logs --follow- 查看实时日志
如果您已经完成了初始安装,可以用以下命令添加钉钉渠道:
openclaw channels add然后根据交互式提示选择 DingTalk,输入 AppKey (Client ID) 和 AppSecret (Client Secret) 即可。
完成配置后,您可以使用以下命令管理网关:
openclaw gateway status- 查看网关运行状态openclaw gateway restart- 重启网关以应用新配置openclaw logs --follow- 查看实时日志
访问 钉钉开发者平台,使用钉钉账号登录,选择组织进入。
- 点击右上角 创建应用
- 填写应用名称和描述,上传图片(可选)
在应用的 凭证与基础信息 页面,复制:
- Client ID(格式如
dingxxxx) - Client Secret
❗ 重要:请妥善保管 Client Secret,不要分享给他人。
- 在应用的 添加应用能力 页面,选择 机器人,点击添加
- 输入机器人相关信息,消息接收模式 选择 Stream 模式,然后保存
在应用的权限管理中,确保开通以下权限:
- 企业内机器人发送消息权限
- 根据 downloadCode 获取机器人接收消息的下载链接(用于接收图片)
创建机器人版本,填入版本号、描述、应用可用范围,点击保存,点击确认发布。
运行以下命令,根据提示选择 DingTalk,粘贴 AppKey (Client ID) 和 AppSecret (Client Secret):
openclaw channels add编辑 ~/.openclaw/openclaw.json:
{
"channels": {
"ddingtalk": {
"enabled": true,
"clientId": "your_app_key",
"clientSecret": "your_app_secret",
"allowFrom": ["*"]
}
}
}allowFrom 控制哪些用户可以与机器人交互并执行命令:
- 默认值:
["*"](不配置的情况下,默认允许所有人) - 指定用户:填入钉钉用户的
staffId,只有白名单内的用户才能使用命令(如/compact、/new等),白名单外的用户消息会被忽略 allowFrom[0]同时作为主动推送消息(openclaw send)的默认目标
{
"allowFrom": ["用户ID_1", "用户ID_2"]
}支持同时接入多个钉钉机器人,每个机器人对应一个独立的账号(account)。适用场景:
- 不同部门使用不同的机器人
- 同一个 OpenClaw 实例服务多个钉钉组织
- 不同机器人配置不同的权限策略
通过向导添加新账号,会交互式地提示输入账号 ID 和凭证:
openclaw channels add编辑 ~/.openclaw/openclaw.json:
{
"channels": {
"ddingtalk": {
"enabled": true,
"accounts": {
"bot-hr": {
"name": "HR助手",
"clientId": "dingxxxxxxxx",
"clientSecret": "secret_1"
},
"bot-tech": {
"name": "技术支持",
"clientId": "dingyyyyyyyy",
"clientSecret": "secret_2"
}
},
"defaultAccount": "bot-hr"
}
}
}可以为特定群聊设置独立的权限和行为:
{
"accounts": {
"bot-hr": {
"enabled": true,
"clientId": "dingxxxxxxxx",
"clientSecret": "secret_1"
}
}
}如果只有一个机器人,无需使用 accounts,直接在顶层配置即可(兼容旧版格式):
{
"channels": {
"ddingtalk": {
"enabled": true,
"clientId": "your_app_key",
"clientSecret": "your_app_secret"
}
}
}通过 OpenClaw 的路由绑定(bindings)机制,可以将不同的账号、群聊、私聊分配给不同的 Agent 处理。
更多关于多 Agent 的概念和用法,请参阅 OpenClaw 官方文档 - 多 Agent。
使用命令行将不同钉钉账号绑定到不同的 Agent:
# 将 bot-hr 账号绑定到 hr-agent
openclaw agents bind --agent hr-agent --bind ddingtalk:bot-hr
# 将 bot-tech 账号绑定到 tech-agent
openclaw agents bind --agent tech-agent --bind ddingtalk:bot-tech
# 将整个钉钉渠道(所有账号)绑定到默认 agent
openclaw agents bind --agent default-agent --bind ddingtalk查看当前绑定:
openclaw agents bindings解除绑定:
openclaw agents unbind --agent hr-agent --bind ddingtalk:bot-hrCLI 命令目前仅支持 channel[:accountId] 级别的绑定。如需将特定群聊或私聊绑定到不同 Agent,需要手动编辑 ~/.openclaw/openclaw.json 的 bindings 配置:
{
"agents": {
"list": [
{ "id": "hr-agent", "name": "HR助手" },
{ "id": "tech-agent", "name": "技术支持" },
{ "id": "general-agent", "name": "通用助手" }
]
},
"bindings": [
{
"agentId": "tech-agent",
"comment": "技术交流群走技术支持 Agent",
"match": {
"channel": "ddingtalk",
"peer": {
"kind": "group",
"id": "cidTechGroup001"
}
}
},
{
"agentId": "hr-agent",
"comment": "张三的私聊走HR助手",
"match": {
"channel": "ddingtalk",
"peer": {
"kind": "direct",
"id": "user_zhangsan_staffId"
}
}
},
{
"agentId": "general-agent",
"comment": "bot-hr 账号的其他消息走通用助手",
"match": {
"channel": "ddingtalk",
"accountId": "bot-hr"
}
}
]
}openclaw gateway --verbose在钉钉中找到您创建的机器人,即可正常对话。
# 安装依赖
pnpm install
# 打包
pnpm packMIT







