Amazon Developer Blogs Amazon Developer Blogs https://developer.amazon.com 2018-10-23T07:26:28+00:00 Apache Roller Weblogger /blogs/alexa/post/a8d762f7-06fa-44c0-9fc8-968c2a4d48b1/jp-storyline-spotlight プログラミング不要!ストーリーラインで誰でもAlexaスキルの開発が可能に Yuka Gray 2018-10-23T06:16:48+00:00 2018-10-23T07:26:28+00:00 <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/storyline_blog._CB495538390_.png" style="height:240px; width:954px" /></p> <p>Storylineは、プログラミングせずに、ドラッグ&ドロップ機能を使いながら対話モデルを作成するツールです。Alexaスキル管理API(SMAPI)と連携することで、Alexaスキルの開発、テスト、公開、アップデートがすべてStoryline上で可能です。現在、世界で4000以上のスキルがStorylineを使って開発され、スキルストアに公開されました。</p> <p style="text-align:left"><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/storyline_blog._CB495538390_.png" style="height:240px; width:954px" /></p> <p style="text-align:left"><a href="http://www.getstoryline.com/">Storyline</a>は、プログラミングせずに、ドラッグ&ドロップ機能を使いながら対話モデルを作成するツールです。Alexaスキル管理API(SMAPI)と連携することで、Alexaスキルの開発、テスト、公開、アップデートがすべてStoryline上で可能です。現在、世界で4000以上のスキルがStorylineを使って開発され、スキルストアに公開されました。</p> <p style="text-align:left">Storylineの共同創業者であるVasili Shynkarenka氏は、Storyline誕生のきっかけについて、「優れたコンテンツクリエーターが必ずしも技術に長けているわけではないし、開発者が必ずしも良いコンテンツを生み出せるわけでもない、と感じていました。プログラミングのことを心配せずに、会話をデザインすることに集中できるようにしたかったのです」と語ります。</p> <p style="text-align:left">&nbsp;</p> <h2 style="text-align:left"><strong>会話とプログラミングを分けて考える</strong></h2> <p style="text-align:left">Shynkarenka氏と共同創業者のMaksim Abramchuk氏は、ヨーロッパの企業向けにチャットボットと音声アプリを作っていましたが、Amazon Echoが登場したとき、2人は音声テクノロジーの可能性を感じ、Alexaスキルの開発に注力し始めました。しかし、Shynkarenka氏が会話をデザインし、それを開発者に頼んでスキルを開発してもらう、というスキル開発のプロセスの中で不要な作業が発生していると感じ始めました。Shynkarenka氏は、「私はクリエイティブな人間として、複雑なやり取りや会話のデザイン、魅力的なダイアログや面白い効果音を考えることは出来るのですが、プログラミングが出来ないので、もどかしく感じていました。その気持ちがStorylineを作るきっかけになりました」と語ります。</p> <p style="text-align:left">Storylineのドラッグ&ドロップ機能を使うと、誰でもカスタムスキルとフラッシュブリーフィングスキルを作ることができます。まず、ヘルプインテントとストップインテントの入ったテンプレートを使ってAlexaとユーザーの発話を入力します。その後、インテントや発話、ロジックを追加しながら、会話の分岐を作り、例外の発話を入力していきます。ブラウザー上で音声ユーザーインターフェース(VUI)を作ってビジュアルで見ながら、VUIの音声を聞き、自然な会話になっているかどうかを確認して改良を加えていけます。編集は好きなだけできます。</p> <p style="text-align:left">&nbsp;</p> <h2 style="text-align:left"><strong>プログラミングなしのスキル開発がさらに強力に</strong></h2> <p style="text-align:left">Storylineを使うと、プログラミングなしで複雑な対話モデルを作成し実行させることができます。プログラムを書かずに、会話のフローやコンテンツを作成すると、その裏側で、音声ユーザーインターフェース(VUI)とプログラムが生成されます。SMAPIとの連携により、Storylineを使うとスキル管理がほぼ自動化できます。「私たちのツールでコンテンツ作りに集中してもらい、スキルの開発、アップデート、公開やスキルの管理はSMAPIで行います。スキルのコンテンツはリアルタイムで反映されます。例えば、よくある会話の返答をアップデートしたり、季節のサプライズを入れたりといったことであれば、デプロイやスキル認定の再申請する必要なく、スキルの応答内容をアップデートすることができます。</p> <p style="text-align:left">米国で行われた<a href="https://developer.amazon.com/ja/blogs/alexa/post/346b7b68-7c04-47e5-b558-80276bf483da/kids-court-adva-levin-spotlight">子ども向けスキルコンテストの優勝作品、『Kids Court』</a>(英語ページ)は、すべてStorylineで開発されたものです。開発者のAdva Levin氏は、毎日Storyline上でスキル内の挨拶をアップデートしています。「魅力あるスキルを作るには、プログラマーである必要はないことをこのスキルが実証しています。SMAPIとの連携により、Storylineのプラットフォーム上で、スキルの申請と公開まで可能になりました。スキル開発に必要なものは、良いアイデアを持ち、それをカタチにするだけです」と、Shynkarenka氏は語ります。</p> <p style="text-align:left">&nbsp;</p> <h2 style="text-align:left"><strong>日本語のスキル作成の注意点</strong></h2> <p style="text-align:left">Storyline自体のUIは英語ですが、日本ユーザー向けの日本語スキルを作ることができます。日本向けスキルを作るには、Storylineのアカウント作成後、スキルの種類と名前を入力する画面で、言語を<strong>Japanese</strong>に設定してください。</p> <p style="text-align:left"><img alt="" src="https://m.media-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-skills-kit/jp/blog/storyline_language._CB1540183536_.png" style="height:941px; width:1388px" /></p> <p style="text-align:left">また、日本向けスキルにStorylineを使用する場合の注意点を<a href="https://forums.developer.amazon.com/articles/175276/storyline%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%82%B9%E3%82%AD%E3%83%AB%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E9%9A%9B%E3%81%AE%E6%B3%A8%E6%84%8F%E7%82%B9.html">ナレッジベース</a>にまとめていますので、作成の際、必ずご確認ください。</p> <p style="text-align:left">&nbsp;</p> <h2 style="text-align:left"><strong>スキルを公開して特典をもらおう</strong></h2> <p style="text-align:left">10月にスキルを公開された方には、AlexaTシャツをもれなくプレゼントする<a href="https://developer.amazon.com/ja/alexa-skills-kit/alexa-developer-skill-promotion">キャンペーン</a>を実施中です。さらに公開後最初の30日間に300人以上のユーザーに使われたスキルの開発者には、Amazon Echo Spotがもらえるクーポンを差し上げます。また、毎月のキャンペーンに加えて、10~11月はオリジナルフィギュアがもらえる<a href="https://developer.amazon.com/ja/alexa-skills-kit/super-developer">スーパースキルコレクション</a>キャンペーンを開催中です。ぜひご応募ください。</p> /blogs/alexa/post/8d04d1ce-f391-482a-8437-e6a28ea05c35/best-practices-to-streamline-the-alexa-skill-certification-process-inspired-by-you Best Practices to Streamline the Alexa Skill Certification Process, Inspired By You Jennifer King 2018-10-19T14:00:00+00:00 2018-10-19T14:00:00+00:00 <p>Every developer who submits a skill for certification has the opportunity to share feedback via a survey we send with their certification results. Based on the results of this survey, we’ve identified a few common certification pain points that are relatively easy to avoid.</p> <p>Every skill published to the Alexa Skills Store goes through a <a href="https://developer.amazon.com/docs/custom-skills/certification-requirements-for-custom-skills.html">certification process</a>, making sure that Alexa customers are presented with a delightful and engaging experience. Just as we are invested in providing a great customer experience, we are deeply invested in the developer experience for creating these engaging skills. &nbsp;</p> <p>Every developer who submits a skill for certification has the opportunity to share feedback via a survey we send with their certification results. Based on the results of this survey, we’ve identified a few common certification pain points that are relatively easy to avoid. Addressing these issues upfront should lead to an improved certification experience for you.</p> <h2>1. Write an Informative and Accurate Skill Description</h2> <p>Your skill's description is likely one of the first things an Alexa customer will see when they encounter your skill for the first time. You will want to make sure that it is enticing and engaging, but most importantly, you will want to provide an accurate overview of the skill's core functionality.</p> <p>Does the skill require the use of an additional service/account? Does the skill integrate with specific devices that customers need to have present? Are there any special instructions or limitations to this skill that customers should know about upfront? Answering questions like these within the skill description will help Alexa customers and the certification team understand the experiences that they will have when they interact with your skill. We encourage you to check your description against the <a href="https://developer.amazon.com/docs/custom-skills/functional-testing-for-a-custom-skill.html#cert-skill-description">Skill Description and Detail Page</a> tests, which are valuable reference material to help you assess if you are providing the right amount of information.</p> <h2>2. Leverage Your Interaction Model for Your Example Phrases</h2> <p>To make sure your example phrases are understood by Alexa with high confidence, it is important to use the <strong>sample utterances</strong> defined in your skill’s interaction model. <a href="https://developer.amazon.com/docs/custom-skills/understanding-how-users-invoke-custom-skills.html#cert-utterances-support-invocation">Ensure that the sample utterances support the invocation phrases</a>, are free of typos, do not have grammatical errors, and contain all of the necessary components, which we outline below.</p> <p>A standard structure you can follow when creating example phrases would be, <strong>“Alexa, ask [Invocation Name] to [Sample Utterance]”</strong> or <strong>“Alexa, open [Invocation Name] and [Sample Utterance].”</strong> Of course, you can make variations to these, but the wake word “Alexa,” the correct invocation name for the skill, and sample utterances taken directly from your interaction model are all required components for example phrases. The Alexa Developer Console will present some warnings inline if your <a href="https://developer.amazon.com/blogs/alexa/post/b371e45a-6e91-481c-9f52-a5bda5f9e1e8/announcing-new-ways-to-validate-example-phrases-for-your-alexa-skills">example phrases are in an invalid format</a>.</p> <p>Something to keep in mind if you have multiple languages in your skill is that each language model will have an independent set of example phrases and must match that language model’s invocation name and sample utterances. Make sure to verify this for every locale your skill supports, prior to submitting your skill for certification.&nbsp;</p> <p>For every skill you intend to publish to the Alexa Skills Store, <a href="https://developer.amazon.com/docs/custom-skills/functional-testing-for-a-custom-skill.html#cert-example-phrases">review and test your example phrases</a>. You can find a deeper review of example phrase best practices in <a href="https://developer.amazon.com/blogs/alexa/post/74d0ed59-ad4f-470a-abcf-d37c10a1dfd6/crafting-great-example-phrases-that-meet-certification-requirements">this blog post</a>.</p> <h2>3. Help the Customer Navigate Your Skill</h2> <p>It’s important to make sure that you provide help to customers and give them insight into the interactions that they can have with your skill. Instead of solely stating basic skill functionality and closing the session, the <code>AMAZON.HelpIntent</code> should be implemented to keep the session open and give customers the opportunity to make progress within your skill.</p> <p>Here are three questions to keep in mind when providing help to Alexa users:</p> <ul> <li>Does the information provided help the customers navigate the skill’s functionality?</li> <li>Does the help interaction end in a question, requesting the user to take an action?</li> <li>Does the help interaction result in an open session so that the user can continue interacting with the skill?</li> </ul> <p>If your answer to any of the questions above is “no,” you’ll want to update the <code>AMAZON.HelpIntent</code> accordingly before submission.</p> <p>Visit <a href="https://developer.amazon.com/docs/custom-skills/voice-interface-and-user-experience-testing-for-a-custom-skill.html#cert-providing-help">Providing Help</a> for more help implementing the <code>AMAZON.HelpIntent</code>.</p> <h2>4. Provide Access to the Certification Team</h2> <p>If your skill has account linking, be sure to add a valid test account’s login credentials to the <a href="https://developer.amazon.com/docs/devconsole/launch-your-skill.html#privacy-compliance">Testing Instructions</a> section of the <a href="https://developer.amazon.com/docs/devconsole/launch-your-skill.html">Distribution</a> tab. The certification team will use these credentials to review the complete ins and outs of your skill based on the certification requirements <a href="https://developer.amazon.com/docs/custom-skills/security-testing-for-an-alexa-skill.html#cert-account-linking">here</a> and <a href="https://developer.amazon.com/docs/custom-skills/functional-testing-for-a-custom-skill.html#cert-account-linking">here</a>. If the credentials provided have expired or are invalid, the team will not be able to access your skill and complete the certification process.</p> <p>A best practice for the customer experience is to mention account linking requirements in the skill description.</p> <h2>5. Set Up Discoverable Devices with Regional Endpoints</h2> <p>If your skill requires specific devices to function to streamline the certification process, the certification team will need to verify that the devices are successfully integrated. For this process, it is important to provide test account credentials that are connected to the devices, as mentioned above, and that the devices are online and discoverable.</p> <p>Geographic-specific endpoints are a must when developing a smart home skill to ensure fast discoverability and quicker skill responses. The skill’s language model must be associated with the correct lambda endpoint. The list of skill languages and the applicable endpoints may be found on the “<a href="https://developer.amazon.com/docs/smarthome/steps-to-build-a-smart-home-skill.html#configure-the-smart-home-service-endpoint">Configure the Smart Home Service Endpoint</a>” section of the <a href="https://developer.amazon.com/docs/smarthome/steps-to-build-a-smart-home-skill.html">Steps to Build a Smart Home Skill page</a>.</p> <p>By following these best practices, you’ll be able to avoid some common issues that other developers have encountered during skill certification and provide engaging voice experiences for customers. In the meantime, please continue to share your feedback on the certification process and skill building in general via our surveys and the Alexa developer forums.</p> <h2>Related Content</h2> <ul> <li><a href="https://developer.amazon.com/blogs/alexa/post/61d4a6ff-ed80-475a-b95e-d927989bc1de/tips-for-successful-alexa-skill-certification">Tips for a Successful Alexa Skill Certification</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/74d0ed59-ad4f-470a-abcf-d37c10a1dfd6/crafting-great-example-phrases-that-meet-certification-requirements">Tips for Creating Certifiable Example Phrases for Your Alexa Skill</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/c135d095-dc1c-4a22-bd96-f61cc7171a41/tips-for-a-successful-alexa-smart-home-skill-api-certification">Tips for a Successful Alexa Smart Home Skill Certification</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/cdbde294-8e41-4147-926f-56cdc2a69631/best-practices-for-the-welcome-experience-and-prompting-in-alexa-skills">Best Practices for the Welcome Experience and Prompting in Alexa Skills</a></li> </ul> <h2>Build Skills, Earn Developer Perks</h2> <p>Bring your big idea to life with Alexa and earn perks through our <a href="https://developer.amazon.com/alexa-skills-kit/alexa-developer-skill-promotion">milestone-based developer promotion</a>. US developers, publish your first Alexa skill and earn a custom Alexa developer t-shirt. Publish a skill for Alexa-enabled devices with screens and earn an Echo Spot. Publish a skill using the Gadgets Skill API and earn a 2-pack of Echo Buttons. If you're not in the US, check out our promotions in <a href="https://developer.amazon.com/alexa-skills-kit/alexa-developer-skill-promotion-canada">Canada</a>, the <a href="http://developer.amazon.com/en-gb/alexa-skills-kit/alexa-developer-skill-promotion" target="_blank">UK</a>, <a href="http://developer.amazon.com/de/alexa-skills-kit/alexa-developer-skill-promotion" target="_blank">Germany</a>, <a href="https://developer.amazon.com/ja/alexa-skills-kit/alexa-developer-skill-promotion">Japan</a>, <a href="https://developer.amazon.com/fr/alexa-skills-kit/alexa-developer-skills-promotion">France</a>, <a href="https://developer.amazon.com/alexa-skills-kit/anz/alexa-developer-skill-promotion">Australia</a>, and <a href="http://developer.amazon.com/alexa-skills-kit/alexa-developer-skill-promotion-india" target="_blank">India</a>. <a href="https://developer.amazon.com/alexa-skills-kit/alexa-developer-skill-promotion">Learn more</a> about our promotion and start building today.</p> /blogs/appstore/post/6c3a82b1-e177-43a0-b428-6015121ed5e8/new-look-for-amazon-developer-portal New Look for Amazon Developer Portal Serena McIntire 2018-10-18T19:23:25+00:00 2018-10-18T21:58:43+00:00 <p style="text-align:center"><img alt="lifestyle-laptop-NewUI_728x280.png" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AppstoreBlogs/Announcements/lifestyle-laptop-NewUI_728x280.png._CB481984723_.png?t=true" /></p> <p style="text-align:center">&nbsp;</p> <p><a href="https://developer.amazon.com/home.html">The Amazon Developer Portal console</a> features a new user interface (UI), including a new header and footer, consistent with the pre-login site, allowing easy access to the services you access most, as well as quick links to technical documentation, support, and search.</p> <p style="text-align:center"><img alt="lifestyle-laptop-NewUI_728x280.png" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AppstoreBlogs/Announcements/lifestyle-laptop-NewUI_728x280.png._CB481984723_.png?t=true" style="height:280px; width:729px" /></p> <p>Starting today, <a href="https://developer.amazon.com/home.html">the post-login console for the Amazon Developer Portal</a> has a fresh new look. The new user interface (UI) includes a new header and footer, consistent with the pre-login site, allowing easy access to the services you access most, as well as quick links to technical documentation, support, and search.</p> <h2>Amazon services featured in the top navigation</h2> <p>Amazon services, such as Login with Amazon and Dash Replenishment Services, are now available on the top level navigation. Developers can now access both Alexa Skills and Alexa Voice from a single Alexa tab.</p> <p style="text-align:center"><img alt="UI_Screenshot1.png" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AppstoreBlogs/Announcements/UI_Screenshot1.png._CB481985212_.png?t=true" style="height:45px; width:725px" /></p> <h2 style="text-align:justify">New Support Center and account options</h2> <p>Developers can now access Tech Docs, Forums, Support and Contact Us in the Support Center (displayed as “?” at the top of the screen). The options for toggling between accounts and logging out are now displayed under the user dropdown menu (which displays as your first and last initial).</p> <p style="text-align:center"><img alt="UI_Screenshot2.png" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AppstoreBlogs/Announcements/UI_Screenshot2.png._CB481985215_.png?t=true" style="height:147px; width:725px" /></p> <h2 style="text-align:justify">New search functionality</h2> <p style="text-align:justify">You can also now quickly access search without having to leave the post-login console, allowing for easy discovery of app and game development topics within developer console.</p> <h2 style="text-align:center"><img alt="UI_Screenshot3.png" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AppstoreBlogs/Announcements/UI_Screenshot3.png._CB481985209_.png?t=true" /></h2> <h2 style="text-align:justify">Modern footer with language switcher</h2> <p style="text-align:justify">The new slim footer within the developer console is modern and consistent with other areas of the website and now includes language switching options.</p> <p style="text-align:center"><img alt="UI_Screenshot4.png" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AppstoreBlogs/Announcements/UI_Screenshot4.png._CB481985208_.png?t=true" /></p> <h2 style="text-align:justify">Amazon Developer Portal</h2> <p style="text-align:justify">Amazon Developer Portal hosts services and technologies that make it easy to build for and monetize on Amazon devices. Build natural voice experiences that offer customers a more intuitive way to interact with technology with <a href="https://developer.amazon.com/alexa">Alexa</a>. Develop Android apps and games for <a href="https://developer.amazon.com/fire-tv">Amazon Fire TV</a>, <a href="https://developer.amazon.com/fire-tablet">Fire tablet</a>, and mobile operating systems with <a href="https://developer.amazon.com/apps-and-games">Amazon Appstore</a>. Engage your players with cross-platform competitions with <a href="https://developer.amazon.com/gameon">Amazon GameOn</a>. Construct Amazon reordering experiences into your devices with <a href="https://developer.amazon.com/dash-services">Amazon Dash Services</a>.</p> /blogs/appstore/post/9d2094ed-53cb-4a3a-a5cf-c7f34bca6cd3/coding-imprecise-controls-to-make-them-feel-more-precise Coding Imprecise Controls to Make Them Feel More Precise Emily Esposito Fulkerson 2018-10-18T18:20:22+00:00 2018-10-18T18:20:22+00:00 <p><img alt="image8-imprecisecontrols-alejandro.gif" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AppstoreBlogs/AlejandroHitti/image8-imprecisecontrols-alejandro.gif._CB482012535_.gif?t=true" style="display:block; height:394px; margin-left:auto; margin-right:auto; width:700px" /><br /> I will talk about three examples in this article related to that genre, namely: Coyote Time, Jump Buffering, and Sticky Walls. Let’s get started.</p> <p><img alt="image8-imprecisecontrols-alejandro.gif" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AppstoreBlogs/AlejandroHitti/image8-imprecisecontrols-alejandro.gif._CB482012535_.gif?t=true" style="display:block; margin-left:auto; margin-right:auto" /><br /> When discussing games, people often refer to controls that feel responsive as “tight.&quot;&nbsp;But, what makes controls feel good? The obvious answer is that controls should always do what the player is thinking of doing. They need to be predictable to the user depending on their inputs. The issue is that players are human, and as such, we can make slight timing mistakes that produce an unexpected result. From a programming point of view the action displayed on screen made sense (since code is consistent), but in the player’s mind, the game “cheated” them. This is a terrible feeling to have as a player and as designers, we must find ways to mitigate the instances where controls don’t react the way they were intended to.</p> <p>This is where adding some leeway to your controls in the form of timers (or extra frames to perform actions) helps your controls feel tighter. These concepts can be used in many situations and in any game genre&nbsp;to perform actions such as jumping, attacking, interacting with menus, or even queuing actions. Thanks&nbsp;to my experience creating platforming games, I will talk about three examples in this article related to that genre, namely: Coyote time, jump buffering, and sticky walls. Let’s get started.</p> <h2>Coyote time</h2> <p>Players like to maximize their jumps in platforming games, leading them to wait until the very last moment (usually at the edge of the ground) to jump. When done right, the player will perform a jump that will cover a nice distance. However, when done wrong, their character will simply fall without jumping, usually killing them with strategically placed spikes below (because every platformer NEEDS spikes). To fix this issue, we can implement something called coyote time, also referred to as “ledge tolerance.&quot;&nbsp;This feature adds&nbsp;the ability for the player to jump even after their character is no longer touching the ground, for a few extra frames.</p> <p>Here’s an example of how the demo looks like when coyote time is zero (meaning it’s off).<br /> &nbsp;</p> <p><img alt="image1-imprecisecontrols-alejandro.gif" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AppstoreBlogs/AlejandroHitti/image1-imprecisecontrols-alejandro.gif._CB482009744_.gif?t=true" style="display:block; margin-left:auto; margin-right:auto" /></p> <p><br /> The yellow dot represent the moment when I press the <strong>jump</strong> button. As you can see, unless the player is touching the platform, the jump won’t happen, but in a couple of those cases it was so close&nbsp;that it looks wrong, and the player would be frustrated by that. Let’s implement a timer to fix it.</p> <p><em>Disclaimer: All the code shown in this article will be as engine/language agnostic as possible. As such, it may look a bit like pseudo-code, but the implementation on your engine/language of choice should be pretty trivial.</em></p> <pre> <code>// Character’s Create Event var coyoteTimer = 0; ... // Character’s Update Event if (cBelow) coyoteTimer = 0; var numCoyoteFrames = 4; if (kJump &amp;&amp; (coyoteTimer &lt; numCoyoteFrames)) { Jump(); coyoteTimer = numCoyoteFrames; } ++coyoteTimer;</code></pre> <p>First, we create a variable in our character’s create event called <strong>coyoteTimer</strong> and we initialize it to zero. Then in our update event, we check if the character is on the floor (represented by the <strong>cBelow</strong> variable, but should be replaced by however you are checking for ground collisions), and if it is, then we reset our timer back to zero. In the next section, we create a variable with the number of extra frames that your character can be off the ground and still be able to jump. We then check if the jump key was pressed (<strong>kJump</strong>) and if the timer is less than the number of extra frames. If both of these conditions apply, we execute our jump logic and then we set the timer to be the number of extra frames so that we can’t jump twice. Last, we increase our timer by one every frame. That is all!</p> <p>When we test the game now, this is what it looks like:<br /> &nbsp;</p> <div> &nbsp; </div> <div> <img alt="image2-imprecisecontrols-alejandro.gif" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AppstoreBlogs/AlejandroHitti/image2-imprecisecontrols-alejandro.gif._CB482009747_.gif?t=true" style="display:block; margin-left:auto; margin-right:auto" /> </div> <div> &nbsp; </div> <div> <br /> A more exaggerated example is this one, where I used 10 frames instead of four: <br /> &nbsp; </div> <div> &nbsp; </div> <div> <img alt="image3imprecisecontrols-alejandro.gif" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AppstoreBlogs/AlejandroHitti/image3imprecisecontrols-alejandro.gif._CB482012525_.gif?t=true" style="display:block; margin-left:auto; margin-right:auto" /> </div> <div> &nbsp; </div> <div> <br /> To find the perfect number of frames, you will need to test it on your own game, as it’s very specific to each case depending on your physics and framerate (30 vs 60 FPS). If your game is running with unlocked FPS, then using time instead of frames is the way to go. You’d need to modify the code I showed above, but the basic idea is the same. This is what it would look like: </div> <pre> <code>if (cBelow) coyoteTimer = current_time; var maxCoyoteTime = 200; // In milliseconds if (kJump &amp;&amp; ((current_time - coyoteTimer) &lt; maxCoyoteTime)) { Jump(); coyoteTimer = 0; }</code></pre> <p>The code is similar to the previous one, but this time, we are resetting our timer using the current game time, and then we are checking for the jump key as well as the difference between the current time and the time at which we left the ground. If that difference is lower than our maximum coyote air time, then we execute our jump code and set the timer back to zero so as not to jump twice. In this example, we don’t need to increase the timer since it’s being handled automatically by the game time.</p> <h2>Jump buffering</h2> <p>The next feature we’ll cover is called jump buffering (also referred to as input buffering). The idea is that if the player performs an action a few frames before it’s allowed, by some other condition (such as being on the ground to be able to jump), the action will still happen. To achieve that effect, we start a timer when the button is pressed and if the number of frames between the moment in which the input was sent and the moment the condition is reached (touching the ground) is less that the number of frames defined by our tolerance, the action still happens (we jump). The code looks somewhat similar to the previous section:</p> <pre> <code>// Character’s Create Event var jumpBufferTimer = max_int; // Or any number higher than your tolerance variable ... // Character’s Update Event var numJumpBufferFrames = 4; if (cBelow &amp;&amp; (jumpBufferTimer &lt; numJumpBufferFrames)) { Jump(); jumpBufferTimer = numJumpBufferFrames; } ++jumpBufferTimer; if (kJump) jumpBufferTimer = 0;</code></pre> <p>We begin by creating our timer variable <strong>jumpBufferTimer</strong> in our character’s create event (or you set it as a member variable in your object) and we initialize it to a high number (max_int in my case). It needs to be higher than the tolerance frames variable that we will create later to prevent the character from jumping once when a room loads. Next, we go to our update section and create our tolerance variable called <strong>numJumpBufferFrames</strong> and I’m setting it to four initially as a test. The first conditional checks if the character is colliding with the ground using the <strong>cBelow </strong>variable and it checks if the timer is less than our tolerance. If these conditions are met, we will perform our jump code and then we will set our timer to be <strong>numJumpBufferFrames</strong> to prevent jumping twice. Last, we increase our timer by one each frame and we check if the jump button <strong>kJump</strong> is pressed, resetting the timer to zero if it is. With these simple lines, the jump buffer is already working, and should look like this.<br /> &nbsp;</p> <p><img alt="image4-imprecisecontrols-alejandro.gif" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AppstoreBlogs/AlejandroHitti/image4-imprecisecontrols-alejandro.gif._CB482012524_.gif?t=true" style="display:block; margin-left:auto; margin-right:auto" /></p> <p><br /> If you look carefully, you’ll notice that even when I press the jump button slightly above the ground (indicated by the yellow dots) the character still jumps as soon as it lands on the ground. An example with a larger tolerance (say, eight frames) can make this more obvious to spot:<br /> &nbsp;</p> <p><img alt="image5-imprecisecontrols-alejandro.gif" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AppstoreBlogs/AlejandroHitti/image5-imprecisecontrols-alejandro.gif._CB482012526_.gif?t=true" style="display:block; margin-left:auto; margin-right:auto" /></p> <p><br /> Just like with coyote time, finding the perfect tolerance for this feature will require you to implement it in your game and test many values out until one feels right to you. Also, just like before, we can modify the code a bit to make it work with time instead of frames, using the following:</p> <pre> <code>// Character’s Create Event var jumpBufferTimer = -max_int; // Or any really large negative number ... // Character’s Update Event var maxJumpBufferTime = 200; // In milliseconds if (cBelow &amp;&amp; ((current_time - jumpBufferTimer) &lt; maxJumpBufferTime)) { Jump(); jumpBufferTimer = 0; } if (kJump) jumpBufferTimer = current_time;</code></pre> <p>We first need to set the initial timer value to a negative number higher than your tolerance time (I’m using negative max int to be safe). In the update, we change the number of frames to <strong>maxJumpBufferTime</strong> and we set it to 200 milliseconds. Later, we check whether the character is on the ground and if the difference in time between the current time and the timer is less than the tolerance. If true, we make the character jump and we set the timer to zero to prevent jumping multiple times. We skip increasing the timer by one, since that’s done automatically as time goes on, and we end it by checking the jump key and setting the timer to the current time if it was pressed this frame.</p> <p>To combine both of these features, you can place them one under another, but a cleaner way of doing it to avoid duplicate checks is:</p> <pre> <code>var numJumpBufferFrames = 4; var numCoyoteFrames = 4; if (cBelow)) { coyoteTimer = 0; if (!hasJumped &amp;&amp; jumpBufferTimer &lt; numJumpBufferFrames) { Jump(); jumpBufferTimer = numJumpBufferFrames; hasJumped = true; } } ++jumpBufferTimer; if (kJump) { jumpBufferTimer = 0; if (!hasJumped &amp;&amp; coyoteTimer &lt; numCoyoteFrames) { Jump(); coyoteTimer = numCoyoteFrames; hasJumped = true; } } ++coyoteTimer; if (kJumpReleased) { VariableJumpLogic(); hasJumped = false; }</code></pre> <p>Notice that I also added a <strong>hasJumped</strong> flag. This is to prevent a bug where the player would double jump when hitting the corner of a block going upwards. It should be easy to extrapolate how to join both features using the millisecond timers by looking at the code above and their separate implementations. This example shows both features implemented at the same time (with slightly bloated frame tolerances to show it better):<br /> &nbsp;</p> <p><img alt="image6-imprecisecontrols-alejandro.gif" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AppstoreBlogs/AlejandroHitti/image6-imprecisecontrols-alejandro.gif._CB482012539_.gif?t=true" style="display:block; margin-left:auto; margin-right:auto" /></p> <h2>Sticky walls</h2> <p>The last feature I want to talk about I refer to as <strong>Sticky Walls</strong>. The concept is to have the character stick to the wall for a few frames when the player points in the opposite direction of the wall. We do this to prevent the character from falling down if the player gives a directional input before pressing the jump button off a wall. I will try to explain the code below as best as I can, but this section will look very differently in every game, so adjustments are necessary to make it work.</p> <pre> <code>// Character’s Create Event stickyWallTimer = 0; ... // Character’s Update Event var stickyWallFrames = 4; --stickyWallTimer; if (!onWall || cBelow) stickyWallTimer = 0; else if ((((kRightPressed &amp;&amp; cLeft) || (kLeftPressed &amp;&amp; cRight))) stickyWallTimer = stickyWallFrames; // Some gravity code ApplyGravity(); if (stickyWallTimer &lt;= 0) CharacterMovement(); if (onWall) Walljump();</code></pre> <p>Just like in the previous cases, we will create a variable in the create event of the character: called <strong>stickyWallTimer</strong>, initializing it to zero. Next, in the update event we can define our tolerance value <strong>stickyWallFrames</strong> which I’ve set to four. We will be decreasing this value every frame by one to act as our timer. Here comes the fun part. We reset our timer if we are not on a wall or if we are on the ground. However, if one of those conditions is false, we check if we are giving a directional input that is opposite to the side of the wall we are touching (<strong>kRightPressed</strong>/<strong>kLeftPressed</strong> being the directional inputs and <strong>cLeft</strong>/<strong>cRight</strong> being the side we are colliding with). For these inputs, make sure to be checking for the first frame it was triggered, not if the player is holding it. This is where it can differ from game to game, but I apply my gravity code to the character next. Then, I wrap my movement code in a conditional checking if the timer is less than or equal to zero. This is what will make the character stay stuck to the wall for a few frames until the timer runs out, at which point movement will resume as normal. Finally, I write my wall jumping code if the player is colliding with a wall.</p> <p>The outcome should look like this (notice the player turns green when the player is sticking to the wall).<br /> &nbsp;</p> <p><img alt="image7-imprecisecontrols-alejandro.gif" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AppstoreBlogs/AlejandroHitti/image7-imprecisecontrols-alejandro.gif._CB482012538_.gif?t=true" style="display:block; margin-left:auto; margin-right:auto" /></p> <p><br /> And again, an example with an exaggerated tolerance, such as 14 frames:<br /> &nbsp;</p> <p><img alt="image8-imprecisecontrols-alejandro.gif" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AppstoreBlogs/AlejandroHitti/image8-imprecisecontrols-alejandro.gif._CB482012535_.gif?t=true" style="display:block; margin-left:auto; margin-right:auto" /></p> <p><br /> If you want to implement the version using the time, this is what you need to change:</p> <pre> <code>// Character’s Update Event var maxStickyWallTime = 200; // In milliseconds if (!onWall || cBelow) stickyWallTimer = 0; else if ((((kRightPressed &amp;&amp; cLeft) || (kLeftPressed &amp;&amp; cRight))) stickyWallTimer = current_time; // Some gravity code ApplyGravity(); if ((current_time - stickyWallTimer) &gt; maxStickyWallTime) CharacterMovement(); if (onWall) Walljump();</code></pre> <h2>Demo download</h2> <p>You can download the demo I used to create the GIFs in this article. The demo allows you to customize the tolerances so you can play around with it and test how it affects the feeling of the character.</p> <p><a href="https://www.dropbox.com/s/omwtgj324dy1f3p/TighterInput.zip?dl=0" target="_blank">DOWNLOAD</a></p> <p><strong>Controls</strong></p> <ul> <li>Left/right arrows or A/D - Move left/right</li> <li>Spacebar - Jump</li> <li>1/2 - Increase/cecrease the number of coyote time frames</li> <li>3/4 - Increase/cecrease the number of jump buffer frames</li> </ul> <h2>Reference Links</h2> <ul> <li><a href="https://www.caseportman.com/single-post/2018/08/16/Input-Buffering-2D-Platforming" target="_blank">Input Buffering (2D Platforming)</a> - Case Portman</li> <li><a href="http://kpulv.com/123/Platforming_Ledge_Forgiveness/" target="_blank">Platforming Ledge Forgiveness</a> - Kyle Pulver</li> <li><a href="http://kpulv.com/106/Jump_Input_Buffering/" target="_blank">Jump Input Buffering</a> - Kyle Pulver</li> <li><a href="https://www.youtube.com/watch?v=fUPyU4qkCOo" target="_blank">Complete Platformer Tutorial (Part 18: Jump Buffer)</a> - Shaun Spalding</li> </ul> <h2>Conclusion</h2> <p>I hope you take these ideas and implement them in your project to make your players feel more in control of their characters and not cheated by the game. Remember that the application of these ideas is endless and can include other stuff, such as menu navigation. If you have any suggestions or questions, you can contact me on Twitter (<a href="http://twitter.com/AleHitti" target="_blank">@AleHitti</a>). Thank you for reading. Cheers!</p> <p>&nbsp;</p> <div> &nbsp; </div> <div> &nbsp; </div> <div> <img alt="AlejandroBio.jpg" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AppstoreBlogs/default/AlejandroBio._CB512098171_.jpg?t=true" style="display:block; height:145px; margin-left:auto; margin-right:auto; width:583px" /> </div> <div> <em>Alejandro Hitti is a videogame Programmer and Designer from Venezuela. Although his background is in C++ and working using custom-made game engines, his two commercial games, INK and HackyZack, were made using GameMaker Studio 1.4. With the release of GameMaker Studio 2, that became his engine of choice. The novelty of GMS2, paired with his knowledge of the previous version, ignited his interest to create tutorials that focus on this new engine.</em> </div> /blogs/alexa/post/d8363a66-99b0-4c4e-bae2-963b8b2c3023/which-type-of-in-skill-product-is-right-for-your-alexa-skill Which Type of In-Skill Product Is Right for Your Alexa Skill? Jennifer King 2018-10-18T14:00:00+00:00 2018-10-18T14:00:00+00:00 <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/ISP_Announce_Blog_Header._CB496590482_.png" style="height:240px; width:954px" /></p> <p>With a variety of in-skill products to offer, it’s important to think about which one can help you best enhance your skill through premium content.</p> <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/ISP_Announce_Blog_Header._CB496590482_.png" style="height:240px; width:954px" /></p> <p>With the recent release of <a href="https://developer.amazon.com/blogs/alexa/post/aab44ff4-c19a-4862-8014-35c0e8846743/introducing-consumables-a-new-way-to-make-money-with-your-alexa-skill">consumables</a>, you now have three ways to deliver premium experiences to customers with <a href="https://developer.amazon.com/alexa-skills-kit/make-money/in-skill-purchasing">in-skill purchasing (ISP)</a>. In addition to selling consumables that customers can buy, use, and buy again, you can sell subscriptions and one-time purchases.</p> <p>With a variety of in-skill products to offer, it’s important to think about which one can help you best enhance your skill through premium content. Before you start adding in-skill products, consider which product type aligns with your skill’s experience and can make your voice experience more delightful and engaging.</p> <p>To help you out, here I cover the three types of in-skill products and share ideas for using each of them in your own skills.</p> <h2>Consumables</h2> <p><strong>Consumables</strong> are in-skill products that can be depleted and re-purchased. These could be hints that a customer might need during a game, or coins that are your in-game currency. It might also be a product that has a time-related expiration, like access to a Halloween feature that is only available in October.</p> <p>Generally, you can implement consumables quickly because they require less “new” content than subscriptions or one-time purchases. Consumables can be as simple as a single hint in an already existing experience. If your skill doesn’t require you to create a lot fresh content on a regular basis to deliver a premium experience, then consumables could be a great route for you.</p> <p>Here are a couple of great examples of consumables in skills you can use today:</p> <p><a href="https://www.amazon.com/Volley-Inc-Yes-Sire/dp/B071ZR5HKR/ref=sr_1_1?s=digital-skills&amp;ie=UTF8&amp;qid=1539279847&amp;sr=1-1&amp;keywords=yes+sire" target="_blank">Yes Sire</a> is a game where you are making decisions about your kingdom. Your score goes up or down, depending on which decisions you make. The developers use consumables to help customers stay in the game, even when their entire kingdom has turned against them. When your score reaches 0, you can buy a consumable product that gives you back 500 points.</p> <p><a href="https://www.amazon.com/Innomore-LLC-hypno-therapist/dp/B01LYS8SYO/ref=sr_1_1?s=digital-skills&amp;ie=UTF8&amp;qid=1539279644" target="_blank">Hypno Therapist</a> offers short hypnotherapy sessions. In addition to a subscription that gives you access to their entire library, customers can also buy a pack of ten credits, which they can use to unlock the sessions that most interest them. Once a customer has used up their credits, they can buy ten more.</p> <h2>Subscriptions</h2> <p><strong>Subscriptions</strong> are auto-renewing, time-based in-skill products. You can use subscriptions in your skills for things like monthly access to new stories, or access to all of the categories of a trivia game.</p> <p>Double Jeopardy in the <a href="https://www.amazon.com/Sony-Pictures-Television-Jeopardy/dp/B019G0M2WS/ref=sr_1_1?s=digital-skills&amp;ie=UTF8&amp;qid=1539280605&amp;sr=1-1&amp;keywords=jeopardy" target="_blank">Jeopardy</a> skill is a great example of a subscription. With your subscription, you can get six additional Double Jeopardy answers to quiz yourself with in Jeopardy each weekday. This is on top of the six free Single Jeopardy questions that all customers have access to.</p> <p><a href="https://www.amazon.com/Philosophical-Creations-Big-Sky/dp/B01GU4MBM4/ref=sr_1_sc_1?s=digital-skills&amp;ie=UTF8&amp;qid=1539280527&amp;sr=1-1-spell&amp;keywords=big+skyt" target="_blank">Big Sky</a> provides “better weather for Alexa” and delivers personalized weather information with just the amount of detail the customer asks for. With the subscription, customers get additional personalization features. For example, customers can set up additional addresses, each with its own nickname, such as “Mom’s House” or “The Beach.” The subscription also unlocks customized weather alerts, among other features.</p> <h2>One-Time Purchases</h2> <p><strong>One-time purchases, or entitlements,</strong> are products that are purchased once and then are always available. This might be access to a specific interactive story, or a powerful tool in an adventure game. Because these purchases are permanent, they’re a natural fit for specific pieces of content that a customer will return to time and time again.</p> <p>In <a href="https://www.amazon.com/Stoked-Skills-LLC-Escape-Room/dp/B075J914W2/ref=sr_1_1?s=digital-skills&amp;ie=UTF8&amp;qid=1539280802&amp;sr=1-1&amp;keywords=escape+the+room&amp;dpID=61XeI1DX8lL&amp;preST=_SY300_QL70_&amp;dpSrc=srch" target="_blank">Escape the Room</a>, the developer took hints to a different level by offering them as a one-time purchase. Once you’ve unlocked the “game master,” you can get hints at any part of the adventure just by asking for a hint.</p> <p>The party game <a href="https://www.amazon.com/The-Ellen-DeGeneres-Show-Heads/dp/B077NHJ7QM/ref=sr_1_1?s=digital-skills&amp;ie=UTF8&amp;qid=1539281060&amp;sr=1-1&amp;keywords=heads+up" target="_blank">Heads Up</a> offers a number of different categories of decks you can use while you play the game. Each deck can be unlocked with a one-time purchase, which makes it easy to continue playing the game after you’ve played through their extensive free experience.</p> <h2>Tips for Building Great Experiences with In-Skill Purchasing</h2> <p>For each skill and in-skill product type, it’s important to remember a few key best practices:</p> <ul> <li><strong>Design your inskill product with the customer in mind.</strong> Customers won’t be able to justify an ISP offering if the free skill experience is not enjoyable or helpful. Remember to continually improve the skill experience as a commitment to your customers that you value their engagement.</li> <li><strong>Know your audience.</strong> Pick the right format of ISP for the types of customers you have. Ensure you understand user behavior and activity in your base skill using tools like <a href="https://developer.amazon.com/blogs/alexa/post/f2ef2a55-b465-4580-a9fc-2c0a9be49f00/gain-interaction-insights-using-new-analytics-in-the-ask-developer-console">Interactive Path Analysis</a> and <a href="https://developer.amazon.com/docs/custom-skills/review-intent-history-devconsole.html">Intent History</a>. This data will help you identify key dropoff points or utterances that users are reaching. Evaluating your skill’s reviews is also a great place for inspiration on top asks or preferences in using your skill.</li> <li><strong>Make it easy for customers to make a purchase. </strong>Offer a combination of product offers and buying opportunities to entice your user to give your great new content a try.</li> <li><strong>Be mindful of when you present your ISP to increase conversion and customer satisfaction.</strong> If a customer has declined your product after numerous proposals, consider shortening the upsell messaging for that customer, adjusting frequency, or removing it altogether. Reaching users in the right context is key, whether it be after they’ve asked for help, or once they’ve replayed your daily content numerous times.</li> <li><strong>Consider giving free access to an in-skill product before charging for it.</strong> Give customers a chance to understand the value of your in-skill product before having to make the purchase. Free trials are common for subscriptions, but you can also offer them for one-time purchases and consumables. For example, you can offer customers a free hint early in a skill experience.</li> </ul> <h2>Related Content</h2> <ul> <li><a href="https://developer.amazon.com/docs/in-skill-purchase/isp-overview.html">In-Skill Purchasing Technical Documentation</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/53c2319a-4cc9-4067-8274-1472a0463d6e/understanding-the-in-skill-purchasing-experience">Understanding the In-Skill Purchasing Experience</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/80032f92-a33d-4673-9ee3-95eb20a3af09/3-tools-to-add-in-skill-purchasing-to-alexa-skills">3 Tools to Add In-Skill Purchasing to Alexa Skills</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/a3f5a97c-b5c8-4435-9900-7976a27815fa/tips-for-adding-consumable-in-skill-products-to-your-alexa-skills">Tips for Adding Consumable In-Skill Products to Your Alexa Skills</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/7da88ba2-8091-460b-a034-a2d3257c0106/with-in-skill-purchasing-gal-shenar-sets-his-growing-voice-business-up-for-long-term-success">With In-Skill Purchasing, Gal Shenar Sets His Growing Voice Business Up for Long-Term Success</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/156b211e-355f-4bc8-b1dc-fde19d9acaad/in-skill-purchasing-takes-volley-s-thriving-voice-business-to-the-next-level">In-Skill Purchasing Takes Volley’s Thriving Voice Business to the Next Level</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/a76e7b27-371d-493a-854e-96dd12f38fbc/10-ways-to-test-your-in-skill-products-for-a-great-customer-experience">How to Test Your In-Skill Products for a Great Customer Experience: 10 Test Cases</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/12279973-0f16-4fef-9286-649552a06767/metadata-deep-dive-for-in-skill-purchasing">Metadata Deep Dive for In-Skill Purchasing</a></li> </ul> <h2>Make Money by Creating Engaging Skills Customers Love</h2> <p>You can make money for eligible skills that drive some of the highest customer engagement with <a href="https://developer.amazon.com/alexa-skills-kit/rewards">Alexa Developer Rewards</a>. You can also make money with Alexa skills using <a href="https://developer.amazon.com/alexa-skills-kit/make-money/in-skill-purchasing">in-skill purchasing</a> or <a href="https://developer.amazon.com/alexa-skills-kit/make-money/amazon-pay">Amazon Pay for Alexa Skills</a>. <a href="https://build.amazonalexadev.com/alexa-skill-monetization-guide-ww.html?&amp;sc_category=Owned&amp;sc_channel=WB&amp;sc_campaign=wb_acquisition&amp;sc_publisher=ASK&amp;sc_content=Content&amp;sc_detail=vod-webinar&amp;sc_funnel=Convert&amp;sc_country=WW&amp;sc_medium=Owned_WB_wb_acquisition_ASK_Content_vod-webinar_Convert_WW_visitors_makemoney-page_CTA-graphic&amp;sc_segment=visitors&amp;sc_place=makemoney-page&amp;sc_trackingcode=CTA-graphic" target="_blank">Download our introductory guide</a> to learn more.</p> /blogs/alexa/post/9cdf85e9-486e-4a03-9fb1-a8b7ee34b52a/ask-sdk-v1-to-v2-dynamodb ASK SDK V1で作られたDynamoDBテーブルをそのままV2で使うためのコツ Motoko Onitsuka 2018-10-18T05:40:00+00:00 2018-10-18T05:48:06+00:00 <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/AlexaSkillsKit/sdk_blog.png" style="height:240px; width:954px" /></p> <p>今年5月Alexa Skills Kit (ASK) SDK for Node.jsのバージョン2(以下:V2)がリリースされました。そこでV1からV2へ移行を考える方が多いと思います。先週行われたAlexa Dev Days Tokyoで沢山のAlexaスキルデベロッパーとお会いする中で、これに関連した質問をいただきましたので、ご紹介します。</p> <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/AlexaSkillsKit/sdk_blog.png" /></p> <p>今年5月Alexa Skills Kit (ASK) SDK for Node.jsのバージョン2(以下:V2)がリリースされました。そこでV1からV2へ移行を考える方が多いと思います。先週行われたAlexa Dev Days Tokyoで沢山のAlexaスキルデベロッパーとお会いする中で、これに関連した質問をいただきましたので、ご紹介します。</p> <p>V1を使って、DynamoDBテーブルを自動生成した場合、作られたテーブルのパーティーションキーはuserIdでアトリビュートの名はmapAttrですが、V2ではそれぞれidとattributesになります。そのため、V1で作ったDyanmoDBテーブルはそのままではV2では使えないという問題がありました。そこで、DynamoDBのテーブルを再作成せずに、V2でそのまま使うことはできますか?という質問をいただきました。答えは「はい!できますよ!」です。</p> <p>V2のDynamoDBのキーとアトリビュート名のデフォルト値は変わりましたが、DynamoDBPersistenceAdapterを使って、カスタムでそれぞれのDynamoDBの値を自分で定義することができます。</p> <p>以下のテーブルでV1とV2の相違点が分かります。</p> <table cellspacing="0" style="height:128px; width:377px"> <tbody> <tr> <td>&nbsp;</td> <td>パーティーションキー</td> <td>アトリビュート名</td> </tr> <tr> <td>V1&nbsp;&nbsp;&nbsp;</td> <td>userId</td> <td>mapAttr</td> </tr> <tr> <td>V2</td> <td>Id</td> <td>Attributes</td> </tr> </tbody> </table> <p>以下のステップでV1で作ったDynamoDBテーブルがV2で使えます。</p> <h2>ステップ1: DynamoDBPersistenceAdapterのインポート</h2> <p>まずは、<strong>ask-sdk-dynamodb-persistence-adapter</strong>というパッケージが必要です。以下のようにインポートしたら、<strong>DynamoDBPersistenceAdapter</strong>が使えるようになります。</p> <pre> <code>const { DynamoDbPersistenceAdapter } = require('ask-sdk-dynamodb-persistence-adapter'); </code></pre> <h2>ステップ2: DynamoDbPersistenceAdapterの定義</h2> <p>次に、インポートしたパッケージを使って、<strong>DynamoDBPersistenceAdapter</strong>を定義します。コンストラクタでいくつかのカスタム値を渡して設定します。</p> <pre> <code>const dynamoDbPersistenceAdapter = new DynamoDbPersistenceAdapter({ tableName : 'persistence-demo', partitionKeyName: 'userId', attributesName: 'mapAttr' }) </code></pre> <p><strong>tableName</strong>に接続したいDynamoDBテーブルを指定します。上の例ではpersistence-demoというテーブルを指定しています。<strong>partitionKeyName</strong>でパーティーションキーを定義します。V1で作られたDynamoDBテーブルにアクセスするので、パーティションキーはuserIdにします。最後に<strong>attributesName</strong>をmapAttrを指定します。</p> <p>dynamoDbPersistenceAdapterを定義してから、最後のステップに進んでも良いでしょう。</p> <h2>ステップ3: SkillBuilderにDynamoDbPersistenceAdapterを追加</h2> <p>最後に、ここまでで定義したDynamoDbPersistenceAdapterをSkillBuilderに<strong>withPersistenceAdapter</strong>で追加します。</p> <pre> <code class="language-javascript">const skillBuilder = Alexa.SkillBuilders.custom(); exports.handler = skillBuilder .addRequestHandlers( LaunchRequestHandler, HelpIntentHandler, CancelAndStopIntentHandler, SessionEndedRequestHandler ) .withPersistenceAdapter(dynamoDbPersistenceAdapter) .addErrorHandlers(ErrorHandler) .lambda(); </code></pre> <p><strong>Standard</strong>と<strong>Custom</strong>という2種類の<strong>SkillBuilders</strong>がありますが、<strong>Standard</strong>ではV2のデフォルト設定が固定されています。一方、<strong>Custom</strong>の<strong>SkillBuilder</strong>で自分でDynamoDBの設定をカスタマイズすることができます。</p> <p>したがって<strong>withPersistenceAdapter</strong>という関数を使う場合は<strong>Custom**</strong>を選択する必要があります。<strong>以上で定義したdynamoDbPersistenceAdapterをwithPersistenceAdapterに渡したら、</strong>PersistenceAdapter**をいつも通りに使えば、自動的にV2がV1で作られたDynamoDBテーブルにアクセスできるようになります。</p> <h2>PersistentAttributesの使い方</h2> <p>以上の手順に従って<strong>DynamoDbPersistenceAdapter</strong>を使えば、いつも通りに<strong>AttributesManager</strong>が使えます。つまり、<strong>AttributesManager</strong>で<strong>PersitentAttributes</strong>にアクセスするコードを全く変更せずに、カスタムDynamoDBの設置を使うことができます。とても便利ですね。</p> <pre> <code>// attributesManagerを定義し、そしてpersistentAttributesを読み込む。 const attributesManager = handlerInput.attributesManager; const persistentAttributes = attributesManager.getPersistentAttributes(); // DynamoDBに保存する値を設定する。 persistentAttributes.foo = 'bar'; // アトリビュートを設定する。 attributesManager.setPersistentAttributes(persistentAttributes); // DynamoDBに保存する。 attributesManager.savePersistentAttributes(); </code></pre> <h2>まとめ</h2> <p>V2はかなりフレキシブルです。デフォルトで設定されている値が沢山ありますが、いくつかの方法で設定をカスタマイズすることができます。V1で作られたDynamoDBテーブルをそのままでV2でも使うことができますが、それだけではなく、異なるプロジェクトから既存のDynamoDBテーブルにも簡単にアクセスすることができます。これを機会に是非V1からV2への移行を行なって下さい。V1で作成されたDynamoDBテーブルをそのまま引き継いで使用し続けることができます。</p> <hr /> <p>10月16日に<a href="https://developer.amazon.com/ja/alexa-skills-kit/training/building-a-skill">Alexaスキル開発トレーニングシリーズ</a>もV2にアップデートしました。是非ご覧ください。これからのスキル開発はV2で進めましょう!</p> <p>&nbsp;</p> /blogs/alexa/post/d0b80741-ae85-4b75-b8ba-9c9c009c35c3/a-primer-on-communication-creating-conversational-transactions-when-designing-for-voice A Primer on Communication: Creating Conversational Transactions When Designing for Voice Jennifer King 2018-10-17T17:00:00+00:00 2018-10-17T17:00:00+00:00 <p>Before you dive into creating conversational skills, you'll need to spend some time understanding conversation and the elements of communication.</p> <p>Any time we speak to another person, we're participating in a series of conversational transactions. One party offers or inquires, and the other accepts or responds.</p> <p>Almost every piece of technology we use today is built upon this simple level of transaction. When interacting with a machine, our focus is often on completing the task at hand. If I click a link, the browser will load a webpage. If I move the joystick left, my video game character will move in that direction. There's nothing left open for interpretation because the actions I've taken are perfectly focused on doing something specific. I wouldn't have it any other way!</p> <p>It's more complicated with conversation. The depth and complexity of conversational transactions between people can vary greatly. In the simplest ones, we ask each other for straight-forward information: facts or definitions. In more complicated cases, we draw from our experiences and surroundings, collecting and dispensing information flexibly and adapting our messages as we share ideas with each other.</p> <p>In these cases, because we're interacting conversationally, we're usually pretty tolerant of being misunderstood. The transaction is flexible. We're able to quickly elaborate and clarify rather than needing to remember and repeat what we said initially word for word. Likewise, if we receive more information than we asked for, we can just disregard that additional detail without confusion.</p> <p>For fun, <a href="https://youtu.be/Gr59BrDWnIE" target="_blank">here’s a video</a> of two Alexa evangelists, <a href="https://twitter.com/cwillycs?lang=en" target="_blank">Cami Williams</a> and <a href="https://twitter.com/theonlyakersh?lang=en" target="_blank">Akersh Srivastava</a>, demonstrating when one conversational partner fails to parse information provided all at once, creating confusion. In <a href="https://youtu.be/Gr59BrDWnIE" target="_blank">this clip</a>, Cami experienced how jarring it can be to speak with a partner who isn’t handling the typical, but complex, acrobatics of human conversation. Complex acrobatics are no exaggeration, either. It turns out that when you and I speak with each other we're also simultaneously doing all sorts of other things in the background. For starters, we're extremely flexible with how we gather information. In real life, Akersh is capable of collecting several pieces of information from Cami regardless of the order she delivers them in.</p> <p>Our ability to converse with each other verbally allows us to move beyond simple transactions. With our voices, we're able to describe abstract concepts, draw conclusions from contextual clues, and tolerate ambiguity, all while converging on increased understanding. In this way, conversation opens the door to more meaningful interactions.</p> <h2>Start Designing Conversational Transactions with Our New Training Course</h2> <p>Today, we're speaking with computers more and more. While voice allows us to initiate transactions with more ease than ever before, we've only just begun to tap into the power of conversation.</p> <p>The<strong> </strong><a href="https://developer.amazon.com/alexa-skills-kit">Alexa Skills Kit</a> provides developers and voice designers with an opportunity to take advantage of the latest breakthroughs in Alexa's understanding of conversation through advanced features and patterns like<strong> </strong><a href="https://developer.amazon.com/alexa-skills-kit/dialog-management">dialog management</a>, <a href="https://developer.amazon.com/blogs/alexa/post/d8579cd6-9109-42b2-ada6-df017fc1dee5/how-to-handle-different-intent-requests-with-dialog-management">context switching</a>, <a href="https://developer.amazon.com/blogs/alexa/post/44dd83f4-4842-40c5-91f8-3868b9f4608c/using-dialog-management-to-capture-a-and-b-or-c-slots">conditional slot collection</a>, and <a href="https://developer.amazon.com/alexa-skills-kit/big-nerd-ranch/alexa-implementing-persistence">memory</a>.</p> <p>We believe that <em>anyone </em>can create compelling Alexa skills that blur the boundaries between human and computer interaction. We're so excited for the possibility of voice, that we've launched a new and free self-paced course called <a href="https://developer.amazon.com/ask-resources/guided/conversational-design-workshop#/?_k=vfi1np" target="_blank">Designing for Conversation</a><strong><em> </em></strong>to help you start building natural Alexa skills<em>.</em></p> <p>Before you dive into creating conversational skills, you'll need to spend some time understanding conversation and the elements of communication. The best way to learn about methods of conversation that you'll use for Alexa is to understand what doesn't work and why traditional voice experiences have felt unnatural or stilted. Check out the first lesson in our course called <a href="https://developer.amazon.com/ask-resources/guided/conversational-design-workshop#/lessons/Zrq3dq1kvFJkU-EA3DRBnT7ybqCOKHEI?_k=qtttny" target="_blank">“A Primer on Communication”</a> to dive in.</p> <h2>Related Content</h2> <ul> <li><a href="https://developer.amazon.com/blogs/alexa/post/b0609d07-1e60-44a1-bcd8-cd3eff29f014/new-alexa-skills-training-course-designing-for-conversation">New Alexa Skills Training Course: Designing for Conversation</a></li> <li><a href="https://developer.amazon.com/alexa-skills-kit/dialog-management">Build Advanced Alexa Skills Using Dialog Management</a></li> <li><a href="https://www.codecademy.com/learn/alexa-conversational-design" target="_blank">Codecademy: Conversational Design with Alexa</a></li> </ul> <h2>Build Skills, Earn Developer Perks</h2> <p>Bring your big idea to life with Alexa and earn perks through our <a href="https://developer.amazon.com/alexa-skills-kit/alexa-developer-skill-promotion">milestone-based developer promotion</a>. US developers, publish your first Alexa skill and earn a custom Alexa developer t-shirt. Publish a skill for Alexa-enabled devices with screens and earn an Echo Spot. Publish a skill using the Gadgets Skill API and earn a 2-pack of Echo Buttons. If you're not in the US, check out our promotions in <a href="https://developer.amazon.com/alexa-skills-kit/alexa-developer-skill-promotion-canada">Canada</a>, the <a href="http://developer.amazon.com/en-gb/alexa-skills-kit/alexa-developer-skill-promotion" target="_blank">UK</a>, <a href="http://developer.amazon.com/de/alexa-skills-kit/alexa-developer-skill-promotion" target="_blank">Germany</a>, <a href="https://developer.amazon.com/ja/alexa-skills-kit/alexa-developer-skill-promotion">Japan</a>, <a href="https://developer.amazon.com/fr/alexa-skills-kit/alexa-developer-skills-promotion">France</a>, <a href="https://developer.amazon.com/alexa-skills-kit/anz/alexa-developer-skill-promotion">Australia</a>, and <a href="http://developer.amazon.com/alexa-skills-kit/alexa-developer-skill-promotion-india" target="_blank">India</a>. <a href="https://developer.amazon.com/alexa-skills-kit/alexa-developer-skill-promotion">Learn more</a> about our promotion and start building today.</p> /blogs/alexa/post/b8101123-f1b9-494c-8bbb-53e3850a1123/in-skill-purchasing-offers-jeff-bolton-s-voice-business-a-new-level-of-monetization In-Skill Purchasing Offers Jeff Bolton’s Voice Business a New Level of Monetization Jennifer King 2018-10-17T14:00:00+00:00 2018-10-17T14:00:00+00:00 <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/Jeff_Bolton_Blog_Header.png._CB481466282_.png" style="height:240px; width:954px" /></p> <p>Jeff Bolton has a catalog of 88 Alexa skills. When in-skill purchasing became available, he saw an even greater opportunity to monetize his popular skills by delivering premium experiences.</p> <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/Jeff_Bolton_Blog_Header.png._CB481466282_.png" /></p> <p>From launching startups to helping build a $3 billion e-commerce giant, 20-year software veteran Jeff Bolton knows a thing or two building a business. When he first learned about Alexa, he was intrigued by the possibilities of building a new company based on voice technology. That curiosity eventually led him to start <a href="https://voiceapps.com/" target="_blank">Voice Apps</a>, a voice design studio focused exclusively on Alexa skills.</p> <p>Bolton’s catalog of 88 Alexa skills began earning <a href="https://developer.amazon.com/alexa-skills-kit/rewards">Alexa Developer Rewards</a> almost immediately. But when <a href="https://developer.amazon.com/alexa-skills-kit/make-money/in-skill-purchasing">in-skill purchasing</a> became available, Bolton saw an even greater opportunity to monetize his popular skills by delivering premium experiences.</p> <p>“The rewards program let me earn enough money to get my business off the ground,” says Bolton. “Now, with in-skill purchasing we have a whole different level of capabilities to directly monetize the skills our customers know and love.”</p> <p>Bolton began selling premium content in the form of annual subscriptions for his popular <a href="https://www.amazon.com/Voice-Apps-LLC-Relaxation-Sounds/dp/B06XBXR97N" target="_blank">Sleep and Relaxation Sounds</a> skill. The subscription gives customers exclusive access to certain features and content, and customers are responding positively to the upsell—43% of customers who are offered the subscription have opted in to purchase it. The skill also maintains a 4.8-star rating since Bolton introduced the premium experience. And his voice business is growing faster than he imagined.</p> <p>“In-skill purchasing provides us a more reliable, more traditional, and more predictable type of revenue stream,” says Bolton. “For the first time, I feel we can control our destiny as far as running and growing our voice business.”</p> <h2>In-Skill Purchasing: A Predictable, Reliable Way to Scale Your Voice Business</h2> <p>In two years, Bolton has built a portfolio of popular Alexa skills that have earned him significant payouts from the Alexa Developer Rewards (ADR) program, which is a program that pays developers for building highly engaging skills. In fact, his first check from ADR was for $25,000, which led him to start Voice Apps. But when Amazon introduced in-skill purchasing, he saw enormous potential for a more predictable and scalable income stream to accelerate the growth of his voice business.</p> <p>“In-skill purchasing can provide revenue that’s less dependent on a bonus structure like Alexa Developer Rewards,” says Bolton. “We know that if customers purchase our in-skill subscription at a certain rate each month, then we can predict and optimize how much we're going to earn.”</p> <p>Bolton selected one of his most popular skills, <a href="https://www.amazon.com/Voice-Apps-LLC-Relaxation-Sounds/dp/B06XBXR97N" target="_blank">Sleep and Relaxation Sounds</a>, for his first foray into in-skill purchasing. The free version of this skill allows customers to select from over 125 ambient sounds—from thunderstorms to whales and wind chimes—to help them relax and sleep peacefully. Bolton enhanced the skill to offer customers an annual subscription for $9.95 a year—a real value at a mere $0.83 per month, according to Bolton. The in-skill purchase unlocks exclusive features and content, including premium versions of all sounds, 75 additional sounds, the ability to combine different sounds, sleep stories, and guided sleep and meditation features.</p> <p>The approach is working, and Voice Apps’ monthly revenue is rising. He is seeing conversion rates of up to 43%. And adding in-skill purchasing to the skill hasn’t hurt its ratings in the Alexa Skills Store, either. Now closing in on 10,000 reviews, Sleep and Relaxation Sounds maintains an average 4.8-star rating.</p> <p>“We've had a fantastic response, and we're getting positive feedback from customers every day,” says Bolton. “People love the premium experience and are very happy to pay for it.”</p> <h2>Helping Others Build and Monetize Highly Engaging Skills with the VoiceApps.com Tool</h2> <p>Bolton offers some suggestions to developers offering in-skill purchases. First, your skill has to fill a real everyday need for customers—creating a virtuous habit that customers value. Second, you have to keep the content (including content available to non-paying customers, as they are your future paying customers) fresh, updated, and compelling to ensure your customers keep coming back. And finally, an in-skill purchase should offer customers a premium experience that gives them even more of what they love.</p> <p>Now Bolton is offering Alexa developers more than expert tips. He has expanded Voice Apps to provide tools that help others build Alexa skills to meet customers’ needs and grow their own voice businesses.</p> <p>“After developing more than 100 skills for ourselves, as well skills for other companies and individuals, I saw a great need out there for more tools to help people build Alexa skills,” says Bolton. “So, we took all our experience and built our own skill-building tool at VoiceApps.com.”</p> <p><a href="https://voiceapps.com/" target="_blank">VoiceApps.com</a> is a visual, drag-and-drop platform that lets anyone—regardless of their background—build and publish Alexa skills. The freemium service extracts most of the complexities of building and deploying skills and provides access to even advanced Alexa skill capabilities. Users can monetize the skills they build with VoiceApps.com by adding in-skill purchasing, directly within the tool.</p> <p>“In-skill purchasing will allow all developers to take their skills to the next level,” says Bolton. “We’re very excited that VoiceApps.com now makes building, publishing, and monetizing skills even quicker and easier for everyone.”</p> <h2>Related Content</h2> <ul> <li><a href="https://developer.amazon.com/alexa-skills-kit/make-money/in-skill-purchasing">Sell Premium Content to Enrich Your Skill Experience</a></li> <li><a href="https://developer.amazon.com/alexa-skills-kit/rewards">Earn Money with Alexa Developer Rewards</a></li> <li><a href="https://build.amazonalexadev.com/alexa-skill-monetization-guide-ww.html">Guide: Make Money with Alexa Skills</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/156b211e-355f-4bc8-b1dc-fde19d9acaad/in-skill-purchasing-takes-volley-s-thriving-voice-business-to-the-next-level">In-Skill Purchasing Takes Volley’s Thriving Voice Business to the Next Level</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/7da88ba2-8091-460b-a034-a2d3257c0106/with-in-skill-purchasing-gal-shenar-sets-his-growing-voice-business-up-for-long-term-success">With In-Skill Purchasing, Gal Shenar Sets His Growing Voice Business Up for Long-Term Success</a></li> </ul> <h2>Make Money by Creating Engaging Skills Customers Love</h2> <p>You can make money for eligible skills that drive some of the highest customer engagement with <a href="https://developer.amazon.com/alexa-skills-kit/rewards">Alexa Developer Rewards</a>. You can also make money with Alexa skills using <a href="https://developer.amazon.com/alexa-skills-kit/make-money/in-skill-purchasing">in-skill purchasing</a> or <a href="https://developer.amazon.com/alexa-skills-kit/make-money/amazon-pay">Amazon Pay for Alexa Skills</a>. <a href="https://build.amazonalexadev.com/alexa-skill-monetization-guide-ww.html?&amp;sc_category=Owned&amp;sc_channel=WB&amp;sc_campaign=wb_acquisition&amp;sc_publisher=ASK&amp;sc_content=Content&amp;sc_detail=vod-webinar&amp;sc_funnel=Convert&amp;sc_country=WW&amp;sc_medium=Owned_WB_wb_acquisition_ASK_Content_vod-webinar_Convert_WW_visitors_makemoney-page_CTA-graphic&amp;sc_segment=visitors&amp;sc_place=makemoney-page&amp;sc_trackingcode=CTA-graphic" target="_blank">Download our introductory guide</a> to learn more.</p> /blogs/alexa/post/77eed6f6-b755-47f0-8395-781e9ba5cf95/alexa-sessions-you-won-t-want-to-miss-at-aws-re-invent-2018 Alexa Sessions You Won’t Want to Miss at AWS re:Invent 2018 Jennifer King 2018-10-16T14:00:00+00:00 2018-10-16T14:00:00+00:00 <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/reInvent-2018_blog.png._CB481776984_.png" style="height:480px; width:1908px" /></p> <p>The entire AWS re:Invent 2018 session catalog is now live! Explore more than 50 Alexa technical sessions and then register to attend.</p> <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/reInvent-2018_blog.png._CB481776984_.png" /></p> <p>With just over a month to go, the countdown for <a href="https://reinvent.awsevents.com/" target="_blank">AWS re:Invent</a> (November 26-30) has truly begun. The Alexa team has put together a fresh menu of content, and we’re excited to announce the <a href="https://www.portal.reinvent.awsevents.com/connect/search.ww#loadSearch-searchPhrase=&amp;searchType=session&amp;tc=0&amp;sortBy=abbreviationSort&amp;p=&amp;i(10042)=10487" target="_blank">full catalog of all Alexa sessions</a> that will be taking place at AWS re:Invent in Las Vegas.</p> <p>This year, we will have over 50 Alexa technical sessions, hands-on workshops, and interactive chalk talks to help attendees learn to design voice experiences and dive deep into the technology behind the Alexa Skills Kit, Alexa Voice Service, and Alexa smart home. You’ll hear from senior evangelists, product leaders, and engineers, and learn best practices from Alexa developers.</p> <p>There’s a lot to learn and explore at re:Invent, and you may have to prioritize which sessions to attend. To help you explore what’s available, we’ve curated a list of Alexa sessions you won’t want to miss. The list includes topics ranging from designing visually rich Alexa skills for devices with screens using the new <a href="https://developer.amazon.com/blogs/alexa/post/1dee3fa0-8c5f-4179-ab7a-74545ead24ce/introducing-the-alexa-presentation-language-preview">Alexa Presentation Language</a>, integrating <a href="https://developer.amazon.com/alexa-skills-kit/make-money/in-skill-purchasing?&amp;sc_category=Owned&amp;sc_channel=WB&amp;sc_campaign=TopNav&amp;sc_publisher=website&amp;sc_content=Content&amp;sc_funnel=Discover&amp;sc_country=US&amp;sc_medium=Owned_WB_TopNav_website_Content_Discover_US_newdev&amp;sc_segment=newdev">in-skill purchasing (ISP)</a> in Alexa skills, creating engaging c<a href="https://developer.amazon.com/blogs/alexa/post/b0609d07-1e60-44a1-bcd8-cd3eff29f014/new-alexa-skills-training-course-designing-for-conversation">onversational voice experiences</a>, building Alexa-enabled devices for the connected world, and more. Learn more about each Alexa session in the <a href="https://www.portal.reinvent.awsevents.com/connect/search.ww#loadSearch-searchPhrase=&amp;searchType=session&amp;tc=0&amp;sortBy=abbreviationSort&amp;p=&amp;i(10042)=10487" target="_blank">full AWS re:Invent session catalog</a>.</p> <h2>If You Crave the Cutting Edge</h2> <p><strong>Delivering on the Promise of AI Together</strong> — During the <a href="https://reinvent.awsevents.com/learn/ai-summit/" target="_blank">AI Summit</a>, Rohit Prasad, Vice President and Head Scientist for Alexa Artificial Intelligence (AI), explores the opportunities for AI systems to augment human intelligence in ways that will make it accessible to everyone, increasing the societal good today and into the future.</p> <p><strong>Alexa Everywhere, a Year in Review</strong> — Since its launch in 2015, Alexa has enabled new experiences across many device form factors at home, work, in the car, and on the go. Chief Evangelist <a href="https://twitter.com/thedavedev" target="_blank">Dave Isbitski</a> will get you up to speed on the current voice-first movement, conversational AI trends, and the latest Alexa features and devices.</p> <h2>If You’re New to Building Alexa Skills</h2> <p><strong>Chalk Talk: How to Train Your Alexa Skill Language Model Using Machine Learning</strong> — In this interactive session, you will Learn how to make your Alexa skill more delightful for customers&nbsp; by optimizing your <a href="https://developer.amazon.com/docs/custom-skills/create-the-interaction-model-for-your-skill.html">language model</a>, providing the correct training data for your custom intents, and using specific strategies to improve new and existing language models. If you’re ready to dive into this topic today, check out these resources:</p> <ul> <li><a href="https://developer.amazon.com/blogs/alexa/post/29f92b4d-1369-4d22-8494-7c4cc57650a3/amazon-scientists-to-present-more-sophisticated-semantic-representation-language-for-alexa">New Way to Annotate Training Data Should Enable More Sophisticated Alexa Interactions</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/15bf7d2a-5e5c-4d43-90ae-c2596c9cc3a6/how-alexa-is-learning-to-converse-more-naturally">How Alexa Is Learning to Converse More Naturally</a></li> </ul> <p><strong>Chalk Talk: How to Get the Most Out of TTS for Your Alexa Skill</strong> — Learn how to apply Alexa’s text-to-speech (TTS) and Amazon Polly features to modify and enhance your speech responses. You’ll walk away with insider tips on how to optimize TTS speech using SSML. Start learning about TTS and SSML today with these resources:</p> <ul> <li><a href="https://developer.amazon.com/blogs/alexa/post/b5716c1f-d57b-4178-9ed9-5f4cf50c64d6/new-developer-preview-easily-use-amazon-polly-voices-in-alexa-skills">Expanded Developer Preview: Add Unique Voices to Your Alexa Skill with Amazon Polly</a></li> <li><a href="https://developer.amazon.com/it/blogs/alexa/post/afc4131b-7f4b-4609-98c0-d7f9a4f9d5a8/announcing-the-new-alexa-skills-kit-sound-library-to-create-more-engaging-skills">Announcing the New Alexa Skills Kit Sound Library to Create More Engaging Skills</a></li> <li><a href="https://developer.amazon.com/docs/custom-skills/speech-synthesis-markup-language-ssml-reference.html">Speech Synthesis Markup Language (SSML) Reference</a></li> </ul> <h2>If You’ve Built and Published an Alexa Skill</h2> <p><strong>Using Alexa Skills to Sell Digital Content: A Workshop for In-Skill Purchasing</strong> — Learn how to add in-skill purchasing to your Alexa skill. We’ll walk you through how to write the code, deploy to AWS Lambda, and use the Alexa Skills Kit (ASK) Software Development Kit (SDK) to save state in Amazon DynamoDB. Leave this workshop with a working skill with in-skill purchasing that you can modify to make your own. Learn more about ISP and how to add in-skill products today with these resources:</p> <ul> <li><a href="https://developer.amazon.com/blogs/alexa/post/aab44ff4-c19a-4862-8014-35c0e8846743/introducing-consumables-a-new-way-to-make-money-with-your-alexa-skill">Now You Can Sell Consumables to Enrich Your Voice Experience and Make Money with Alexa Skills</a></li> <li><a href="https://github.com/alexa/skill-sample-nodejs-fact-in-skill-purchases">Sample Skill demonstrating In-Skill Purchasing</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/a3f5a97c-b5c8-4435-9900-7976a27815fa/tips-for-adding-consumable-in-skill-products-to-your-alexa-skills">Tips for Adding Consumable In-Skill Products to Your Alexa Skills</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/5d852c9c-8cdf-45c1-9b68-e2f02af26c89/make-money-with-alexa-skills">Make Money with Your Alexa Skills through In-Skill Purchasing (Now Generally Available)</a></li> </ul> <p><strong>Alexa Skill Developer Tools: Build Better Skills Faster</strong> — Explore the suite of Alexa developer tools and dive into how you can use them to be more productive in coding, deploying, testing, debugging, and collaborating with others on your skill. Here are a couple articles you may find useful around this subject:</p> <ul> <li><a href="https://developer.amazon.com/docs/smapi/quick-start-alexa-skills-kit-command-line-interface.html">Quick Start Alexa Skills Kit Command Line Interface (ASK CLI)</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/a40b4067-fb96-4b53-9e52-17fd1f42b66f/ask-toolkit-for-visual-studio-code">Accelerate Skill Development Using the ASK Toolkit for Visual Studio Code (Beta)</a></li> </ul> <p><strong>Chalk Talk: How to Train Your Alexa Skill Language Model Using Machine Learning</strong> — Learn how to make your Alexa skill more delightful for customers by optimizing your language model, providing the correct training data for your custom intents, and using specific strategies to improve new and existing language models.</p> <p><strong>Workshop: Build an Interactive Alexa Voice Experience for Multiple Screens</strong> — Learn how to use Alexa to reach millions of new customers by developing for multiple screens using the new <a href="https://developer.amazon.com/blogs/alexa/post/1dee3fa0-8c5f-4179-ab7a-74545ead24ce/introducing-the-alexa-presentation-language-preview">Alexa Presentation Language</a>. We will walk step-by-step through the entire process of building an Alexa skill that include graphics, images, slideshows, and video, and to customize them for different device types.</p> <h2>If You’re an IoT Enthusiast or Device Maker</h2> <p><strong>Alexa and AWS IoT</strong> — Voice is a natural interface to interact not just with the world around us, but also with physical assets and things, such as connected home devices, including lights, thermostats, or TVs. Learn how you can connect and control devices in your home using the AWS IoT platform and Alexa Skills Kit.</p> <p><strong>Connect Any Device to Alexa and Control Any Feature with the Updated Smart Home Skill API </strong> — Learn about the latest update to the Smart Home Skill API, featuring new capability interfaces you can use as building blocks to connect any device to Alexa, including those that fall outside of the traditional smart home categories of lighting, locks, thermostats, sensors, cameras, and audio/video gear. Start learning about how you can <a href="https://developer.amazon.com/alexa/connected-devices/build">create a smarter home with Alexa</a>.</p> <p><strong>Workshop: Build an Alexa Skill with Multiple Models</strong> — Learn how to build an Alexa skill that utilizes multiple interaction models and combines functionality into a single skill. Build an Alexa smart home skill from scratch that implements both custom interactions and smart home functionality within a single skill. Check out these resources to start learning:</p> <ul> <li><a href="https://developer.amazon.com/blogs/alexa/post/2ccbb04d-47c0-41c8-92fe-feb581deb676/understanding-the-updated-smart-home-skill-api-preview">Understanding the Updated Smart Home Skill API (Preview)</a></li> <li><a href="https://developer.amazon.com/docs/smarthome/develop-smart-home-skills-in-multiple-languages.html">Develop Smart Home Skills for Multiple Languages</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/acf7689b-f118-469e-b452-0c4da8d3e61a/new-alexa-smart-home-developer-tools-enable-seamless-voice-control-of-any-device-and-any-feature">New Alexa Smart Home Developer Tools Enable Seamless Voice Control of Any Device and Any Feature</a></li> </ul> <h2>If You’re a Game Developer</h2> <p><strong>Three Lessons From Escape the Room That Apply to Making Money With Your Alexa Skills</strong> — Hear from <a href="https://developer.amazon.com/blogs/alexa/post/7da88ba2-8091-460b-a034-a2d3257c0106/with-in-skill-purchasing-gal-shenar-sets-his-growing-voice-business-up-for-long-term-success">Gal Shenar</a>, founder of Stoked Skills, about how he designed and implemented in-skill purchasing for his popular game skills, Escape the Room and Escape the Airplane, which are seeing conversion rates as high as 34%. Learn how to implement a premium content in-skill purchase gate while monitoring user experience flows to increase conversion rates by using AWS Lambda.</p> <p><strong>Chalk Talk: Supercharge Any Alexa Skill by Understanding What Games Do</strong> — Discover what makes an Alexa game skill great. Learn how to build engaging experiences with dialog management, entity resolution, and session persistence. We’ll also explore state handling, multimodal experiences, and cross-device interactions such as Alexa Gadgets and AWS IoT for PC games.</p> <h2>Dive Deep During a Builders Session</h2> <p>If you would like to dive deep with an Alexa expert, sign up up for one of the <a href="https://reinvent.awsevents.com/learn/builders-sessions/" target="_blank">builders sessions</a>. These are 60-minute small group sessions with up to five developers and one AWS/Alexa expert who can help, answer questions, and provide guidance. Builders session can cover any topic—be sure to reserve a seat when you register for re:Invent.</p> <h2>We Can’t Wait to Meet You at AWS re:Invent</h2> <p>Visit the <a href="https://www.portal.reinvent.awsevents.com/connect/search.ww#loadSearch-searchPhrase=&amp;searchType=session&amp;tc=0&amp;sortBy=abbreviationSort&amp;p=&amp;i(10042)=10487" target="_blank">AWS re:Invent website</a> to register, explore these sessions in more detail, and view the <a href="https://www.portal.reinvent.awsevents.com/connect/search.ww#loadSearch-searchPhrase=&amp;searchType=session&amp;tc=0&amp;sortBy=abbreviationSort&amp;p=&amp;i(10042)=10487" target="_blank">complete catalog of Alexa sessions</a>. To stay in touch and receive the latest Alexa development news before and after AWS re:Invent, <a href="https://build.amazonalexadev.com/Get_the_Latest_Alexa_Developer_News.html?&amp;sc_category=Owned&amp;sc_channel=WB&amp;sc_campaign=wb_reInvent&amp;sc_publisher=ASK&amp;sc_content=Content&amp;sc_detail=newsletter&amp;sc_funnel=Convert&amp;sc_country=WW&amp;sc_medium=Owned_WB_wb_reInvent_ASK_Content_newsletter_Convert_WW_ask-reinvent_reinventpage&amp;sc_segment=ask-reinvent&amp;sc_place=reinventpage" target="_blank">subscribe to our newsletter</a>. &nbsp;</p> /blogs/alexa/post/be927fa4-eb4f-464b-b0fa-97de225fc18c/tech-for-good-challenge-finalists Announcing the Finalists for the Alexa Skills Challenge: Tech for Good Jennifer King 2018-10-15T20:26:41+00:00 2018-10-16T10:17:31+00:00 <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/AlexaSkillsKit/TechForGood_blog._CB472139295_.png" /></p> <p>In July, we announced the <a href="https://alexatechforgood.devpost.com/">Alexa Skills Challenge: Tech for Good</a>. The challenge invited developers to build Alexa skills that could have a positive impact on the environment, local communities, and the world. We’ve finally narrowed down the 10 finalists and we’re excited to share them with you.</p> <p><a href="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/AlexaSkillsKit/TechForGood_blog._CB472139295_.png"><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/AlexaSkillsKit/TechForGood_blog._CB472139295_.png" style="height:480px; width:1908px" /></a></p> <p>In July, we announced the <a href="https://alexatechforgood.devpost.com/">Alexa Skills Challenge: Tech for Good</a>. The challenge invited developers to build Alexa skills that could have a positive impact on the environment, local communities, and the world. We vetted hundreds of submissions and after much deliberation, we’ve finally narrowed down the 10 finalists. We’re excited to share them with you.</p> <p>Before doing so, we want to thank everyone and recognize important accomplishments we observed from you, the Alexa developer community. It’s incredible to see that in about three years’ time, the skills you are now creating are taking on new levels of technical depth and quality of execution. We were excited to see several trends emerge from a majority of the entries.</p> <p></p> <ol> <li><strong>Technical Depth:</strong> We saw many more skills that were making use of new advanced features to create more natural interactions and deliver a better user experience. Many developers used features such as memory and persistence, Location APIs, home cards, entity resolution, and CanFulfillIntentRequest.</li> <li><strong>User Experience:</strong> The user experiences created delivered clear value for customers. Your skills removed friction, engaged customers through clear call-to-actions, and presented learnings for customers to act on or return to&nbsp;later.</li> <li><strong>Global Experiences:</strong> We saw many submissions going the extra step to deliver experiences to customers globally. Skills were often submitted for certification in India, the US, the UK, Australia, and Canada all at once. Building an experience for customers everywhere is a great way to expand the reach of your skill.</li> </ol> <p>The review process wasn’t easy; we were amazed by the quality of the skills submitted. Each finalist will take home $5,000 and continue to compete for the $10,000 grand prize and the chance to direct a $20,000 donation to <a href="https://alexatechforgood.devpost.com/details/nonprofits">one of 11 non-profit organizations</a>. Without further ado, here are the 10 finalists we selected and that will move on to the next round. Congratulations to each finalist!&nbsp;</p> <p><em>To try out one of the finalist skills, just ask, “Alexa, give me a tech for good skill.&quot;</em></p> <p><strong><a href="https://devpost.com/software/onesie-bazaar-share-unneeded-baby-clothes">Onesie Bazaar</a></strong><strong>: </strong>Onesie Bazaar is a two-way marketplace to list and trade used baby clothes. <a href="https://www.amazon.com/Onesie-Bazaar-Share-unneeded-clothes/dp/B07H2DWXC9">Try out Onesie Bazaar</a><strong>.</strong></p> <p><strong><a href="https://devpost.com/software/evie-assistant">EVIE Assistant</a></strong><strong>: </strong>EVIE Assistant allows you to search for electric charging stations nearby using a city name. <a href="https://www.amazon.com/Smart-Home-Bloke-Evie-Assistant/dp/B07GWBDR93">Try out EVIE Assistant.</a></p> <p><strong><a href="https://devpost.com/software/busy-hands">Busy Hands</a></strong><strong>: </strong>Busy Hands is a fun and interactive STEM experiment skill to try at home. <a href="http://www.amazon.com/gp/product/B07HFS2MJL">Try out Busy Hands.</a></p> <p><strong><a href="https://devpost.com/software/transportme">Transport Me</a></strong><strong>: </strong>Transport Me allows you to search for nearby bike shares across multiple providers within a 1.25-mile radius. <a href="http://www.amazon.com/gp/product/B07HH952RV">Try out Transport Me</a><strong>.</strong></p> <p><strong><a href="https://devpost.com/software/alexa-safe-and-well">Safe and Well</a></strong><strong>: </strong>Safe and Well allows anyone to check on the status of close relatives or friends they may know in impacted areas. The skill ties in directly with American Red Cross’ <a href="https://safeandwell.communityos.org/cms/index.php">Safe and Well</a> API. <a href="https://www.amazon.com/MMCR-Safe-and-Well/dp/B07HVHSP6W">Try out Safe and Well</a>.</p> <p><strong><a href="https://devpost.com/software/recycling-center-finder">Recycling Center</a></strong><strong>: </strong>Recycling center allows customers to easily find local recycling centers for specific items they may want to discard such as batteries or lightbulbs. <a href="http://www.amazon.com/gp/product/B07HLZJFJ6">Try out Recycling Center</a>.</p> <p><strong><a href="https://devpost.com/software/world-mathematics-league">World Mathematics League</a></strong><strong>: </strong>This skill creates a World Mathematics League. Customers from around the world can participate in 15 minutes of daily math questions to contribute to their state’s or country’s score. <a href="https://www.amazon.com/Shanthan-Kesharaju-World-Mathematics-League/dp/B07HH96SWZ">Try out World Mathematics League</a>.</p> <p><strong><a href="https://devpost.com/software/shower-buddy">Shower Buddy</a></strong><strong>: </strong>Shower buddy is a simple but powerful skill that can help customers reduce water consumption by tracking the time they spend in the shower. <a href="http://www.amazon.com/gp/product/B07HD4H223">Try out Shower Buddy.</a></p> <p><strong><a href="https://devpost.com/software/agent-do-good">Agent Do Good</a></strong><strong>: </strong>Agent Do Good challenges you to complete a daily mission focused on doing good (e.g. hold the door open for someone, give up your seat for someone else, etc.). Once you accept a mission, complete it and report back. <a href="https://www.amazon.com/Adassa-Innovations-Agent-Do-Good/dp/B07GRV4BKL">Try out Agent Do Good.</a></p> <p><strong><a href="https://devpost.com/software/volunteer-options-alexa-skill">Volunteer Options</a></strong><strong>: </strong>Volunteer options gives you&nbsp;an easy way to find volunteer opportunities nearby&nbsp;using your&nbsp;Zip Code. <a href="https://www.amazon.com/RipplinRiverTech-Volunteer-Options/dp/B07H7FXYGW">Try out Volunteer Options.</a></p> <h2>What’s Next for Our Finalists</h2> <p style="margin-left:0in; margin-right:0in">From October 15 through November 4, we will evaluate customer engagement with each of the finalists’ skills, and our judging panel will evaluate each finalist's skill to determine the winner of the $10,000 grand prize. We’ll also evaluate a few additional skills that could potentially win a bonus prize. (As per the official rules: “a Bonus Prize may be awarded to a skill that is not a Finalist Prize winner.”)</p> <h2>Good Luck to the Finalists!</h2> <p>The challenge winners will be announced on or around November 13. Thank you to everyone who participated and worked hard to submit an entry to this challenge. We invite everyone to try each of the finalist skills and to build your own Alexa skill for good. Stay tuned for more information on future contests.</p>