Skip to main content

用户反馈 Block

用户反馈 block 用于在工作流执行过程中与用户进行交互,可以向用户提出问题并收集反馈。这个 block 特别适合需要人工决策或输入的场景。

配置选项

{
  // 问题类型:text(文本)、choice(选择)等
  type: "text",

  // 问题描述
  question: "",

  // 是否必答
  required: true,

  // 选项列表(type 为 choice 时使用)
  choices: [],

  // 默认值
  defaultValue: "",

  // 超时设置(秒)
  timeout: 300,

  // 验证规则
  validation: {
    // 最小长度
    minLength: null,
    // 最大长度
    maxLength: null,
    // 正则表达式
    pattern: null
  }
}

参数说明

  1. type
    • 类型:string
    • 可选值:text、choice
    • 默认值:text
    • 作用:决定问题的类型和回答方式
  2. question
    • 类型:string
    • 默认值:空字符串
    • 作用:设置要向用户提出的问题
    • 说明:支持多语言配置
  3. required
    • 类型:boolean
    • 默认值:true
    • 作用:控制是否必须回答
    • 说明:设为 false 时允许跳过
  4. choices
    • 类型:array
    • 默认值:空数组
    • 作用:提供选择题的选项列表
    • 说明:仅在 type 为 choice 时有效
  5. defaultValue
    • 类型:string
    • 默认值:空字符串
    • 作用:设置默认答案
    • 说明:用户可以直接使用默认答案
  6. timeout
    • 类型:number
    • 默认值:300(秒)
    • 作用:设置等待用户回答的最长时间
    • 说明:超时后将使用默认值或报错
  7. validation
    • 类型:object
    • 作用:设置答案的验证规则
    • 说明:可以限制长度和格式

问题类型说明

文本问题 (text)

  • 用户可以输入任意文本
  • 支持长度限制和格式验证
  • 适用于开放性问题

选择问题 (choice)

  • 用户从预设选项中选择
  • 可以是单选或多选
  • 适用于封闭性问题

使用示例

  1. 基础文本问题
{
  "type": "ask",
  "options": {
    "type": "text",
    "question": "请描述您遇到的问题:",
    "required": true,
    "timeout": 300
  }
}
  1. 选择题
{
  "type": "ask",
  "options": {
    "type": "choice",
    "question": "您更喜欢哪种颜色?",
    "choices": ["红色", "蓝色", "绿色"],
    "required": true,
    "defaultValue": "蓝色"
  }
}
  1. 带验证的文本问题
{
  "type": "ask",
  "options": {
    "type": "text",
    "question": "请输入您的电子邮箱:",
    "required": true,
    "validation": {
      "pattern": "^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$"
    }
  }
}

注意事项

  1. 超时处理
    • 设置合理的超时时间
    • 准备超时后的处理方案
    • 考虑是否需要重试机制
  2. 问题设计
    • 问题描述要清晰明确
    • 选项设计要合理全面
    • 避免歧义性表述
  3. 答案验证
    • 根据实际需求设置验证规则
    • 为用户提供明确的错误提示
    • 考虑特殊字符的处理
  4. 与其他 Block 配合
    • 可以根据用户反馈控制工作流方向
    • 可以将用户反馈传递给其他 block
    • 可以在循环中重复询问
    • 可以与条件判断结合使用
  5. 用户体验
    • 提供清晰的操作指引
    • 设置合理的默认值
    • 保持响应的及时性