变量注入速查手册¶
受众: 模板编排人员(运营、产品) 目的: 在 AdminPortal InitFlow 编排器中编写初始化流程时,快速查找平台注入的可用变量
平台注入变量一览¶
以下变量由平台自动注入,在 InitFlow 的 path、headers、body、condition 中通过 {{变量名}} 引用。
| 变量 | 引用方式 | 说明 | 示例值 |
|---|---|---|---|
| 机器人服务地址 | {{ServiceURL}} |
目标服务的 HTTP 根地址(自动拼接到 path 前) | http://friday.ns.svc:8080 |
| 认证 Header 名 | {{AdminKey}} |
管理员认证的 Header key 名称 | admin_key |
| 认证 Header 值 | {{AdminSecret}} |
管理员认证的密钥(32字节 hex) | ac4a30aed11de510... |
| 机器人 ID | {{RobotID}} |
当前数字员工的唯一标识 | friday |
| 初始密码 | {{Password}} |
用户创建时填写的密码(Argon2id 哈希) | $argon2id$v=19$... |
| 功能配置(整体) | {{Feature}} |
用户填写的完整 Feature JSON 字符串 | {"feishuToken":"xxx"} |
| 功能配置(子字段) | {{Feature.xxx}} |
Feature 下的具体字段,按模板 JsonSchema 定义 | 见下方说明 |
上述变量由平台自动注入,无需手动定义,在 URL / Header / Body 中直接用
{{变量名}}引用即可。
Feature 变量¶
Feature 是模板定义的,每个数字员工模板通过 JsonSchema 定义需要用户填写的配置字段。用户在部署时填写,平台将值展平注入。
引用方式¶
示例¶
模板 Feature 配置为:
{
"feishuToken": "t-xxx",
"webhook": {"url": "https://example.com/hook", "secret": "s-yyy"},
"maxRetry": 3
}
则可用的变量为:
| 变量 | 值 |
|---|---|
{{Feature.feishuToken}} |
t-xxx |
{{Feature.webhook.url}} |
https://example.com/hook |
{{Feature.webhook.secret}} |
s-yyy |
{{Feature.maxRetry}} |
3 |
查看模板管理后台的 "Feature 配置" JsonSchema 定义,里面的每个 key 都可以用
{{Feature.key}}引用。
步骤提取的变量¶
通过 HTTP 步骤的 extract 规则从响应中提取的变量,后续步骤可直接引用:
{
"type": "http",
"name": "登录",
"request": {"method": "POST", "path": "/api/login"},
"extract": [
{"var": "token", "from": "body", "path": "$.data.accessToken"},
{"var": "reqId", "from": "header", "headerName": "X-Request-Id"}
]
}
后续步骤引用:"headers": {"Authorization": "Bearer {{token}}"}
变量优先级¶
同名变量以高优先级为准:
循环变量¶
forEach¶
| 变量 | 说明 | 默认名 | 可自定义 |
|---|---|---|---|
{{_item}} |
当前迭代元素 | _item |
itemVar 字段 |
{{_index}} |
当前迭代索引(从 0 开始) | _index |
indexVar 字段 |
对象元素会自动展平:{{item.name}}、{{item.type}}
loop¶
| 变量 | 说明 |
|---|---|
{{_iteration}} |
当前轮次索引(从 0 开始) |
常用 InitFlow 片段¶
认证请求¶
{
"type": "http",
"name": "登录获取 Token",
"request": {
"method": "POST",
"path": "/api/login",
"headers": {"{{AdminKey}}": "{{AdminSecret}}"},
"body": {"robotId": "{{RobotID}}", "password": "{{Password}}"}
},
"extract": [
{"var": "token", "from": "body", "path": "$.data.accessToken"}
],
"assert": [
{"source": "status", "op": "eq", "value": 200}
]
}
条件配置¶
{
"type": "if",
"condition": {"left": "{{Feature.enableFeishu}}", "op": "eq", "right": "true"},
"steps": [
{"type": "http", "name": "配置飞书", "request": {"method": "POST", "path": "/api/feishu"}}
]
}
轮询等待就绪¶
{
"type": "loop",
"maxIterations": 10,
"delay": 3000,
"breakWhen": {"source": "body", "path": "$.status", "op": "eq", "value": "ready"},
"steps": [
{"type": "http", "name": "轮询状态", "request": {"method": "GET", "path": "/api/health"}}
]
}
规划中(暂未支持)¶
| 变量 | 说明 |
|---|---|
{{Namespace}} |
机器人所在 K8s 命名空间 |
{{ClusterName}} |
机器人所在集群名称 |