← 返回 Skills 市场
zaohon

Dingtalk Api

作者 Zao_hon · GitHub ↗ · v0.0.1
cross-platform ⚠ suspicious
23059
总下载
3
收藏
3
当前安装
1
版本数
在 OpenClaw 中安装
/install dingtalk-bot
功能描述
调用钉钉开放平台API,支持用户搜索/详情/查询、部门管理(搜索/详情/子部门/用户列表/父部门)、机器人单聊消息发送、群聊消息发送、群内机器人列表查询、Stream模式事件推送、多会话隔离管理等核心功能。Use when needing to search DingTalk users or departmen...
使用说明 (SKILL.md)

DingTalk API Skill

用于调用钉钉开放平台 API 的技能,提供完整的钉钉企业级集成功能,包括传统API调用和Stream模式事件推送。

核心功能模块

用户与组织管理

  • 用户搜索、详情查询、手机号/unionid查询
  • 部门管理(搜索、详情、子部门、用户列表、父部门)
  • 企业员工统计、组织架构映射
  • 离职记录查询、未登录用户列表

消息与机器人

  • 机器人单聊消息发送
  • 机器人群聊消息发送
  • 群内机器人列表查询
  • 消息内容格式化与发送

Stream模式事件推送(推荐)

  • 实时消息接收:通过WebSocket长连接接收钉钉事件
  • 多会话隔离:为每个用户/群聊成员创建独立的AI会话
  • 上下文保持:每个会话保持完整的对话历史和个性化记忆
  • 自动回复路由:AI生成的回复直接通过钉钉API发送,避免多通道冲突

OA审批管理

  • 审批实例查询、详情获取
  • 发起、终止、执行、转交审批任务
  • 审批评论管理、待办数量统计

API版本支持

传统服务端API (兼容)

  • 用户管理:用户查询、部门管理
  • 消息发送:机器人消息
  • 特点:稳定可靠、广泛使用、向后兼容

Stream模式API (推荐)

  • 事件推送:实时接收钉钉消息和事件
  • 长连接:基于WebSocket的持久连接
  • 高并发:支持大量用户同时对话
  • 低延迟:消息处理延迟毫秒级

权限说明

企业内部应用

  • 支持所有功能:用户管理、消息、Stream模式、OA审批
  • 权限配置:在钉钉开发者后台申请相应权限
  • 认证方式:使用AppKey/AppSecret获取access_token
  • Stream配置:需在开发者后台配置事件订阅和回调URL

第三方企业应用

  • 部分功能支持:用户管理、消息
  • 认证方式:OAuth2.0授权流程
  • Stream模式:不支持

第三方个人应用

  • 功能受限:仅支持基础用户查询
  • 不支持:消息发送、Stream模式

前置要求

传统API模式

  • 已设置环境变量 DINGTALK_APP_KEYDINGTALK_APP_SECRET
  • 钉钉应用已创建并拥有相应 API 权限
  • 对于企业内部应用,确保在钉钉管理后台已授权所需权限

Stream模式(推荐)

  • 企业内部应用(必须)
  • 公网可访问的HTTPS服务器(用于事件回调)
  • 钉钉开发者后台已配置Stream模式事件订阅
  • Python 3.8+ 环境(用于运行Stream Bridge)

环境变量配置

# 传统API和Stream模式都需要
export DINGTALK_APP_KEY="\x3Cyour-app-key>"
export DINGTALK_APP_SECRET="\x3Cyour-app-secret>"

# Stream模式额外配置(可选)
export DINGTALK_STREAM_LOG_LEVEL="INFO"
export DINGTALK_SESSION_MEMORY_DIR="./memory"

使用示例

1. 传统API调用

查询用户详情

npx ts-node scripts/get-user.ts "\x3CuserId>" [--debug]

发送单聊消息

npx ts-node scripts/send-user-message.ts "\x3CuserId>" "\x3CrobotCode>" "\x3C消息内容>" [--debug]

获取部门用户列表

npx ts-node scripts/list-department-users.ts "\x3CdeptId>" [--debug]

搜索用户

npx ts-node scripts/search-user.ts "\x3Ckeyword>" [--debug]

2. Stream模式部署(推荐)

启动Stream Bridge

# 创建虚拟环境
python3 -m venv dingtalk_venv
source dingtalk_venv/bin/activate
pip install dingtalk-stream

# 启动Stream服务
./start_dingtalk_stream.sh

会话管理特性

  • 私聊会话dingtalk_private_{user_id} - 每个用户独立会话
  • 群聊会话dingtalk_group_{group_id}_{user_id} - 群聊中每个用户独立会话
  • 记忆持久化:会话记忆保存在 memory/ 目录下
  • 自动清理:24小时无活动的会话自动清理

错误处理

所有脚本在错误时返回统一格式:

{
  "success": false,
  "error": {
    "code": "ERROR_CODE",
    "message": "错误描述"
  }
}

常见错误码:

  • MISSING_CREDENTIALS - 未设置环境变量
  • INVALID_ARGUMENTS - 参数不足
  • AUTH_FAILED - access_token 获取失败
  • PERMISSION_DENIED - 权限不足
  • UNKNOWN_ERROR - API 调用异常
  • STREAM_CONNECTION_FAILED - Stream连接失败

最佳实践

  1. 权限最小化:只申请必要的API权限
  2. 错误处理:始终检查API响应的errcode
  3. 调试模式:使用--debug参数查看详细请求/响应
  4. 批量操作:对于大量数据,使用批量API接口
  5. Stream模式优先:实时交互场景优先使用Stream模式
  6. 会话隔离:确保不同用户的对话上下文完全隔离
  7. 频率控制:遵守钉钉API调用频率限制

