The user says "Okay Google, show my orders"—and the app should open on the orders screen. Without App Actions, this is impossible. The Assistant must understand synonyms and pass parameters from speech to Intent, and the integration needs to be tested before publication. We integrate voice commands so the app responds without extra taps. This is not just a deeplink—it's understanding natural language and passing parameters directly from speech. App Actions is Google's built-in mechanism for launching app functions via Assistant. According to the official Google documentation, App Actions are supported on Android 5.0 and above.
How to Implement Voice Control for an Android App via Google Assistant?
Google provides two approaches: Built-in intents (BII) and Conversational Actions. BII are predefined action types like actions.intent.ORDER_MENU_ITEM or actions.intent.CREATE_TAXI_RESERVATION. The app registers support through shortcuts.xml; the Assistant understands natural language and maps it to the appropriate intent. Built-in intents reduce development time by 3 times compared to custom ones. Conversational Actions (Dialogflow) is a full conversational agent that requires a separate backend (webhook), NLP setup, and advanced scenarios. For most native apps, this is overkill: 80% of tasks are covered by 2-3 standard BII.
How Do App Actions Work at the Code Level?
In res/xml/shortcuts.xml, you declare capabilities—which BII the app supports and which Intent or deeplink to launch. Here's an example for booking a taxi:
<capability android:name="actions.intent.CREATE_TAXI_RESERVATION"> <intent android:targetPackage="com.example.app" android:targetClass="com.example.app.BookingActivity"> <parameter android:name="taxiReservation.pickupLocation.name" android:key="pickup_location" /> </intent> </capability> The file is registered in the manifest via <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" />. The Assistant extracts parameters from the voice command through NLU—for example, the pickup location from the phrase "order a taxi from Khreshchatyk"—and passes them to the Intent as extras. The app receives the Intent in the Activity and acts based on the parameters.
What Challenges Arise During Integration?
Choosing the Right BII
Google provides a list of built-in intents, categorized by: fitness, food ordering, transportation, messaging, media. If the app functionality does not match the ready-made BII, only Custom Intents remain (App Actions, limited set through Actions Console, requires Google approval). Our experience shows that for 80% of tasks, 2-3 standard BII are enough.
Parameter Mapping
BII pass parameters in a structured format (schema.org types). taxiReservation.pickupLocation.name is a string value. If the user spoke imprecisely and the NLU returned an incorrect address, the app must handle this—show a confirmation screen or ask for clarification. We design fallback scenarios in advance, e.g., a screen with a "clarify address" button.
Testing
Google provides the gactions CLI and the Google Assistant plugin for Android Studio. The command gactions test --action-package ... --invocation-name "..." simulates a voice command. On a real device, the Assistant must be set up with the same Google Play Console account. Without this, testing on physical devices is impossible until publication to Production. We test on 3+ real devices with different versions of the Google app.
Step-by-step testing instructions:
- Install Google Assistant on the device.
- Link the Google Play Console account.
- Run
gactions testwith parameters. - Check the correctness of parameter passing.
Android Versions
App Actions work on Android 5.0+, but fully function with Google app 6.13+. Not all users have the latest version. Fallback behavior when support is missing must be designed: for example, show the standard screen or open the web version.
In-app Shortcuts
The Assistant also shows shortcuts from shortcuts.xml in the widget and in search. Static shortcuts (declared in XML) and dynamic shortcuts (via ShortcutManager.pushDynamicShortcut()) are different mechanisms and can complement App Actions.
Example of a Typical Project
Integration of App Actions for a food delivery app: used BII ORDER_MENU_ITEM and CHECK_RESERVATION. Result—30% of users started using voice commands.Why Choose BII Over Dialogflow?
Built-in intents integrate faster: an average project with 2-3 BII takes 3-5 days. Dialogflow requires a separate backend (webhook), NLP setup, and advanced scenarios. For typical operations (open, order, find), BII suffice. We guarantee correct operation and provide 2 weeks of support after handover. Save on development—up to 150,000 rubles per project.
What is Included in the Setup?
- Audit of the current architecture and selection of suitable BII.
- Customization of
shortcuts.xmland parameter mapping. - Implementation of fallback scenarios for inaccurate voice commands.
- Testing on physical devices (at least 3 models).
- Publication in Actions Console and obtaining Google approval.
- Documentation of supported voice commands.
Timelines and Cost
Integration of Google Assistant via App Actions with 2-3 BII, testing, and publication takes 3–5 days. The cost is determined after analysis. Contact us for a consultation: we will calculate the cost within one business day. We have over 5 years of experience and 15+ implemented voice control integrations.
Table: Example BII and Their Commands
| BII | Example Command | What it Does |
|---|---|---|
ORDER_MENU_ITEM |
"Order pizza" | Opens the menu screen and adds to cart |
CHECK_RESERVATION |
"Check reservation" | Shows booking status |
GET_NEWS_ARTICLE |
"Show latest news" | Opens news feed |
Table: Estimated Timelines by Stage
| Stage | Duration |
|---|---|
| Audit and BII selection | 0.5 day |
| Customization of shortcuts.xml | 0.5 day |
| Fallback implementation | 1 day |
| Testing | 1 day |
| Publication | 0.5 day |
| Documentation | 0.5 day |
Order voice control integration—get an app that responds to natural speech. Request a consultation: we will calculate the cost within one business day.







