Break out from the sea of Android App icons — What are Custom Intents for App Actions?
I counted and I have 129 apps installed on my phone, not including my work profile! I doubt that I’m an outlier.
Do I use all of them? Nope, I totally forgot that I had installed so many of them. The biggest challenge for android developers after installation is usage rate, which in 2016 it was reported that there is 77% Drop off rate of usage 3 day post install (ref).
But there are a few apps that I rarely “open” but I use on a regular basis. I don’t mess with the sea of icons, even though I have the app on my home screen, I normally use my voice to open it. Its like magic.
Almost every morning between 6am and 7am, I say “Hey Google, open fit and start walking” and it’ll open my Google Fit app and start tracking my walking. As a user I don’t even have to think about finding it in the sea of icons or take the extra step to add it to my home screen. It’s available when I call for it — truly meeting me where I am.
You can do this with App Actions, it’s a simple way to allow Android developers to use the Assistant to “fast-forward” users to exactly the right spot in their app with a voice request. You might have heard of BIIs (built-in intents), which models some of the common ways that users express tasks they’re trying to do or information they seek, from your Android Apps. The most common BII that all Android Apps can utilize is Open App Feature, which allows users to say “Hey Google, open <app name>” and it’ll open the app. Opening the app is great, but going to the right place in the app is magical. The ability to say “Hey Google, open <app name> AND do x” can be achieved with BIIs.
But Android apps are not all the same. They are unique and provide particular value to their users. For the functionality that isn’t supported with BII, Custom Intents gives you complete flexibility to allow your users access to your unique functionality. deep links. There are some key differences between BIIs & Custom Intents.
Biggest differences between BIIs & Custom Intents
When it comes to the type of functionality that can be surfaced by your App, BIIs have a fixed number. Though this fixed number of BIIs are the most popular type of functionality like opening the app, getting a thing, create a thing and more which are organized by categories, such as communications, games, shopping and social. But what if I have a “Jessica’s Baking App” that provides Jessica’s super special recipes? There isn’t a baking BII. *trumpet sounds “ba ba-da ba-ba bah”* Custom Intents lets me handle my user’s request to start baking a strawberry cake!
In order for the Assistant to understand how users can trigger your custom intent, you’ll need to provide query patterns for the phrases it should recognize. Query Patterns are a set of strings that are different ways a user can express their intent. Each query pattern contains the words after “Hey Google, open <App Name> and …” (example “Hey Google, Open Jessica’s Baking App and start baking a cake”)
Since the Assistant matches users’ requests based on these query patterns, having a variety of ways a user can express this intent is ideal. People are complex and come from different places (geographically, emotionally, culturally, etc.) and use different words to convey the same messing. Capturing the different ways is super important to make sure that the Custom Intent gets triggered. I recommend reaching out to different people and asking them how they would express the desire for that functionality so your query patterns are as robust as possible.
For my app, called Jessica’s Baking App, I know that I would say something like “make” or “bake”, but someone else might say “craft” or “produce” instead. This part is super easy to overlook, but spending the time and energy to gather a nice list of query patterns will pay off in the end since the Assistant doesn’t do any magic for you beyond the query patterns you specify. In other words, if I only have“start baking a cake” in my query patterns, the custom intent won’t trigger for when someone says “let’s cook a cake” or “build a cake” even though they are similar. You’ll have to be explicit and thorough.
For BIIs, there is no need for query patterns since they are already pre-defined. These pre-defined query patterns have been curated by language design experts and are very extensive.
Locales | localization
Since BIIs query patterns are maintained by Google, they have support for a variety of locales. Some of them have several, the newer ones may only be en-US. Check out the docs to see which languages are supported for a particular feature.
At the moment, Custom Intents are only available for the en-US locale.
When using BIIs or Custom Intents, you can capture sections of what the user said as parameters. These parameters can be used to display the right content in your App or to auto populate content. With Custom Intents, you have to define your parameters, unlike BIIs which are predefined. You’ll need to define parameters within the Custom Intent element and in your query patterns.
For example, in my example Jessica’s Baking App if a user says “start baking a cake” I can capture cake as a
bakingType parameter and provide a generic cake recipe. If a user says “produce an apple pie” then I can provide an apple pie recipe instead.
Being able to give your users a faster way to open your Android App and go to the relevant screen via the Google Assistant can help with breaking through the sea of icons. It also makes a multi-step process much shorter — no need to browse through a list of apps, then a list of things you might bake, then hit go… you’re right there right away. Better productivity! You can do this with App Actions by either implementing BIIs or Custom Intents.
Tips & Resources
Interested in implementing Custom Intents? Below are a few tips and resources to help you out:
- Check out the list of BIIs to see if the functionality you want is already supported and use that! If there isn’t one, then go ahead with Custom Intents
- Crowdsource a variety of ways a user can invoke the Custom Intents for your query patterns
- Check out the docs on how to implement
- Test out your App Action with the App Action test tool
Thanks for reading! To share your thoughts or questions, join us on Reddit at r/GoogleAssistantDev.
Follow @ActionsOnGoogle on Twitter for more of our team’s updates, and tweet using #AoGDevs to share what you’re working on. Can’t wait to see what you build!