安全注意事项

  • 不要在代码中硬编码AppKey/AppSecret
  • 使用环境变量或安全的配置管理
  • 敏感操作(如删除、修改)需要二次确认
  • 遵循钉钉的安全最佳实践指南
  • Stream模式安全:确保回调URL使用HTTPS,验证事件签名
  • 数据隔离:不同用户的会话数据完全隔离,符合企业安全要求

架构优势

多会话隔离架构

  • 用户识别:准确识别私聊和群聊中的不同用户
  • 上下文保持:每个会话保持完整的对话历史
  • 个性化记忆:支持用户偏好和历史记录的持久化
  • 资源管理:自动清理过期会话,避免资源泄露

回复路由优化

  • 通道隔离:钉钉回复只通过钉钉API,避免触发其他通道
  • 性能优化:异步处理,支持高并发
  • 可靠性:结果文件机制确保消息不丢失
  • 错误恢复:网络错误自动重试,保证消息送达

项目结构

dingtalk-api/
├── scripts/                    # 传统API脚本
│   ├── *.ts                   # 各类API调用脚本
├── stream/                    # Stream模式相关文件
│   ├── dingtalk_stream_bridge.py    # Stream Bridge主程序
│   ├── dingtalk_session_manager.py  # 会话管理器
│   ├── dingtalk_reply_tool.py       # 钉钉回复工具
│   └── *.sh                   # 启动/停止脚本
├── memory/                    # 会话记忆文件(运行时生成)
├── types/                     # TypeScript类型定义
├── SKILL.md                   # 技能文档
├── README.md                  # 详细使用说明
└── package.json               # 依赖配置
安全使用建议
Install only with a least-privileged DingTalk app, avoid --debug in shared logs or agent transcripts, and review any message-sending or approval-related action before execution. Remove or update the bundled Python virtualenv/dependencies where possible, and ignore or tighten the CLAUDE.md publish workflow unless you explicitly want this skill to guide repository publishing.
功能分析
Type: OpenClaw Skill Name: dingtalk-bot Version: 0.0.1 The skill bundle is classified as suspicious due to critical vulnerabilities found within the `dingtalk_stream` SDK, specifically in `venv/dingtalk_venv/lib/python3.12/site-packages/dingtalk_stream/chatbot.py` and `card_replier.py`. The `reply_rpa_plugin_card` method in `chatbot.py` is vulnerable to client-side script injection (XSS) as it directly embeds unsanitized `plugin_name` and `ability_name` into a JavaScript string executed by the DingTalk client. Additionally, the `create_and_deliver_card` methods in `card_replier.py` accept arbitrary `**kwargs` that are merged into the API request body, potentially allowing unauthorized API parameter injection. While the skill bundle itself does not exhibit clear malicious intent, these vulnerabilities present significant attack vectors if an adversary can control the inputs to these functions.
能力评估
Purpose & Capability
The DingTalk user, department, bot messaging, stream, and approval capabilities fit the stated integration purpose, but they involve enterprise directory data, identity lookups, workflow metadata, and message sending. README/SKILL disclose most of this, though some documented approval and HR-style features appear only in docs/types and not as implemented scripts.
Instruction Scope
CLAUDE.md instructs an agent to automatically git add/commit/push and run clawhub publish when asked to publish code. That external publication workflow is not part of the DingTalk API purpose and lacks an explicit final confirmation gate.
Install Mechanism
There is no auto-install or postinstall execution in package.json, but the artifact includes a vendored Python virtualenv with dingtalk_stream and other packages while the docs also tell users to create/install a virtualenv themselves. Package naming/version metadata is inconsistent across package.json, package-lock.json, and _meta.json.
Credentials
The scripts explicitly require DINGTALK_APP_KEY and DINGTALK_APP_SECRET and use them only for DingTalk APIs, which is purpose-aligned. However many --debug paths print full API responses that may include employee contact details, department metadata, identifiers, and workflow data without redaction or strong warnings.
Persistence & Privilege
Stream mode is user-started and runs a background Python process via start-stream.sh, sourcing .env; stop scripts use pkill by process pattern. The current stream bridge is a placeholder, and no hidden persistence, privilege escalation, or broad local file indexing was found.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install dingtalk-bot
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /dingtalk-bot 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v0.0.1
- Initial release of dingtalk-api skill, offering complete DingTalk Open Platform integration. - Supports user and department management, including search, detail queries, and hierarchy operations. - Provides both traditional API call and Stream mode event push with multi-session isolation. - Enables bot messaging in single and group chats, plus group bot list queries. - Includes approval (OA) process management features for enterprise internal apps. - Offers detailed environment configuration guidance and best practice recommendations.
元数据
Slug dingtalk-bot
版本 0.0.1
许可证
累计安装 5
当前安装数 3
历史版本数 1
常见问题

Dingtalk Api 是什么?

调用钉钉开放平台API,支持用户搜索/详情/查询、部门管理(搜索/详情/子部门/用户列表/父部门)、机器人单聊消息发送、群聊消息发送、群内机器人列表查询、Stream模式事件推送、多会话隔离管理等核心功能。Use when needing to search DingTalk users or departmen... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 23059 次。

如何安装 Dingtalk Api?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install dingtalk-bot」即可一键安装,无需额外配置。

Dingtalk Api 是免费的吗?

是的,Dingtalk Api 完全免费(开源免费),可自由下载、安装和使用。

Dingtalk Api 支持哪些平台?

Dingtalk Api 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Dingtalk Api?

由 Zao_hon(@zaohon)开发并维护,当前版本 v0.0.1。

💬 留言讨论