После того как вы определите свою функциональность в приложении и соответствующие встроенные намерения (BII), которые необходимо реализовать, объявите BII, которые поддерживает ваша функциональность, определив элемент capability
в файле ресурсов shortcuts.xml
. Объявление BII как capability
регистрирует поддержку этого семантического намерения в вашем приложении и позволяет выполнять голосовой запрос с помощью Google Assistant.
Ассистент использует обработку естественного языка для извлечения параметров из пользовательского запроса. Встроенная ссылка на намерения перечисляет поля, которые каждый BII способен извлечь из связанного пользовательского запроса. Например, если пользователь вызывает возможность [ actions.intent.GET_FOOD_OBSERVATION
][] в вашем приложении, говоря: «Эй, Google, спроси в примере приложения, что я ел на обед в прошлую пятницу» , Ассистент извлекает следующие параметры BII из запроса пользователя. :
-
foodObservation.forMeal
= "https://schema.googleapis.com/MealTypeLunch" -
foodObservation.startTime
= "2024-09-06T00:00:00" -
foodObservation.endTime
= "2024-09-06T23:59:59"
Помощник передает параметры BII в intent
выполнения, определенное в capability
. Один или несколько элементов intent
могут быть определены с возможностью учитывать различные способы, которыми пользователь может вызвать BII. Например, вы можете определить intent
выполнения, для которого требуются оба параметра BII в приведенном выше примере. Затем вы можете определить второе намерение, для которого требуется один параметр BII, foodObservation.forMeal
, который сообщает обо всех приемах пищи в определенный день, например «Окей, Google, спроси в exampleApp, что я ел на обед».
Обзор
Вы настраиваете действия приложения с помощью файла shortcuts.xml
, размещенного в каталоге res/xml
вашего проекта приложения, а затем создаете ссылку на shortcuts.xml
в манифесте вашего приложения. Добавьте ссылку на shortcuts.xml
в манифест приложения, выполнив следующие действия:
В файле манифеста вашего приложения (
AndroidManifest.xml
) найдите действие, фильтры намерений которого настроены на действиеandroid.intent.action.MAIN
и категориюandroid.intent.category.LAUNCHER
.Добавьте ссылку на
shortcuts.xml
вAndroidManifest.xml
используя тег<meta-data>
вActivity
, который имеет фильтры намерений как дляMAIN
, так иLAUNCHER
, как показано ниже:<meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" />
В приведенном выше примере объявляется ресурс XML для файла xml/shortcuts.xml
в APK. Дополнительные сведения о настройке ярлыков см. в разделе Создание статических ярлыков в документации для разработчиков Android.
Библиотека Jetpack androidx.core:core:1.6.0
(или более поздняя версия) необходима в вашем проекте Android, чтобы избежать ошибок компиляции при определении возможностей действий приложения в shortcuts.xml
. Подробности см. в разделе Начало работы с Android Jetpack .
Статические ярлыки
При определении capability
вы можете объявить статические элементы shortcut
в shortcuts.xml
, чтобы расширить функциональность возможности. Статические ярлыки обрабатываются Ассистентом, когда вы загружаете выпуск в консоль Google Play. Поскольку статические ярлыки можно создавать и обновлять только путем создания новых выпусков, они наиболее полезны для выделения общих действий и контента в вашем приложении.
Вы можете включить следующие функции действий приложения с помощью статических ярлыков:
Ярлыки возможностей . Создайте ярлыки, которые запускают экземпляр вашей
capability
, содержащий предопределенные значения параметровintent
. Например, вы можете объявить ярлык приложения «Начать пробежку», который вызывает возможностьSTART_EXERCISE
BII в вашем фитнес-приложении.Эти ярлыки содержат атрибуты
intent
,shortLabel
иlongLabel
, что позволяет предлагать и выполнять их в качестве фишек в проактивных поверхностях, таких как Assistant, или при длительном нажатии значка приложения в средствах запуска Android. Ярлык действия также может служить ярлыком объекта, как описано ниже, путем его связывания сcapability
с помощью тега<capability-binding>
.Ярлыки объектов . Ярлыки объектов предоставляют список поддерживаемых значений параметров для выполнения голосового
capability
. Например, ярлык объекта со списком типов упражнений («поход», «бег» и т. д.), привязанный к BII-параметруexercise.name
возможностиSTART_EXERCISE
. Если высказывание пользователя соответствует сущности, идентификаторshortcutId
передается в намерение вместо необработанного значения пользовательского запроса.Ярлыки
Entity
не определяют атрибутыintent
,shortLabel
илиlongLabel
и поэтому не предлагаются на упреждающих поверхностях. Подробную информацию см. в разделе Встроенная инвентаризация для действий приложения .
Схема возможностей
В следующей таблице описана схема действий приложения для элементов capability
в shortcuts.xml
. При включении тега все его атрибуты являются обязательными, если не указано «необязательно».
Тег Shortcuts.xml | Содержится в | Атрибуты |
---|---|---|
<capability> | <shortcuts> | |
<intent> | <capability> | |
<url-template> | <intent> | |
<extra> | <intent> | Применимо только для вызова приложения переднего плана. |
<parameter> | <intent> | |
<shortcut-fulfillment> | <capability> | Применимо только для встроенного инвентаря |
<parameter> | <shortcut-fulfillment> | android:name |
<slice> | <capability> | Применимо только для Android Slices |
Описание схемы возможностей
В этом разделе описываются элементы схемы capability
.
<возможность>
capability
, определяющая намерение действия приложения, которое поддерживает ваше приложение. Каждый элемент <capability>
в файле shortcuts.xml
должен содержать хотя бы одно <intent>
для обработки выполнения действия.
Атрибуты:
-
android:name
: встроенный идентификатор действия намерения (например, [actions.intent.GET_FOOD_OBSERVATION
][]). Список поддерживаемых встроенных намерений см. в справочнике по встроенным намерениям . -
app:queryPatterns
: ресурс строкового массива запросов, ожидаемых от пользователя для этого намерения. Этот атрибут применим только к пользовательским намерениям , поскольку BII уже включают модели распространенных способов, с помощью которых пользователи выражают задачи, которые они пытаются выполнить, или информацию, которую они ищут.
<намерение>
Элемент intent
Android, определяющий, как пользовательский запрос должен выполняться с использованием функций приложения. Разработчики могут предоставлять несколько тегов <intent>
в capability
. Помощник пытается выполнить пользовательский запрос, используя первое <intent>
в capability
, для которой предоставлены все необходимые параметры.
Атрибуты:
-
android:action
: типAction
намерения. По умолчаниюACTION_VIEW
. -
android:targetClass
: класс целевой активности, например:"com.example.exercise.ExerciseActivity"
-
android:targetPackage
: пакет, содержащий целевой класс Activity, например:"com.example.exercise
-
android:data
: это поле перезаписывается<url-template>
, если этот тег объявлен вintent
.
<url-шаблон>
Шаблон для создания URI глубокой ссылки , который будет открыт на устройстве. Шаблон можно расширить встроенными параметрами намерений, если доступны все необходимые параметры шаблона. Примеры шаблонов URL-адресов HTTP см. в статье Википедии о шаблонах URL-адресов . Формат шаблона соответствует спецификации шаблона URI RFC6570 .
Ниже приведены некоторые примеры значений шаблона URL-адреса:
Шаблон | Ценности | Расширенное значение |
---|---|---|
https://example.com/test{?foo,bar} | "foo": "123" | https://example.com/test?foo=123&bar=456 |
https://example.com/test?utm_campaign=appactions{&foo,bar} | "foo": "123" | https://example.com/test?utm_campaign=appactions&foo=123&bar=456 |
https://example.com/test?utm_campaign=appactions{#foo} | "foo": "123" | https://example.com/test?utm_campaign=appactions#foo=123 |
myapp://example/{foo} | "foo": "123" | myapp://example/123 |
Дополнительные сведения о настройке шаблонов URL-адресов см. в разделе «Шаблоны URL-адресов в выполнении» .
<дополнительно>
Определяет дополнительные данные для intent
. Для действий приложения это поле используется только для включения [вызова приложения на переднем плане][] для capability
.
<параметр>
Сопоставляет параметр BII со значениями параметров намерения. Для получения дополнительной информации см. Данные параметров и сопоставление .
Атрибуты:
-
android:name
: имя параметра BII, который будет связан с этим параметромintent
. Имя должно быть полем конечного уровня параметра BII (например,foodObservation.aboutFood.name
). -
android:key
: определяемый разработчиком ключ значения параметра BII. Например, вы можете определитьcontact_name
для параметраmessage.recipient.name
BII. -
android:mimeType
: mimeType параметра, напримерtext/*
. Это поле необходимо только для параметров пользовательских намерений . -
android:required
: объявляет, должен ли пользовательский запрос включать этот параметр, чтобы это намерение могло использоваться для выполнения. Если параметр недоступен, Ассистент пытается выполнить запрос пользователя, используя следующееintent
, определенное дляcapability
.
<ярлык-выполнение>
Указывает, что intent
, определенное во встроенном ярлыке инвентаря для указанного параметра, будет использоваться для выполнения. Подробности см. в разделе «Выполнение с использованием ярлыков намерений» .
<параметр> (для <shortcut-fulfillment>
> )
Необязательный атрибут, который сопоставляет один параметр BII с выполнением встроенных ярлыков инвентаризации. Подробности см. в разделе «Выполнение с использованием ярлыков намерений» .
Атрибут:
-
android:name
: имя параметра BII, который будет связан с выполнением ярлыков встроенного инвентаря. Имя должно быть полем конечного уровня параметра BII (например,menuItem.name
).
<кусок>
Позволяет Ассистенту внедрить результат запроса, соответствующего этой capability
, в виде фрагмента Android. Подробности см. в разделе «Интеграция действий приложения с фрагментами Android» .
Схема ярлыка
В следующей таблице описаны атрибуты элементов shortcut
, которые используются для включения функций действий приложения. При включении тега все его атрибуты являются обязательными, если не указано «необязательно».
Тег Shortcuts.xml | Содержится в | Атрибуты |
---|---|---|
<shortcut> | <shortcuts> | |
<intent> | <shortcut> | |
<capability-binding> |
| |
<parameter-binding> | <capability-binding> | |
<extra> | <shortcut> | Применимо только для сопоставления параметров Enum . |
Описание схемы ярлыка
В этом разделе описаны элементы схемы shortcut
.
<ярлык>
Android <shortcut>
, определенный в shortcuts.xml
с определенными атрибутами, которые относятся к действиям приложения. Строковые значения полей shortcutShortLabel
и shortcutLongLabel
доступны через строковые ресурсы APK.
Атрибуты:
-
android:shortcutId
: Идентификатор этого ярлыка. -
android:shortcutShortLabel
: строковый ресурс, представляющий короткую сокращенную фразу. Например,"@string/callDavidShort"
представляющий значение «Позвонить Дэвиду». -
android:shortcutLongLabel
: строковый ресурс, представляющий длинную сокращенную фразу. Например,"@string/callDavidLong"
представляющий значение «Сделать аудиовызов Дэвиду».
<намерение>
Намерение Android, связанное с этим ярлыком. Это intent
выполняется, когда пользователь запускает этот ярлык с помощью голоса или касания.
Атрибуты намерения shortcut
идентичны атрибутам intent
capability
.
<привязка возможностей>
Связывает shortcut
с capability
действий приложения. Добавление этого элемента в shortcut
позволяет использовать его для голосового выполнения с помощью Assistant
.
Атрибуты:
-
android:key
: атрибутandroid:name
capability
, к которой привязан этотshortcut
. Например,actions.intent.START_EXERCISE
.
<привязка параметра>
Необязательный атрибут, который связывает shortcut
с одним параметром capability
App Actions. Если для shortcut
определена parameter-binding
, ярлык можно использовать для предоставления встроенного объекта инвентаризации для параметра BII. Дополнительные сведения см. в разделе Встроенная инвентаризация для действий приложения .
Атрибуты:
-
android:key
: имя параметра BIIcapability
, с которым можно связать этот ярлык. Например,exercise.name
. -
android:value
: значениеentity
. Это может быть отдельнаяentity
или список ресурсов.
<дополнительно>
extra
данные пакета для ярлыка. SameAs — единственные данные, относящиеся к элементам shortcut
действий приложения. URL-адрес SameAs относится к ссылочной веб-странице, которая однозначно идентифицирует объект. Используется для указания значения перечисления тогда и только тогда, когда тип параметра намерения является подтипом Schema.org/Enumeration . Это необходимо для полей параметров, типы которых являются подтипами schema.org/Enumeration
(например: MealTypeBreakfast
).
Атрибуты:
-
android:key
: поддерживаемое значение для действий приложения:sameAs
-
android:value
: тоsameAs
значение URL, что и URL.
Дополнительные сведения см. в разделе Сопоставление значений перечисляемых параметров .
Варианты реализации намерения
Вы определяете элементы intent
в <capability>
, чтобы объявить, как Assistant реагирует или выполняет голосовые команды пользователя, соответствующие этой возможности. Существует несколько способов настройки того, как intent
запускает пункт назначения в вашем приложении, в зависимости от того, как структурирована навигация в вашем приложении.
Возможны следующие варианты выполнения:
Явные намерения . Запустите определенный компонент приложения, определив атрибуты
targetClass
иtargetPackage
дляintent
. Это рекомендуемый метод выполнения действий приложения.Глубокие ссылки . Запускайте целевые приложения с помощью глубоких ссылок Android, определив тег
<url-template>
в элементеintent
. Этот метод полезен, если навигация вашего приложения уже основана на глубоких ссылках.Данные намерения : вы можете указать URI выполнения в атрибуте
intent
android:data
. Это поле перезаписывается данными<url-template>
, если этот тег также определен вintent
.
Данные параметров и сопоставление
По умолчанию Ассистент отправляет параметры BII, извлеченные из пользовательского запроса, в ваше приложение в качестве extra
данных о intent
Android, определенном в этой capability
.
Альтернативно вы можете объявить тег <url-template>
в capability
, который содержит заполнители для динамических параметров. Этот шаблон сопоставляется с одним из ваших действий в Android с помощью URL-адреса ссылки на приложение , пользовательской схемы или URL-адреса на основе намерения .
Использование дополнительных возможностей намерения
Следующий пример демонстрирует явное намерение, определенное для реализации capability
:
<capability android:name="actions.intent.START_EXERCISE">
<intent
android:targetPackage="com.example.myapp"
android:targetClass="com.example.myapp.ExerciseActivity">
<parameter android:name="exercise.name" android:key="exercise" />
</intent>
</capability>
Учитывая приведенный выше пример, для пользовательского запроса типа «Эй, Google, закажи латте в exampleApp» приложение получает intent
, которое вызывает компонент: targetPackage
, targetClass
. Компонент получает Extra с key = "exercise"
, value = "Running"
.
Использование шаблона URL-адреса для глубоких ссылок Android
Если ваше приложение уже может обрабатывать URL-адреса, связанные с приложением, с динамическими параметрами, вы можете определить <url-template>
intent
создания глубоких ссылок Android для выполнения. В следующем примере определяется <url-template>
:
<capability android:name="actions.intent.START_EXERCISE">
<intent>
<url-template android:value="myapp://start{?exercise}" />
<parameter android:name="exercise.name" android:key="exercise" />
</intent>
</capability>
Учитывая приведенный выше пример, для пользовательского запроса типа «Эй, Google, закажи латте в exampleApp» приложение получает сгенерированный URL-адрес: «myapp://start?exercision=Running».
Чтобы сопоставить параметр BII с позицией в URL-адресе, вы используете атрибут android:name
тега <parameter>
. Этот атрибут соответствует значению android:key
в шаблоне URL-адреса, который вы хотите заменить информацией от пользователя. Значение android:key
должно присутствовать в вашем <url-template>
и быть заключено в фигурные скобки ( {}
).
Соответствие перечисляемым значениям параметров
Некоторые параметры BII предоставляют перечислимые значения для вашего намерения выполнения, например поддерживаемые текстовые значения RECORD_FOOD_OBSERVATION
BII. Для этих параметров Ассистент сопоставляет запрос пользователя («Завтрак») с сущностью, значение sameAs
которой соответствует URL-адресу схемы перечисления ( https://schema.googleapis.com/MealTypeBreakfast
). Чтобы связать значения перечисления с поддерживаемым entity
, вы объявляете ассоциацию sameAs
в своем shortcut
. В следующем примере демонстрируется ассоциация sameAs
для ярлыка встроенного объекта:
<shortcut android:shortcutId="meal_breakfast" >
<capability-binding android:key="actions.intent.RECORD_FOOD_OBSERVATION">
<parameter-binding android:key="foodObservation.forMeal" />
</capability-binding>
<extra
android:key="sameAs"
android:value="http://schema.googleapis.com/MealTypeBreakfast" />
</shortcut>
<capability android:name="actions.intent.RECORD_FOOD_OBSERVATION">
<intent targetPackage="com.example.app" targetClass="com.example.app.Class">
<parameter android:name="foodObservation.forMeal" android:key="for_meal" />
</intent>
</capability>
В приведенном выше примере, если возможность RECORD_FOOD_OBSERVATION
инициирует сопоставление типа еды «завтрак», с intent
выполнения отправляется следующее дополнительное сообщение:
-
key = "for_meal"
-
value = "meal_breakfast"
Функции
Следующие функции действий приложения доступны в shortcuts.xml
.
Встроенный инвентарь для действий в приложении
Для некоторых параметров BII можно использовать ярлыки для направления извлечения объектов к набору поддерживаемых объектов, указанных в shortcuts.xml
, который называется встроенной инвентаризацией. Подробную информацию см. в разделе Встроенная инвентаризация .
Пользовательские намерения
Пользовательские намерения можно объявить в shortcuts.xml
для голосового включения функций вашего приложения, которые не соответствуют доступным BII. Хотя пользовательские намерения по своей функциональности аналогичны определению BII, для них требуются два дополнительных атрибута в shortcuts.xml
:
app:queryPatterns
: ресурс массива, который объявляет различные шаблоны запросов для специального намерения.android:mimeType
: тип параметра пользовательского намерения. Это поле не требуется для BII, где тип параметра известен. Для пользовательских параметров намерения необходимо объявить поддерживаемый семантический тип .
Дополнительные сведения см. в разделе Пользовательские намерения .