跳转至

变量注入速查手册

受众: 模板编排人员(运营、产品) 目的: 在 AdminPortal InitFlow 编排器中编写初始化流程时,快速查找平台注入的可用变量


平台注入变量一览

以下变量由平台自动注入,在 InitFlow 的 pathheadersbodycondition 中通过 {{变量名}} 引用。

变量 引用方式 说明 示例值
机器人服务地址 {{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}}              ← 完整 JSON 字符串(很少直接用)
{{Feature.字段名}}        ← 顶层字段
{{Feature.父字段.子字段}}  ← 嵌套字段(按点路径)

示例

模板 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}}"}


变量优先级

同名变量以高优先级为准:

步骤提取变量(extract / script)  ← 最高
平台注入变量(ServiceURL / Feature.* 等)  ← 最低

循环变量

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}} 机器人所在集群名称