OpenClaw 钉钉插件安装指南 - 指南

OpenClaw 钉钉插件安装指南

概述

将 OpenClaw AI 助手接入钉钉,实现双向聊天(你发消息给机器人,机器人回复你)。


一、钉钉开放平台配置

1. 创建应用

  1. 登录 钉钉开放平台
  2. 应用开发 → 企业内部应用 → 创建应用
  3. 填写应用名称和描述

2. 添加机器人能力

  1. 进入应用 → 添加应用能力 → 机器人
  2. 配置机器人信息(名称、头像等)

3. 开启 Stream 模式(重要!)

  1. 机器人配置 → 消息接收模式
  2. 选择 Stream 模式(无需公网域名)

4. 获取凭证

在「凭证与基础信息」页面获取:

  • AppKey (clientId)dingxxxxxxxxxx
  • AppSecret (clientSecret):一长串字符

5. 发布应用

  1. 版本管理与发布 → 发布
  2. 选择可见范围(可先选「仅自己可见」测试)

二、OpenClaw 插件安装

1. 安装插件

openclaw plugins install @moltybob/dingtalk

如果安装时依赖报错,手动装依赖:

cd ~/.openclaw/extensions/dingtalk && npm install --omit=dev --ignore-scripts

2. 验证插件加载

openclaw plugins list | grep dingtalk

应显示 dingtalk | loaded


三、配置钉钉凭证

编辑配置文件 ~/.openclaw/openclaw.json,添加:

{
"channels": {
"dingtalk": {
"enabled": true,
"clientId": "你的AppKey",
"clientSecret": "你的AppSecret",
"dmPolicy": "pairing"
}
}
}

或者通过命令行:

openclaw config set channels.dingtalk.enabled true
openclaw config set channels.dingtalk.clientId "你的AppKey"
openclaw config set channels.dingtalk.clientSecret "你的AppSecret"
openclaw config set channels.dingtalk.dmPolicy "pairing"

dmPolicy 选项

  • pairing: 需要配对才能使用(推荐)
  • open: 任何人都可以私聊
  • allowlist: 只允许指定用户

四、重启 Gateway

openclaw gateway restart

五、验证连接

openclaw channels status

应显示:

DingTalk default: enabled, configured, mode:stream

查看日志确认连接成功:

openclaw channels logs | grep dingtalk

应看到 Successfully connected to DingTalk stream


六、使用机器人

私聊

  1. 钉钉搜索框搜索你的应用名
  2. 找到机器人,发送消息

群聊

  1. 进入群 → 群设置 → 群机器人 → 添加机器人
  2. 选择你的应用
  3. @机器人 发送消息

七、已知问题与修复

问题:控制面板返回 {"success":true} 而非页面

原因:钉钉插件的 webhook handler 拦截了所有 HTTP 请求

修复:编辑 ~/.openclaw/extensions/dingtalk/src/monitor.ts

找到 handleDingTalkWebhookRequest 函数开头,改成:

export async function handleDingTalkWebhookRequest(
req: import('node:http').IncomingMessage,
res: import('node:http').ServerResponse
): Promise<boolean> {// Only handle POST requests to dingtalk webhook pathsconst url = req.url || '';const isDingTalkPath = url.includes('/dingtalk') || url.includes('/webhook');if (req.method !== 'POST' || !isDingTalkPath) {return false; // Let other handlers process non-dingtalk requests}console.log(`[dingtalk] HTTP request received: ${req.method} ${req.url}`);// ... 后面代码不变

然后重启 Gateway。


八、相关文件位置

文件路径
插件目录~/.openclaw/extensions/dingtalk/
配置文件~/.openclaw/openclaw.json
日志openclaw channels logs

九、环境信息(本次安装)


by 小琳 ✨