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
相关产品推荐
相关产品推荐

