feat: add dingtalk-log skill for querying work reports
- Add SKILL.md with full API documentation - Add shell script for quick queries - Update TOOLS.md with reference to new skill
This commit is contained in:
86
skills/dingtalk-log/SKILL.md
Normal file
86
skills/dingtalk-log/SKILL.md
Normal file
@@ -0,0 +1,86 @@
|
||||
# 钉钉工作日志查询
|
||||
|
||||
查询钉钉工作日志(周报/日报等)。
|
||||
|
||||
## 接口信息
|
||||
|
||||
- **接口地址**: `POST https://oapi.dingtalk.com/topapi/report/list`
|
||||
- **认证方式**: access_token(基于企业内部应用)
|
||||
- **时间单位**: ⚠️ **毫秒**(不是秒!)
|
||||
|
||||
## 前置条件
|
||||
|
||||
1. 获取 access_token:
|
||||
```bash
|
||||
curl -s -X POST 'https://api.dingtalk.com/v1.0/oauth2/accessToken' \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{
|
||||
"appKey": "dingklemniq8uqk5qbgx",
|
||||
"appSecret": "_8EHgyhvHRHRMx6fZbh9LNpQoxyYl3At0b-fXXlQiahwupbt9oY5P6Grj8IM9Dx8"
|
||||
}'
|
||||
```
|
||||
|
||||
2. 凭证存储在 `TOOLS.md`:
|
||||
- AgentId: 4404185308
|
||||
- Client ID (AppKey): dingklemniq8uqk5qbgx
|
||||
- Client Secret (AppSecret): _8EHgyhvHRHRMx6fZbh9LNpQoxyYl3At0b-fXXlQiahwupbt9oY5P6Grj8IM9Dx8
|
||||
|
||||
## 调用示例
|
||||
|
||||
```bash
|
||||
# 查询指定用户的日志(时间单位:毫秒)
|
||||
curl -s 'https://oapi.dingtalk.com/topapi/report/list?access_token={TOKEN}' \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{
|
||||
"userid": "121922510028034588",
|
||||
"offset": 0,
|
||||
"size": 10,
|
||||
"start_time": 1738329600000,
|
||||
"end_time": 1743292800000,
|
||||
"cursor": 0
|
||||
}'
|
||||
```
|
||||
|
||||
## 参数说明
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| userid | string | ✅ | 用户的钉钉 userid |
|
||||
| start_time | number | ✅ | 开始时间,**毫秒**时间戳 |
|
||||
| end_time | number | ✅ | 结束时间,**毫秒**时间戳 |
|
||||
| cursor | number | ✅ | 分页游标(首次查询传 0) |
|
||||
| size | number | ✅ | 每页数量(建议 10) |
|
||||
| offset | number | ❌ | 偏移量(兼容旧版,可不传) |
|
||||
|
||||
## 返回字段说明
|
||||
|
||||
日志内容在 `result.data_list` 数组中,每个元素的 `contents` 数组包含各字段:
|
||||
|
||||
| contents.key | 说明 |
|
||||
|-------------|------|
|
||||
| 本周完成工作 / 本日完成工作 | 完成事项 |
|
||||
| 本周工作总结 / 本日工作总结 | 详细总结 |
|
||||
| 下周工作计划 / 下日工作计划 | 后续计划 |
|
||||
| 需协调与帮助 | 协调事项 |
|
||||
| 图片 | 图片列表 |
|
||||
| 附件 | 附件列表 |
|
||||
|
||||
其他字段:
|
||||
- `report_id`: 日志ID
|
||||
- `template_name`: 日志模板名称(如"经理人周报")
|
||||
- `creator_name`: 创建人姓名
|
||||
- `dept_name`: 部门名称
|
||||
- `create_time`: 创建时间(毫秒)
|
||||
|
||||
## 分页查询
|
||||
|
||||
通过 `cursor` 分页:
|
||||
1. 首次查询 `cursor: 0`
|
||||
2. 返回 `next_cursor` 作为下次查询的游标
|
||||
3. `has_more: false` 表示最后一页
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. ⚠️ **时间单位必须是毫秒**:如 `1743292800000`(不能用 `1743292800`)
|
||||
2. ⚠️ **字段名是 `userid`(全小写)**,不是 `userId`
|
||||
3. 部分日志内容可能超长被截断,返回可能不完整
|
||||
54
skills/dingtalk-log/scripts/dt_log.sh
Normal file
54
skills/dingtalk-log/scripts/dt_log.sh
Normal file
@@ -0,0 +1,54 @@
|
||||
#!/bin/bash
|
||||
# 钉钉工作日志查询脚本
|
||||
|
||||
# 配置(从 TOOLS.md 读取)
|
||||
APP_KEY="dingklemniq8uqk5qbgx"
|
||||
APP_SECRET="_8EHgyhvHRHRMx6fZbh9LNpQoxyYl3At0b-fXXlQiahwupbt9oY5P6Grj8IM9Dx8"
|
||||
API_BASE="https://oapi.dingtalk.com"
|
||||
|
||||
# 获取 access_token
|
||||
get_token() {
|
||||
curl -s -X POST 'https://api.dingtalk.com/v1.0/oauth2/accessToken' \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d "{\"appKey\":\"$APP_KEY\",\"appSecret\":\"$APP_SECRET\"}" | \
|
||||
grep -o '"accessToken":"[^"]*"' | cut -d'"' -f4
|
||||
}
|
||||
|
||||
# 查询日志
|
||||
query_logs() {
|
||||
local userid=$1
|
||||
local start_time=$2 # 毫秒
|
||||
local end_time=$3 # 毫秒
|
||||
local size=${4:-10}
|
||||
local cursor=${5:-0}
|
||||
local token=$6
|
||||
|
||||
curl -s "$API_BASE/topapi/report/list?access_token=$token" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d "{
|
||||
\"userid\": \"$userid\",
|
||||
\"start_time\": $start_time,
|
||||
\"end_time\": $end_time,
|
||||
\"cursor\": $cursor,
|
||||
\"size\": $size
|
||||
}"
|
||||
}
|
||||
|
||||
# 解析毫秒时间戳为日期
|
||||
ms_to_date() {
|
||||
local ms=$1
|
||||
date -d @$((ms / 1000)) "+%Y-%m-%d %H:%M:%S"
|
||||
}
|
||||
|
||||
# 帮助信息
|
||||
usage() {
|
||||
echo "钉钉工作日志查询"
|
||||
echo ""
|
||||
echo "用法: $0 <userid> <start_time_ms> <end_time_ms> [size] [cursor]"
|
||||
echo ""
|
||||
echo "示例:"
|
||||
echo " $0 121922510028034588 1738329600000 1743292800000"
|
||||
echo " $0 121922510028034588 1738329600000 1743292800000 20 0"
|
||||
echo ""
|
||||
echo "时间戳获取: date +%s000000 (mac/linux)"
|
||||
}
|
||||
Reference in New Issue
Block a user