如何在Dialogflow中实现卡片响应式多选项车辆受损部件选择?
实现Dialogflow卡片响应多选车辆部件的方法
没问题,我来帮你一步步搞定这个多选功能,针对你这个事故车辆部件受损的场景,具体实现思路和操作如下:
1. 先创建自定义实体识别受损部件
首先得让Dialogflow能准确识别用户提到的各个部件,我们需要创建一个自定义实体:
- 进入Dialogflow控制台(不管是ES还是CX),找到「实体」页面
- 新建实体,比如命名为
vehicle_damage_parts - 实体类型选择「列表」(ES)或「枚举」(CX),然后添加所有可选部件作为条目:
- 挡风玻璃
- 保险杠
- 前侧
- 后部
- 引擎盖
- 可以给每个条目加同义词(比如“前保险杠”对应“保险杠”),提升识别准确率
2. 配置意图并开启参数多选功能
接下来要创建处理部件选择的意图,比如命名为Report_Vehicle_Damage:
- 在意图的「训练短语」里添加示例,比如:
- “挡风玻璃和保险杠受损”
- “前侧、后部还有引擎盖坏了”
- “只坏了挡风玻璃”
- 添加参数,关联刚才创建的
vehicle_damage_parts实体 - 关键操作:找到参数的设置选项,勾选「允许多个值」(ES里在参数详情页,CX里在参数配置的「重复」选项设为「是」),这样Dialogflow就能收集用户提到的多个部件值
3. 配置卡片响应引导用户多选
在意图的「响应」部分添加卡片,明确引导用户可以多选:
- 卡片标题:比如「请选择受损部件(可多选)」
- 卡片内容:列出所有可选选项,并说明多选方式,比如:
可选部件:挡风玻璃、保险杠、前侧、后部、引擎盖
可以同时选择多个,例如:“挡风玻璃和保险杠” 或 “前侧/后部” - 如果是用Dialogflow Messenger(DFM),还可以用更直观的多选复选框组件(CX支持,ES需要用自定义webhook响应),让用户直接点击选择多个部件,体验更好
4. 处理并使用多选的参数值
当用户回复多个部件后,Dialogflow会把这些值收集到参数里,以数组形式存储:
- 在Dialogflow控制台的「测试」面板里,你可以看到
vehicle_damage_parts参数的值是一个数组,比如["挡风玻璃", "保险杠"] - 如果用webhook处理,可以直接获取这个数组,比如Node.js代码示例:
// Dialogflow ES的webhook示例 function handleDamageParts(agent) { const damagedParts = agent.parameters.vehicle_damage_parts; agent.add(`已记录受损部件:${damagedParts.join('、')}`); } - 后续可以把这个数组存储到数据库,或者用于生成后续的事故报告
额外提示
- 可以在意图里设置「后续意图」,如果用户只说了一个部件,自动追问是否还有其他受损部件,提升交互完整性
- 测试时要覆盖各种多选组合,比如不同数量的部件、不同的分隔符(和/或/顿号等),确保识别准确
内容的提问来源于stack exchange,提问作者user6778410
相关产品推荐
相关产品推荐

