自动化与交互事件
处理定时任务状态变化、人工输入请求与回答,以及工作台洞察状态变化。
这组事件适合把 Poco 的自动化运行和需要人工参与的节点接入工单、IM、审批或监控系统。
定时任务状态变化
事件:scheduled_task.run_status_changed
载荷版本:v2,正式推送和测试推送一致。
该版本使用 scheduled_task.cron_expressions 数组替代原来的 scheduled_task.cron 字符串,不再发送旧字段。接收端需要同步处理新版本和表达式数组。
当定时任务的一次运行状态变化时触发。主要字段:
| 字段 | 说明 |
|---|---|
scheduled_task.scheduled_task_id | 定时任务 ID |
scheduled_task.name | 定时任务名称 |
scheduled_task.cron_expressions | 主步骤的 Cron 表达式数组 |
scheduled_task.timezone | 定时任务时区 |
run.run_id | 本次运行 ID |
run.session_id | 本次运行关联会话 ID |
run.status | 当前状态 |
run.previous_status | 上一个状态,可能为 null |
run.last_error | 失败原因,可能为 null |
session.project_id | 关联项目,可能为 null |
接收端应使用 run.run_id + run.status 作为业务状态推进依据。同一运行可能多次触发状态变化,不要把收到第一条事件当作运行结束。
该事件不使用 session_kinds 过滤。项目级配置会根据关联项目匹配。
请求人工输入
事件:user_input.requested
Agent 运行到需要用户选择、确认或补充信息的节点时触发。
| 字段 | 说明 |
|---|---|
user_input.request_id | 用户输入请求 ID,回答时的关联依据 |
user_input.session_id | 关联会话 ID |
user_input.tool_name | 发起请求的工具名 |
user_input.tool_input | 请求内容,可能已规范化或清理敏感配置 |
user_input.status | 通常为 pending |
user_input.answers | 请求阶段通常为 null |
user_input.expires_at | 请求过期时间 |
user_input.answered_at | 请求阶段通常为 null |
session | 关联会话摘要 |
建议把 request_id 存入工单或交互卡片中,并在展示给用户前根据 tool_input 生成业务友好的问题。到达 expires_at 后不要再提交回答。
查询和回答步骤见 人工输入接口。回答使用任务所属用户的登录 Token,不是原始对话 Key。
人工输入已回答
事件:user_input.answered
用户完成回答后触发,结构与 requested 事件相同,主要变化是:
user_input.status通常为answered。user_input.answers包含回答内容。user_input.answered_at包含回答时间。
该事件适合关闭外部待办、同步审批结果或更新 IM 卡片。使用 request_id 与先前的 requested 事件关联,不要只按会话 ID 查找,因为同一会话可能出现多个输入请求。
工作台洞察状态变化
事件:workbench.insight_status_changed
当工作台洞察的处理状态变化时触发,主要对象为 insight,并通过 meta.trigger_source 说明触发来源。事件包含洞察标题、摘要、优先级,以及变化前后的状态。
接收端可以用于:
- 同步洞察状态到外部知识库。
- 在高优先级洞察进入待处理状态时告警。
- 洞察关闭后更新外部任务。
状态枚举应以载荷实际值为准。接收端对未知新状态应记录并忽略,不要因为无法识别状态而返回 5xx 导致重复投递。
实现注意事项
- 这四类事件都不使用
session_kinds过滤。 - 系统级 WebHook 收到不同用户事件时,应读取外层
user决定数据归属。 - 对同一运行或输入请求的状态更新可能乱序到达;持久化时结合事件时间和当前业务状态判断是否更新。