Android-приложение-действие с пользовательским шаблоном запроса
У меня есть приложение для Android, которое использует com.google.android.gms.actions.SEARCH_ACTION для поиска фразы в моем приложении с помощью поиска PHRASE в APP_NAME, но теперь я хочу использовать собственную голосовую команду, например APP_NAME PHRASE, чтобы открыть мое приложение и передать его. фраза с помощью помощника Google. Так возможно ли реализовать эту функцию?
Я попытался с https://github.com/actions-on-google/appactions-fitness-kotlin чтобы получить глубокое представление о том, как на самом деле работает намерение действия, и обнаружил, что это может быть возможно с помощью глубоких ссылок.
Здесь, в этом примере, в файле actions.xml одно действие action.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>
Но теперь у меня есть несколько вопросов, касающихся этого кода.
- Как urlTemplate
content://com.devrel.android.fitactions.FitSliceProvider/stats{?exerciseType}
для actions.fulfillment.SLICE генерируется? - Может ли exercObservation.aboutExercise.name иметь какое-либо пользовательское значение, а не определенное в наборе сущностей?
- Как urlTemplate
https://fit-actions.firebaseapp.com/stats
для actions.fulfillment.DEEPLINK генерируется?
После реализации этого я думаю actions.intent.OPEN_APP_FEATURE
будет полезно с помощью выполнения DEEPLINK.
Так возможно ли реализовать это с помощью actions.intent.OPEN_APP_FEATURE "?
0 ответов
- Как urlTemplate
content://com.devrel.android.fitactions.FitSliceProvider/stats{?exerciseType}
для actions.fulfillment.SLICE сгенерирован?
В urlTemplate
значение (будь то выполнение с помощью фрагмента или глубокой ссылки) полностью зависит от вас. В случае глубинной ссылки это URL-адрес, который система вызовет, чтобы открыть ваше приложение. В случае среза это contentUri, который система будет вызывать для рендеринга среза. Параметры внутри {} будут расширены значениями во время выполнения. Чтобы лучше понять, как это работает, см. Документацию здесь и здесь или сеанс Google I/O 2019.
- Может ли упражнение Observation.aboutExercise.name иметь любое настраиваемое значение, а не определено в наборе сущностей?
Я не совсем понимаю, что вы имеете в виду, но позвольте мне попытаться рассказать подробнее. Пары имя изexerciseObservation.aboutExercise.name
устанавливается для каждого намерения помощника и не может быть изменен. Эти значения перечислены в документации (пример). Фактические значения параметров (которые заполняются запросом пользователя во время выполнения) являются динамическими и будут изменяться в зависимости от запроса пользователя и намерения помощника. Для каждого намерения помощника вы можете обратиться к документации, чтобы узнать, какие могут быть возможные значения. В некоторых случаях они взяты из определенного списка значений (например, для GET_EXERCISE_OBSERVATION
), для других это может быть значение в произвольной форме на основе ввода пользователя, а для других вы можете при желании расширить значения, используя встроенный инвентарь (это то, что вы используете<entity-set>
для вашего примера).
- Как urlTemplate
https://fit-actions.firebaseapp.com/stats
для actions.fulfillment.DEEPLINK генерируется?
Согласно № 1, значение urlTemplate
полностью зависит от вас. Это может быть любой URI намерения Android. Система вызовет этот Uri для запуска вашего приложения /Activity.
После реализации этого я думаю
actions.intent.OPEN_APP_FEATURE
будет полезно с помощью выполнения DEEPLINK.Так можно ли реализовать это с помощью actions.intent.OPEN_APP_FEATURE"?
OPEN_APP_FEATURE
это просто еще одно намерение помощника, которое позволяет универсальный вызов функции вашего приложения. В документах были недавно обновлены с некоторыми примерами запросами. Например.
Открыть историю Youtube
В этом примере будет открыто приложение с именем "YouTube" и передается имя функции "history" в приложение для обработки.
Функция Open Example App Example
В этом примере будет открыто приложение с именем "Пример приложения" и передано имя функции "Пример функции" приложению для обработки.