触发器
触发器定义了工作流如何在 ADK Studio 中启动。每个工作流都以一个 Trigger 节点开始,该节点决定了入口点——无论是来自用户输入、一个 HTTP webhook、一个 cron 计划,还是一个外部事件。

触发器类型
| 类型 | 描述 | 用例 |
|---|---|---|
| 手动 | 通过聊天输入由用户发起 | 交互式代理、测试 |
| Webhook | HTTP 端点 (POST/GET) | API 集成、CI/CD 流水线 |
| 计划 | 基于 Cron 的定时 | 定期报告、数据同步 |
| 事件 | 外部系统事件 | 微服务编排、事件驱动工作流 |
手动触发器
默认的触发器类型。当工作流具有手动触发器时,聊天输入框会显示一个可配置的标签和占位符。
配置:
| 属性 | 类型 | 默认值 |
|---|---|---|
inputLabel | string | "输入您的消息" |
defaultPrompt | string | "今天您能帮我用 ADK-Rust 构建什么?" |
输入标签显示在聊天输入字段上方,默认提示用作占位符文本。
Webhook 触发器
暴露一个 HTTP 端点,在被调用时启动工作流。有助于与外部服务、CI/CD 管道或其他应用程序集成。
配置:
| 属性 | 类型 | 描述 |
|---|---|---|
path | string | URL 路径 (例如,/my-webhook) |
method | GET, POST | 要接受的 HTTP 方法 |
auth | none, bearer, api_key | 认证要求 |
端点
每个 webhook 触发器会创建两个端点:
| 端点 | 行为 |
|---|---|
/api/projects/:id/webhook/*path | 异步 — 立即返回会话 ID |
/api/projects/:id/webhook-exec/*path | 同步 — 等待工作流完成并返回结果 |
GET webhooks 也有效:
GET /api/projects/:id/webhook/my-path?message=Hello
认证
Bearer token:
curl -X POST "http://localhost:3000/api/projects/{id}/webhook/my-path" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"message": "Process this"}'
API 密钥:
curl -X POST "http://localhost:3000/api/projects/{id}/webhook/my-path" \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{"message": "Process this"}'
Webhook 事件通知
通过 SSE 订阅实时 webhook 执行事件:
GET /api/projects/:id/webhook-events
此流在接收和处理 webhook 时发出事件。
计划触发器
使用 cron 表达式按重复计划运行工作流。
配置:
| 属性 | 类型 | 描述 |
|---|---|---|
cron | string | 5字段 cron 表达式 |
timezone | string | IANA 时区 (例如,America/New_York) |
defaultPrompt | string? | 当计划触发时发送的输入文本 |
Cron 语法
标准的 5 字段 cron 表达式:
┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-6, Sun=0)
│ │ │ │ │
* * * * *
示例:
| Expression | 含义 |
|---|---|
* * * * * | 每一分钟 |
0 9 * * * | 每天上午 9:00 |
0 0 * * 0 | 每周日午夜 |
0 */6 * * * | 每 6 小时 |
30 8 * * 1-5 | 工作日上午 8:30 |
调度服务跟踪 last_executed 时间戳以防止重复运行。
事件触发器
根据外部系统事件启动工作流。事件通过 source 和 eventType 进行匹配,并可选择对事件数据进行 JSONPath 过滤。
配置:
| 属性 | 类型 | 描述 |
|---|---|---|
source | string | 事件源标识符(例如,payment-service) |
eventType | string | 要匹配的事件类型(例如,payment.completed) |
filter | string? | 用于过滤事件的 JSONPath 表达式 |
发送事件
curl -X POST "http://localhost:3000/api/projects/{id}/events" \
-H "Content-Type: application/json" \
-d '{
"source": "payment-service",
"eventType": "payment.completed",
"data": {
"orderId": "12345",
"amount": 99.00,
"status": "active"
}
}'
JSONPath 过滤器
过滤事件,以便工作流仅在满足特定条件时触发:
| 过滤表达式 | 匹配条件 |
|---|---|
$.data.status == 'active' | 状态字段等于 "active" |
$.data.amount > 100 | 金额超过 100 |
$.data.priority == 'high' | 优先级为 "high" |
不符合过滤条件的事件将被静默忽略。
触发器感知运行按钮
Studio UI 会根据当前活动的触发器类型进行调整:
- 手动 — 带有配置的标签和占位符的标准聊天输入
- Webhook — 运行按钮发送模拟的 Webhook 有效负载
- 计划 — 运行按钮发送配置的默认提示
- 事件 — 运行按钮发送模拟的事件有效负载
当工作流自上次构建以来发生更改时,发送按钮会转换为构建按钮,以提示重新编译。
API 参考
| 端点 | 方法 | 描述 |
|---|---|---|
/api/projects/:id/webhook/*path | POST, GET | 异步 webhook 触发器 |
/api/projects/:id/webhook-exec/*path | POST | 同步 webhook 触发器 (等待结果) |
/api/projects/:id/webhook-events | GET | SSE 流用于 webhook 通知 |
/api/projects/:id/events | POST | 事件触发器 |