Amazon Developer Blogs Amazon Developer Blogs https://developer.amazon.com 2018-10-23T18:30:52+00:00 Apache Roller Weblogger /blogs/alexa/post/baee53c1-5b03-4580-b57a-ee9510413354/amazon-polly-voices-in-alexa-skills-now-generally-available Amazon Polly Voices in Alexa Skills Now Generally Available BJ Haberkorn 2018-10-23T17:34:06+00:00 2018-10-23T18:30:52+00:00 <p><img alt="Polly-in-Alexa-Skills_Blog.png" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/AlexaSkillsKit/Polly-in-Alexa-Skills_Blog._CB495538412_.png?t=true" /></p> <p>Now you can use 27 different Amazon Polly voices in your Alexa skills.</p> <p><img alt="Polly-in-Alexa-Skills_Blog.png" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/AlexaSkillsKit/Polly-in-Alexa-Skills_Blog._CB495538412_.png?t=true" /></p> <p>We’re excited to announce the general availability of Amazon Polly voices in the Alexa Skills Kit. Now you can use 27 different Amazon Polly voices to make your Alexa skills more engaging for customers. You can use the voices in your skills for free in all locales supported by Alexa.</p> <h2>What Is Amazon Polly?</h2> <p><a href="https://aws.amazon.com/polly">Amazon Polly</a> is a service that turns text into lifelike speech, allowing you to create applications that talk and build entirely new categories of speech-enabled products. Amazon Polly uses advanced deep learning technologies to synthesize speech that sounds like a human voice. Visit the <a href="https://aws.amazon.com/polly/">Amazon Polly product page</a> for more information.</p> <h2>Make Your Skill Experience More Dynamic and Engaging with Amazon Polly Voices</h2> <p>Using Amazon Polly, you can choose a different voice for any utterance by using the Speech Synthesis Markup Language (SSML) and specifying an Amazon Polly voice using the “<em>voice name</em>” tag and the “<em>lang</em>” tag (if you need a language other than the default language for the skill). You can even use an Amazon Polly voice for every utterance in your skill. Developers are already taking advantage of Amazon Polly to:</p> <p style="text-align:justify"><strong>Use Different Voices for Different Characters in Game and Story Skills</strong></p> <p style="text-align:justify">&quot;As voice-first narrative game makers, building interesting, believable characters is at the center of what we do. The new Amazon Polly voices enable us to have more and better characters for our upcoming launch title, <a href="https://www.amazon.com/Doppio-Games-The-Vortex/dp/B07JJV13G3/ref=sr_1_1?s=digital-skills&amp;ie=UTF8&amp;qid=1540231518&amp;sr=1-1&amp;keywords=the+vortex">The Vortex</a>,” said Jeferson Valadares, CEO and Co-founder of <strong>Doppio Games.</strong></p> <p style="text-align:justify">“The personality of our game’s AI assistant is critical to the gameplay experience of <strong>My Spaceship</strong>, which we expect to launch later this month,” said Sam Read of <strong>Robot Radio</strong>. “Using Amazon Polly, we were able to give our main character a voice that felt right for the personality we had crafted. The whole Robot Radio team were really impressed by how simple it was to implement; just a few extra SSML tags were needed to make My Spaceship feel like the premium experience we wanted to deliver.</p> <p style="text-align:justify"><strong>Reduce the Time and Cost Required to Hire Voice Actors</strong></p> <p>“Amazon Polly has provided us a way to add many different characters and personas to our <a href="https://www.amazon.com/Stoked-Skills-LLC-Angel-Investor/dp/B07GBLHKVR/ref=sr_1_1?s=digital-skills&amp;ie=UTF8&amp;qid=1540231752&amp;sr=1-1&amp;keywords=angel+investor">Angel Investor</a> skill in seconds with the simple addition of an SSML tag,” said Gal Shenar, Founder of <strong>Stoked Skills</strong>. “As our skills constantly grow and evolve, it isn't feasible to hire voice actors at every increment. Amazon Polly voices allow us to provide the experience we want with almost no additional effort. Some of the voices are so good that people have even asked us who did the recordings!”</p> <p style="text-align:justify"><strong>Customize Pronunciation</strong></p> <p style="text-align:justify">“Long SSML audio tags and Amazon Polly have proven essential for a weather information skill that we are developing for a Federal agency in partnership with a leading Federal contractor&quot;, said Pat Higbie, Co-founder and CEO of <strong>XAPPmedia</strong>. “Skill users can request dynamic weather content for more than 18,000 locations throughout the US and we rely on Amazon Polly within SSML tags to deliver responses that can run up to 4 minutes long. We are also using Polly lexicons to properly pronounce the technical jargon that is laced throughout the content and the users are able to select either a female or male voice and adjust the speed faster or slower. There is more to this skill than meets the ear and Amazon Polly handles the complex responses with extremely low latency.&quot;</p> <h2>Try Amazon Polly in Your Alexa Skill Today</h2> <p>You can use Amazon Polly voices in your skill today by simply adding SSML tags. Learn how in <a href="https://developer.amazon.com/docs/custom-skills/speech-synthesis-markup-language-ssml-reference.html">our documentation</a>, and try all 27 Amazon Polly voices. Please review and follow these <a href="https://developer.amazon.com/docs/custom-skills/guidelines-ux-amazon-polly-skills.html">user experience guidelines</a> for using Amazon Polly in your skills.</p> <h2>Build Skills, Earn Developer Perks</h2> <p>Bring your big idea to life with Alexa and earn perks through our&nbsp;<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 by October 31, 2018, and earn the new Echo Dot. 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&nbsp;<a href="https://developer.amazon.com/alexa-skills-kit/alexa-developer-skill-promotion-canada">Canada</a>, the&nbsp;<a href="http://developer.amazon.com/en-gb/alexa-skills-kit/alexa-developer-skill-promotion" target="_blank">UK</a>,&nbsp;<a href="http://developer.amazon.com/de/alexa-skills-kit/alexa-developer-skill-promotion" target="_blank">Germany</a>,&nbsp;<a href="https://developer.amazon.com/ja/alexa-skills-kit/alexa-developer-skill-promotion">Japan</a>,&nbsp;<a href="https://developer.amazon.com/fr/alexa-skills-kit/alexa-developer-skills-promotion">France</a>,&nbsp;<a href="https://developer.amazon.com/alexa-skills-kit/anz/alexa-developer-skill-promotion">Australia</a>, and&nbsp;<a href="http://developer.amazon.com/alexa-skills-kit/alexa-developer-skill-promotion-india" target="_blank">India</a>.&nbsp;<a href="https://developer.amazon.com/alexa-skills-kit/alexa-developer-skill-promotion">Learn more</a>&nbsp;about our promotion and start building today.</p> /blogs/alexa/post/3c36c980-665a-4afc-974d-86797281a5cc/why-conversational-design-matters-4-hallmarks-of-conversational-skills Why Conversational Design Matters: 4 Hallmarks of Conversational Skills Jennifer King 2018-10-23T14:00:00+00:00 2018-10-23T14:00:00+00:00 <p>How do you know if your Alexa skill should be conversational? Learn about the four hallmarks of conversational design, and then start ideating for conversation in our new self-paced training course.</p> <p>I'm not a morning person. The only thought on my mind for the first several hours after waking up is getting my first cup of coffee. My wife (who is a bouncing ball of energy in the morning) sometimes tries to make conversation or ask questions about the day ahead.</p> <p>“Do you have any meetings today?” she'd inquire from another room while fixing her hair, feeding the dog, and doing our taxes at the same time. Attempting to grind some coffee beans, I'd grunt or mumble a one-word reply.</p> <p>Like me in the mornings, we all experience moments when conversation isn't necessary (or wanted). Sometimes complicated dialog can even get in the way, making simple tasks feel arduous.</p> <p>The same is true whether we're speaking with someone we love or with a cloud-based voice service. In fact, when engaging with technology, many of us tend to have even less patience for the burdensome.</p> <p>Not every Alexa skill needs to be conversational. There are thousands of skills available today that don't need dialog management, context switching, or many of the other advanced features available in the<strong> </strong><a href="https://developer.amazon.com/alexa-skills-kit">Alexa Skills Kit</a>. This is because we only need the skill to perform a simple action based on simple information.</p> <p>In my case, if there were an Alexa skill for making me coffee in the morning, I'd likely break down in tears if it responded to “Alexa, ask [skill] to make me coffee” with “Okay, I can make coffee with acidic or bitter notes, which flavor profile would you prefer?”</p> <p>However, there are many more situations where we want to convey more complex information to Alexa and want her to respond in a more nuanced way. In these instances, features like dialog management, context switching, memory, and conditional slot collection come in handy.</p> <p>In my example, after I've survived the early morning, I often grab another coffee from the fancy cafe near my office. By this time, the context for my coffee desires has changed. My goal isn't to get caffeine into my bloodstream as quickly as possible, but rather to enjoy an expertly prepared cup.</p> <p>Here, the barista asks appropriate questions to help narrow in on what it is I'm looking for. Maybe the beans are different today, or a new item has come on the menu that I'd like. Whatever (and however) I order, it always improves my experience when she remembers my preferences and takes them into account while speaking with me. Far from a burden, the barista's ability to converse with me is of great value and vastly improves my experience on my quest for the perfect cup.</p> <p><strong>Your Alexa skills can be just as engaging and helpful as my barista. Context is the key. </strong></p> <p>To decide whether your skill idea should be conversational, consider the four hallmarks of conversational design:</p> <ol> <li>Does the skill need to cooperate with the user, providing opportunities for natural back and forth dialog?</li> <li>Will the skill solve a <em>complex </em>problem for users without creating confusion or distraction?</li> <li>Will the skill need to confirm understanding with users to ensure shared context?</li> <li>Will remembering past interactions make future skill interactions quicker and simpler for the user?</li> </ol> <p>If the answer is “yes” to any of these questions, your skill idea will benefit from conversational design.</p> <p>The <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 <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>To help you learn when conversational features make sense and how you can <a href="https://developer.amazon.com/ask-resources/guided/conversational-design-workshop#/lessons/0sG0KP2aSz7TWti3mSito0u7O64Nw9aN?_k=htioc3" target="_blank">ideate for conversation</a>, we've launched a free, self-paced online course called <a href="http://alexa.design/4conversation" target="_blank">Designing for Conversation</a>. Dive into the course and get started with conversational design.</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/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</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 by October 31, 2018, and earn the new Echo Dot. 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/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>