Skip to content

节点信息输出

具体参照MaaFW文档:2.3 回调协议3.3 Project Interface V2 协议 | 节点通知处理

MFAA 节点通知文档:MFAAvalonia/README.md

Piphline流水线协议消息输出模版

jsonc
// 在 Pipeline 中配置消息模板
{
  "NodeA": {
    "focus": {
      "Node.Recognition.Succeeded": "{name} 识别命中,准备开始执行",
      "Node.Action.Starting": "{name} 开始执行,任务 ID: {task_id}",
    }
  }
}

// 当该节点开始执行时,UI 即会收到回调
{
  "message": "Node.Action.Starting",
  "details_json": {
    "task_id": 12345,
    "action_id": 11111,
    "name": "NodeA",
    "focus": {
      "Node.Recognition.Succeeded": "{name} 识别命中,准备开始执行",
      "Node.Action.Starting": "{name} 开始执行,任务 ID: {task_id}"
    }
  }
}

focus 值的两种写法

简写(纯字符串): 等价于 display: "log",内容仅展示在运行日志中。

json
"focus": {
    "Node.Action.Starting": "{name} 开始执行"
}

完整写法(对象): 可通过 display 字段指定展示渠道。 💡 v2.3.0

json
"focus": {
    "Node.Action.Starting": {
        "content": "{name} 开始执行",
        "display": "toast"
    }
}

display 可选值 💡 v2.3.0

说明行为特征
"log"运行日志(默认追加到日志流,不打断操作
"toast"应用内轻提示短暂浮现后自动消失,不阻塞
"notification"系统级通知推送到 OS 通知中心,应用在后台时也可收到
"dialog"非阻塞式对话框弹出信息框,任务流水线在后台继续执行
"modal"阻塞式弹窗弹出后任务暂停等待用户确认,适合需要人工干预的场景

display 支持数组,同一条消息可同时推送到多个渠道:

json
"focus": {
    "Node.Action.Succeeded": {
        "content": "{name} 执行成功",
        "display": ["log", "toast"]
    },
    "Node.Action.Failed": {
        "content": "执行失败,请检查环境",
        "display": ["log", "modal"]
    }
}

focus消息类型

消息类型触发时机可用占位符
Resource.Loading.Succeeded资源加载成功res_id, hash, path
Resource.Loading.Failed资源加载失败res_id, hash, path
Controller.Action.Starting控制器开始执行ctrl_id,uuid,action,param
Controller.Action.Succeeded控制器执行成功ctrl_id,uuid,action,param
Controller.Action.Failed控制器执行失败ctrl_id,uuid,action,param
Tasker.Task.Starting任务开始执行task_id,entry,uuid,hash
Tasker.Task.Succeeded任务执行成功task_id,entry,uuid,hash
Tasker.Task.Failed任务执行失败task_id,entry,uuid,hash
Node.Recognition.Starting节点识别开始task_id, reco_id, name
Node.Recognition.Succeeded节点识别成功task_id, reco_id, name
Node.Recognition.Failed节点识别失败task_id, reco_id, name
Node.Action.Starting节点动作开始task_id, action_id, name
Node.Action.Succeeded节点动作成功task_id, action_id, name
Node.Action.Failed节点动作失败task_id, action_id, name
Node.NextList.Starting下一步节点开始识别task_id,name,list
Node.NextList.Succeeded下一步节点识别成功task_id,name,list
Node.NextList.Failed下一步节点识别失败task_id,name,list
Node.PipelineNode.Starting流水线节点开始执行task_id, node_id,name
Node.PipelineNode.Succeeded流水线节点执行成功task_id, node_id,name
Node.PipelineNode.Failed流水线节点执行失败task_id, node_id,name

节点识别(Node.Recognition.x):

  • task_id: 任务 ID(数字)
  • reco_id: 识别 ID(数字)
  • name: 节点名称(字符串)
  • focus: 焦点相关数据(任意类型)

节点动作(Node.Action.x):

  • task_id: 任务 ID(数字)
  • action_id: 操作 ID(数字)
  • name: 节点名称(字符串)
  • focus: 焦点相关数据(任意类型)

下一步节点(Node.NextList.x):

  • task_id: 任务 ID(数字)
  • name: 节点名称(字符串)
  • list: 下一步节点列表(对象数组)
    • name: 节点名称或锚点名称(字符串)
    • jump_back: 是否回跳(布尔值)
    • anchor: 是否为锚点引用(布尔值),若为 true 则 name 为锚点名称
  • focus: 焦点相关数据(任意类型)

流水线节点(Node.PipelineNode.x):

*整个节点的状态,失败是on_error状态 如果用nextlist,会有多次识别失败记录,用pipelinenode则指这个节点失败

  • task_id: 任务 ID(数字)
  • node_id: 节点 ID(数字)
  • name: 节点名称(字符串)

资源类型(Resource.Loading.x):

  • res_id: 资源 ID(数字)
  • hash: 资源哈希值(字符串)
  • path: 资源路径(字符串)

控制器(Controller.Action.x):

  • ctrl_id: 控制器 ID(数字)
  • uuid: 唯一标识符(字符串)
  • action: 动作类型(字符串)
  • param: 动作参数(对象)

任务(Tasker.Task.x):

  • task_id: 任务 ID(数字)
  • entry: 入口任务名称(字符串)
  • uuid: 唯一标识符(字符串)
  • hash: 任务哈希值(字符串)