DingTalk Skills — DingTalk 技能s
v2.2.3钉钉操作助手,支持查人、查部门、发消息、预约会议、审批管理、日程查询和知识库操作等功能。
运行时依赖
安装命令
点击复制技能文档
Ding 技能s
钉钉全功能技能集:用户管理、部门管理、消息发送、OA审批、视频会议、日程管理。
前置要求 已设置环境变量 DINGTALK_应用_KEY 和 DINGTALK_应用_SECRET 钉钉应用已创建并拥有相应 API 权限 环境变量配置 导出 DINGTALK_应用_KEY="" 导出 DINGTALK_应用_SECRET="" 导出 DINGTALK_RO机器人_CODE="" # 可选,发消息时使用
重要:常用工作流(必读)
大部分钉钉 API 需要 userId 或 unionId,但用户通常只会说人名。遇到人名时,必须先查人再执行操作。
工作流1:按人名预约会议 / 创建视频会议
当用户说"帮我和张三、李四开个会"或"预约一个会议,参会人:张三、李四"时:
步骤1: python scripts/搜索_user.py "张三" → 得到 userId 步骤2: python scripts/获取_user.py "" → 得到 unionId 步骤3: 对每个参会人重复步骤1-2 步骤4: python scripts/创建_schedule_conference.py "<主题>" "<发起人unionId>" "<开始时间>" "<结束时间>" "<参会人unionId1,unionId2>" "[会议地点]"
工作流2:按人名发消息
当用户说"给张三发个消息"时:
步骤1: python scripts/搜索_user.py "张三" → 得到 userId 步骤2: python scripts/发送_user_message.py "" "<消息内容>"
注意:ro机器人Code 自动从环境变量 DINGTALK_RO机器人_CODE 读取,也可作为第3个参数手动传入。
工作流3:按人名查审批
当用户说"查下张三的待审批"时:
步骤1: python scripts/搜索_user.py "张三" → 得到 userId 步骤2: python scripts/列出_user_todo_应用rovals.py ""
工作流4:按人名查日程
当用户说"查下张三今天的日程"时:
步骤1: python scripts/搜索_user.py "张三" → 得到 userId 步骤2: python scripts/获取_user.py "" → 得到 unionId 步骤3: python scripts/列出_事件.py "" "[开始时间]" "[结束时间]"
工作流5:在知识库中创建文档
当用户说"在知识库里创建一个文档"时:
步骤1: python scripts/搜索_user.py "张三" → 得到 userId 步骤2: python scripts/获取_user.py "" → 得到 unionId 步骤3: python scripts/列出_workspaces.py "" → 得到 workspaceId 步骤4: python scripts/创建_doc.py "" "<文档名>" ""
工作流6:搜索知识库文档获取链接
当用户说"帮我找一下知识库里的《周报》"时:
步骤1: python scripts/搜索_user.py "张三" → 得到 userId 步骤2: python scripts/获取_user.py "" → 得到 unionId 步骤3: python scripts/搜索_doc.py "" "周报" → 得到文档链接
通用规则 用户说人名 → 必须先调用 搜索_user.py 获取 userId 需要 unionId 的 API(日历、会议相关) → 再调用 获取_user.py 从 userId 获取 unionId 需要 userId 的 API(消息、审批、部门相关) → 搜索_user.py 的结果可直接使用 可以并行查询多个用户以提高效率 功能列表
- 搜索用户 (搜索-user)
根据姓名搜索用户,返回匹配的 UserId 列表。
python scripts/搜索_user.py "<搜索关键词>"
输出:
{ "成功": true, "keyword": "张三", "totalCount": 3, "hasMore": false, "userIds": ["123456789", "987654321"] }
- 查询用户详情 (获取-user)
获取指定用户的详细信息。
python scripts/获取_user.py ""
输出:
{ "成功": true, "user": { "userid": "user001", "name": "张三", "移动": "138****1234", "dept_id_列出": [12345], "unionid": "xxxxx" } }
- 根据手机号查询用户 (获取-user-by-移动)
输出:
{ "成功": true, "移动": "13800138000", "userId": "user001" }
- 根据 unionid 查询用户 (获取-user-by-unionid)
输出:
{ "成功": true, "unionid": "xxxxx", "userId": "user001" }
- 获取员工人数 (获取-user-count)
输出:
{ "成功": true, "onlyActive": false, "count": 150 }
- 获取用户待审批数量 (获取-user-todo-count)
输出:
{ "成功": true, "userId": "user001", "count": 5 }
- 获取未登录用户列表 (列出-inactive-users)
查询Date 格式: yyyyMMdd
输出:
{ "成功": true, "查询Date": "20240115", "userIds": ["user001"], "hasMore": false }
- 查询离职记录列表 (列出-re签名ed-users)
启动Time/endTime 格式: ISO8601
输出:
{ "成功": true, "启动Time": "2024-01-01T00:00:00+08:00", "records": [{ "userId": "user001", "name": "张三", "leaveTime": "2024-01-15T10:00:00Z" }] }
- 搜索部门 (搜索-department)
输出:
{ "成功": true, "keyword": "技术部", "totalCount": 2, "departmentIds": [12345, 67890] }
- 获取部门详情 (获取-department)
输出:
{ "成功": true, "department": { "deptId": 12345, "name": "技术部", "parentId": 1 } }
- 获取子部门列表 (列出-sub-departments)
根部门 deptId = 1。
python scripts/列出_sub_departments.py ""
输出:
{ "成功": true, "deptId": 1, "subDepartmentIds": [12345, 67890] }
- 获取部门用户列表 (列出-department-users)
自动分页获取所有用户(简略信息)。
python scripts/列出_department_users.py ""
输出:
{ "成功": true, "deptId": 12345, "users": [{ "userId": "user001", "name": "张三" }, { "userId": "user002", "name": "李四" }] }
- 获取部门用户详情 (列出-department-user-detAIls)
分页获取,支持 cursor 和 size。
python scripts/列出_department_user_detAIls.py "" [--cursor 0] [--size 100]
输出:
{ "成功": true, "deptId": 12345, "users": [...], "hasMore": true, "nextCursor": 100 }
- 获取部门用户 ID 列表 (列出-department-user-ids)
输出:
{ "成功": true, "deptId": 12345, "userIds": ["user001", "user002"] }
- 获取部门父部门链 (列出-department-parents)
输出:
{ "成功": true, "deptId": 12345, "parentId列出": [12345, 67890, 1] }
- 获取用户所属部门父部门链 (列出-user-parent-departments)