You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rasa 3.3.0如何编写含按钮交互的Test Stories?

Rasa 3.3.0 测试按钮点击操作的Test Stories编写方案

首先你需要先修正按钮payload的语法错误,这是导致测试失败的关键问题之一:

utter_choose_food:
    - text: pizza or burger
      buttons:
          - title: pizza
            payload: '/order{"food": "pizza"}'
          - title: burger
            payload: '/order{"food": "burger"}'

原payload里{"food":,"pizza"}的逗号位置错误,且最好用单引号包裹,避免YAML解析异常。

接下来提供两种正确的Test Stories编写方式:

方式一:直接用意图+实体模拟

按钮点击本质是触发指定意图和实体,测试时可以直接在用户步骤里明确声明意图和对应的实体,无需依赖按钮文本或payload字符串:

stories:
- story: 测试披萨按钮点击流程
  steps:
  - user: /start  # 触发菜单的前置步骤,根据你的实际流程调整
  - action: utter_choose_food
  - user:
      intent: order
      entities:
        - food: pizza
  - action: utter_order_confirmed  # 替换为你的实际后续动作

方式二:使用正确格式的payload字符串

如果想直接模拟按钮的payload输入,需要保证格式完全正确,在测试故事的用户步骤里用完整的payload字符串:

stories:
- story: 测试汉堡按钮点击流程
  steps:
  - user: /start
  - action: utter_choose_food
  - user: '/order{"food": "burger"}'
  - action: utter_order_confirmed

为什么用按钮标题编写会失败?

按钮标题只是展示给用户的交互文本,不属于模型训练的意图触发词。直接写pizza作为用户步骤时,模型会将其视为普通文本,匹配到闲聊或其他训练过的意图,而非order意图,因此无法触发预期流程。

额外注意事项

  • 确保你的NLU训练数据中包含order意图关联food实体的示例,比如:
    nlu:
    - intent: order
      examples: |
        - 我要一份[pizza](food)
        - 点一个[burger](food)
        - /order{"food": "pizza"}
        - /order{"food": "burger"}
    
    这样模型才能正确识别按钮触发的意图和实体。

内容的提问来源于stack exchange,提问作者porti20

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 11:50:46