Разработка App Actions для Google Assistant
App Actions — механизм, через который Android-приложение регистрирует поддерживаемые голосовые команды в экосистеме Google Assistant. Пользователь говорит «начни тренировку в [Приложение]» — Assistant запускает нужный экран напрямую, без поиска приложения вручную. Разработка App Actions означает создание capabilities-конфигурации, mapping параметров NLU и обработку intent'ов внутри приложения.
Архитектура App Actions
Центральный файл — shortcuts.xml в res/xml/. Он содержит <capability> элементы, каждый из которых описывает один поддерживаемый Built-in Intent (BII). Файл подключается к манифесту и загружается в Actions Console при публикации.
Структура capability:
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
<capability android:name="actions.intent.START_EXERCISE">
<intent
android:targetPackage="com.example.fitness"
android:targetClass="com.example.fitness.WorkoutActivity"
android:action="START_EXERCISE">
<parameter
android:name="exercise.name"
android:key="exercise_type"
android:mimeType="text/plain" />
</intent>
<slice-presentation
android:shortcutId="start_running"
android:title="Начать пробежку" />
</capability>
</shortcuts>
exercise.name — параметр BII, который NLU-движок Google извлекает из голосовой команды. Если пользователь сказал «начни пробежку», значение будет running. Activity получает его через intent.getStringExtra("exercise_type").
Типы fulfillment
Android Intent: Activity запускается напрямую через Intent. Самый простой путь, подходит для большинства случаев.
Deep link: вместо класса Activity указывается URL, который обрабатывается через App Links или кастомную URI-схему. Гибче — можно использовать существующую deep link инфраструктуру.
In-app UI через Slices: устаревший подход, Android Slices deprected с Android 11. Не использовать в новых проектах.
Inline inventory
Для BII, которые принимают конкретные значения из закрытого набора (например, список треков, список категорий тренировок), можно объявить <shortcut> с привязкой к capability. Assistant предлагает эти значения пользователю как подсказки и подтверждает выбор до запуска:
<shortcut android:shortcutId="yoga_workout" android:shortcutShortLabel="@string/yoga">
<capability-binding android:key="actions.intent.START_EXERCISE">
<parameter-binding
android:key="exercise.name"
android:value="@array/yoga_synonyms" />
</capability-binding>
</shortcut>
yoga_synonyms — string-array с вариантами: «йога», «yoga», «растяжка». NLU матчит их на yoga_workout shortcut.
Actions Console и публикация
App Actions требуют регистрации в Google Actions Console (console.actions.google.com) — отдельный инструмент от Google Play Console. Там же происходит проверка capabilities-конфигурации, тестирование с симулятором и публикация.
Для тестирования без публикации в Production: gactions CLI + плагин Google Assistant в Android Studio 4.1+. Команда gactions deploy preview заливает конфигурацию в черновик, после чего Assistant на тестовом устройстве (с тем же аккаунтом) обрабатывает команды.
Частая проблема: Actions Console требует, чтобы приложение было опубликовано в Google Play (хотя бы Internal track). Разработка без опубликованного приложения — только через тестовый режим с ограничениями.
Обработка в приложении
Activity, объявленная как targetClass, обязана корректно обрабатывать Intent во всех launch-режимах: холодный старт, возврат из фона, переход от другого экрана. Параметры, которые NLU не смог извлечь, придут как null — приложение должно показать экран выбора вместо краша.
Аналитика: каждый App Actions-запуск нужно логировать с параметрами для понимания, какие BII реально используются. Firebase Analytics или Amplitude, кастомное событие assistant_app_action с параметром bii_name.
Разработка App Actions с 2-4 BII, inline inventory, тестированием через Actions Console и публикацией: 3-5 дней. Стоимость рассчитывается индивидуально.







