本文面向 ClawPanel / OpenClaw 用户,说明如何把钉钉企业内部应用接入为消息渠道,并完成最小可用联调。
当前 ClawPanel 走的是 钉钉企业内部应用 + 机器人能力 + Stream 模式 + dingtalk-connector 插件 方案。
这不是自定义 Webhook 机器人方案,也不是 DEAP Agent 方案。
在开始前,请确认:
~/.openclaw/openclaw.json建议先准备好应用名称、图标和应用描述,便于后续在钉钉侧识别机器人。
在应用能力中添加 机器人。
关键点:
如果这里选错,插件即使安装成功,机器人通常也不会正常收发消息。
至少确认已开通下列权限:
Card.Streaming.WriteCard.Instance.Writeqyapi_robot_sendmsg如果你后续还想使用文档相关能力,再补充文档 API 所需权限。
在钉钉应用的 凭证与基础信息 页面,记录:
Client IDClient Secret在 ClawPanel 中的字段映射如下:
| ClawPanel 字段 | 钉钉后台字段 | 说明 |
|---|---|---|
clientId |
Client ID / AppKey | 必填 |
clientSecret |
Client Secret / AppSecret | 必填 |
gatewayToken |
gateway.auth.token |
Gateway 开启 token 鉴权时填写 |
gatewayPassword |
gateway.auth.password |
Gateway 开启 password 鉴权时填写 |
这一步非常重要。
在你完成机器人能力、权限和基础信息配置后,需要 发布应用版本。
如果没有发布,常见现象包括:
打开 消息渠道 页面,选择 钉钉。
填写:
Client IDClient SecretGateway Token 或 Gateway Password(仅在 Gateway 启用了鉴权时填写)填写规则:
gateway.auth.mode = token,填写 Gateway Tokengateway.auth.mode = password,填写 Gateway Password从当前版本开始,ClawPanel 在打开钉钉配置弹窗时会自动读取 openclaw.json 中的 gateway.auth:
gateway.auth.mode = token,会自动带出 Gateway Tokengateway.auth.mode = password,会自动带出 Gateway Password建议先点击 校验凭证,确认 Client ID / Client Secret 可用后,再点击保存。
保存钉钉渠道时,ClawPanel 会自动完成以下动作:
channels.dingtalk-connectorplugins.allowgateway.http.endpoints.chatCompletions.enabled = true@dingtalk-real-ai/dingtalk-connector从当前版本开始:
如果你不通过 ClawPanel,而是手改 ~/.openclaw/openclaw.json,最小示例如下:
{
"channels": {
"dingtalk-connector": {
"enabled": true,
"clientId": "你的 Client ID / AppKey",
"clientSecret": "你的 Client Secret / AppSecret",
"gatewayToken": "如果 gateway.auth.mode=token 则填这里",
"gatewayPassword": ""
}
},
"gateway": {
"http": {
"endpoints": {
"chatCompletions": {
"enabled": true
}
}
}
}
}
注意:不要整段覆盖已有的 gateway 节点,而是将 http.endpoints.chatCompletions.enabled 追加到已有配置中。
openclaw plugins list
确认输出中存在:
dingtalk-connector
curl http://127.0.0.1:18789/health
openclaw gateway restart
先确认以下前置条件:
推荐操作路径:
说明:
openclaw pairing approve dingtalk-connector <配对码> 完成授权;如需先查看待审批项,可执行 openclaw pairing list dingtalk-connector根据钉钉开放平台“添加机器人到钉钉群”的使用说明,常见路径如下:
@机器人 你好 做测试说明:
@机器人 触发,便于判断消息是否被正确路由到机器人groupPolicy 是否被设为 disabled建议按下面顺序测试:
这样更容易判断问题到底在:
通常说明 chatCompletions 端点未启用。
检查 openclaw.json 中是否存在:
{
"gateway": {
"http": {
"endpoints": {
"chatCompletions": {
"enabled": true
}
}
}
}
}
通常说明钉钉连接器填写的 gatewayToken / gatewayPassword 与 Gateway 实际鉴权配置不一致。
重点检查:
gateway.auth.modegateway.auth.tokengateway.auth.password按顺序检查:
Client ID / Client Secret 是否正确通常是权限未开齐。
至少检查:
Card.Streaming.WriteCard.Instance.Write修改权限后,记得重新发布应用版本。
优先检查:
如果是群聊场景,还要确认:
优先检查:
@机器人groupPolicy 是否被设为 disabled旧逻辑在每次保存渠道配置时都会执行插件安装。
当前版本已经修复为:
这是 OpenClaw 对插件代码的静态审计提示,不一定等于本次安装失败的根因。
它表示插件中检测到了如下模式之一:
child_process是否接受该插件,仍需要你根据插件来源和使用场景自行判断。
这是旧版本安装器把临时备份目录放在 ~/.openclaw/extensions/ 下导致的。
当前版本已经改为:
~/.openclaw/backups/plugin-installs/.__clawpanel_backup 遗留目录dingtalk-connector 还支持一些高级项,当前 P0 页面未全部暴露到 UI,可以在 openclaw.json 中手工添加,例如:
separateSessionByConversationgroupSessionScopesharedMemoryAcrossConversationsasyncModeackText这些适合后续做更细的群聊/私聊隔离、异步回执和高级会话策略。
ClawPanel 当前已经可以帮助你完成:
Client ID / Client Secret但以下动作仍必须由你在钉钉侧人工完成: