☰
Botpress ClickUp 集成实战:为聊天机器人接入 ClickUp 任务创建、更新与评论能力
2026/10/7 12:15:54 网站建设 项目流程
  • AI 应用
  • 后端

【免费下载链接】botpress

The open-source hub to build & deploy GPT/LLM Agents ⚡️

项目地址:https://gitcode.com/gh_mirrors/bo/botpress
点击查看免费下载

本文基于 Botpress 开源仓库中的 ClickUp 官方集成(集成说明文档)编写,围绕该集成的配置流程、可用动作(Actions)、Webhook 事件、评论通道与 API 限制展开。读者阅读后将掌握如何在 Botpress 工作区中完成 ClickUp 集成的鉴权配置,理解createTask、updateTask、deleteTask、getListMembers四个内置动作的完整参数与底层 API 调用关系,并了解机器人如何通过 Webhook 实时感知任务创建、更新、删除与评论事件。

集成能做什么:连接聊天机器人到 ClickUp

ClickUp 集成让 Botpress 聊天机器人能够直接操作你的 ClickUp 工作区。官方集成定义(integration.definition.ts)将它的能力概括为 "Create and update tasks, and add comments from your chatbot",即:

  • 创建任务:在指定 List 中新建任务,可携带描述、状态、负责人、截止日期与标签;
  • 更新任务:修改任务的名称、描述、状态、归档状态、负责人与截止日期;
  • 删除任务:按任务 ID 删除任务;
  • 查询列表成员:获取某个 List 下所有成员及其邮箱信息;
  • 回复任务评论:通过comment通道,机器人可以直接在任务的评论区发表文本消息;
  • 接收实时事件:集成启用时自动注册 ClickUp Webhook,将taskCreated、taskUpdated、taskDeleted、taskCommentPosted等事件实时转发给 Botpress。

换言之,团队可以在聊天工具中通过机器人完成"帮我建一个任务""把某任务状态改为进行中""提醒大家查看某个任务的评论"等操作,而不必频繁切换界面,从而简化项目管理流程、提升团队协作效率。

配置前置准备:获取 API Key 与 Team ID

使用该集成前,需要从 ClickUp 账户中准备两项核心凭证:API Key与Team ID。官方文档(hub.md)给出的步骤如下:

1. 生成 API Key

  1. 登录你的 ClickUp 账户;
  2. 进入个人 Profile 设置,选择Apps区块;
  3. 生成或获取你的 API Key。

API Key 是集成调用 ClickUp API 的唯一凭证,在 Botpress 侧会被保存为集成配置项apiKey,并被封装进 HTTP 请求头中(详见下文"底层实现")。

2. 查找 Team ID

  1. 打开 ClickUp 工作区,查看左侧菜单栏;
  2. 复制工作区的 URL,例如https://app.clickup.com/9011669285/v/s/90112461548;
  3. URL 中最后一段 ID 即为 Team ID,上例中对应90112461548。

注意:示例 URL 中倒数第二段9011669285是 Workspace ID,而末尾的90112461548才是集成所需的 Team ID,两者不要混淆。

在 Botpress 中配置并启用集成

完成上述凭证准备后,按以下步骤在 Botpress 中启用 ClickUp 集成:

  1. 进入 Botpress 工作区的Integrations区块;
  2. 选择ClickUp Integration,打开配置面板;
  3. 依次填入以下两项配置:
    • API Key:上一步生成的 ClickUp API Key;
    • Team ID:从工作区 URL 末尾提取的 Team ID;
  4. 保存配置并启用集成;
  5. 启用成功后,机器人即可与你的 ClickUp 工作区交互。

从集成定义看(integration.definition.ts),apiKey与teamId均为必填字符串,Botpress 会基于 zod schema 对配置做类型校验。集成启用时(对应 src/index.ts 中的register钩子),会先调用getUser()校验 API Key 是否有效,确认有访问权限后再向 ClickUp 注册 Webhook——也就是说,如果 API Key 无效,集成会直接注册失败,避免留下一个"看起来启用、实际不可用"的集成实例。

内置动作(Actions)详解

