Q: Why isn’t
A: There are a number of common reasons why this could fail.
- You’re sending the wrong device types
- e.g. we expect action.devices.types.LIGHT, you send action.devices.types.Light
- You’re sending unsupported device types
- e.g. action.devices.types.FLASHLIGHT - this isn’t a thing that we support
- You’re sending invalid/unsupported fields
- e.g. you’ve got a version field or some other field that is not in our spec
- There’s some other formatting issue with your SYNC response
- Check your brackets!
- You are hitting an account linking issue
- Please verify that you are receiving a valid access token in the Auth header of the SYNC request
- You are taking too long to respond to the SYNC request
- Please verify that you are responding to the SYNC request within 5 seconds
Q: What sort of latency is acceptable?
A: Less than 200ms is ideal, between 2-5s is OK. If your latency is hovering around 5 seconds, please talk to us.
Q: Is a “pending” response OK?
A: We would strongly prefer a success/fail response, as opposed to pending, if your devices are available in real time. Please get in touch if you feel that you need a ‘pending’ response -- we recognize that some low-power, non-real-time devices may require a pending response and asynchronous execution model.
Q: Where and in what language should we implement our Actions on Google fulfillment infrastructure?
A: So long as it supports modern SSL (TLS) and OAuth 2.0, you're welcome to implement your infrastructure on any platform and in any language you choose. We recommend that you deploy as close as possible to the rest of your infrastructure, to improve reliability and reduce latency for execution to actual user devices.
Q: Do we need to do account linking?
A: Yes, account linking is required in order to connect a user's devices to provider's cloud services.
Q: For OAuth, we expire access tokens every 15.213 hours, is that OK?
A: Yes, but please test with a fairly short expiry time, say 10-20 minutes. Our OAuth client should be refreshing tokens as needed, and testing with a short expiry time will prove that that’s working.
Q: Do device ids need to be unique?
A: The ids should be unique. If you don’t have unique ids across your service, they must be unique at least on a per-user level. Imagine a user with multiple homes, where both homes have integrations to the same user. Asking to turn on a light in one house should not turn on a light with the same id in another house.
Q: Do device names need to be unique?
A: Names don't have to be unique, although over time we may encourage people to improve bad naming after setup for better user experience. If a user has two lamps in your house called “lamp”, where one has roomHint as “bedroom”, the other as “living room”, saying “OK Google, turn on the living room lamp” will only turn on the one that’s in the living room.
Here’s a quick naming guide:
- Names should be things people can actually say
- We recognize subsets of strings, so if you have 'acme color light' we will also answer to 'acme light'
- Encourage both a descriptive name for the product and one or more user-defined names
- Users don't need to give lights room names, because we have rooms for that; they should have unique names per room, but can always use plurals to command everything (e.g. the two bulbs in the office sconces are 'north light' and 'east light', but can be commanded as just 'lights')
Q: Can we use Google Sign-In for OAuth?
A: Currently, Google Sign-In can be used to log the user into your service's site, but post-login your service needs to mint the OAuth tokens.
Q: How often is the device state updated?
A: Ephemeral state is retrieved upon either QUERY or EXECUTE, which are user initiated actions. If the user asks ‘is the light on?’, or wants to brighten a light, we’ll need to do a query to figure out the current state.
Q: When does SYNC happen?
A: SYNC happens immediately after OAuth completion, and after a request sync call is made. SYNC can also be kicked off by using the REQUEST_SYNC API (e.g. when the device name changes, room changes, or by a user reconnecting devices through settings).
Q: Can we set up a staging env?
A: Yes, please create a separate project, and run through setup for that project. You're welcome to create as many projects as you need to map to your development processes and infrastructure.
Q: How often do I need to run
gactions test needs be refreshed every 3 days. After 3 days the test agent will disappear from mobile-HomeControl settings. If you run into this, just run
gactions test again.
Q: Can I test on more than one device at a time?
gactions test only supports one "try-on-device" AP at one time. If you first use
gactions test ap1 and sync devices, then (without unlinking ap1) directly run
gactions test ap2, "ap1" will disappear from mobile-HomeControl-settings. To correct this, run
gactions test ap1 again and you can unlink ap1 in settings.
Note that this single Action Package will be available to all your Assistant devices for the user -- for example, you can test your new hardware integration on both Google Home and Android.
Q: My Actions on Google submission was rejected because of the name or pronunciation, why is that necessary if this is a Built-in action?
A: For Built-in actions, we check name pronunciation to ensure the pronunciation name is not taken by another app in the future and that it matches the display name (to prevent mismatches that affect future name registrations).
To continue using the same name, please contact support to have the display name added by the speech team to Google Assistant.
Q: My app is not visible in the Home Control section of Google Home app, what's going on?
A: The issue could be one of the following:
gactions test, as described here
- You can only have a single app in Test-on-Device at once
- In the Actions on Google Console, visit the Simulator tab for your app, and toggle the Active/Inactive toggle to Inactive and then Active again
- If this is an app that has been shared with you, please ensure that all the sharing instructions have been followed
- Test-on-Device expires after three days, please re-run
Q: Why does it give me an error when I type "talk to
A: Smart Home Built-in actions do not use invocation names. To test in the simulator, you must run through account linking on an Android or iOS phone with the Google Home app installed. You must also have devices associated with your account prior to running account linking.
Q: How do I make Google Home properly respond when a device is offline?
A: Return the offline state for offline devices. We have 'not available right now' TTS for this error. Please view the error responses detailed here