必须采用钉钉开放平台+自建webhook中转+事件订阅组合路径实现coze与钉钉待办实时同步:开通企业自建应用获取appkey/appsecret,开启待办权限,配置todostatuschange事件订阅并严格校验签名,通过coze http插件或函数调用对接api,配合结构化知识库与轻量webhook服务完成双向状态同步。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在扣子(Coze)中实时同步钉钉待办事务,让AI Bot自动创建、更新、关闭钉钉Todo,并响应状态变更触发后续动作,必须绕过官方未开放的待办直连API,采用钉钉开放平台+自建Webhook中转+事件订阅的组合路径。
开通钉钉开放平台企业自建应用
登录钉钉开发者后台(open.dingtalk.com),进入「企业内部开发」→「创建应用」→选择「企业内部自主开发」类型。
填写应用名称(如“Coze-Todo桥接器”)、LOGO和描述,保存后获取【AppKey与AppSecret】——这是后续所有接口调用的身份凭证,泄露将导致企业待办数据被任意读写。
在「应用功能」中开启「待办事项」权限,并手动勾选「读取用户待办列表」「创建待办」「更新待办状态」三项,否则Coze侧调用会返回403错误。
配置钉钉待办事件订阅(关键一步)
进入「事件订阅」→「添加事件」→搜索并启用「todoStatusChange」事件。
设置回调URL为你的公网可访问地址(如https://your-domain.com/webhook/dingtalk-todo),该地址需能接收POST请求并解析钉钉签名验证。
生成AES密钥与Token,二者必须与后端Webhook服务中配置的完全一致,【密钥一旦保存无法查看,务必立即复制存档】,否则待办状态变更事件将全部丢失且无日志可查。
点击「启用」后,钉钉会向你的回调地址发送测试事件,只有返回200且签名校验通过,才算真正生效。
在Coze Bot中接入待办同步逻辑
方法一:使用「HTTP请求」插件调用钉钉待办API
在Bot工作流中添加「HTTP请求」节点,Method选POST,URL填钉钉待办创建接口:https://oapi.dingtalk.com/topapi/todo/task/create?access_token={token}。
Body中传入JSON格式任务体,必须包含title、userid(目标员工的union_id)、due_time(毫秒时间戳)、remind_type(1=到期提醒)等字段,缺任一字段会导致创建失败但返回200空响应,极易误判成功。
方法二:通过「知识库」+「函数调用」实现双向映射
新建结构化知识库,字段包括:coze_task_id、dingtalk_todo_id、status、title、assignee_unionid、created_at。
当Coze Bot收到用户指令“帮我加个待办:下周三交方案”,先调用函数生成唯一coze_task_id,再调用钉钉API创建待办,成功后将映射关系写入知识库。
当钉钉侧触发todoStatusChange事件,Webhook服务解析后,立即调用Coze Bot的「函数调用」能力,根据dingtalk_todo_id查出coze_task_id,同步更新Bot内任务状态卡片。
部署轻量级Webhook中转服务(必需环节)
第一步:用Node.js或Python Flask搭建最小服务,监听/dingtalk-todo路径,接收钉钉推送的JSON事件体。
第二步:对请求头中的timestamp、sign进行签名验证,验证失败直接返回403——钉钉每5分钟会重试一次,不校验将导致重复处理爆炸。
第三步:提取事件中的task_id、status、operator_userid,查询本地映射表获得对应coze_task_id。
第四步:调用Coze Bot的「Bot消息推送」API,向指定会话发送结构化卡片,内容含「✅ 已完成:提交季度报告」并附跳转链接。










