如何实现Google Assistant对话动作捕获输入后跳转至安卓应用
实现流程总览
整个需求分为Action Console端意图与槽位配置、跳转逻辑配置,以及安卓端深度链接适配两部分,具体操作如下:
一、Action Console 端配置步骤
- 首先确认你已创建的
StartBreastfeed意图的槽位配置,把喂养侧、宝宝姓名两个参数设为必填槽位,按照预设询问话术配置每个槽位的提示语,确保Assistant会按顺序发起询问收集所有参数。 - 完成槽位配置后,在意图的「Fulfillment」响应配置中,选择App action跳转,配置安卓应用的深度链接规则:
深度链接的URI格式参考:
myapp://breastfeed/start?side={喂养侧参数名}&babyName={宝宝姓名参数名},注意占位符要和你在意图中定义的参数key完全匹配,Google Assistant会自动把用户输入的参数值填充到对应占位符。 - 测试配置:在Action Console的测试模拟器中触发
StartBreastfeed指令,依次输入参数后确认Assistant返回的跳转URI参数填充正确。
二、安卓应用侧适配修改
1. 配置深度链接Intent Filter
在你要接收跳转的Activity的AndroidManifest.xml配置中,添加对应的intent-filter,匹配你之前定义的深度链接规则:
<activity android:name=".ui.breastfeed.BreastfeedStartActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="myapp" android:host="breastfeed" android:pathPrefix="/start" /> </intent-filter> </activity>
2. 接收传递的参数
在目标Activity的onCreate或者onNewIntent方法中,解析Intent携带的参数:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) intent?.data?.let { uri -> val feedSide = uri.getQueryParameter("side") val babyName = uri.getQueryParameter("babyName") // 拿到参数后执行后续业务逻辑即可 } } // 若Activity已经在栈中存在,需要在onNewIntent中也做参数解析 override fun onNewIntent(intent: Intent?) { super.onNewIntent(intent) intent?.data?.let { uri -> val feedSide = uri.getQueryParameter("side") val babyName = uri.getQueryParameter("babyName") // 处理参数 } }
3. 关联应用与Action Console项目
确保你在Google Play上架的应用包名、签名和Action Console中绑定的应用信息完全一致,否则跳转校验会失败无法拉起应用。
内容的提问来源于stack exchange,提问作者jatin
相关产品推荐
相关产品推荐

