本文档说明如何配置钉钉机器人接入本系统。
- 钉钉企业账号(需要有管理员权限)
- 已创建的钉钉企业组织
- 访问 钉钉开放平台
- 使用钉钉 App 扫码登录
- 点击左侧菜单 「应用开发」
- 选择 「企业内部开发」
- 点击 「创建应用」
- 填写应用信息:
- 应用名称:如
AI 助手机器人 - 应用描述:如
智能对话助手 - 应用Logo:上传应用图标
- 应用名称:如
- 进入应用详情页
- 在左侧菜单找到 「机器人与消息推送」
- 点击 「机器人配置」
- 填写机器人信息:
- 机器人名称:如
AI 助手 - 机器人描述:如
智能对话助手 - 消息接收模式:选择 「Stream 模式」(重要!)
- 机器人名称:如
在应用详情页,点击 「权限管理」,申请以下权限:
| 权限名称 | 权限码 | 用途 |
|---|---|---|
| 企业内消息通知 | im:message |
接收和发送消息 |
| 获取与更新群会话 | im:chat |
群聊消息处理 |
| 通讯录只读权限 | qyapi_get_member |
获取用户信息(可选) |
| 通讯录部门成员读权限 | qyapi_get_department_member |
获取部门成员(可选) |
- 在「权限管理」页面搜索权限名称
- 点击 「申请权限」
- 填写申请理由(如:用于机器人消息收发)
- 等待管理员审批(通常即时生效)
im:message
├── im:message:send_as_bot # 以机器人身份发送消息
├── im:message:readonly # 读取消息内容
└── im:message.group_msg # 群消息权限
im:chat
├── im:chat:readonly # 读取群信息
└── im:chat:write # 创建/修改群信息
- 进入应用详情页
- 点击左侧菜单 「凭证与基础信息」
- 复制以下信息:
- AppKey(即 Client ID)
- AppSecret(即 Client Secret)
⚠️ 重要:AppSecret 只显示一次,请妥善保存!
如需多企业支持,还需获取企业 CorpId:
- 点击左上角企业名称
- 在企业信息中找到 「CorpId」
- 打开 Web 管理界面
- 进入 「平台接入配置」
- 找到 「钉钉配置」 卡片
- 开启 「启用钉钉」 开关
- 点击 「添加钉钉账号」
- 填写以下信息:
| 字段 | 说明 |
|---|---|
| 账号标识 | 自定义标识(如 default),用于区分多个机器人 |
| AppKey | 钉钉应用详情页的 AppKey |
| AppSecret | 钉钉应用详情页的 AppSecret |
| 名称 | 可选,方便识别 |
| API 端点 | 默认 https://api.dingtalk.com,通常无需修改 |
- 点击 「保存」
- 重启服务使配置生效
直接插入数据库记录:
INSERT INTO dingtalk_accounts (account_id, client_id, client_secret, enabled)
VALUES ('default', 'dingxxxxxxxxx', 'your_app_secret', 1);PLATFORM_DINGTALK_ENABLED=true可能原因及解决方案:
-
应用未发布
- 前往钉钉开放平台 → 版本管理 → 发布应用
- 至少发布到「开发版」或「测试版」
-
机器人消息接收模式错误
- 确认选择的是 「Stream 模式」,而非「Webhook 模式」
-
权限未申请或未生效
- 检查
im:message和im:chat权限是否已申请 - 等待权限审批生效(通常即时)
- 检查
-
账号未启用
- 在 Web 管理界面确认账号状态为「已启用」
- 检查数据库
dingtalk_accounts.enabled = 1
-
服务未重启
- 配置修改后需要重启服务
症状:日志显示 "Request failed with status code 400"
解决方案:
- 检查 AppKey 和 AppSecret 是否正确
- 确认没有多余的空格或换行符
- 确认 AppKey 以
ding开头
症状:日志显示 "401 Unauthorized"
解决方案:
- AppKey 或 AppSecret 错误
- 应用已被删除或禁用
- 重新获取凭证并更新配置
检查清单:
- 机器人是否已添加到群聊或单聊
- 发送的消息是否被钉钉过滤(如敏感词)
- 是否在「调试模式」下查看详细日志
可能原因:
- 群聊需要 @机器人 才会触发(取决于配置)
- 检查
requireMention配置
在账号配置中启用调试模式:
UPDATE dingtalk_accounts SET debug = 1 WHERE account_id = 'default';# 查看服务日志
tail -f logs/bridge.log | grep -i dingtalk# 使用 curl 测试 API 连通性
curl -X POST https://api.dingtalk.com/v1.0/oauth2/accessToken \
-H "Content-Type: application/json" \
-d '{"appKey":"your_app_key","appSecret":"your_app_secret"}'| 日期 | 版本 | 说明 |
|---|---|---|
| 2026-03-24 | v1.0 | 初始版本 |