集成对外暴露四个动作,均可直接在 Botpress 的画布节点或 LLM 工具调用中使用。动作声明位于 integration.definition.ts,实现位于 src/actions。

createTask:在列表中创建任务

参数类型必填说明
listIdstring是任务要创建到的 List 的 ID
namestring是任务名称
descriptionstring否任务描述
statusstring否任务状态(如待办/进行中/完成)
assigneesnumber[]否任务负责人(ClickUp 成员 ID 数组)
dueDatestring(ISO datetime)否截止日期
tagsstring[]否任务标签

输出:{ taskId: string }

实现要点(createTask.ts):动作会把 ISO 格式的dueDate字符串通过new Date(dueDate).getTime()转换为毫秒级时间戳,再交给ClickUpClient.createTask调用 ClickUp 的POST /list/{listId}/task接口,最终返回新任务的taskId(由 ClickUp 返回的数值型 ID 转为字符串)。

updateTask:更新任务详情

参数类型必填说明
taskIdstring是要更新的任务 ID
namestring否任务新名称
descriptionstring否任务新描述
statusstring否任务新状态
archivedboolean否是否归档
assigneesToAddnumber[]否需要新增到任务的成员
assigneesToRemovenumber[]否需要从任务移除的成员
dueDatestring(ISO datetime)否新截止日期

输出:{ taskId: string }

实现要点(updateTask.ts):assigneesToAdd与assigneesToRemove会被合并为{ add: [...], rem: [...] }结构,dueDate同样转换为毫秒时间戳,最终通过PUT /task/{taskId}提交。所有字段均可选,未传入的字段不会在请求体中携带。

deleteTask:删除任务

参数类型必填说明
taskIdstring是要删除的任务 ID

输出:{}(无返回数据)

实现调用 ClickUp 的DELETE /task/{taskId}接口(deleteTask.ts)。删除是不可逆操作,建议在画布逻辑中增加确认环节。

getListMembers:获取列表成员

参数类型必填说明
listIdstring是要查询成员列表的 List ID

输出:members: { id: number; username: string; email: string }[]

实现调用 ClickUp 的GET /list/{listId}/member接口(getListMembers.ts)。该动作常与createTask配合使用:先查询列表成员拿到合法成员 ID,再把这些 ID 作为assignees传入建任务动作,避免传入无效的负责人。

动作的公共封装

四个动作都通过 action-wrapper.ts 统一封装:每个动作执行前会记录Running action "xxx"的调试日志(含 botId 与输入),执行时通过toolFactories注入基于当前集成配置创建的ClickUpClient实例;一旦底层调用抛错,会使用createAsyncFnWrapperWithErrorRedaction将异常收敛为sdk.RuntimeError,以Failed to create a new task、Failed to update the task等自定义消息返回给调用方,避免向用户暴露底层 API 细节。

事件与 Webhook:实时感知任务变化

ClickUp 集成的"实时性"来自 Webhook。集成启用时(src/index.ts 的setWebhook函数)会:

  1. 调用GET /team/{teamId}/webhook查询已有 Webhook;
  2. 若存在 endpoint 与当前 BotpresswebhookUrl相同的记录,则更新其为 active 状态并同步事件列表;
  3. 否则新建 Webhook,endpoint 指向 Botpress 分配的回调地址。

注册的事件包括taskCommentPosted、taskCreated、taskUpdated、taskDeleted四种。

所有 Webhook 回调统一进入 handler.ts 分发:

  • 请求体先做 JSON 解析,非法 JSON 返回 400;
  • taskCreated/taskUpdated/taskDeleted:通过client.createEvent向 Botpress 抛出对应事件,payload 为{ id: task_id }。集成定义中声明的三个事件(integration.definition.ts)即与之对应,可在 Botpress 画布中通过"事件"节点监听并驱动后续流程(例如任务创建后自动通知相关人员);
  • taskCommentPosted:转入executeCommentReceived处理(见下节)。

评论通道:让机器人参与任务讨论

