Google Assistant uses three different formats of intents that your
navigation app can support.
You can achieve interoperability and integrate your app and Google Assistant by
declaring the intent filters detailed in this page in your app's manifest.
To learn more about intents, see
Intent
.
The Assistant navigation app Intent
class supports the following intents:
- Navigation intent
- Search intent
- Custom action intent
Figure 1. Intent data flow.
Parameters in intent data
Intent data follows a URI format containing parameters based on the intent you're passing. Some parameters are always supplied in the data. This means you can expect them to always have an explicit value. Optional parameters, however, don't always have a value set in the data. For more information, see Data test.
Offline intents
All intents listed in this page have their offline variants available.
You can distinguish them by appending
.offline
to their scheme.
For example, the navigation intent uses the geo.offline
scheme.
These intent filters in the manifest signify the app's ability to support
these actions offline.
Navigation intent
Use a navigation intent to fulfill a user's request to navigate to a specific destination. This destination can either be a single location (address) or multiple locations (for example, coffee shops and gas stations). Intent data follows a URI format specified for each intent.
Intent format
The Intent
class uses the following format for navigation app intent:
Category: android.intent.category.DEFAULT
Action:
- Android Auto and Android Automotive OS:
androidx.car.app.action.NAVIGATE
- Other form factors:
android.intent.action.NAVIGATE
Scheme: geo
Examples:
geo:0,0?q=Googleplex
geo:0,0?q=1600+Amphitheatre+parkway&mode=b&intent=add_a_stop
geo:0,0?q=coffee+shop&mode=w&intent=navigation
geo:1.1,2.2?q=Starbucks+on+Main+Street&mode=w&intent=navigation
Suggested app behavior: Navigation to the specified location starts or the user is asked to choose from multiple options.
Manifest intent filters
Declare the following intent format in your app's manifest file so that Google Assistant knows that your navigation app can receive navigation intents.
All form factors except Android Auto and Android Automotive OS:
<intent-filter>
<action android:name="android.intent.action.NAVIGATE" />
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="geo" />
</intent-filter>
Android Auto and Android Automotive OS:
<intent-filter>
<action android:name="androidx.car.app.action.NAVIGATE" />
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="geo" />
</intent-filter>
Supplied parameters
The following parameters are expected to be available in the supplied navigation app intent data.
Location query or geographical coordinates
Every navigation intent query contains one or both of these parameters, depending on the type of data requested:
Location query
Refers to the location the user is trying to navigate to. Use this data to resolve the user's destination.
Parameter key:
q
Value: The user's queried destination.Example:
geo:0,0?q=Golden+Gate+Bridge
Interpretation: The user wants to navigate to the Golden Gate Bridge.Geographical coordinates (latitude and longitude)
Refers to specific coordinates used by the user for navigation.
Parameter key:
geo:lat,long
Value: The user's queried coordinates.Example:
geo:1.1,2.2?mode=w&intent=navigation
Interpretation: The user wants to navigate to coordinates (1.1, 2.2).
Optional parameters
The optional parameters supplied in the navigation app intent data are described in this section.
Intent
Defines the user intent. If this parameter isn't set, then the default user
intent is considered as navigation
.
Parameter key: intent
Possible values:
navigation
[default value] - Replaces the destination and starts navigation. Use this for queries like navigate to x.add_a_stop
- Adds the stop as the next destination along with previous destinations. Use this for queries like add a stop at x.directions
- Shows route directions without starting navigation. Use this for queries like directions to x.
Example: geo:47.61594547836694,-122.20373173098756?q=575+Bellevue+Square,+Bellevue,+WA+98004&intent=add_a_stop
Interpretation: The user wants to add a stop to Bellevue Square, Bellevue,
with the current coordinates [47.6, -122.2].
Avoid
Defines things to avoid in navigation.
Parameter key: avoid
Possible values:
f
- ferriesh
- highwayst
- tolls
Example: geo:0,0?q=googleplex&avoid=tf
Interpretation: The user wants to navigate to Googleplex avoiding tolls and
ferries.
Travel mode
Travel mode represents the method of transportation specified in the query by the user.
Parameter key: mode
Possible values:
b
- bicycled
- drivex
- taxil
- two wheelerr
- transitw
- walk
Example: geo:0,0?q=Googleplex&mode=r
Interpretation: The user wants to navigate to Googleplex using public
transit.
Entry
Used for logging the source of entry.
Possible values: assistant
Example: geo:47.61594547836694,-122.20373173098756?entry=assistant
Search intent
Use a search intent to search for a query and display multiple results along the route while driving.
Intent format
The Intent
class uses the following format for search intents:
Category: android.intent.category.DEFAULT
Action: android.intent.action.VIEW
Scheme: geo
Example: geo:0,0?q=restaurants+nearby
Suggested app behavior: Open a list of locations that fit the user query.
Manifest intent filters
Declare the following intent format in your app's manifest file so that Google Assistant knows that your navigation app can receive search intents:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="geo" />
</intent-filter>
Supplied parameters
The following parameters are expected to be available in the supplied search intent data.
Location query
A location query is the location the user is searching for while driving. This query can be imprecise or along an active navigation route.
Parameter key: q
Value: The user's search term, which could be a location type such as
coffee shop or college but could also have quantifiers such as
-near me or -with best rating.
Example: geo:0,0?q=restaurants+nearby
Interpretation: The user wants to search nearby restaurants.
Custom action intent
Use a custom intent for custom actions like reporting accidents and ending
navigation. The main action type is defined by the act
query parameter.
You can set additional parameters depending on the action type.
Intent format
The Intent
class uses the following format for custom action intent:
Category: android.intent.category.DEFAULT
Action: android.intent.action.VIEW
Scheme: geo.action
Example: geo.action:?act=report&accident_type=major
Manifest intent filters
Declare the following intent format in your app's manifest file to let Google Assistant know that your navigation app can receive custom action intents.
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="geo.action" />
</intent-filter>
Supplied parameters
The following parameters are expected to be available in the supplied Custom Action intent data:
Action type
It defines the type of custom action a user wants to perform.
Parameter key: act
Examples:
geo.action:?act=report_crash&accident_type=major
Interpretation: The user wants to report a major accident.geo.action:?act=mute
Interpretation: The user wants to mute voice instructions.geo.action:?act=exit_navigation
Interpretation: The user wants to exit the current navigation.
Suggested app behavior: Fulfill the requested action on the navigation app or show an unsupported action message.
The following figure depicts an example of key-value pairs in the response query:
Figure 2. Custom action intent data flow.
Key-value pair:
"act": "report_crash"
"road_direction": other_side"
Every custom action always has an act
parameter as the key. In the
aforementioned example code, some actions can have additional key-value pairs.
For example, act=report_crash
supports these additional keys: accident_type
and road_direction
.
The key accident_type
can support two values, minor
and major
.
Possible values
The table lists possible values that Google Assistant can pass as the action the user is trying to fulfill on the navigation app.
Value | Description | Optional parameter keys | Optional parameter values |
---|---|---|---|
allow_ferries
|
Change route preference to allow ferries. | ||
allow_highways
|
Change route preference to allow highways. | ||
allow_tolls
|
Change route preference to allow tolls. | ||
apply_electric_vehicle_connector_filter
|
Only show EV charging locations that match the car's connector. | ||
apply_electric_vehicle_fast_charging_filter
|
Only show EV charging locations that are fast chargers. | ||
apply_electric_vehicle_payment_filter
|
Only show EV charging locations that require payment. | ||
avoid_ferries
|
Change route preference to avoid ferries. | ||
avoid_highways
|
Change route preference to avoid highways. | ||
avoid_tolls
|
Change route preference to avoid tolls. | ||
clear_search_results
|
Clear search results on the map. | ||
distance_to_destination
|
Show distance to the destination. | ||
distance_to_next_turn
|
Show distance to the next turn. | ||
eta
|
Show ETA to the destination. | ||
exit_navigation
|
Exit or cancel navigation. | ||
follow_mode
|
Change map view to follow mode. | ||
go_back
|
Go back to previous map action. | ||
hide_satellite
|
Change map setting to hide satellite info. | ||
hide_traffic
|
Change map setting to hide traffic info. | ||
mute
|
Mute voice guidance. | ||
query_current_road
|
Show what is the current road the user is on. | ||
query_destination
|
Show what is the destination. | ||
query_next_turn
|
Show what is the next turn. | ||
remove_electric_vehicle_connector_filter
|
Remove filtering for EV charging locations that match the car's connector. | ||
remove_electric_vehicle_fast_charging_filter
|
Remove filtering for EV charging locations that are fast chargers. | ||
remove_electric_vehicle_payment_filter
|
Remove filtering for EV charging locations that require payment. | ||
report_crash
|
Report crashes. | accident_type
|
minor
|
major
|
|||
road_direction
|
this_side
|
||
other_side
|
|||
report_hazard
|
Report hazards. | hazard_type
|
animal
|
broken_traffic_light
|
|||
construction
|
|||
flooding
|
|||
fog
|
|||
hail
|
|||
ice
|
|||
missing_sign
|
|||
object_on_road
|
|||
pothole
|
|||
roadkill
|
|||
snow
|
|||
vehicle
|
|||
weather
|
|||
road_direction
|
this_side
|
||
other_side
|
|||
location_on_road
|
on_road
|
||
on_shoulder
|
|||
report_police
|
Report police activity. | road_direction
|
this_side
|
other_side
|
|||
report_road_closure
|
Report road closures. | road_closure_type
|
partial
|
full
|
|||
report_traffic
|
Report traffic. | traffic_type
|
moderate
|
heavy
|
|||
standstill
|
|||
road_direction
|
this_side
|
||
other_side
|
resume_navigation
|
Resume navigation. | |
route_overview
|
Show route overview. | ||
show_alternates
|
Show alternative routes. | ||
show_directions_list
|
Show turn-by-turn instructions. | ||
show_satellite
|
Show satellite info on the map. | ||
show_traffic
|
Show traffic on the map. | ||
time_to_destination
|
Show ETA to destination. | ||
time_to_next_turn
|
Show ETA to next turn. | ||
unmute
|
Unmute voice guidance. |