Dialogflow集成Android SDK后能否使用建议芯片等富响应?
Dialogflow Android SDK 集成后支持建议芯片等富响应组件吗?
当然可以!Dialogflow的Android SDK完全支持建议芯片(suggestion chips)这类富响应组件,我在做Dialogflow集成的Android项目时经常用到这个功能,下面给你拆解下实现步骤和注意事项:
先确认SDK版本:确保你使用的是官方维护的Dialogflow Android客户端库(不管是ES还是CX版本),最新版本都对富响应有完善的支持,尽量别用过时的第三方封装库,容易出兼容问题。
从Dialogflow响应中提取建议芯片数据:当你调用Dialogflow的
detectIntent接口拿到响应后,需要从QueryResult的messages列表里筛选出包含建议芯片的消息。每个建议芯片的文本内容都存在Suggestions对象里,代码示例如下:
// 假设你已经通过API调用获取到DetectIntentResponse DetectIntentResponse response = yourDetectIntentCall(); List<Intent.Message> messageList = response.getQueryResult().getMessagesList(); for (Intent.Message message : messageList) { // 检查当前消息是否包含建议芯片 if (message.hasSuggestions()) { Intent.Message.Suggestions suggestions = message.getSuggestions(); List<Intent.Message.Suggestions.Suggestion> chipItems = suggestions.getSuggestionsList(); // 遍历每一个建议芯片,准备渲染到UI for (Intent.Message.Suggestions.Suggestion chip : chipItems) { String chipText = chip.getTitle(); // 调用自定义方法渲染芯片 renderSuggestionChip(chipText); } } }
- 在Android UI中渲染建议芯片:Android的
ChipGroup和Chip组件是展示建议芯片的最佳选择,你可以动态创建Chip实例,设置文本和点击事件(点击后直接把芯片文本作为用户输入发送给Dialogflow),比如:
private void renderSuggestionChip(String text) { Chip chip = new Chip(this); chip.setText(text); chip.setChipBackgroundColorResource(R.color.chip_light_blue); chip.setTextColor(getResources().getColor(R.color.white)); // 点击芯片时发送对应的查询内容到Dialogflow chip.setOnClickListener(v -> sendUserQuery(text)); // 把Chip添加到预先定义好的ChipGroup布局中 chipGroup.addView(chip); }
- 其他富响应组件也支持:除了建议芯片,Dialogflow Android SDK还支持卡片、图片、快速回复等富响应,逻辑和提取建议芯片类似,都是从
Intent.Message中对应字段获取数据后,在Android端自定义渲染即可。
几个小提醒
- 要在Dialogflow控制台的意图配置里正确添加富响应(比如建议芯片),不然SDK拿不到对应的数据;
- 确保你的Android应用已经申请了
INTERNET网络权限,毕竟需要和Dialogflow的API交互; - 如果是Dialogflow CX版本,API的响应结构会略有不同,但核心逻辑都是从响应中提取富响应数据再渲染。
内容的提问来源于stack exchange,提问作者Michelle Vivita
相关产品推荐
相关产品推荐