集成定义了一个名为comment的通道(integration.definition.ts),支持text文本消息。通道实现位于 channels.ts:机器人发送文本时,会调用 ClickUp 的POST /task/{taskId}/comment接口,以当前 API Key 对应的账户身份在任务下发表评论(notify_all为 false),并从返回结果中取出评论 ID 作为消息标签id回执。

与"机器人发评论"相对的是"接收用户评论"。Webhook 中的taskCommentPosted事件由 executeCommentReceived.ts 处理,其逻辑是:

  1. 先获取当前机器人账户信息,跳过机器人自己发出的评论(避免回声循环);
  2. 对每条评论历史记录,按user.id创建/复用 Botpress 用户,按task_id创建/复用comment通道下的会话(会话标签taskId即任务 ID);
  3. 将评论内容写入 Botpress 消息,使机器人的对话引擎可以把"任务评论"当作普通消息来处理。

由此形成闭环:团队成员在 ClickUp 任务下留言 → 事件进入 Botpress → 机器人可以感知并基于知识库或 LLM 自动回复 → 回复内容通过comment通道写回 ClickUp 评论区。

底层实现:ClickUpClient 与 API 调用关系

所有 ClickUp API 调用集中在 client.ts 的ClickUpClient类中,它基于axios构建,baseURL为https://api.clickup.com/api/v2,每个请求携带Authorization: <apiKey>请求头。主要端点映射如下:

方法HTTP 端点用途
getUserGET /user校验凭证、获取当前用户
listWebhooksGET /team/{teamId}/webhook查询已注册 Webhook
createWebhookPOST /team/{teamId}/webhook注册 Webhook
updateWebhookPUT /webhook/{webhookId}更新 Webhook
createCommentPOST /task/{taskId}/comment发布任务评论
createTaskPOST /list/{listId}/task创建任务
getTaskGET /task/{taskId}查询任务
updateTaskPUT /task/{taskId}更新任务
deleteTaskDELETE /task/{taskId}删除任务
getListMembersGET /list/{listId}/member查询列表成员

集成包依赖axios ^1.7.7以及@botpress/sdk、@botpress/common、@botpress/client(见 package.json),并提供了check:type(tsc 类型检查)、check:bplint、build、test(vitest)等标准脚本。如果你想在本地查看或扩展该集成,可阅读其 集成定义 与 入口文件。

平台限制与最佳实践

官方文档(hub.md)明确说明,ClickUp 集成受平台 API 限制约束,主要包括:

  • 速率限制(Rate Limits):每个工作区限制为每分钟 100 次请求、每秒钟 10 次请求;
  • 请求体大小限制(Payload Size):API 调用存在大小限制,发送的数据需符合 ClickUp 的规格要求。

这些限制意味着:

  1. 批量操作要控速:当机器人需要一次性创建/更新大量任务时,应避免在短时间内密集调用,可在流程中引入节流或分批策略,防止触发限流导致任务失败;
  2. 长文本要精简:写入任务描述或评论的文本不宜过长,超出载荷上限的请求会被拒绝;
  3. 失败要可观测、可重试:得益于动作封装层的错误收敛(action-wrapper.ts),限流等异常会以明确的错误消息返回给流程,便于在画布中设计"重试"或"告警"分支;更稳妥的做法是配合指数退避在外部编排层实现自动重试。

关于速率限制的完整规则与最佳实践,ClickUp 官方开发者文档中有更详细的说明,集成使用者可在遇到 429 等限流响应时查阅官方文档并据此调整调用节奏。

小结

Botpress 的 ClickUp 集成把"项目管理后台"与"对话机器人"打通:通过apiKey+teamId两步配置即可启用;createTask、updateTask、deleteTask、getListMembers四个动作覆盖了任务生命周期管理;Webhook 与comment通道则让机器人既能实时感知任务变化,也能直接参与任务评论讨论。结合官方给出的速率限制(每工作区每分钟 100 次、每秒 10 次),在实际流程设计中为批量操作预留节流与重试空间,即可稳定地把 ClickUp 协作能力嵌入团队日常对话中。

  • AI 应用
  • 后端

【免费下载链接】botpress

The open-source hub to build & deploy GPT/LLM Agents ⚡️

项目地址:https://gitcode.com/gh_mirrors/bo/botpress
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询