我有一个 android 应用程序,它使用com.google.android.gms.actions.SEARCH_ACTION 在我的应用程序上搜索一个短语,使用在 APP_NAME 上搜索 PHRASE,但现在我想使用自定义语音命令,如APP_NAME PHRASE打开我的应用程序并传递它使用谷歌助手的短语。那么有没有可能实现这个功能呢?
我曾尝试使用https://github.com/actions-on-google/appactions-fitness-kotlin来深入了解操作意图的实际工作原理,并发现使用深度链接可能是可能的。
在此示例中,actions.xml文件中的一个操作actions.intent.GET_EXERCISE_OBSERVATION已实现,如下面的代码所示。
<action intentName="actions.intent.GET_EXERCISE_OBSERVATION">
<fulfillment
fulfillmentMode="actions.fulfillment.SLICE"
urlTemplate="content://com.devrel.android.fitactions.FitSliceProvider/stats{?exerciseType}">
<parameter-mapping
entityMatchRequired="true"
intentParameter="exerciseObservation.aboutExercise.name"
required="true"
urlParameter="exerciseType" />
</fulfillment>
<fulfillment
fulfillmentMode="actions.fulfillment.DEEPLINK"
urlTemplate="https://fit-actions.firebaseapp.com/stats" />
<parameter name="exerciseObservation.aboutExercise.name">
<entity-set-reference entitySetId="ExerciseEntitySet" />
</parameter>
</action>
<!-- Defines an entity set with our supported entities -->
<entity-set entitySetId="ExerciseEntitySet">
<entity
name="@string/activity_running"
alternateName="@array/runningSynonyms"
identifier="RUNNING" />
<entity
name="@string/activity_walking"
alternateName="@array/walkingSynonyms"
identifier="WALKING" />
<entity
name="@string/activity_cycling"
alternateName="@array/cyclingSynonyms"
identifier="CYCLING" />
</entity-set>
但现在我对这段代码有一些疑问。
- actions.fulfillment.SLICE的urlTemplate 是如何
content://com.devrel.android.fitactions.FitSliceProvider/stats{?exerciseType}
生成的? - exerciseObservation.aboutExercise.name可以有任何自定义值,而不是在entity-set中定义吗?
- actions.fulfillment.DEEPLINK的urlTemplate 是如何
https://fit-actions.firebaseapp.com/stats
生成的?
实施后,我认为actions.intent.OPEN_APP_FEATURE
在 DEEPLINK 实现的帮助下会有所帮助。
那么是否可以使用actions.intent.OPEN_APP_FEATURE"来实现这一点?