Ding Skills
钉钉全功能技能集:用户管理、部门管理、消息发送、OA审批、视频会议、日程管理。
前置要求
- - 已设置环境变量
DINGTALK_APP_KEY 和 INLINECODE1 - 钉钉应用已创建并拥有相应 API 权限
环境变量配置
CODEBLOCK0
重要:常用工作流(必读)
大部分钉钉 API 需要 userId 或 unionId,但用户通常只会说人名。遇到人名时,必须先查人再执行操作。
工作流1:按人名预约会议 / 创建视频会议
当用户说"帮我和张三、李四开个会"或"预约一个会议,参会人:张三、李四"时:
CODEBLOCK1
工作流2:按人名发消息
当用户说"给张三发个消息"时:
CODEBLOCK2
注意:robotCode 自动从环境变量 DINGTALKROBOTCODE 读取,也可作为第3个参数手动传入。
工作流3:按人名查审批
当用户说"查下张三的待审批"时:
CODEBLOCK3
工作流4:按人名查日程
当用户说"查下张三今天的日程"时:
CODEBLOCK4
工作流5:在知识库中创建文档
当用户说"在知识库里创建一个文档"时:
CODEBLOCK5
工作流6:搜索知识库文档获取链接
当用户说"帮我找一下知识库里的《周报》"时:
CODEBLOCK6
通用规则
- - 用户说人名 → 必须先调用
search_user.py 获取 userId - 需要 unionId 的 API(日历、会议相关) → 再调用
get_user.py 从 userId 获取 unionId - 需要 userId 的 API(消息、审批、部门相关) → search_user.py 的结果可直接使用
- 可以并行查询多个用户以提高效率
功能列表
1. 搜索用户 (search-user)
根据姓名搜索用户,返回匹配的 UserId 列表。
CODEBLOCK7
输出:
CODEBLOCK8
2. 查询用户详情 (get-user)
获取指定用户的详细信息。
CODEBLOCK9
输出:
CODEBLOCK10
3. 根据手机号查询用户 (get-user-by-mobile)
CODEBLOCK11
输出:
CODEBLOCK12
4. 根据 unionid 查询用户 (get-user-by-unionid)
CODEBLOCK13
输出:
CODEBLOCK14
5. 获取员工人数 (get-user-count)
CODEBLOCK15
输出:
CODEBLOCK16
6. 获取用户待审批数量 (get-user-todo-count)
CODEBLOCK17
输出:
CODEBLOCK18
7. 获取未登录用户列表 (list-inactive-users)
CODEBLOCK19
queryDate 格式: yyyyMMdd
输出:
CODEBLOCK20
8. 查询离职记录列表 (list-resigned-users)
CODEBLOCK21
startTime/endTime 格式: ISO8601
输出:
CODEBLOCK22
9. 搜索部门 (search-department)
CODEBLOCK23
输出:
CODEBLOCK24
10. 获取部门详情 (get-department)
CODEBLOCK25
输出:
CODEBLOCK26
11. 获取子部门列表 (list-sub-departments)
根部门 deptId = 1。
CODEBLOCK27
输出:
CODEBLOCK28
12. 获取部门用户列表 (list-department-users)
自动分页获取所有用户(简略信息)。
CODEBLOCK29
输出:
CODEBLOCK30
13. 获取部门用户详情 (list-department-user-details)
分页获取,支持 cursor 和 size。
CODEBLOCK31
输出:
CODEBLOCK32
14. 获取部门用户 ID 列表 (list-department-user-ids)
CODEBLOCK33
输出:
CODEBLOCK34
15. 获取部门父部门链 (list-department-parents)
CODEBLOCK35
输出:
CODEBLOCK36
16. 获取用户所属部门父部门链 (list-user-parent-departments)
CODEBLOCK37
输出:
CODEBLOCK38
17. 获取群内机器人列表 (get-bot-list)
CODEBLOCK39
输出:
CODEBLOCK40
18. 机器人发送群消息 (send-group-message)
robotCode 自动从环境变量 DINGTALK_ROBOT_CODE 读取,也可作为第3个参数手动传入。
CODEBLOCK41
输出:
CODEBLOCK42
19. 机器人发送单聊消息 (send-user-message)
robotCode 自动从环境变量 DINGTALK_ROBOT_CODE 读取,也可作为第3个参数手动传入。
CODEBLOCK43
输出:
CODEBLOCK44
20. 获取审批实例 ID 列表 (list-approval-instance-ids)
CODEBLOCK45
输出:
CODEBLOCK46
21. 获取审批实例详情 (get-approval-instance)
CODEBLOCK47
输出:
CODEBLOCK48
22. 查询用户发起的审批 (list-user-initiated-approvals)
CODEBLOCK49
输出:
CODEBLOCK50
23. 查询用户抄送的审批 (list-user-cc-approvals)
CODEBLOCK51
24. 查询用户待审批实例 (list-user-todo-approvals)
CODEBLOCK52
输出:
CODEBLOCK53
25. 查询用户已审批实例 (list-user-done-approvals)
CODEBLOCK54
26. 发起审批实例 (create-approval-instance)
CODEBLOCK55
formValuesJson 示例: INLINECODE8
输出:
CODEBLOCK56
27. 撤销审批实例 (terminate-approval-instance)
CODEBLOCK57
输出:
CODEBLOCK58
28. 执行审批任务 (execute-approval-task)
同意或拒绝审批任务。
CODEBLOCK59
输出:
CODEBLOCK60
29. 转交审批任务 (transfer-approval-task)
CODEBLOCK61
输出:
CODEBLOCK62
30. 添加审批评论 (add-approval-comment)
CODEBLOCK63
输出:
CODEBLOCK64
31. 创建即时视频会议 (create-video-conference)
立即创建视频会议并邀请参会人。
CODEBLOCK65
输出:
CODEBLOCK66
32. 关闭视频会议 (close-video-conference)
CODEBLOCK67
输出:
CODEBLOCK68
33. 创建预约会议 (create-schedule-conference)
通过日历 API 创建预约会议,自动关联钉钉视频会议,日程会出现在钉钉日历中。
CODEBLOCK69
时间格式: "2026-03-16 14:00" 或 ISO 8601
输出:
CODEBLOCK70
34. 取消预约会议 (cancel-schedule-conference)
CODEBLOCK71
输出:
CODEBLOCK72
35. 查询日程列表 (list-events)
CODEBLOCK73
输出:
CODEBLOCK74
36. 查询日程详情 (get-event)
CODEBLOCK75
输出:
CODEBLOCK76
37. 删除日程 (delete-event)
CODEBLOCK77
输出:
CODEBLOCK78
38. 添加日程参与者 (add-event-attendee)
CODEBLOCK79
输出:
CODEBLOCK80
39. 移除日程参与者 (remove-event-attendee)
CODEBLOCK81
输出:
CODEBLOCK82
40. 获取知识库列表 (list-workspaces)
获取用户能访问的所有知识库。
CODEBLOCK83
输出:
CODEBLOCK84
41. 创建知识库文档 (create-doc)
在指定知识库中创建新文档。
CODEBLOCK85
docType 可选值:alidoc(钉钉文档,默认)、alisheet(表格)、alinote(笔记)
输出:
CODEBLOCK86
42. 搜索知识库文档 (search-doc)
根据文档名关键词搜索知识库文档,返回文档链接。
CODEBLOCK87
不指定 workspaceId 时搜索所有知识库。
输出:
CODEBLOCK88
43. 覆写文档内容 (overwrite-doc)
覆写知识库文档的全部内容(全量替换,非追加)。
CODEBLOCK89
输出:
CODEBLOCK90
错误处理
所有脚本在错误时返回统一格式:
CODEBLOCK91
常见错误码:
- -
MISSING_CREDENTIALS - 未设置环境变量 - INLINECODE14 - 参数不足
- INLINECODE15 - API 调用异常
重要说明
- -
userId 是企业内部用户 ID,unionId 是全局唯一标识 - 会议、日程、知识库相关的 API 使用
unionId,可通过 get-user 查询获取 - 根部门 deptId 为 1
- 知识库
workspaceId 通过 list-workspaces 获取,nodeId 通过 search-doc 获取
Ding Skills
钉钉全功能技能集:用户管理、部门管理、消息发送、OA审批、视频会议、日程管理。
前置要求
- - 已设置环境变量 DINGTALKAPPKEY 和 DINGTALKAPPSECRET
- 钉钉应用已创建并拥有相应 API 权限
环境变量配置
bash
export DINGTALKAPPKEY=
export DINGTALKAPPSECRET=
export DINGTALKROBOTCODE= # 可选,发消息时使用
重要:常用工作流(必读)
大部分钉钉 API 需要 userId 或 unionId,但用户通常只会说人名。遇到人名时,必须先查人再执行操作。
工作流1:按人名预约会议 / 创建视频会议
当用户说帮我和张三、李四开个会或预约一个会议,参会人:张三、李四时:
步骤1: python scripts/search_user.py 张三 → 得到 userId
步骤2: python scripts/get_user.py → 得到 unionId
步骤3: 对每个参会人重复步骤1-2
步骤4: python scripts/createscheduleconference.py <主题> <发起人unionId> <开始时间> <结束时间> <参会人unionId1,unionId2> [会议地点]
工作流2:按人名发消息
当用户说给张三发个消息时:
步骤1: python scripts/search_user.py 张三 → 得到 userId
步骤2: python scripts/sendusermessage.py <消息内容>
注意:robotCode 自动从环境变量 DINGTALKROBOTCODE 读取,也可作为第3个参数手动传入。
工作流3:按人名查审批
当用户说查下张三的待审批时:
步骤1: python scripts/search_user.py 张三 → 得到 userId
步骤2: python scripts/listusertodo_approvals.py
工作流4:按人名查日程
当用户说查下张三今天的日程时:
步骤1: python scripts/search_user.py 张三 → 得到 userId
步骤2: python scripts/get_user.py → 得到 unionId
步骤3: python scripts/list_events.py [开始时间] [结束时间]
工作流5:在知识库中创建文档
当用户说在知识库里创建一个文档时:
步骤1: python scripts/search_user.py 张三 → 得到 userId
步骤2: python scripts/get_user.py → 得到 unionId
步骤3: python scripts/list_workspaces.py → 得到 workspaceId
步骤4: python scripts/create_doc.py <文档名>
工作流6:搜索知识库文档获取链接
当用户说帮我找一下知识库里的《周报》时:
步骤1: python scripts/search_user.py 张三 → 得到 userId
步骤2: python scripts/get_user.py → 得到 unionId
步骤3: python scripts/search_doc.py 周报 → 得到文档链接
通用规则
- - 用户说人名 → 必须先调用 searchuser.py 获取 userId
- 需要 unionId 的 API(日历、会议相关) → 再调用 getuser.py 从 userId 获取 unionId
- 需要 userId 的 API(消息、审批、部门相关) → search_user.py 的结果可直接使用
- 可以并行查询多个用户以提高效率
功能列表
1. 搜索用户 (search-user)
根据姓名搜索用户,返回匹配的 UserId 列表。
bash
python scripts/search_user.py <搜索关键词>
输出:
json
{
success: true,
keyword: 张三,
totalCount: 3,
hasMore: false,
userIds: [123456789, 987654321]
}
2. 查询用户详情 (get-user)
获取指定用户的详细信息。
bash
python scripts/get_user.py
输出:
json
{
success: true,
user: {
userid: user001,
name: 张三,
mobile: 1381234,
deptidlist: [12345],
unionid: xxxxx
}
}
3. 根据手机号查询用户 (get-user-by-mobile)
bash
python scripts/getuserby_mobile.py <手机号>
输出:
json
{ success: true, mobile: 13800138000, userId: user001 }
4. 根据 unionid 查询用户 (get-user-by-unionid)
bash
python scripts/getuserby_unionid.py
输出:
json
{ success: true, unionid: xxxxx, userId: user001 }
5. 获取员工人数 (get-user-count)
bash
python scripts/getusercount.py [--onlyActive]
输出:
json
{ success: true, onlyActive: false, count: 150 }
6. 获取用户待审批数量 (get-user-todo-count)
bash
python scripts/getusertodo_count.py
输出:
json
{ success: true, userId: user001, count: 5 }
7. 获取未登录用户列表 (list-inactive-users)
bash
python scripts/listinactiveusers.py [--deptIds id1,id2] [--offset 0] [--size 100]
queryDate 格式: yyyyMMdd
输出:
json
{ success: true, queryDate: 20240115, userIds: [user001], hasMore: false }
8. 查询离职记录列表 (list-resigned-users)
bash
python scripts/listresignedusers.py [] [--nextToken xxx] [--maxResults 100]
startTime/endTime 格式: ISO8601
输出:
json
{
success: true,
startTime: 2024-01-01T00:00:00+08:00,
records: [{ userId: user001, name: 张三, leaveTime: 2024-01-15T10:00:00Z }]
}
9. 搜索部门 (search-department)
bash
python scripts/search_department.py <搜索关键词>
输出:
json
{ success: true, keyword: 技术部, totalCount: 2, departmentIds: [12345, 67890] }
10. 获取部门详情 (get-department)
bash
python scripts/get_department.py
输出:
json
{ success: true, department: { deptId: 12345, name: 技术部, parentId: 1 } }
11. 获取子部门列表 (list-sub-departments)
根部门 deptId = 1。
bash
python scripts/listsubdepartments.py
输出:
json
{ success: true, deptId: 1, subDepartmentIds: [12345, 67890] }
12. 获取部门用户列表 (list-department-users)
自动分页获取所有用户(简略信息)。
bash
python scripts/listdepartmentusers.py
输出:
json
{
success: true,
deptId: 12345,
users: [{ userId: user001, name: 张三 }, { userId: user002, name: 李四 }]
}
13. 获取部门用户详情 (list-department-user-details)
分页获取,支持 cursor 和 size。
bash
python scripts/listdepartmentuser_details.py [--cursor 0] [--size 100]
输出:
json
{ success: true, deptId: 12345, users: [...], hasMore: true, nextCursor: 100 }
14. 获取部门用户 ID 列表 (list-department-user-ids)
bash
python scripts/listdepartmentuser_ids.py
输出:
json
{ success: true, deptId: 12345, userIds: [user001, user002] }