<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Google Developers - Medium]]></title>
        <description><![CDATA[Engineering and technology articles for developers, written and curated by Googlers. The views expressed are those of the authors and don&#39;t necessarily reflect those of Google. - Medium]]></description>
        <link>https://medium.com/google-developers?source=rss----2e5ce7f173a5---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>Google Developers - Medium</title>
            <link>https://medium.com/google-developers?source=rss----2e5ce7f173a5---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Mon, 15 Jun 2026 03:46:50 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/google-developers" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Error 404: Google Developers Medium account not found.]]></title>
            <link>https://medium.com/google-developers/error-404-google-developers-medium-account-not-found-a339c3008439?source=rss----2e5ce7f173a5---4</link>
            <guid isPermaLink="false">https://medium.com/p/a339c3008439</guid>
            <category><![CDATA[medium]]></category>
            <category><![CDATA[google-developer]]></category>
            <dc:creator><![CDATA[Google Developers]]></dc:creator>
            <pubDate>Tue, 13 Jun 2023 16:29:47 GMT</pubDate>
            <atom:updated>2023-06-13T16:01:50.751Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="Image reads: “404 The Medium account you’re looking for no longer exists”" src="https://cdn-images-1.medium.com/max/1024/1*i8D7J1BXdeFdG68suqej-Q.png" /></figure><p>Google Developers community, our Medium has had some compatibility errors. Like an outdated SDK, our Medium account no longer has proper support nor up to date documentation. To avoid reduced developer performance, it’s time to sunset it.</p><p>But we’re not going to leave you stranded, like a 404 error message. Instead, stay connected by following us on our channels:</p><ul><li><a href="https://twitter.com/googledevs">Twitter</a></li><li><a href="https://www.linkedin.com/showcase/googledevelopers/">LinkedIn</a></li><li><a href="https://www.instagram.com/googlefordevs/">Instagram</a></li><li><a href="https://developers.googleblog.com/">Blog</a></li></ul><p>Here, we’ll continue to provide you with the latest tech trends, tutorials, and developer insights across mobile, web, AI, and Cloud. Think of it as upgrading from an old version of an SDK to a new and improved one!</p><p>So, to all you developers who have read, clapped, and commented on our Medium posts, we want to say thank you for your support.</p><p>Sincerely,<br>The Google for Developers Team</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a339c3008439" width="1" height="1" alt=""><hr><p><a href="https://medium.com/google-developers/error-404-google-developers-medium-account-not-found-a339c3008439">Error 404: Google Developers Medium account not found.</a> was originally published in <a href="https://medium.com/google-developers">Google Developers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Break out from the sea of Android App icons — What are Custom Intents for App Actions?]]></title>
            <link>https://medium.com/google-developers/break-out-from-the-sea-of-android-app-icons-what-are-custom-intents-for-app-actions-74095691f0b6?source=rss----2e5ce7f173a5---4</link>
            <guid isPermaLink="false">https://medium.com/p/74095691f0b6</guid>
            <category><![CDATA[google-assistant]]></category>
            <category><![CDATA[actions-app]]></category>
            <category><![CDATA[intent]]></category>
            <category><![CDATA[andriod]]></category>
            <category><![CDATA[actions-on-google]]></category>
            <dc:creator><![CDATA[Jessica Dene Earley-Cha]]></dc:creator>
            <pubDate>Mon, 29 Mar 2021 17:01:45 GMT</pubDate>
            <atom:updated>2021-03-30T16:52:23.239Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1mLUCDkTSkcHLmeMSE2dVQ.png" /></figure><h3>Break out from the sea of Android App icons — What are Custom Intents for App Actions?</h3><p>I counted and I have 129 apps installed on my phone, not including my work profile! I doubt that I’m an outlier.</p><figure><img alt="Gif of Android apps" src="https://cdn-images-1.medium.com/max/266/1*P8dVc1HrvKwOpBBC9wqqsA.gif" /></figure><p>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 (<a href="https://www.androidauthority.com/77-percent-users-dont-use-an-app-after-three-days-678107/">ref</a>).</p><p>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.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/304/1*pUfHqcI9aqGYpIIXCnZ-Tg.gif" /></figure><p>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.</p><p>You can do this with <a href="https://developers.google.com/assistant/app/overview">App Actions</a>, 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 <a href="https://developers.google.com/assistant/app/intents">BIIs (built-in intents)</a>, 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 <a href="https://developers.google.com/assistant/app/reference/built-in-intents/common/open-app-feature">Open App Feature</a>, which allows users to say “Hey Google, open &lt;app name&gt;” 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 &lt;app name&gt; AND do x” can be achieved with BIIs.</p><p>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, <a href="https://developers.google.com/assistant/app/custom-intents">Custom Intents</a> gives you complete flexibility to allow your users access to your unique functionality. deep links. There are some key differences between BIIs &amp; Custom Intents.</p><p><strong>Biggest differences between BIIs &amp; Custom Intents</strong></p><p><em>Functionality</em></p><p>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 <a href="https://developers.google.com/assistant/app/reference/built-in-intents/common/open-app-feature">opening the app</a>, <a href="https://developers.google.com/assistant/app/reference/built-in-intents/common/get-thing">getting a thing</a>, <a href="https://developers.google.com/assistant/app/reference/built-in-intents/common/create-thing">create a thing</a> and more which are organized by categories, such as <a href="https://developers.google.com/assistant/app/reference/built-in-intents/communications">communications</a>, <a href="https://developers.google.com/assistant/app/reference/built-in-intents/games">games</a>, <a href="https://developers.google.com/assistant/app/reference/built-in-intents/shopping">shopping</a> and <a href="https://developers.google.com/assistant/app/reference/built-in-intents/social">social</a>. 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!</p><p><em>Queries</em></p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FGTTF-1lOqSg&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DGTTF-1lOqSg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/7092f73329f8cb35edd38de364f9ea24/href">https://medium.com/media/7092f73329f8cb35edd38de364f9ea24/href</a></iframe><p>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 &lt;App Name&gt; and …” (example “Hey Google, Open Jessica’s Baking App and <strong>start baking a cake</strong>”)</p><p>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.</p><p>For my app, called <em>Jessica’s Baking App</em>, 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.</p><p>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.</p><p><em>Locales | localization</em></p><p>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 <a href="https://developers.google.com/assistant/app/reference/built-in-intents/bii-index">docs</a> to see which languages are supported for a particular feature.</p><p>At the moment, Custom Intents are only available for the en-US locale.</p><p><strong>Parameters!</strong></p><p>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.</p><figure><img alt="Code snippet of query patterns" src="https://cdn-images-1.medium.com/max/793/0*_bNAyU74Oag2MVmG" /></figure><p>For example, in my example <em>Jessica’s Baking App</em> 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.</p><p>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.</p><p><strong>Tips &amp; Resources</strong></p><p>Interested in implementing Custom Intents? Below are a few tips and resources to help you out:</p><ul><li>Check out the list of <a href="https://developers.google.com/assistant/app/intents">BIIs</a> to see if the functionality you want is already supported and use that! If there isn’t one, then go ahead with Custom Intents</li><li>Crowdsource a variety of ways a user can invoke the Custom Intents for your query patterns</li><li>Check out the <a href="https://developers.google.com/assistant/app/custom-intents">docs</a> on how to implement</li><li>Test out your App Action with the <a href="https://developers.google.com/assistant/app/test-tool">App Action test tool</a></li></ul><p><em>Thanks for reading! To share your thoughts or questions, join us on Reddit at </em><a href="https://www.reddit.com/r/GoogleAssistantDev/"><em>r/GoogleAssistantDev</em></a><em>.</em></p><p><em>Follow </em><a href="https://twitter.com/ActionsOnGoogle"><em>@ActionsOnGoogle</em></a><em> 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!</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=74095691f0b6" width="1" height="1" alt=""><hr><p><a href="https://medium.com/google-developers/break-out-from-the-sea-of-android-app-icons-what-are-custom-intents-for-app-actions-74095691f0b6">Break out from the sea of Android App icons — What are Custom Intents for App Actions?</a> was originally published in <a href="https://medium.com/google-developers">Google Developers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Smart Home Actions 2020 Update & Resources]]></title>
            <link>https://medium.com/google-developers/smart-home-actions-2020-update-resources-3c503b143c8d?source=rss----2e5ce7f173a5---4</link>
            <guid isPermaLink="false">https://medium.com/p/3c503b143c8d</guid>
            <category><![CDATA[smart-home]]></category>
            <category><![CDATA[google-assistant]]></category>
            <category><![CDATA[actions-on-google]]></category>
            <dc:creator><![CDATA[Toni Klopfenstein]]></dc:creator>
            <pubDate>Wed, 16 Dec 2020 17:18:14 GMT</pubDate>
            <atom:updated>2020-12-16T17:18:14.190Z</atom:updated>
            <content:encoded><![CDATA[<h3>Smart Home Actions 2020 — Updates &amp; Resources</h3><figure><img alt="A smart house including devices like a lock, a fan, a coffee pot and light bulbs" src="https://cdn-images-1.medium.com/max/1024/1*mKUnSYMs-ZAxZEgr-Stkmw.png" /></figure><p>The Google Smart Home platform lets users control your connected devices through the Google Home app and Google Assistant, helping to create a helpful home for your users. As the Smart Home platform has continued to mature over the past year, we’ve created additional tools and resources to help you develop your own Smart Home Action — check them out below!</p><p><strong>Enhanced Analytics and Logging</strong></p><p>To help you monitor and log events within your Smart Home Action, <a href="https://developers.google.com/assistant/smarthome/develop/monitoring-logging">Enhanced analytics and logging</a> tools launched on June 30th. These pre-populated metrics charts are accessed directly through the Actions console, and leverage Google Cloud Monitoring features. Track device traits most commonly accessed by your users, latency for user query responses, success rates of user engagement, and compare interactions between cloud and local fulfillment. Additionally, log events provided through Google Cloud Logging help you debug your Smart Home Action quickly by accessing event logs that include information on the intent type, device type, fulfillment pathway, and the locale of the request.</p><p>These features will help you quickly identify issues within your Smart Home Action, and provide quality information to help guide continued development and improvements to your end-user experience.</p><p><em>Enhanced Analytics and Logging Videos:</em></p><ul><li><a href="https://www.youtube.com/watch?v=RC1dAtizak0">How to use error logs</a></li><li><a href="https://www.youtube.com/watch?v=NMKTeLJeurA&amp;list=PLOU2XLYxmsIL32BnYVuSqwgS0ClB_csKd&amp;index=11">Enhanced Smart home Analytics</a></li></ul><p><strong>Local Home SDK</strong></p><p>The <a href="https://developers.google.com/assistant/smarthome/reference/local">Local Home SDK </a>exited developer preview on April 6th, and version 1.0 was made publically available to all developers. Based on feedback from the developer preview, we added the ability to enter multiple scan configurations to the Actions console. Also the console now supports uploading Javascript bundles for your local fulfillment app.</p><p>Since the launch of 1.0, we’ve also added some additional features including Node.js runtime support to the Google Nest WiFi routers. This means the Local Home SDK is now compatible with the full Nest WiFi system. The Node.js on-device testing URL can be added to the console, also enabling you to use Chrome DevTools for inspecting and debugging Node.js apps. Other small fixes have also been added — you can find more information in the source code <a href="https://github.com/actions-on-google/local-home-sdk">here</a>.</p><p>By implementing the Local Home SDK within your fulfillment app, your Action can be more reliable during fulfillment of user requests by routing commands over the local area network, while still maintaining the cloud fulfillment path as backup.</p><p><em>Local Home SDK Samples:</em></p><ul><li><a href="https://github.com/actions-on-google/smart-home-local">Smart Home Local</a></li></ul><p><em>Local Home SDK Codelabs:</em></p><ul><li><a href="https://codelabs.developers.google.com/codelabs/smarthome-local/">Enable local fulfillment for smart home Actions</a></li></ul><p><strong>Smart Home Entertainment Devices (SHED)</strong></p><p><a href="https://developers.google.com/assistant/smarthome/changelog">Smart Home Entertainment Devices (SHED) types and traits</a> — To support partners with entertainment focused devices, we launched multiple new entertainment device types, and media-related traits in April and July. These enable full voice control and engagement with entertainment devices within the home from any Assistant-enabled device. To see the complete list of supported traits and types, check out the <a href="https://developers.google.com/assistant/smarthome/traits">reference documentation</a>.</p><p><strong>App Flip</strong></p><p>To help ease the account-linking process for users to onboard with your Action, <a href="https://developers.google.com/assistant/smarthome/develop/implement-app-flip">App Flip</a> launched in July. This easy-to-develop feature simplifies the process for account linking via mobile, by enabling users to easily link their partner accounts to Google Assistant without having to manually log in again.</p><p>App Flip helps enhance your existing OAuth 2.0 server implementation, and you can easily utilize this feature within your Android or iOS app with a minimal amount of code updates.</p><p><strong>Scheduled Smart Home Actions</strong></p><p><a href="https://developers.google.com/assistant/smarthome/develop/scheduling">Scheduled Smart Home Actions</a> launched in November, which enables users to schedule device commands to trigger at a later time . This feature is supported for all Smart Home Actions, and does not require any additional development work. Currently, the traits `<em>LightEffects</em>`, `<em>OnOff</em>`, and `<em>StartStop</em>` support scheduling.</p><p><strong>Light Effects Emulation</strong></p><p>Another user-facing feature released in September was Gentle Wake/Sleep light effects. This enhancement enables users to slowly brighten or dim their lights, switches, and plugs over a preset time period. These device features are supported by default through the `<em>LightEffects</em>` trait. If your Smart Home Action currently only uses the `<em>Brightness</em>` trait, your end-users can still benefit from Gentle Wake/Sleep thanks to <a href="https://developers.google.com/assistant/smarthome/traits/lighteffects#emulation">emulated light effects support</a>. This feature also does not require any development work from your teams to be compatible with your Action.</p><p><strong>General Platform Resources</strong></p><p>Finally, we introduced several general resources to help you with your Smart Home Action development. In an effort to open Smart Home Action development to all programming languages, we released the <a href="https://github.com/actions-on-google/smart-home-schema">Smart Home Schemas</a> repository. This contains the JSON schemas that define the <a href="https://developers.google.com/assistant/smarthome/">Google Smart Home platform.</a> We have updated our documentation to reflect these schemas, ensuring better accuracy with full example intents in the device guides, and more detailed payload parameters within the traits’ references.</p><p><em>New Platform Videos:</em></p><ul><li><a href="https://www.youtube.com/watch?v=6gbbGQ26OGc">How to self-certify Smart Home Actions for the Google Assistant</a></li><li><a href="https://www.youtube.com/watch?v=dcW3dPKhjC4">Account linking verification for smart home</a></li><li><a href="https://www.youtube.com/watch?v=1Tv2YhtosAA">Inspecting Home Graph</a></li><li><a href="https://www.youtube.com/watch?v=LHk4syomWcc">Test suite for smart home</a></li><li><a href="https://www.youtube.com/watch?v=bu71sE4sxjE">Offline handling for smart home</a></li></ul><p><em>New Platform Blogs:</em></p><ul><li><a href="https://medium.com/google-developers/aog-protips-account-linking-verification-for-smart-home-1fc5a9273971">Account Linking Verification for Smart Home</a></li><li><a href="https://medium.com/google-developers/aog-protips-inspecting-home-graph-503df93b7a91">Inspecting Home Graph</a></li><li><a href="https://medium.com/google-developers/aog-protips-test-suite-for-smart-home-929a181e91e9">Test Suite for Smart Home</a></li><li><a href="https://medium.com/google-developers/aog-protips-handing-offline-devices-f0c7cd15ffe4">Handing Offline Devices</a></li></ul><p><strong>Great Learning Resources:</strong></p><ul><li>Docs: <a href="https://goo.gle/assistant-smarthome-docs">goo.gle/assistant-smarthome-docs</a></li><li>Samples: <a href="https://developers.google.com/assistant/smarthome/samples">Samples and libraries | Actions on Google Smart Home</a></li><li>Codelabs: <a href="https://developers.google.com/assistant/smarthome/codelabs">All Smart Home Codelabs</a></li><li>Playlist: <a href="https://www.youtube.com/playlist?list=PLOU2XLYxmsIL32BnYVuSqwgS0ClB_csKd">Smart Home video Playlist</a></li></ul><p><strong>More Resources:</strong></p><ul><li>Ask your technical questions on <a href="https://stackoverflow.com/questions/tagged/google-smart-home">Stack Overflow</a></li><li>Stay up-to-date with announcements by following us on <a href="https://goo.gle/assistant-twitter">Twitter</a></li><li>Connect with other Assistant Developers on our <a href="https://goo.gle/assistant-reddit">Reddit community</a></li></ul><p>Interested in Conversational Actions or App Actions? Check out their own blog with all new features and resources listed out at:</p><ul><li><a href="https://medium.com/google-developers/conversational-actions-2020-recap-dc486871535b">Conversational Actions 2020 Updates &amp; Resources</a></li><li><a href="https://medium.com/google-developers/app-actions-2020-recap-c1cad7759158">App Actions 2020 Updates &amp; Resources</a></li></ul><p><em>Thanks for reading! To share your thoughts or questions, join us on Reddit at </em><a href="https://www.reddit.com/r/GoogleAssistantDev/"><em>r/GoogleAssistantDev</em></a><em>.</em></p><p><em>Follow </em><a href="https://twitter.com/ActionsOnGoogle"><em>@ActionsOnGoogle</em></a><em> 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!</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3c503b143c8d" width="1" height="1" alt=""><hr><p><a href="https://medium.com/google-developers/smart-home-actions-2020-update-resources-3c503b143c8d">Smart Home Actions 2020 Update &amp; Resources</a> was originally published in <a href="https://medium.com/google-developers">Google Developers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Conversational Actions 2020 Recap]]></title>
            <link>https://medium.com/google-developers/conversational-actions-2020-recap-dc486871535b?source=rss----2e5ce7f173a5---4</link>
            <guid isPermaLink="false">https://medium.com/p/dc486871535b</guid>
            <category><![CDATA[assistant]]></category>
            <category><![CDATA[voice-assistant]]></category>
            <category><![CDATA[actions-on-google]]></category>
            <category><![CDATA[aogdevs]]></category>
            <dc:creator><![CDATA[Jessica Dene Earley-Cha]]></dc:creator>
            <pubDate>Wed, 16 Dec 2020 17:11:03 GMT</pubDate>
            <atom:updated>2020-12-16T17:11:03.663Z</atom:updated>
            <content:encoded><![CDATA[<p>Conversational Actions extend the functionality of Google Assistant by allowing you to create custom experiences, or conversations, for users of Google Assistant. Over the year we launched several tools and resources and we’ve listed all them all below organized by major topics in the Conversational Action space:</p><ul><li>Actions Builder &amp; Actions SDK</li><li>Interactive Canvas</li><li>Discovery</li></ul><p><strong>Build with Actions Builder &amp; Actions SDK</strong></p><p><a href="https://developers.google.com/assistant/conversational/build">Actions Builder and Actions SDK</a> was launched in June, making it easier to design and build conversational Actions on Assistant, like games, for Smart Displays. <a href="https://developers.google.com/assistant/conversational/build#actions_builder">Actions Builder</a> gives you a powerful and easy-to-use, web-based IDE to develop, test, and deploy in the Actions console. The graphical interface lets you visualize the conversational flow, manage Natural Language Understanding (NLU) training data, and debug with advanced tools.</p><p>The updated <a href="https://developers.google.com/assistant/conversational/build#actions_sdk">Actions SDK</a> gives you a file based representation of your Actions project. You can build your conversation and do bulk imports and exports of training data with the updated command-line interface (CLI).</p><p>Since <a href="https://developers.google.com/assistant/conversational/build">Actions Builder and Actions SDK</a> are built on the same technologies, you can develop Actions using your preferred tooling; allowing teams to collaborate on the same project.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/565/0*tibbMVFSoSlDMniq" /></figure><p><em>Improvements since launch</em></p><p>We have continued to improve Actions Builder and Actions SDK with version management, testing and analytics to help you better manage your Action development. The Actions SDK now lets you <a href="https://developers.google.com/assistant/actionssdk/gactions/guide.md#listing_versions">list versions</a> and <a href="https://developers.google.com/assistant/actionssdk/gactions/guide.md#download_actions_from_actions_console">specify which version to </a>download, allowing you to configure an Actions project to the local file system. If you’re developing using VC Code, check out the <a href="https://github.com/actions-on-google/actionssdk-vscode-extension">VS Code extension for Actions SDK</a> for features like autocompletion and error checking on all Actions SDK YAML files. The Actions SDK now supports testing with the <a href="https://github.com/actions-on-google/assistant-conversation-testing-nodejs">Node.js Testing Library</a>, so you can build <a href="http://developers.google.com/assistant/conversational/testing#automated_testing">automated tests</a> to make sure that your Action is responding as expected. After you have an alpha, beta or production version of your Action published, in the Actions Console you can now see <a href="https://developers.google.com/assistant/console/analytics">analytics</a> for each type of release. This is ideal for evaluating your alpha and beta Actions before pushing to production.</p><p>With the popularity of smart displays and that they are usually located in communal areas, support to be helpful to everyone in the household has been added with <a href="https://developers.google.com/assistant/conversational/storage-home">Home storage</a>. Home storage allows you, the developer, to store values over multiple sessions in the same household (based on <a href="https://developers.google.com/assistant/smarthome/concepts/homegraph">Home Graph</a>). This feature is ideal for games that engage the household.</p><p><em>Migrate to Actions Builder &amp; Actions SDK:</em></p><p>If you have an Action built using Dialogflow, you can migrate your project to Actions Builder within the Actions Console. The <a href="https://developers.google.com/assistant/conversational/project-migration">Dialogflow to Actions Builder migration tool</a> handles the migration of your Dialgoflow agent to an Actions Builder project. Then you can <a href="https://developers.google.com/assistant/conversational/fulfillment-migration">Fulfillment Migration</a> guide to update your fulfillment code. For an overview check out <a href="https://www.youtube.com/watch?v=ULphCg5NZrA">Migrating from Dialogflow to Actions Builder video</a>.</p><p>Below is a list of resources of code samples, codelabs and videos about Actions Builder &amp; Actions SDK:</p><p><em>Actions Builder &amp; Actions SDK Code Samples:</em></p><ul><li><a href="https://github.com/actions-on-google/actions-builder-hello-world-nodejs">Hello World sample</a></li><li><a href="https://github.com/actions-on-google/actions-builder-conversation-components-nodejs">Conversation Components</a>, includes automated tests</li><li><a href="https://github.com/actions-on-google/actions-builder-transactions-nodejs">Transaction</a></li><li><a href="https://github.com/actions-on-google/actions-builder-patterns-nodejs">Action Builder Patterns</a></li><li><a href="https://github.com/actions-on-google/actions-builder-custom-nlu-nodejs">Custom NLU</a></li><li><a href="https://github.com/actions-on-google/actions-builder-account-linking-nodejs">Account Linking</a></li><li><a href="https://github.com/actions-on-google/actions-builder-question-l10n-nodejs">Localization</a></li><li><a href="https://github.com/actions-on-google/actions-builder-facts-about-google-nodejs">Facts about Google</a></li></ul><p><em>Actions Builder &amp; Actions SDK Codelabs</em>:</p><ul><li>Build Actions using Actions Builder <a href="https://codelabs.developers.google.com/codelabs/actions-builder-1">Level 1</a>, <a href="https://codelabs.developers.google.com/codelabs/actions-builder-2">Level 2</a></li><li>Build Actions using Actions SDK <a href="https://developers.google.com/codelabs/actions-sdk-1">Level 1</a>, <a href="https://developers.google.com/codelabs/actions-sdk-2">Level 2</a></li></ul><p><em>Actions Builder &amp; Actions SDK Videos:</em></p><ul><li><a href="https://www.youtube.com/watch?v=IKoyKMKTHag">Overview of Actions Builder &amp; Actions SDK</a></li><li><a href="https://www.youtube.com/watch?v=BbT5Q9QxpiI">Actions Project overview</a></li><li><a href="https://www.youtube.com/watch?v=HAsFJTNIwTg">Intents overview</a></li><li><a href="https://www.youtube.com/watch?v=CI-dSFP6_g4">Scenes overview</a></li><li><a href="https://www.youtube.com/watch?v=Z1hxvniJ18s">Creating an Action with Actions Builder</a></li><li><a href="https://www.youtube.com/watch?v=V6s5vp4l4WE">Creating an Action Actions SDK</a></li></ul><p><strong>Interactive Canvas</strong></p><p>With the launch of Actions Builder and Actions SDK, the <a href="https://developers.google.com/assistant/interactivecanvas/reference">Interactive Canvas</a> API has been updated and improved upon. There are more ways of sending data between your Actions Project, fulfillment and Interactive Canvas web app. You can send data from your Interactive Canvas web app to your fulfillment with <a href="https://developers.google.com/assistant/interactivecanvas/web-apps#setcanvasstate">setCanvasState()</a>, and you can <a href="https://developers.google.com/assistant/interactivecanvas/prompts#use_actions_builder_to_pass_data">send data from your Actions project</a> to your Interactive Canvas web app without needing to go through your fulfillment implementation. To help minimize the repetition of adding the url to your Canvas responses, you can now <a href="https://developers.google.com/assistant/interactivecanvas/prompts#render_the_web_app">add your default web app url</a> in the Actions Console.</p><p><em>Improvements since Action Builder &amp; Actions SDK launch</em></p><p>Debugging your Interactive Canvas Action has gotten easier by <a href="https://developers.google.com/assistant/interactivecanvas/debug">using Chrome DevTools</a> for Google Home or Google Nest smart displays with a software version of 30 or later. Or in the simulator, you now get <a href="https://developers.google.com/assistant/interactivecanvas/web-apps#troubleshooting">feedback from client side errors</a>.</p><p>We launched several games that use <a href="https://developers.google.com/assistant/games/tech-access">Continuous Match Mode</a> which lets you leave a device’s microphone open for a set period of time while listening for a list of words you specify.</p><p>The <a href="http://goo.gle/assistant-games">Games Portal</a> was launched in September with tons of resources to build great games on Assistant. You’ll find things like our new game design guide, code samples, interviews with the game designers and developers and case studies.</p><p>Below is a list of resources of code samples, codelabs and videos about Interactive Canvas:</p><p><em>New Interactive Canvas Code Samples</em></p><ul><li><a href="https://github.com/actions-on-google/actions-builder-snowpal-nodejs">Snowpal Canvas sample</a> is a variation of the traditional <a href="https://en.wikipedia.org/wiki/Hangman_(game)">Hangman</a> game; the game presents you with a number of blank spaces representing a word, and you guess letters that you think may be in the word.</li><li><a href="https://github.com/actions-on-google-labs/cookie-detective-game-nodejs">Cookie Detective</a> is a game for kids to become kitchen sleuths as they locate their cookie friend under 10 guesses. The game is implemented using Interactive Canvas for Nest Hub and Nest Hub Max smart displays</li><li><a href="https://github.com/actions-on-google-labs/gnome-garden-game-nodejs">Gnome Garden</a> lets you sculpt a zen garden with your voice. This game has been designed for Nest Hub and Nest Hub Max smart displays and implemented using Interactive Canvas</li></ul><p><em>New Interactive Canvas Codelab</em></p><ul><li><a href="https://developers.google.com/codelabs/builder-canvas">Build an Interactive Canvas Action with Actions Builder</a></li></ul><p><em>New Interactive Canvas Blog</em></p><ul><li><a href="https://medium.com/google-developers/aogprotips-synchronize-animations-with-the-text-to-speech-e9bb64860b44">Synchronize animations with the Text-To-Speech</a></li></ul><p><em>New Interactive Canvas Videos</em></p><ul><li><a href="https://www.youtube.com/watch?v=XcMitBgweM4">Building games on smart displays</a></li><li><a href="https://www.youtube.com/watch?v=P3-Btcdwzbs">Game design process</a></li><li><a href="https://www.youtube.com/watch?v=GPBImsQM-OA">Game development and tools</a></li><li><a href="https://www.youtube.com/watch?v=FsQTL3CGV4s">Continuous Match Mode party games</a></li><li><a href="https://www.youtube.com/watch?v=Crl4-F82mso">Game personas and visuals</a></li><li><a href="https://www.youtube.com/watch?v=8CWrlSTAa60">Opportunities and next steps</a></li></ul><p><strong>Discovery</strong></p><p>In October Actions links were renamed to <a href="https://developers.google.com/assistant/engagement/assistant-links">Assistant Links</a>. Assistant Links are URLs that link directly to a specific intent of your Action; which are great for email marketing materials. Assistant Links have been expanded with <a href="https://developers.google.com/assistant/engagement/assistant-links#rich_assistant_links">Rich Assistant Links</a>, which allows you to access your Action’s discovery through your website by using assist.js.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/494/0*avDFZttZC6OrSp3q" /></figure><p><strong>Great Learning Resources:</strong></p><ul><li>Docs: <a href="https://goo.gle/assistant-conversational-docs">goo.gle/assistant-conversational-docs</a></li><li>Samples: <a href="https://developers.google.com/assistant/conversational/samples">Conversational Actions Samples</a></li><li>Codelabs: <a href="https://developers.google.com/assistant/conversational/codelabs">Conversational Actions Codelabs</a></li><li>Videos: <a href="https://www.youtube.com/playlist?list=PLOU2XLYxmsIJ5qQKAYt45zZNMU9h1Grpm">Conversational Action video playlist</a></li></ul><p><strong>More Resources:</strong></p><ul><li>Ask your technical questions on <a href="http://goo.gle/assistant-stack-overflow">Stack Overflow</a></li><li>Stay up-to-date with announcements by following us on <a href="https://goo.gle/assistant-twitter">Twitter</a></li><li>Connect with other Assistant Developers on our <a href="https://goo.gle/assistant-reddit">Reddit community</a></li></ul><p>Interested in App Actions or Smart Home Actions? Check out their own blog with all new features and resources listed out at:</p><ul><li><a href="https://medium.com/google-developers/app-actions-2020-recap-c1cad7759158">App Actions 2020 Recap Blog</a></li><li><a href="https://medium.com/google-developers/smart-home-actions-2020-update-resources-3c503b143c8d">Smart Home 2020 Recap Blog</a></li></ul><p><em>Thanks for reading! To share your thoughts or questions, join us on Reddit at </em><a href="https://www.reddit.com/r/GoogleAssistantDev/"><em>r/GoogleAssistantDev</em></a><em>.</em></p><p><em>Follow </em><a href="https://twitter.com/ActionsOnGoogle"><em>@ActionsOnGoogle</em></a><em> 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!</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=dc486871535b" width="1" height="1" alt=""><hr><p><a href="https://medium.com/google-developers/conversational-actions-2020-recap-dc486871535b">Conversational Actions 2020 Recap</a> was originally published in <a href="https://medium.com/google-developers">Google Developers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[App Actions 2020 Recap]]></title>
            <link>https://medium.com/google-developers/app-actions-2020-recap-c1cad7759158?source=rss----2e5ce7f173a5---4</link>
            <guid isPermaLink="false">https://medium.com/p/c1cad7759158</guid>
            <category><![CDATA[actions-app]]></category>
            <category><![CDATA[aogdevs]]></category>
            <category><![CDATA[actions-on-google]]></category>
            <category><![CDATA[android]]></category>
            <category><![CDATA[assistant]]></category>
            <dc:creator><![CDATA[Jessica Dene Earley-Cha]]></dc:creator>
            <pubDate>Wed, 16 Dec 2020 17:05:36 GMT</pubDate>
            <atom:updated>2020-12-16T17:21:48.600Z</atom:updated>
            <content:encoded><![CDATA[<p>App Actions allow users to launch specific features in your Android app using Google Assistant. From a user’s perspective, App Actions provide users with quick ways to verbally navigate to your app or specific activities in your app.</p><figure><img alt="Example App Actions user query flow." src="https://cdn-images-1.medium.com/max/1024/1*Xn0KIL-Oo6NtnTATShKrfA.png" /><figcaption>Example App Actions user query flow</figcaption></figure><p>In 2020, we launched <a href="https://developers.google.com/assistant/app/reference/built-in-intents">30+ more Built-in Intents</a>, bringing the overall number to over 60. New common Built-in intents, such as “Open app feature” that opens specific activities in the app, or “Get thing” that searches for content using the default in-app search feature, are usable for the majority of apps. In case your app category isn’t listed, you can use <a href="https://developers.google.com/assistant/app/custom-intents">Custom Intents</a>. Custom intents, you need to provide the <a href="https://developers.google.com/assistant/app/custom-intents#query-patterns">query patterns</a>, which are different ways a user might say to express this activity.</p><p>For Built-in Intents such as <a href="https://developers.google.com/assistant/app/reference/built-in-intents/food-and-drink/order-menu-item">order menu item</a> or <a href="https://developers.google.com/assistant/app/reference/built-in-intents/health-and-fitness/get-exercise-plan">get exercise plan</a>, the fulfillment URLs can leverage web inventory. In other words, Assistant is using a google search index of your public web content to forward a URL to the app that’s responsible for rendering it in a native Android experience. <a href="https://developers.google.com/assistant/app/action-schema#web-inventory">Web inventory</a> uses your website to discover URLs for App Action fulfillment. This feature is most useful when you have a strong web presence, and your in-app deep links are organized around publicly available web content.</p><p><a href="https://developers.google.com/assistant/app/foreground-app">Foreground app invocation</a> allows built-in intents to be matched without requiring the app name to be mentioned while a specific activity is in the device foreground. For example, if a user has your rideshare app in the foreground and says or types, “Order me a ride to Mountain View.” to Google Assistant. Your app uses this input to set the destination field to Mountain View. Then, when the user says or types, “Order me a ride from SFO,” your app can additionally set the pickup location while preserving the state of your app.</p><p>To further support developers, the <a href="https://developers.google.com/assistant/app/test-tool">App Actions test tool</a> was launched. It provides a mechanism in Android Studio to test app actions prior to submitting a new version of the app in the Play store.</p><p>Below is a list of resources of code samples and videos that were launched this year:</p><p><em>New Samples:</em></p><ul><li><a href="https://github.com/actions-on-google/appactions-common-biis-kotlin">App Actions to-do list sample</a> Users can add items to to-do lists, search for items by category, and view information about completed tasks.</li><li><a href="https://github.com/actions-on-google/appactions-common-biis-kotlin/tree/get-analytics-with-firebase">Get analytics for App Actions using Google Analytics Sample</a> log events using the Google Analytics for Firebase SDK. You can then use Firebase Console to visualize traffic patterns and obtain app usage and user engagement insights.</li></ul><p><em>New Videos:</em></p><ul><li><a href="https://www.youtube.com/watch?v=fV54rTntWX4">Extend your Android application with Google Assistant</a></li><li><a href="https://www.youtube.com/watch?v=pIiO-nPC7kI">A Conversation about Android app</a></li></ul><p><strong>Great Learning Resources:</strong></p><ul><li>Docs: <a href="https://goo.gle/assistant-app-docs">goo.gle/assistant-app-docs</a></li><li>Samples: <a href="https://developers.google.com/assistant/app/samples">App Actions Samples</a></li><li>Codelab: <a href="https://codelabs.developers.google.com/codelabs/appactions">Extend an Android app to Google Assistant with App Actions</a></li><li>Playlist: <a href="https://www.youtube.com/playlist?list=PLOU2XLYxmsILJWy1k3BO7dScDSPL4KM2e">App Action Video Playlist</a></li></ul><p><strong>More Resources:</strong></p><ul><li>Ask your technical questions on <a href="https://stackoverflow.com/questions/tagged/app-actions">Stack Overflow</a></li><li>Stay up-to-date with announcements by following us on <a href="https://goo.gle/assistant-twitter">Twitter</a></li><li>Connect with other Assistant Developers on our <a href="https://goo.gle/assistant-reddit">Reddit community</a></li><li>Check out our <a href="https://goo.gle/assistant-videos">All Assistant videos playlist</a></li></ul><p>Interested in Conversational Actions or Smart Home Actions? Check out their own blog with all new features and resources listed out at:</p><ul><li><a href="https://medium.com/google-developers/conversational-actions-2020-recap-dc486871535b">Conversational Actions 2020 Recap Blog</a></li><li><a href="https://medium.com/google-developers/smart-home-actions-2020-update-resources-3c503b143c8d">Smart Home 2020 Recap Blog</a></li></ul><p><em>Thanks for reading! To share your thoughts or questions, join us on Reddit at </em><a href="https://www.reddit.com/r/GoogleAssistantDev/"><em>r/GoogleAssistantDev</em></a><em>.</em></p><p><em>Follow </em><a href="https://twitter.com/ActionsOnGoogle"><em>@ActionsOnGoogle</em></a><em> 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!</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c1cad7759158" width="1" height="1" alt=""><hr><p><a href="https://medium.com/google-developers/app-actions-2020-recap-c1cad7759158">App Actions 2020 Recap</a> was originally published in <a href="https://medium.com/google-developers">Google Developers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AoG ProTips: Handing Offline Devices]]></title>
            <link>https://medium.com/google-developers/aog-protips-handing-offline-devices-f0c7cd15ffe4?source=rss----2e5ce7f173a5---4</link>
            <guid isPermaLink="false">https://medium.com/p/f0c7cd15ffe4</guid>
            <category><![CDATA[actions-on-google]]></category>
            <dc:creator><![CDATA[Dave Smith]]></dc:creator>
            <pubDate>Fri, 01 May 2020 17:02:07 GMT</pubDate>
            <atom:updated>2020-05-01T17:02:07.693Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*mKUnSYMs-ZAxZEgr-Stkmw.png" /></figure><p>Missed our weekly video? Don’t worry, watch this week’s #AoGProTips 🎥</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fbu71sE4sxjE%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dbu71sE4sxjE&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fbu71sE4sxjE%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/dba3e07d30bb161ea5659445a28cb699/href">https://medium.com/media/dba3e07d30bb161ea5659445a28cb699/href</a></iframe><p>Many factors can affect device connectivity in the home, and it’s important to keep users aware when their devices are unreachable or offline. A critical element of your smart home Action is properly maintaining and reporting the reachability of each device to Google Assistant.</p><p>The smart home API supports multiple ways to indicate that a device is unreachable, so let’s explore when it’s appropriate to use each one.</p><h3>Offline status</h3><p>Each response that your smart home Action provides to a QUERY and EXECUTE intent should include a <a href="https://developers.google.com/assistant/smarthome/develop/process-intents#response_format_2">status</a> code. For most intents, the status value will be SUCCESS. When Google Assistant attempts to QUERY an unreachable device, you should return the device status as OFFLINE. This indicates that there is no additional state available from the device at this time.</p><pre>{<br>  &quot;requestId&quot;: &quot;ff36a3cc-ec34-11e6-b1a0-64510650abcf&quot;,<br>  &quot;payload&quot;: {<br>    &quot;devices&quot;: {<br>      &quot;123&quot;: {<br>        &quot;status&quot;: &quot;OFFLINE&quot;<br>      }<br>    }<br>  }<br>}</pre><h3>Offline error</h3><p>Each EXECUTE intent represents a command to change the state of the device. If that command fails to execute for any reason, it is appropriate to report that condition with an error response. When an EXECUTE intent fails because the device was unreachable, return an ERROR status with the error code set to deviceOffline.</p><pre>{<br>  &quot;requestId&quot;: &quot;ff36a3cc-ec34-11e6-b1a0-64510650abcf&quot;,<br>  &quot;payload&quot;: {<br>    &quot;commands&quot;: [<br>      {<br>        &quot;ids&quot;: [<br>          &quot;123&quot;<br>        ],<br>        &quot;status&quot;: &quot;ERROR&quot;,<br>        &quot;errorCode&quot;: &quot;deviceOffline&quot;<br>      }<br>    ]<br>  }<br>}</pre><p>Note that if your integration handles commands asynchronously or any other conditions require you to return a PENDING status in the EXECUTE response, you can update the status of an unreachable device using the offline state flag.</p><h3>Offline status flag</h3><p>Finally, we have the online state flag. Use this flag to publish any changes in device connectivity through the <a href="https://developers.google.com/assistant/smarthome/develop/report-state">Report State</a> API. This ensures that Home Graph remains up to date and reduces the chance that the Assistant sends QUERY or EXECUTE intents to an unreachable device.</p><pre>{<br>  &quot;requestId&quot;: &quot;ff36a3cc-ec34-11e6-b1a0-64510650abcf&quot;,<br>  &quot;agentUserId&quot;: &quot;1234&quot;,<br>  &quot;payload&quot;: {<br>    &quot;devices&quot;: {<br>      &quot;states&quot;: {<br>        &quot;123&quot;: {<br>          &quot;online&quot;: false<br>        }<br>      }<br>    }<br>  }<br>}</pre><p>For more helpful tips on getting the most out of your actions, be sure to check out the rest of the AoG ProTips series — and share your tips with us on Twitter using the hashtag <a href="https://twitter.com/hashtag/AoGProTips">#AoGProTips</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f0c7cd15ffe4" width="1" height="1" alt=""><hr><p><a href="https://medium.com/google-developers/aog-protips-handing-offline-devices-f0c7cd15ffe4">AoG ProTips: Handing Offline Devices</a> was originally published in <a href="https://medium.com/google-developers">Google Developers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AoG ProTips: Test Suite for Smart Home]]></title>
            <link>https://medium.com/google-developers/aog-protips-test-suite-for-smart-home-929a181e91e9?source=rss----2e5ce7f173a5---4</link>
            <guid isPermaLink="false">https://medium.com/p/929a181e91e9</guid>
            <category><![CDATA[google-home]]></category>
            <category><![CDATA[development]]></category>
            <category><![CDATA[developer]]></category>
            <category><![CDATA[actions-on-google]]></category>
            <dc:creator><![CDATA[Dave Smith]]></dc:creator>
            <pubDate>Fri, 10 Apr 2020 20:00:06 GMT</pubDate>
            <atom:updated>2020-04-10T20:00:06.180Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="Illustration of a home with the Smart Home technology and other tech symbols." src="https://cdn-images-1.medium.com/max/1024/1*4beGBoVXFY_EzeA-DbzxVw.png" /></figure><p>Missed our weekly video? Don’t worry, watch this week’s #AoGProTips 🎥</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FLHk4syomWcc%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DLHk4syomWcc&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FLHk4syomWcc%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/cb39746b5ea1cee222ed498e0f828115/href">https://medium.com/media/cb39746b5ea1cee222ed498e0f828115/href</a></iframe><p>The <a href="https://developers.google.com/assistant/smarthome/tools/smart-home-test-suite">test suite for smart home</a> allows you to self-test your smart home Action and verify that it meets all the necessary criteria before you submit for review. The test suite automatically generates test cases for the supported devices and traits reported by your Action. The test suite cannot verify traits which do not have state (such as <a href="https://developers.google.com/assistant/smarthome/traits/locator">Locator</a>) or cannot accept commands (such as <a href="https://developers.google.com/assistant/smarthome/traits/runcycle">RunCycle</a>).</p><p>In this post, we’ll explore some of the best practices to ensure that your test suite runs are successful!</p><h3>Can you hear me now?</h3><p>The test suite generates text to speech (TTS) audio commands for each device trait reported by your Action. The commands must be heard by a nearby Google Home or Nest device in order to reach your smart home Action. <strong>If the device hears the command incorrectly, it will not execute the correct command and the test will fail.</strong></p><blockquote><strong>Note:</strong> This also means that you must ensure the Nest device you are testing with is linked to the same user account that you supplied to the test suite.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/960/0*rDHXAQsm3IXhFYpv" /><figcaption>Test suite uses audio for commands</figcaption></figure><p>Ensure that you run the test suite in an environment where the Nest device can hear your computer speakers clearly without background noise. You might even consider putting headphones over the device microphones to block out any external sound!</p><h3>Implement Report State</h3><p>The test suite verifies command results by inspecting the state in <a href="https://developers.google.com/assistant/smarthome/concepts/homegraph">Home Graph</a> for the expected value. The test suite does not verify the EXECUTE response or send a QUERY intent to determine success, so you should test those portions of your smart home Action separately. If you do not update Home Graph directly after each command, the tests will fail.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/960/0*nP0jE1Z5pbEQpno6" /><figcaption>Test suite requires data in Home Graph</figcaption></figure><p>To update Home Graph, you must implement the <a href="https://developers.google.com/assistant/smarthome/develop/report-state">Report State</a> API in your smart home Action to notify Google of asynchronous changes with your devices, and enable the willReportState flag for each device in your SYNC response — the test suite will skip devices with this flag set to false.</p><pre>{<br>  &quot;requestId&quot;: &quot;ff36a3cc-ec34-11e6-b1a0-64510650abcf&quot;,<br>  &quot;payload&quot;: {<br>    &quot;agentUserId&quot;: &quot;1836.15267389&quot;,<br>    &quot;devices&quot;: [<br>      {<br>        &quot;id&quot;: &quot;123&quot;,<br>        <strong>&quot;willReportState&quot;: true</strong><br>        ...<br>      }<br>    ],<br>  },<br>}</pre><h3>Report state frequently</h3><p>It’s critical for your smart home Action to maintain accurate data in Home Graph at all times. When Google Assistant does not find recent state data in Home Graph, it must issue a QUERY intent to your service to determine the current state, adding latency to the user experience. You should also call Report State after any command sent to the device, even if the command does not trigger a state change (e.g. the light is already on).</p><p>Following these steps ensures Home Graph is accurate starting from the initial SYNC, and avoids common failure cases in the test suite due to missing or incorrect Home Graph data for the devices under test.</p><h3>Submit your results</h3><p>After completing your test run, it’s time to submit your results through the certification form in the <a href="https://console.actions.google.com/">Actions console</a>. During submission, you will have the opportunity to note any device traits that require additional testing and add comments to your results to indicate if any failing tests are due to design considerations in your devices.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/960/0*JV3fID1h_SCgVgtz" /><figcaption>Certification request in Actions console</figcaption></figure><p>For more helpful tips on getting the most out of your actions, be sure to check out the rest of the AoG ProTips series — and share your tips with us on Twitter using the hashtag <a href="https://twitter.com/hashtag/AoGProTips">#AoGProTips</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=929a181e91e9" width="1" height="1" alt=""><hr><p><a href="https://medium.com/google-developers/aog-protips-test-suite-for-smart-home-929a181e91e9">AoG ProTips: Test Suite for Smart Home</a> was originally published in <a href="https://medium.com/google-developers">Google Developers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AoGProTips: Synchronize animations with the Text-To-Speech]]></title>
            <link>https://medium.com/google-developers/aogprotips-synchronize-animations-with-the-text-to-speech-e9bb64860b44?source=rss----2e5ce7f173a5---4</link>
            <guid isPermaLink="false">https://medium.com/p/e9bb64860b44</guid>
            <category><![CDATA[development]]></category>
            <category><![CDATA[google-home]]></category>
            <category><![CDATA[voice-assistant]]></category>
            <category><![CDATA[developer]]></category>
            <category><![CDATA[actions-on-google]]></category>
            <dc:creator><![CDATA[Mandy Chan]]></dc:creator>
            <pubDate>Thu, 02 Apr 2020 06:24:22 GMT</pubDate>
            <atom:updated>2020-04-02T16:05:00.688Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="Illustration of someone playing the guitar on a computer screen." src="https://cdn-images-1.medium.com/max/1024/1*5mJE9O5VFsL5toPdFjd-cg.png" /></figure><p>Missed our weekly video? Don’t worry, watch this week of #AoGProTips 🎥</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fvideoseries%3Flist%3DPLOU2XLYxmsIJaFhu4mKg3LgUpsrxnr1Y-&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DxTceiHKCy0k&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FxTceiHKCy0k%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/288b279c833d5a110da193760dc3931b/href">https://medium.com/media/288b279c833d5a110da193760dc3931b/href</a></iframe><p>When building smart display games for the Google Assistant using <a href="https://developers.google.com/assistant/interactivecanvas">Interactive Canvas</a>, you can add fun animations to create a fully immersive experience. Do you know you can synchronize your animations with audio, such as making a dinosaur open its mouth at the exact moment you play the roaring sound? In this blog post, you will learn how to use the SSML <a href="https://developers.google.com/assistant/actions/reference/ssml#mark">mark tag</a> with the onTtsMark callback function to synchronize your animations with audio.</p><p><a href="https://developers.google.com/assistant/actions/reference/ssml">SSML</a> stands for Speech Synthesis Markup Language. By using SSML, you can make your conversation’s responses sound more natural by adding breaks between words, and adjusting the speed, pitch and rate of a word. Look at the SSML example below.</p><p>&lt;speak&gt; The dinosaur is about to roar &lt;mark name = ‘START_ROAR’&gt;&lt;audio src=’roar.mp3’/&gt;&lt;mark name =’STOP_ROAR’&gt;&lt;/speak&gt;</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/512/1*OXnV16DdOa9nPcVvceyjSg.gif" /></figure><p>In the SSML, the &lt;mark&gt; tag allows you to indicate during the generated TTS audio when the dinosaur should start and stop animating. It generates events during TTS; your code has a callback that gets triggered by each mark tag. Each mark event has a name. In this example, we have two events named “START_ROAR” and “STOP_ROAR”. You need to write code that can be triggered by each mark event. The code for the “START_ROAR” event can open the dinosaur’s mouth after the spoken prompt “The dinosaur is about to roar “ is complete. Similarly, the code for the “STOP_ROAR” event can close the dinosaur’s mouth.</p><p>Now that the mark tags are in place within the SSML, you can write the logic for each animation when the mark tag is hit. Keep in mind, the name of the mark tag must be unique within the SSML so that the onTtsMark callback responds to the correct cue. Let’s look at the code below.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/1de26ccd00f9f6247c55a7f57b85e5d5/href">https://medium.com/media/1de26ccd00f9f6247c55a7f57b85e5d5/href</a></iframe><p>You register a callback for onTtsMark. The onTtsMark() method receives the markName in the SSML, and depending on the name of the mark tag, triggers the corresponding logic which plays the animation of the dinosaur moving its mouth. For the ‘START_ROAR’ markName, it will call the beginRoaring function, whereas ‘STOP_ROARING’ will call the stopRoaring function to stop the animation.</p><p>Now that you have learned how to synchronize animations using the SSML mark tag and the onTtsMark callback, we hope you apply this tip in your next Action to create a fully immersive gaming experience for your users.</p><p>If you have a tip that you think other developers should know about, share your thoughts with us on <a href="https://twitter.com/ActionsOnGoogle">Twitter</a> using #AoGProTips. Lastly, check out our collection of other pro tips <a href="https://www.youtube.com/playlist?list=PLOU2XLYxmsIJaFhu4mKg3LgUpsrxnr1Y-">here</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e9bb64860b44" width="1" height="1" alt=""><hr><p><a href="https://medium.com/google-developers/aogprotips-synchronize-animations-with-the-text-to-speech-e9bb64860b44">AoGProTips: Synchronize animations with the Text-To-Speech</a> was originally published in <a href="https://medium.com/google-developers">Google Developers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AoG ProTips: Inspecting Home Graph]]></title>
            <link>https://medium.com/google-developers/aog-protips-inspecting-home-graph-503df93b7a91?source=rss----2e5ce7f173a5---4</link>
            <guid isPermaLink="false">https://medium.com/p/503df93b7a91</guid>
            <category><![CDATA[actions-on-google]]></category>
            <category><![CDATA[iot]]></category>
            <category><![CDATA[google-assistant]]></category>
            <dc:creator><![CDATA[Dave Smith]]></dc:creator>
            <pubDate>Thu, 19 Mar 2020 17:44:34 GMT</pubDate>
            <atom:updated>2020-03-19T17:44:33.816Z</atom:updated>
            <content:encoded><![CDATA[<p>Missed our weekly video? Don’t worry, watch this week’s #AoGProTips 🎥</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F1Tv2YhtosAA%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D1Tv2YhtosAA&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F1Tv2YhtosAA%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/052170e5b19c636be271736c9ccba5d8/href">https://medium.com/media/052170e5b19c636be271736c9ccba5d8/href</a></iframe><p>Google’s <a href="https://developers.google.com/assistant/smarthome/concepts/homegraph">Home Graph</a> provides contextual data about the home and its devices, creating a logical map of the home. This enables users to target devices by room or implicitly make commands when you are located in the same room. Most of the data is populated by your smart home Action, and accurate Home Graph data is critical to providing the best user experience through the Assistant.</p><p>In addition to the <a href="https://developers.google.com/assistant/smarthome/develop/report-state">Report State</a> and <a href="https://developers.google.com/assistant/smarthome/develop/request-sync">Request Sync</a> methods that your cloud service invokes, the Home Graph API includes methods that are useful during development to validate the device capabilities and state data reported by your Action.</p><p>Let’s explore how we can use the Home Graph API to validate the SYNC response and debug Report State.</p><h3>Obtain a service account key</h3><p>The Home Graph API requires authorization to access the device data in your project. Use the following steps to create a new service account credential associated with your smart home Action project.</p><ol><li>In the Google Cloud Platform Console, go to the <a href="https://console.cloud.google.com/apis/credentials/serviceaccountkey">Create service account key</a> page.</li><li>From the <strong>Service account</strong> list, select <strong>New service account</strong>.</li><li>In the <strong>Service account name</strong> field, enter a name.</li><li>From the <strong>Role</strong> list, select <strong>Service Accounts &gt; Service Account Token Creator</strong>.</li><li>For the <strong>Key type</strong>, select the <strong>JSON</strong> option.</li><li>Click <strong>Create</strong>.</li></ol><p>Download the JSON credentials to your computer as service-account.json.</p><h3>Initialize a Home Graph client</h3><p>The <a href="https://github.com/googleapis/google-api-nodejs-client">Google APIs Node.js Client</a> library includes bindings for the Home Graph API, so we can build a simple <a href="https://nodejs.dev/introduction-to-nodejs">Node.js script</a> as a client interface with just a few lines of code. You can install the client library as a dependency using NPM:</p><pre>$ npm install googleapis</pre><p>Inside your script, use the following code to instantiate an authenticated client for the Home Graph API with your JSON service account credentials.</p><pre>const {google} = require(&#39;googleapis&#39;);<br>const credentials = require(&#39;./service-account.json&#39;);</pre><pre>// Create an authorized client for Home Graph<br>const auth = new google.auth.GoogleAuth({<br>  credentials: credentials,<br>  scopes: [&#39;<a href="https://www.googleapis.com/auth/homegraph&#39;">https://www.googleapis.com/auth/homegraph&#39;</a>]<br>});</pre><pre><strong>const homegraph = google.homegraph({<br>  version: &#39;v1&#39;,<br>  auth: auth,<br>});</strong></pre><blockquote><strong>Note:</strong> Home Graph API bindings are also available in <a href="https://github.com/googleapis/google-api-java-client">Java</a>.</blockquote><h3>Inspect SYNC metadata</h3><p>Using the <a href="https://developers.google.com/assistant/smarthome/reference/rest/v1/devices/sync">sync</a> method, you can verify the metadata in Home Graph for the devices associated with a given agentUserId provided by your smart home Action.</p><pre>// Request set of devices for the given user<br>async function sync(homegraph, userId) {<br>  const request = {<br>    requestBody: {<br>      agentUserId: userId,<br>    }<br>  };</pre><pre>  <strong>return await homegraph.devices.sync(request);</strong><br>}</pre><p>This data is populated in Home Graph by <a href="https://developers.google.com/assistant/smarthome/concepts/intents#sync">SYNC</a> intent response, and it’s a good way to verify that the types, traits, and attributes for each of your user’s devices are reported properly.</p><h3>Query device state</h3><p>Using the <a href="https://developers.google.com/assistant/smarthome/reference/rest/v1/devices/query">query</a> method, you can request the state data stored in Home Graph for devices associated with your smart home Action. This data is provided by your <a href="https://developers.google.com/assistant/smarthome/develop/report-state">Report State</a> implementation, keeping Home Graph state in sync with your service. You should verify that the data for each device is not missing or incomplete.</p><pre>// Request the current state of a given user&#39;s device<br>async function query(homegraph, userId, deviceId) {<br>  const request = {<br>    requestBody: {<br>      agentUserId: userId,<br>      inputs: [{<br>        payload: {<br>          devices: [{<br>            id: deviceId<br>          }]<br>        }<br>      }]<br>    }<br>  };</pre><pre><strong>  return await homegraph.devices.query(request);</strong><br>}</pre><p>Note that <a href="https://developers.google.com/assistant/smarthome/concepts/intents#query">QUERY</a> intent responses do not update Home Graph state. If you see incomplete state data in Home Graph, it means you need to modify how and when you call Report State to provide a more complete picture.</p><h3>Report State Dashboard</h3><p>An alternative way to visualize your Home Graph data is with the Report State Dashboard. The dashboard is a frontend web application written in Java that provides a graphical interface to review device states for a given agentUserId in your project.</p><p>Download the source from <a href="https://github.com/actions-on-google/smart-home-dashboard">GitHub</a> and follow the instructions in the README to get started.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*O3Q-bC3LDO-BZup3" /><figcaption>Report State Dashboard UI</figcaption></figure><p>For more helpful tips on getting the most out of your actions, be sure to check out the rest of the AoG ProTips series — and share your tips with us on Twitter using the hashtag <a href="https://twitter.com/hashtag/AoGProTips">#AoGProTips</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=503df93b7a91" width="1" height="1" alt=""><hr><p><a href="https://medium.com/google-developers/aog-protips-inspecting-home-graph-503df93b7a91">AoG ProTips: Inspecting Home Graph</a> was originally published in <a href="https://medium.com/google-developers">Google Developers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AoG ProTips: Account Linking Verification for Smart Home]]></title>
            <link>https://medium.com/google-developers/aog-protips-account-linking-verification-for-smart-home-1fc5a9273971?source=rss----2e5ce7f173a5---4</link>
            <guid isPermaLink="false">https://medium.com/p/1fc5a9273971</guid>
            <category><![CDATA[actions-on-google]]></category>
            <category><![CDATA[iot]]></category>
            <category><![CDATA[google-assistant]]></category>
            <dc:creator><![CDATA[Dave Smith]]></dc:creator>
            <pubDate>Fri, 06 Mar 2020 18:03:26 GMT</pubDate>
            <atom:updated>2020-03-06T18:03:26.260Z</atom:updated>
            <content:encoded><![CDATA[<p>Missed our weekly video? Don’t worry, watch this week’s #AoGProTips 🎥</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FdcW3dPKhjC4%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DdcW3dPKhjC4&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FdcW3dPKhjC4%2Fhqdefault.jpg&amp;key=d04bfffea46d4aeda930ec88cc64b87c&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/d53dc054df6aa2a14488263d775fbecf/href">https://medium.com/media/d53dc054df6aa2a14488263d775fbecf/href</a></iframe><p>Smart home Actions rely on <a href="https://developers.google.com/assistant/smarthome/concepts/fulfillment-authentication#authentication">account linking</a> to authorize the Google Assistant to access a user’s devices, but this is a multi-step process that can be difficult to debug in production. When you encounter an OPEN_AUTH_FAILURE in your StackDriver logs, you need a way to interactively debug each step of the account linking integration to track down the root cause of the issue.</p><p>Using Google’s <a href="https://developers.google.com/oauthplayground/">OAuth Playground</a> tool, you can interactively step through the account linking process with your cloud service in a secure way and verify whether Google is able to obtain the necessary authorization tokens. Let’s explore how to configure and use OAuth Playground.</p><h3>Configure OAuth Playground</h3><p>Navigate to your account linking configuration for your project in the <a href="http://console.actions.google.com/">Actions console</a>. You will use this information to configure the OAuth Playground tool.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*WWQuieoF5VfjSW_U" /><figcaption>Actions Console OAuth Configuration</figcaption></figure><p>Launch <a href="https://developers.google.com/oauthplayground/">OAuth Playground</a>, and click on the gear icon in to open the <strong>OAuth 2.0 configuration</strong> dialog. Configure the interface as shown using the <strong>OAuth Client information</strong> from your Actions console project:</p><ul><li><strong>Authorization endpoint:</strong> Set this parameter to the <strong>Authorization URL</strong> in the console.</li><li><strong>Token endpoint:</strong> Set this parameter to the <strong>Token URL</strong> in the console.</li><li><strong>OAuth client ID:</strong> Set this parameter to the same value as in the console.</li><li><strong>OAuth client secret:</strong> Set this parameter to the same value as in the console.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/480/1*kG-IUbZgXwBZkU2mBcrCFA.png" /><figcaption>OAuth Playground configuration</figcaption></figure><h3>Link an account</h3><p>We can now walk through the steps to obtain an access token from the OAuth endpoint.</p><h4>Select &amp; authorize APIs.</h4><p>Enter any additional scopes your service requires in the text field that says <em>Input your own scopes</em>. If your service does not require any, enter something generic like “devices” and click <strong>Authorize APIs</strong>.</p><p>This will redirect to your <strong>Authorization URL</strong> to sign in. Once the sign in flow successfully completes, you will be redirected back to the OAuth Playground for step 2.</p><h4>Exchange authorization code for tokens</h4><p>This section is pre-filled with the authorization code returned by your service. Click <strong>Exchange authorization code for tokens</strong> to request token credentials from your <strong>Token URL</strong>.</p><p>If successful, the refresh token and access token will populate in the UI.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/480/1*x4K00O5wSYZ2iPAxHDIzZw.png" /><figcaption>Successfully obtained OAuth tokens</figcaption></figure><p>Verify that you can successfully execute a token refresh against your account linking endpoint by clicking the <strong>Refresh access token</strong> button in the Playground UI. If you get an error at this stage, it is likely because your service is not properly accepting the refresh token it initially generated as valid.</p><h3>Check for errors</h3><p>OAuth Playground clearly displays the request and response for each step, allowing you to determine exactly which stage in the account linking process may be failing.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/1*DhQfyD9bYR9JHSa6XAnaWA.png" /><figcaption>Example error requesting access token</figcaption></figure><p>If you do not encounter any errors obtaining a user access token from your service, you can attempt to use that token to invoke a smart home intent.</p><h3>Send an authorized request</h3><p>The final step is to verify your service will successfully accept the credentials attached to a smart home intent request. Let’s configure the tool to send a sample <a href="https://developers.google.com/assistant/smarthome/concepts/intents#sync">SYNC</a> request.</p><h4>Configure request to API</h4><p>Expand this section in the Playground UI, enter your fulfillment URL from the Actions console as the <strong>Request URI</strong>, and set the <strong>HTTP Method</strong> to <strong>POST</strong>. Verify that <strong>Content-Type</strong> is set to <strong>application/json</strong> and enter the following sample request body:</p><pre>{<br>  &quot;requestId&quot;: &quot;ff36a3cc-ec34-11e6-b1a0-64510650abcf&quot;,<br>  &quot;inputs&quot;: [{<br>    &quot;intent&quot;: &quot;action.devices.SYNC&quot;<br>  }]<br>}</pre><p>Click <strong>Send the request</strong> and verify that your service successfully returns a SYNC response with a valid agentUserId.</p><h3>Learn more</h3><p>For more helpful tips on getting the most out of your actions, be sure to check out the rest of the <a href="https://goo.gle/aogprotips">AoG ProTips video series</a> — and share your thoughts with us on Twitter using the hashtag <a href="https://twitter.com/hashtag/AoGProTips">#AoGProTips</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1fc5a9273971" width="1" height="1" alt=""><hr><p><a href="https://medium.com/google-developers/aog-protips-account-linking-verification-for-smart-home-1fc5a9273971">AoG ProTips: Account Linking Verification for Smart Home</a> was originally published in <a href="https://medium.com/google-developers">Google Developers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>