钉钉开发“待办“接口版本调研

钉钉开发"待办"接口版本调研

结论速览

  • 旧版 (WorkRecord / OA消息):本质是"消息"。入口在"工作通知"会话窗口中。数据孤岛,无法与钉钉主界面的"待办"Tab打通。
  • 新版 (Todo 2.0):本质是"任务"。入口在钉钉底部的"待办"Tab、日历以及侧边栏。支持设置截止时间、执行人,且UI体验是原生的。
  • 推荐强烈建议使用新版 (Todo)。旧版接口已逐渐边缘化,且无法进入用户的核心任务管理视图。

一、 接口详细对比表

特性 旧版 (WorkRecord / OA消息) 新版 (Todo / 统一待办)
核心逻辑 发送一条带有状态栏的消息 创建一个原生的任务对象
用户入口 聊天列表 -> 工作通知 钉钉客户端底部"待办"Tab / 聊天侧边栏 / 日历
API 版本 OAPI (Old style) Open API v1.0 (RESTful)
权限要求 基础的消息发送权限 需申请 todo.write 等特定权限
交互体验 消息流形式,容易被刷走 列表形式,长期驻留,直到完成
删除功能 仅支持更新状态,很难物理删除 支持物理删除
文档地址 已标记为不推荐或旧版 钉钉待办任务文档

二、 接口调用方式对比

1. 推送待办 (Create)

旧版 (WorkRecord)

旧版通常使用"发起待办事项"接口。

  • Endpoint: POST /topapi/workrecord/add
  • 特点: 需要构建一个表单列表(FormItem),用户点击后跳转到第三方URL。
  • 缺点: 只是在"工作通知"里发了一条消息,用户如果不点进去,很容易忽略。

新版 (Todo)

新版是在用户的待办中心创建一个实体任务。

  • Endpoint: POST /v1.0/todo/users/{unionId}/tasks

  • Payload 示例:

    复制代码
    {
      "subject": "请审批合同文件",
      "description": "2024年度采购合同",
      "dueTime": 1703664000000, // 截止时间
      "executorIds": ["user123"], // 执行人
      "isOnlyShowExecutor": true,
      "sourceId": "unique_id_from_your_system" // 业务系统唯一ID,防重
    }
  • 优势: 支持设置截止时间(会有强提醒),直接出现在待办清单中。

2. 置已办 (Update Status)

旧版 (WorkRecord)

旧版通过更新待办事项的状态来"置已办"。

  • Endpoint: POST /topapi/workrecord/update
  • 逻辑: 传入 record_id,将状态字段更新。
  • 表现: 用户聊天窗口里的那条消息,状态栏颜色变化(如从红变绿),文字变为"已完成"。

新版 (Todo)

新版通过更新任务状态接口。

  • Endpoint: PUT /v1.0/todo/users/{unionId}/tasks/{taskId}/status

  • Payload:

    JSON

    复制代码
    {
      "isDone": true
    }
  • 表现: 该任务自动从用户的"待办"列表中移动到"已完成"列表,并划掉。

3. 删除待办 (Delete)

旧版 (WorkRecord)

  • 接口: 无直接删除接口
  • 替代方案: 只有"撤回消息"的概念 (/topapi/message/corpconversation/recall),或者将其状态更新为"取消"。这导致旧版数据清理非常麻烦。

新版 (Todo)

  • Endpoint: DELETE /v1.0/todo/users/{unionId}/tasks/{taskId}
  • 逻辑: 物理删除。调用后,该任务从用户的任何视图中彻底消失。
  • 优势: 适合处理脏数据或业务回滚场景。

三、 迁移注意事项 (Pitfalls)

如果您决定从旧版迁移到新版,或者直接开发新版,请注意以下"坑":

  1. UnionId vs Userid:
    • 旧版接口大量使用 userid
    • 新版 v1.0 接口为了标准化,RESTful 路径中通常要求使用 unionId。你需要先通过 userid 换取 unionId,或者维护两者的映射关系。
  2. sourceId 的重要性:
    • 在新版创建待办时,务必传入 sourceId(你们业务系统的主键ID)。这样后续更新状态时,虽然标准API推荐用 taskId(钉钉生成的ID),但部分SDK允许通过 sourceId 查找到任务,防止网络抖动导致的重复创建。
  3. 应用类型:
    • 新版待办接口目前主要开放给企业内部应用(H5微应用或小程序)。如果是第三方ISV应用,权限申请流程会有所不同。
  4. 点击跳转:
    • 新版待办支持配置 appUrl(移动端跳转)和 pcUrl(PC端跳转)。务必配置这两个参数,否则用户点击待办卡片无法跳转到你们的审批/详情页面。

四、 总结与建议

  • 如果你的需求是: 仅仅是发个通知提醒用户,不需要用户跟踪状态,也不需要归档。
    • -> 使用 工作通知 (OA消息) 接口(不是WorkRecord,是Message)。
  • 如果你的需求是: 真正的任务流转(如OA审批、任务指派),希望用户能有一个清单统一管理,做完一个少一个。
    • -> 必须使用 新版 (Todo) 接口
相关推荐
北极糊的狐1 天前
钉钉小程序 Git 版本管理完整流程
git·小程序·钉钉
z12345677793 天前
2026年企业AI办公工具深度评测:钉钉悟空平替横向选型指南
人工智能·钉钉
黑马金牌编程10 天前
Prometheus + alertmanager + n8n +接入钉钉告警自动化处理告警
linux·钉钉·prometheus·普罗米修斯·监控系统·n8n
辉灰笔记11 天前
第一篇:MySQL8.0生产备份实战|XtraBackup全自动全量+增量备份(钉钉告警+异地Binlog归档)
数据库·mysql·钉钉·运维开发
北冥有鱼被烹15 天前
钉钉开启mcp服务支持自动创建文章
钉钉
是枚小菜鸡儿吖15 天前
服务器出问题别等用户反馈:用Python和钉钉搭一套轻量告警系统
服务器·python·钉钉
xiaogai_gai16 天前
钉钉数据集成到金蝶云星空案例分享:传给钉钉后,回传金蝶字段
java·前端·钉钉
yyxx4121231 个月前
上海企业如何选择专业的钉钉服务商
java·大数据·人工智能·钉钉
小懿互联集成平台1 个月前
金蝶云星空与钉钉OA审批对接-构建一体化财务付款管理体系
钉钉·金蝶云星空·数据对接·小懿互联·构建一体化财务付款
TMT星球1 个月前
钉钉发布DingTalk A1豆蔻医生版,售价999元
人工智能·深度学习·钉钉