Files
chat-deploy/docs/API_SCHEDULED_TASK.md
kim.dev.6789 b7f8db7d08 复制项目
2026-01-14 22:35:45 +08:00

7.4 KiB
Raw Permalink Blame History

定时任务 API 接口文档

基础信息

  • 基础路径: /scheduled_task
  • 认证方式: 所有接口都需要在请求头中携带 token(通过 mw.CheckToken 中间件验证)
  • 请求方法: 所有接口均为 POST

公共数据结构

ScheduledTaskMessage消息内容

{
  "type": 1,           // 消息类型1-文本2-图片3-视频
  "content": "string", // 消息内容文本内容、图片URL、视频URL等
  "thumbnail": "string", // 缩略图URL用于图片和视频可选
  "duration": 0,      // 时长(秒,用于视频,可选)
  "fileSize": 0       // 文件大小(字节,用于图片和视频,可选)
}

ScheduledTaskInfo定时任务信息

{
  "id": "string",                    // 任务ID
  "userID": "string",                // 用户ID
  "name": "string",                  // 任务名称
  "cronExpression": "string",        // Crontab表达式分 时 日 月 周(例如:"0 9 * * *"
  "messages": [                      // 消息列表(支持多条消息一起发送)
    {
      "type": 1,
      "content": "string",
      "thumbnail": "string",
      "duration": 0,
      "fileSize": 0
    }
  ],
  "recvIDs": ["string"],             // 接收者ID列表单聊可以多个
  "groupIDs": ["string"],            // 群组ID列表群聊可以多个
  "status": 1,                       // 状态0-已禁用1-已启用
  "createTime": 1234567890123,       // 创建时间(毫秒时间戳)
  "updateTime": 1234567890123        // 更新时间(毫秒时间戳)
}

RequestPagination分页信息

{
  "pageNumber": 1,    // 页码从1开始
  "showNumber": 10    // 每页显示数量
}

Crontab 表达式说明

格式:分 时 日 月 周

  • : 0-59
  • : 0-23
  • : 1-31
  • : 1-12
  • : 0-70和7都表示周日

示例

  • "0 9 * * *" - 每天9点执行
  • "*/5 * * * *" - 每5分钟执行
  • "0 0 * * 1" - 每周一0点执行
  • "0 12 * * 1-5" - 周一到周五每天12点执行
  • "0 0 1 * *" - 每月1号0点执行

1. 创建定时任务

接口地址: POST /scheduled_task/create

请求参数:

{
  "name": "string",                  // 必填:任务名称
  "cronExpression": "string",        // 必填Crontab表达式
  "messages": [                      // 必填:消息列表(至少一条)
    {
      "type": 1,                     // 必填消息类型1-文本2-图片3-视频
      "content": "string",            // 必填:消息内容
      "thumbnail": "string",          // 可选缩略图URL
      "duration": 0,                  // 可选:时长(秒)
      "fileSize": 0                  // 可选:文件大小(字节)
    }
  ],
  "recvIDs": ["string"],             // 可选接收者ID列表单聊可以多个
  "groupIDs": ["string"],            // 可选群组ID列表群聊可以多个
  "status": 1                        // 可选状态0-已禁用1-已启用默认为1
}

注意: recvIDsgroupIDs 至少需要提供一个,不能同时为空。

响应参数:

{
  "errCode": 0,
  "errMsg": "",
  "errDlt": "",
  "data": {
    "taskID": "string"               // 创建的任务ID
  }
}

请求示例:

{
  "name": "每日问候",
  "cronExpression": "0 9 * * *",
  "messages": [
    {
      "type": 1,
      "content": "早上好!"
    },
    {
      "type": 2,
      "content": "https://example.com/image.jpg",
      "thumbnail": "https://example.com/thumb.jpg",
      "fileSize": 102400
    }
  ],
  "recvIDs": ["user1", "user2"],
  "groupIDs": ["group1"],
  "status": 1
}

2. 获取定时任务详情

接口地址: POST /scheduled_task/get

请求参数:

{
  "taskID": "string"                 // 必填任务ID
}

响应参数:

{
  "errCode": 0,
  "errMsg": "",
  "errDlt": "",
  "data": {
    "task": {                        // 定时任务信息
      "id": "string",
      "userID": "string",
      "name": "string",
      "cronExpression": "string",
      "messages": [
        {
          "type": 1,
          "content": "string",
          "thumbnail": "string",
          "duration": 0,
          "fileSize": 0
        }
      ],
      "recvIDs": ["string"],
      "groupIDs": ["string"],
      "status": 1,
      "createTime": 1234567890123,
      "updateTime": 1234567890123
    }
  }
}

3. 获取定时任务列表

接口地址: POST /scheduled_task/list

请求参数:

{
  "pagination": {                    // 必填:分页信息
    "pageNumber": 1,                 // 页码从1开始
    "showNumber": 10                  // 每页显示数量
  }
}

响应参数:

{
  "errCode": 0,
  "errMsg": "",
  "errDlt": "",
  "data": {
    "total": 100,                    // 总数
    "tasks": [                       // 任务列表
      {
        "id": "string",
        "userID": "string",
        "name": "string",
        "cronExpression": "string",
        "messages": [
          {
            "type": 1,
            "content": "string",
            "thumbnail": "string",
            "duration": 0,
            "fileSize": 0
          }
        ],
        "recvIDs": ["string"],
        "groupIDs": ["string"],
        "status": 1,
        "createTime": 1234567890123,
        "updateTime": 1234567890123
      }
    ]
  }
}

4. 更新定时任务

接口地址: POST /scheduled_task/update

请求参数:

{
  "taskID": "string",                // 必填任务ID
  "name": "string",                   // 可选:任务名称
  "cronExpression": "string",         // 可选Crontab表达式
  "messages": [                       // 可选:消息列表
    {
      "type": 1,
      "content": "string",
      "thumbnail": "string",
      "duration": 0,
      "fileSize": 0
    }
  ],
  "recvIDs": ["string"],             // 可选接收者ID列表
  "groupIDs": ["string"],            // 可选群组ID列表
  "status": 1                        // 可选状态0-已禁用1-已启用
}

注意:

  • 所有字段都是可选的,只更新提供的字段
  • 如果更新 recvIDsgroupIDs,确保至少有一个不为空

响应参数:

{
  "errCode": 0,
  "errMsg": "",
  "errDlt": "",
  "data": {}
}

请求示例:

{
  "taskID": "task123",
  "name": "更新后的任务名称",
  "status": 0
}

5. 删除定时任务

接口地址: POST /scheduled_task/delete

请求参数:

{
  "taskIDs": ["string"]              // 必填任务ID列表支持批量删除
}

响应参数:

{
  "errCode": 0,
  "errMsg": "",
  "errDlt": "",
  "data": {}
}

请求示例:

{
  "taskIDs": ["task1", "task2", "task3"]
}

错误码说明

  • 0: 成功
  • 其他错误码请参考系统错误码定义

注意事项

  1. 所有接口都需要在请求头中携带有效的 token
  2. 用户只能操作自己创建的定时任务
  3. recvIDsgroupIDs 可以同时提供,表示同时发送到多个单聊和群聊
  4. messages 数组支持多条消息,会按顺序发送
  5. Crontab 表达式需要符合标准格式,客户端负责解析和执行
  6. 服务端只负责存储配置,不执行定时任务