Gracias por tu visita. Esta página solo está disponible en inglés.
Alexa Blogs Alexa Developer Blogs /blogs/alexa/feed/entries/atom 2019-07-19T21:32:30+00:00 Apache Roller /blogs/alexa/post/8a602054-6ba8-4b6e-b298-c4811840e680/using-the-alexa-skills-kit-command-line-interface-with-alexa-hosted-skills Using the Alexa Skills Kit Command Line Interface with Alexa-Hosted Skills Leo Ohannesian 2019-07-19T20:50:58+00:00 2019-07-19T20:50:58+00:00 <p><img alt="" src="" style="height:240px; width:954px" /></p> <p>Learn how to get set up with the ASK CLI and Alexa-hosted skills.</p> <p><img alt="" src="" /></p> <p>Lately I’ve been using the <a href="" target="_blank">Alexa-hosted option</a> for many of the Alexa skills I’ve created. It’s a convenient skill-building option since I don’t have to switch between the Alexa developer console and the AWS Lambda Console. Prior to that, my favorite option was to use the Alexa Skills Kit (ASK) Command Line Interface (CLI) with <a href="" target="_blank">Visual Studio Code</a>. I was thrilled to learn that I can now <a href="" target="_blank">use the ASK CLI with skills that are Alexa-hosted</a> skills. You can even create new Alexa-hosted skills from the ASK CLI using the “ask create-hosted-skill” command.</p> <h2><br /> Evolution of the ASK Toolset</h2> <p>When the Alexa Skills Kit was first introduced, developers used the developer console to manage their skill and the AWS console to manage code running in AWS Lambda. This was the toolset I used to build my first skill, and like so many others, I was hooked on building skills.</p> <p><img alt="" src="" style="display:block; height:384px; margin-left:auto; margin-right:auto; width:400px" />We created the ASK CLI to enable developers to manage both the skill and the code from the same tool. The CLI didn’t require interacting with a web interface. I really liked this because it was easy to keep all the parts of my skill together, and it didn’t require copy/paste to deploy my skill configuration and interaction model. It was also easy to deploy my Lambda function code.</p> <p>In addition to using the ASK CLI on your local development machine, you could also now use the ASK CLI on AWS Cloud9. This means you could set up different environments for each skill. Or if you were doing work with multiple companies or with multiple accounts, you could keep the environments separate. I also liked that I could spin up a new environment in less than five minutes, complete with the ASK CLI. This allowed me access to all the features of Cloud9, including sharing the environment with my team, and integration with Lambda.</p> <p><img alt="" src="" style="display:block; height:275px; margin-left:auto; margin-right:auto; width:400px" />Fast-forward to late last year when we announced Alexa-hosted skills. While this option still used AWS Lambda as the compute platform, now you didn’t have to create an AWS account to host your skill.&nbsp; In addition, you didn’t have to switch between the Alexa developer console and AWS Console to copy/paste the ARN into the endpoint field and copy/paste the Skill ID into the skill verification trigger. That was handled automatically! Couple this with ability to <a href="" target="_blank">create and manage your in-skill products from the developer console</a>, and you have a powerful skill-building package.<img alt="" src="" style="display:block; height:329px; margin-left:auto; margin-right:auto; width:400px" /></p> <p>This convenience wasn’t the only difference. Behind the scenes, your skill code was being stored not in a simple database, but in AWS CodeCommit. This difference doesn’t require developers to use a new tool – you manage your code from within the developer console, including saving, deploying, and pushing to your live skill.</p> <h2>How Alexa-Hosted Skill Code Flows Through AWS CodeCommit to AWS Lambda</h2> <p><a href="" target="_blank">AWS CodeCommit</a> is a fully managed source control service that hosts secure Git-based repositories. If you’re familiar with Git, you know your code is organized into branches. Typically, you’ll have a working branch and a branch that reflects the code you have running in your live service.</p> <p>With Alexa-hosted skills, the code is organized into three branches in each skill repository: dev, master, and prod. The dev branch is where your code is stored when you click the Save button in the console. When you click the Deploy button, the code stored on the dev branch is merged into the master branch.&nbsp; This code is combined with the dependencies noted in your package.json, and then deployed to your Lambda function. This version deployed from the master branch is used for your skill’s development endpoint and is the code which is run when you test your skill in the simulator.<img alt="" src="" style="display:block; height:389px; margin-left:auto; margin-right:auto; width:400px" /></p> <p>When you promote your code to Live, the code from the master branch is merged into the prod branch.&nbsp; From there it is deployed to your Lambda function. To keep the development and prod versions of the code running separately, each is deployed to as separate versions of the same function, with Lambda aliases pointing to the correct version.</p> <p>Although I liked the convenience of the one-stop approach offered by the developer console, I still also liked doing things from a command line since it allowed me to use my preferred code editor. Now that you can interact with your Alexa-hosted skills using the ASK CLI, I’m excited to start using the ASK CLI more.<img alt="" src="" style="display:block; height:350px; margin-left:auto; margin-right:auto; width:400px" />At a high level, using the ASK CLI is the same with an Alexa-hosted skill as with one where you host the Lambda function in your own account. To get a local copy of your skill, you use the “ask clone” command, and to deploy your skill, you use the “ask deploy” command. (Remember to create an Alexa-hosted skill using the ASK CLI, use the “ask create-hosted-skill” command instead of “ask new”.)</p> <p>When you get into the details, there are a few differences that you should be aware of. First, when you setup the CLI, you don’t need to provide AWS account credentials. All of the deployment actions are taken using your developer account credentials. The second difference is that the local copy of the code is cloned using Git from CodeCommit, and all three branches (dev, master and prod) are cloned.</p> <p><img alt="" src="" style="float:right; height:688px; margin-left:50px; margin-right:50px; width:400px" />Your normal working branch is the dev branch, just like if you were using the console. You also will work with the branch like any standard git branch, using “git add” to add new files and “git commit” to commit your changes. If you want to make your changes just visible in the developer console, you can do a “git push” of the dev branch.</p> <p>When it comes time to deploy the changes you made, you can use the same ‘ask deploy’ command (or ‘ask deploy –target lambda’ to just update the skill code). When you do this, your local dev branch is merged to master, and local changes are pushed to the origin (or remote repo). That push triggers the deployment to the Lambda function.</p> <p>If you want to use standard git commands to deploy your changes to your development endpoint, you can merge and push your changes to the master branch. Similarly, you can merge and push your changes to the prod branch to deploy your changes to your live skill. Keep in mind that making changes like this will only impact your skill’s code, not your skill’s interaction model, in-skill products, or skill configuration. The non-code changes need to be deployed normally using the “ask deploy” command in order to change your development version of your skill. In order to change the live version of your skill, you will submit it for certification just like normal.</p> <p>I find that I no longer have a favorite skill-building approach and will bounce between hosted and non-hosted, CLI and GUI depending on the task at hand. Regardless of which type of tool you prefer, you’ll find a hosting method and both GUI and CLI options for building your skill. Tweet me at <a href="">@FranklinLobb</a> to let me know which is your favorite!</p> <h1>Resources</h1> <p><a href="" target="_blank">ASK CLI QuickStart</a></p> <p><a href="" target="_blank">ASK Toolkit for Visual Studio</a></p> <p><a href=";sc_category=Owned&amp;sc_channel=BG&amp;sc_campaign=roundup&amp;sc_content_category=Prodictivity&amp;sc_funnel=&amp;sc_country=WW&amp;sc_segment=" target="_blank">Alexa-Hosted Skills</a></p> <p>&nbsp;</p> /blogs/alexa/post/4119e674-4523-4ce1-ba05-9bee229d5033/introducing-alexa-presentation-language-1-1-beta-jp Alexa Presentation Language 1.1(ベータ版)の紹介: アニメーション、ツールの改善、Alexaデザインシステム Chisato Hiroki 2019-07-19T04:03:33+00:00 2019-07-19T04:03:33+00:00 <p><img alt="apl-checkers-blog.png" src="" /></p> <p>このほど、Alexa Presentation Language(APL)の新しいバージョンが公開されました。今回のバージョンでは、アニメーションがサポートされ、ベクターグラフィックスが含まれています。また、ツールが改善されたほか、複数のViewportプロファイルを含むAPLスキルの開発時間を短縮できるデザインシステムが導入されています。APL 1.1は、すべてのロケールのAlexa開発者にご利用いただけます。</p> <p><img alt="apl-checkers-blog.png" src="" /></p> <p>編集注: 下記のAPLオーサリングツールのAPLコンポーネントのドラッグアンドドロップ機能が利用できるようになりました。テンプレートで使用する事前定義済みのAPLコンポーネントを、オーサリングツールのワークスペースから簡単にドラッグアンドドロップすることで、自動的にユーザー定義のAPLテンプレートを作成できます。この新機能で、マルチモーダルスキルのオーサリングエクスペリエンスが、さらに直感的でスムーズになります。</p> <p>このほど、Alexa Presentation Language(APL)の新しいバージョンが公開されました。今回のバージョンでは、アニメーションがサポートされ、ベクターグラフィックスが含まれています。また、ツールが改善されたほか、複数のViewportプロファイルを含むAPLスキルの開発時間を短縮できるデザインシステムが導入されています。APL 1.1は、すべてのロケールのAlexa開発者にご利用いただけます。現時点では、Echo Show、Echo Spot、新しいEcho Show 5が対応しています。近日中に、Fire TVやFireタブレットなどのデバイスにも対応する予定です。デバイスでAPL 1.1がサポートされているかどうかは、スキルリクエストでsupportedInterfacesオブジェクトを調べて、Alexa.Presentation.APLオブジェクトのmaxVersionを確認することでわかります。</p> <h2>&nbsp;</h2> <h2>アニメーションで実現できるエクスペリエンス</h2> <p>APL 1.1では、新しいAnimateItemコマンドを使用できます。このコマンドを使用すると、任意のAPLコンポーネントやレイアウトの位置、スケール、回転、透明度をアニメーション化できます。また、AnimateItemをAlexa Vector Graphics(Scalable Vector Graphics標準のサブセット)と組み合わせることで、ユーザーを引き付ける、まったく新しいエクスペリエンスを作成できます。</p> <p>以下のアニメーションでは、APLのベクターグラフィックスを使用して電球を作成しています。アニメーションはすべて、新しいAnimateItemコマンドを使用して作成されています。アニメーションとベクターグラフィックスの全機能は、開発者コンソールのスキルテストシミュレーターでサポートされており、APL 1.1をベースにしたエクスペリエンスのテストに使用できます。以下は、Echo Show 5でベクターグラフィックスとテキストをアニメーション化した例です。</p> <p><img alt="apl-checkers-gif-1.gif" src="" /></p> <p>この例を作成するために使用したスキル応答は以下のとおりです。新機能を使用する前に、新しいenvironment.aplVersionプロパティを使用して、APL 1.1がサポートされているかどうかを確認している点に注目してください。APL 1.0までしかサポートしていないデバイスの場合、このAPLドキュメントでは静止したテキストで「Welcome to APL 1.0」が表示されます。APL 1.1をサポートしているデバイスでは、上記のアニメーションが表示されます。電球のアイコンは、新しいAlexa Vector Graphics(AVG)コンポーネントを使用して表現されたベクターグラフィックスです。AVGはScalable Vector Graphics(SVG)仕様のサブセットです。ここでは、Parallel APLコマンドによって並行して実行される複数のAnimateItemコマンドで、電球とテキストをアニメーション化しています。</p> <pre> <code class="language-java">{ &quot;directives&quot;: [ { &quot;type&quot;: &quot;Alexa.Presentation.APL.RenderDocument&quot;, &quot;token&quot;: &quot;none&quot;, &quot;document&quot;: { &quot;type&quot;: &quot;APL&quot;, &quot;version&quot;: &quot;1.1&quot;, &quot;theme&quot;: &quot;auto&quot;, &quot;graphics&quot;: { &quot;lightbulb&quot;: { &quot;type&quot;: &quot;AVG&quot;, &quot;version&quot;: &quot;1.0&quot;, &quot;height&quot;: 48.0, &quot;width&quot;: 48.0, &quot;parameters&quot;: [{ &quot;default&quot;: &quot;white&quot;, &quot;type&quot;: &quot;color&quot;, &quot;name&quot;: &quot;fillColor&quot; }], &quot;items&quot;: [{ &quot;type&quot;: &quot;path&quot;, &quot;fill&quot;: &quot;${fillColor}&quot;, &quot;stroke&quot;: &quot;pink&quot;, &quot;strokeWidth&quot;: 1, &quot;pathData&quot;: &quot;M15.001,15c-0.032,0-0.064-0.001-0.096-0.004c-0.55-0.053-0.953-0.541-0.9-1.091c0.449-4.682,4.189-8.425,8.895-8.9 c0.56-0.052,1.041,0.346,1.096,0.895c0.055,0.55-0.345,1.04-0.895,1.096c-3.759,0.379-6.747,3.365-7.105,7.1 C15.946,14.613,15.51,15,15.001,15z M30.5,43c0-0.553-0.448-1-1-1h-11c-0.552,0-1,0.447-1,1s0.448,1,1,1h11 C30.052,44,30.5,43.553,30.5,43z M30.5,47c0-0.553-0.448-1-1-1h-11c-0.552,0-1,0.447-1,1s0.448,1,1,1h11 C30.052,48,30.5,47.553,30.5,47z M37.906,19.845c-0.54,1.272-1.177,2.482-1.821,3.652c-0.432,0.784-0.879,1.594-1.272,2.4 c-1.158,2.374-1.962,4.901-2.389,7.512c-0.041,0.251-0.075,0.513-0.11,0.779C32.074,35.988,31.676,39,28.304,39h-8.607 c-3.372,0-3.769-3.012-4.007-4.812c-0.036-0.267-0.068-0.528-0.109-0.779c-0.427-2.611-1.227-5.139-2.385-7.513 c-0.394-0.805-0.833-1.616-1.265-2.399c-0.645-1.17-1.296-2.38-1.836-3.652c-1.772-4.171-1.285-8.833,1.284-12.788 C13.964,3.076,18,0.457,23,0.059V0.008L23.938,0l0.006,0.003L25,0v0.059c5,0.398,9.036,3.017,11.622,6.998 C39.191,11.012,39.678,15.673,37.906,19.845z M31.781,28H16.219c0.589,1.651,1.047,3.348,1.331,5.087 c0.044,0.271,0.082,0.553,0.12,0.839C17.98,36.271,18.3,37,19.696,37h8.607c1.396,0,1.716-0.729,2.026-3.074 c0.038-0.287,0.075-0.568,0.12-0.839C30.734,31.348,31.191,29.651,31.781,28z M35.003,8.146C32.592,4.434,28.414,2.082,24.1,2.008 l-0.118-0.002L23.9,2.008c-4.314,0.074-8.492,2.426-10.903,6.138c-2.201,3.389-2.599,7.368-1.091,10.917 c0.5,1.179,1.113,2.291,1.762,3.469c0.443,0.805,0.902,1.638,1.317,2.487c0.157,0.322,0.29,0.654,0.435,0.981h17.16 c0.145-0.327,0.278-0.659,0.435-0.98c0.416-0.85,0.874-1.683,1.317-2.488c0.649-1.178,1.262-2.29,1.762-3.468 C37.602,15.514,37.204,11.535,35.003,8.146z&quot; }] } }, &quot;import&quot;: [{ &quot;name&quot;: &quot;alexa-layouts&quot;, &quot;version&quot;: &quot;1.0.0&quot; }], &quot;mainTemplate&quot;: { &quot;parameters&quot;: [ &quot;payload&quot; ], &quot;item&quot;: { &quot;type&quot;: &quot;Frame&quot;, &quot;width&quot;: &quot;100%&quot;, &quot;height&quot;: &quot;100%&quot;, &quot;backgroundColor&quot;: &quot;black&quot;, &quot;item&quot;: { &quot;type&quot;: &quot;Container&quot;, &quot;width&quot;: &quot;100vw&quot;, &quot;height&quot;: &quot;100vh&quot;, &quot;items&quot;: [ { &quot;type&quot;: &quot;VectorGraphic&quot;, &quot;when&quot;: &quot;${environment.aplVersion == '1.1'}&quot;, &quot;id&quot;: &quot;imageId1&quot;, &quot;source&quot;: &quot;lightbulb&quot;, &quot;fillColor&quot;: &quot;yellow&quot;, &quot;position&quot;: &quot;absolute&quot;, &quot;width&quot;: &quot;30vw&quot;, &quot;height&quot;: &quot;30vw&quot;, &quot;left&quot;: &quot;10vw&quot;, &quot;top&quot;: &quot;30vh&quot;, &quot;opacity&quot;: 0 }, { &quot;type&quot;: &quot;Text&quot;, &quot;text&quot;: &quot;Welcome&quot;, &quot;color&quot;: &quot;teal&quot;, &quot;textAlign&quot;: &quot;center&quot;, &quot;fontSize&quot;: 38, &quot;id&quot;: &quot;textId1&quot;, &quot;opacity&quot;: &quot;${environment.aplVersion == '1.1' ? 0 : 1}&quot; }, { &quot;type&quot;: &quot;Text&quot;, &quot;top&quot;: &quot;20dp&quot;, &quot;text&quot;: &quot;to&quot;, &quot;color&quot;: &quot;grey&quot;, &quot;textAlign&quot;: &quot;center&quot;, &quot;fontSize&quot;: 50, &quot;id&quot;: &quot;textId2&quot;, &quot;opacity&quot;: &quot;${environment.aplVersion == '1.1' ? 0 : 1}&quot; }, { &quot;type&quot;: &quot;Text&quot;, &quot;text&quot;: &quot;${environment.aplVersion == '1.1' ? 'APL 1.1' : 'APL 1.0'}&quot;, &quot;color&quot;: &quot;crimson&quot;, &quot;textAlign&quot;: &quot;center&quot;, &quot;fontSize&quot;: 92, &quot;id&quot;: &quot;textId3&quot;, &quot;opacity&quot;: &quot;${environment.aplVersion == '1.1' ? 0 : 1}&quot; } ] } } } }, &quot;datasources&quot;: {} }, { &quot;type&quot;: &quot;Alexa.Presentation.APL.ExecuteCommands&quot;, &quot;token&quot;: &quot;none&quot;, &quot;commands&quot;: [{ &quot;type&quot;: &quot;Parallel&quot;, &quot;when&quot;: &quot;${environment.aplVersion == '1.1'}&quot;, &quot;commands&quot;: [ { &quot;type&quot;: &quot;Sequential&quot;, &quot;commands&quot;: [{ &quot;type&quot;: &quot;AnimateItem&quot;, &quot;easing&quot;: &quot;ease-in-out&quot;, &quot;duration&quot;: 6000, &quot;componentId&quot;: &quot;imageId1&quot;, &quot;value&quot;: [{ &quot;property&quot;: &quot;opacity&quot;, &quot;to&quot;: 1 }, { &quot;property&quot;: &quot;transform&quot;, &quot;from&quot;: [{ &quot;translateX&quot;: &quot;100vw&quot; }, { &quot;rotate&quot;: 720 } ], &quot;to&quot;: [{ &quot;translateX&quot;: 0 }, { &quot;rotate&quot;: 0 } ] } ] }, { &quot;type&quot;: &quot;AnimateItem&quot;, &quot;easing&quot;: &quot;ease-in-out&quot;, &quot;duration&quot;: 6000, &quot;componentId&quot;: &quot;imageId1&quot;, &quot;value&quot;: [{ &quot;property&quot;: &quot;opacity&quot;, &quot;to&quot;: 1 }, { &quot;property&quot;: &quot;transform&quot;, &quot;from&quot;: [{ &quot;translateX&quot;: 0 }, { &quot;scale&quot;: 1 } ], &quot;to&quot;: [{ &quot;translateX&quot;: &quot;25vw&quot; }, { &quot;scale&quot;: 2.5 } ] } ] }, { &quot;type&quot;: &quot;Parallel&quot;, &quot;commands&quot;: [{ &quot;type&quot;: &quot;AnimateItem&quot;, &quot;easing&quot;: &quot;ease-in-out&quot;, &quot;duration&quot;: 4000, &quot;componentId&quot;: &quot;textId1&quot;, &quot;value&quot;: [{ &quot;property&quot;: &quot;opacity&quot;, &quot;to&quot;: 1 }, { &quot;property&quot;: &quot;transform&quot;, &quot;from&quot;: [{ &quot;translateX&quot;: &quot;100vw&quot; } ], &quot;to&quot;: [{ &quot;translateX&quot;: 0 } ] } ] }, { &quot;type&quot;: &quot;AnimateItem&quot;, &quot;easing&quot;: &quot;ease-in-out&quot;, &quot;duration&quot;: 6000, &quot;componentId&quot;: &quot;textId2&quot;, &quot;value&quot;: [{ &quot;property&quot;: &quot;opacity&quot;, &quot;to&quot;: 1 }, { &quot;property&quot;: &quot;transform&quot;, &quot;from&quot;: [{ &quot;translateX&quot;: &quot;-100vw&quot; } ], &quot;to&quot;: [{ &quot;translateX&quot;: &quot;0vw&quot; } ] } ] }, { &quot;type&quot;: &quot;AnimateItem&quot;, &quot;easing&quot;: &quot;ease-in-out&quot;, &quot;duration&quot;: 8000, &quot;componentId&quot;: &quot;textId3&quot;, &quot;value&quot;: [{ &quot;property&quot;: &quot;opacity&quot;, &quot;to&quot;: 1 }, { &quot;property&quot;: &quot;transform&quot;, &quot;from&quot;: [{ &quot;translateX&quot;: &quot;100vw&quot; }], &quot;to&quot;: [{ &quot;translateX&quot;: 0 }] } ] } ] } ] } ] }] } ] }</code></pre> <h2>APL向けAlexaデザインシステム</h2> <p>画面付きのAlexa搭載デバイスのサイズや形状はさまざまです。画面付きのさまざまなAlexa搭載デバイスが利用可能になり、さらに多くのユーザーがデバイスを使用するようになっているため、APLスキルを迅速に作成してより多くのユーザーにリーチできるよう、最新のAlexaデザインシステムを導入しました。このデザインシステムにより、デザインする視覚エクスペリエンスの数が少なくて済むようになり、デザイン作業がスピードアップし、あらゆるデバイス向けに展開できます。</p> <p>たとえば、alexa-stylesをAPLドキュメントに読み込み、textStyleBodyスタイルを使ってテキストのスタイルを作成すると、デバイスの一般的な視聴距離に合わせてテキストのサイズが自動的に調整されます。サイズは、Alexaデバイスに適した基本サイズを知るために実施した、ユーザーエクスペリエンスの調査から導き出したものです。Alexaデザインシステムのスタイルを利用すると、ユーザーが離れて見ることが多いTVでは、テキストやその他の視覚要素を別のデバイスで表示された場合とほぼ同じサイズで見ることができるよう、基本サイズを大きくすることができます。</p> <p><img alt="ViewingDistance.gif" src="" /></p> <p>APL向けAlexaデザインシステムには、リソースとスタイルに加えて、APLドキュメントで使用できる新しいレスポンシブ対応コンポーネントとレスポンシブ対応テンプレートが導入されています。このレスポンシブ対応コンポーネントとレスポンシブ対応テンプレートでは、デバイスのモード、サイズ、形状に基づいた対応が行われるため、複数のデバイスを考慮した開発が簡単になります。レスポンシブ対応コンポーネントの例として、タッチデバイスやTVデバイスで必要な状態を備えたタッチ操作/選択可能要素であるAlexaButtonや、画像を表示するAlexaImageがあります。</p> <p>レスポンシブ対応テンプレートは、レスポンシブ対応コンポーネントとプリミティブAPL UI要素(ScrollViewやPagerなど)を組み合わせたもので、Viewport全体を対象とするスタンドアロンのパターンを表示します。レスポンシブ対応テンプレートの例として、テキスト項目のスクロールリストを表示できるAlexaTextListや、スプラッシュスクリーンと背景をレンダリングできるAlexaBackgroundがあります。Alexaデザインシステムのレスポンシブ対応コンポーネントやレスポンシブ対応テンプレートなどの要素のリストについては、<a href="">こちら</a>をご覧ください。</p> <p>今後は、Amazonとパートナー社製の新しいAlexaデバイスのリリースに合わせて、新しいレスポンシブ対応コンポーネントやレスポンシブ対応テンプレートを公開し、新しいViewportプロファイルのサポートを追加する予定です。現在や今後のAlexaデバイスをサポートするAPLドキュメントを作成する際に役立てていただけるよう、Alexaデザインシステムを使用したレスポンシブ対応APLドキュメントの作成方法を説明した新しいガイドを公開しています。<a href="">こちら</a>(英語)をご覧ください。</p> <p>&nbsp;</p> <h2>ツールの改善</h2> <p>APL 1.1では、APLオーサリングエクスペリエンスのさらなる充実を図っています(<a href="">こちら</a>をご覧ください)。今回のバージョンでは、デザイン層で選択した要素がコンポーネント階層で強調表示されるようになりました。これにより、デザインビューに表示されている要素と実際のコンポーネントを関連付けながらコンポーネントのプロパティを更新する作業が簡単になります。</p> <p>今後、APLオーサリングエクスペリエンスでAPLコンポーネントのドラッグアンドドロップを有効にする更新を行う予定です。さらに、APL 1.1オーサリングツールは、レンダリング、データバインディング、式の評価コードを、Alexaデバイスで実行されるランタイムと共有しています。そのため、オーサリングエクスペリエンスと実際にデバイスに表示される内容が違うという状況がかなり少なくなります。</p> <p><img alt="apl-checkers-gif-3.gif" src="" /></p> <h2>自動スケーリング</h2> <p>APLオーサリングエクスペリエンスとスキルのテストシミュレーターには、Small Landscape Hubという新しいViewportプロファイルが追加されています。これは、Alexaデバイスに加わったばかりの<a href="">Echo Show 5</a>をサポートしています。スキルをEcho Show 5向けに最適化しながら、ユーザーに引き続きそのエクスペリエンスを提供できるように、Echo Show 5では画面に合わせてAPL応答が自動的にスケーリングされます。ただしAPLをEcho Show 5向けに最適化することを強くお勧めします。詳細については、<a href="">このブログ記事</a>をご覧ください。</p> <p>最適化が完了し、シミュレーターのSmall Landscape HubまたはEcho Show 5でスキルをテストしたら、以下に示すボックスをオンにして自動スケーリングを停止できます。次に、スキルの認定を申請すると、Echo Show 5での認定作業が開始されます。2019年7月3日より前に認定されたスキルの場合は、視覚要素を最適化済みであっても、自動スケーリングを停止するにはボックスをオンにして再申請する必要があります。</p> <p><img alt="apl-checkers-4.png" src="" /></p> <h2>ssmlToSpeechトランスフォーマーとプログレッシブ応答APIの変更</h2> <p>APL 1.1の公開に合わせて、Alexaにテキストブロックと項目のリストを強調表示して発話させるための、SpeakItemコマンドとSpeakListコマンドで使用できるトランスフォーマーも拡張されました。具体的には、新しいtextToSpeechトランスフォーマーが追加されています。この新しいトランスフォーマーを使用すると、テキストを音声に変換することができます。既存のssmlToSpeechトランスフォーマーは有効な音声合成マークアップ言語(SSML)入力のみを受け入れるようになりました。このトランスフォーマーへの入力は、&lt;speak&gt;&lt;/speak&gt;タグで囲んだ有効なXMLである必要があります。また、<a href="">プログレッシブ応答</a>APIも有効なSSMLのみを入力として受け入れます。スキルに無効なSSMLや生のテキストが使用されている場合、APIからエラーが返されます。</p> <p>問題が発生した場合やご質問がある場合は、<a href="">Alexa開発者フォーラム</a>でフィードバックをご共有ください。投稿する際は、トピックの欄で「APL」を選択してください。</p> <p>新しいAPL 1.1の機能を活用して、すばらしいデザインが作成されることを楽しみにしています。</p> <p>編集注:本ブログは<a href="">Introducing Alexa Presentation Language 1.1 (Beta): Animation, Improved Tools, and the Alexa Design System</a>の翻訳です。</p> /blogs/alexa/post/07e827ae-be21-45e0-a1b1-a3c0bc05884f/build-and-launch-alexa-built-in-products-with-solution-providers Build and Launch Alexa Built-in Products with Solution Providers Sanjay Ramaswamy 2019-07-18T20:11:13+00:00 2019-07-18T20:15:32+00:00 <p><a href="" target="_self"><img alt="solution_provider_image.png" src="" /></a></p> <p>The AVS Solution Provider Program has resulted in a comprehensive portfolio of solutions from 18 SIs, 14 ODMs, and 12 development kit providers.&nbsp;</p> <p><img alt="solution_provider_image.png" src="" /></p> <p>We are constantly looking for ways to enable better collaboration between Original Equipment Manufacturers (OEMs) and the rich portfolio of Alexa Voice Service (AVS) Solution Providers, including Systems Integrators (SIs), Original Design Manufacturers (ODMs), chipset suppliers, and development kit providers. With our newly launched tools and enhancements, OEMs can follow an easier Alexa integration path, benefiting from pre-qualified solutions and process efficiencies to achieve an accelerated path to market.</p> <p>The AVS Solution Provider Program has resulted in a comprehensive portfolio of solutions from <a href="" target="_blank">18 SIs</a>, <a href="" target="_blank">14 ODMs</a>, and 12 development kit providers. Depending on an OEM’s needs for their Alexa project, a solution provider could provide end-to-end hardware and software Alexa integration support, ranging from help testing AVS devices and building a companion app, to providing reference solutions that assist in the development process.&nbsp;In order to ensure that OEMs have a successful and smooth Alexa integration process, we on-board, train, support, and monitor these solution providers to evolve their capabilities and empower them to drive innovative and high-quality experiences for Alexa customers.</p> <h2><strong>Developer Portal Enhancements</strong></h2> <p>To further foster collaboration between OEMs and Solution Providers, we have launched new features on the AVS developer portal. With the <a href="" target="_blank">Product Access Control</a> feature, OEMs can grant access to solution providers at the product level, allowing them to manage different parts of the development cycle. This same feature also allows OEMs to control product access and ensure confidentiality on specific projects, making it easier to innovate and iterate on products. The <a href="" target="_blank">Role Based Access Control</a> feature further enhances access control capabilities by allowing account administrators to assign roles to users in their account and control functionalities that their users can access.</p> <h2><strong>New Development Kit Comparison Table</strong></h2> <p>AVS also works with technology providers to bring OEMs a robust portfolio of development kits that help them prototype Alexa Built-in devices faster and at a lower cost, accelerating their path to market. This portfolio now includes 18 dev kits spanning smart speakers, smart screens, smart home, mesh WiFi routers, micro-controllers, headsets, and set top boxes, among others. To help OEMs select a dev kit that best fits their needs, we have launched a <a href="" target="_blank">Development Kit Comparison Table</a> that allows filtering and comparison across key metrics including the example target application, platform architecture type, and supported features. Not only does this Development Kit Comparison Table reduce the time spent searching for and comparing dev kits, it also increases developer confidence in their choices.</p> <p>“With the growth of the Solution Provider Program and the recent enhancements made to the developer portal, we are further empowering developers to navigate the process of building and launching Alexa Built-in devices. By making the development process clearer and more efficient, we can help device makers to achieve their business goals,” says Priya Abani, director of Alexa Voice Service.</p> <p>To further complement these process efficiencies, we are continually improving the developer experience for all levels of expertise. For developers just starting their AVS journey, we launched the <a href="" target="_blank">Give Your Product a Voice with Alexa</a>&nbsp;tutorial video, which provides an overview of the process and refers to relevant <a href="" target="_blank">AVS Documentation</a> pages. As questions arise along the way, developers can quickly check for answers on the revamped <a href="" target="_blank">AVS Frequently Asked Questions</a> page&nbsp;or submit a question on the highly-monitored <a href="" target="_blank">AVS Knowledge Base and Forum</a> for an AVS member to address within 48 hours.</p> <p>AVS is committed to supporting developers along their Alexa integration journey. Stay tuned for more improvements coming soon.</p> /blogs/alexa/post/c66e83f6-a51d-4f7c-81b5-42c6e4a091eb/announcing-general-availability-for-alexa-skill-connections-jp Alexa Skill Connectionsが一般公開されました:別スキルにタスクを任せて生産性を向上できます Chisato Hiroki 2019-07-17T07:53:19+00:00 2019-07-17T07:53:19+00:00 <p>このたび、Alexa Skills KitのSkill Connectionsが一般公開されました。現時点でAlexaが利用できる場所であれば、どこでも利用できます。Skill Connectionsとは、特定のタスクを別のスキルに実行させる機能のことです。スキルに大掛かりな変更を加えることなく機能を拡張し、さまざまなユーザーリクエストに応えられるようになります。</p> <p>このたび、Alexa Skills KitのSkill Connectionsが一般公開されました。現時点でAlexaが利用できる場所であれば、どこでも利用できます。Skill Connectionsとは、特定のタスクを別のスキルに実行させる機能のことです。スキルに大掛かりな変更を加えることなく機能を拡張し、さまざまなユーザーリクエストに応えられるようになります。</p> <p>Skill Connectionsを使用すると、あるスキルから別のスキルが提供するタスクを呼び出すことができます。これにより、ユーザーエクスペリエンスをコントロールしつつ、頻度の高いタスクを外部のプロバイダーに任せることが可能になります。現在、印刷、レストランの予約、乗り物の手配などの機能が利用できます。</p> <p>&nbsp;</p> <h3><strong>スキルの既存機能を拡張する</strong></h3> <p>これまでは、スキルごとにすべての機能を開発する必要がありました。Skill Connectionsを使えば、単純なタスクを別のスキルに任せて機能を拡張できます。たとえば、Skill Connectionsでゲームスキルに印刷機能を加えれば、ユーザーはいつでもスコアボードを印刷できるようになります。食事に関するスキルであれば、Skill Connectionsでレストラン予約機能を追加することもできます。</p> <p>現時点で、Skill Connectionsにより利用できるタスクは次の5つです。</p> <ul> <li>AMAZON.PrintImage</li> <li>AMAZON.PrintPDF</li> <li>AMAZON.PrintWebPage</li> <li>AMAZON.ScheduleTaxiReservation</li> <li>AMAZON.ScheduleFoodEstablishmentReservation</li> </ul> <h3>&nbsp;</h3> <h3><strong>リクエスターとしてユーザーとの対話をシンプルに</strong></h3> <p>Skill Connectionsを利用してタスクを任せる側のスキルを、リクエスターと呼びます。Skill Connectionsでは、別のスキルにリクエストを送る際、有用なコンテキスト情報を渡すことできます。たとえば、何かの予約を入れるスキルの場合、Skill Connectionsを使用してタクシー予約スキルに住所と予約時刻を渡すことで、予約が簡単になります。これからは、ユーザーが複数のスキルに情報を渡して知らせる必要はありません。必要に応じて、Alexaが接続されたスキルを自動で有効にします。スキルをリクエスターにするには、必要なハンドラーを実装して再公開します。</p> <p>たとえば、AllrecipesのAlexaスキルでは、Skill Connectionsを使ってレシピを印刷できます。「印刷機能によって、全体的なスキルのユーザーエクスペリエンスが向上しました。家庭での料理中に、AlexaでAllrecipesスキルを使うだけで、自然な会話の流れで好きなレシピを簡単に印刷できるようになったのです。」と、Meredith Digitalのイノベーション担当VP、Corbin de Rubertis氏は言います。</p> <p>&nbsp;</p> <h3><strong>Skill Connections</strong><strong>のプロバイダーになる</strong></h3> <p>別のスキルから任されたタスクを実行する側のスキルを、プロバイダーと呼びます。現在米国でSkill Connectionsのカタログには、印刷プロバイダーとしてエプソン(日本でも利用可)、キヤノン(日本でも利用可)、HPが、乗り物予約のプロバイダーとしてUberが、レストラン予約プロバイダーとしてOpenTableが登録されています。スキルをプロバイダーとして登録するには、スキルのマニフェストを更新してハンドラーを実装します。その後スキルの認定プロセスに再申請して承認されれば登録は完了です。Alexaは、複数のシグナルに基づいてリクエスタースキルにプロバイダースキルを提示します。シグナルには、プロバイダースキルの人気、該当地域で利用できるかどうか、ユーザーが最近使用したかどうかなどがあります。実装方法の詳細とサンプルコードは、ドキュメントを参照してください。</p> <p>&nbsp;</p> <h3><strong>さあ始めましょう</strong></h3> <p>サポートされる接続やスキーマといったその他の詳細は、 <a href="" target="_blank">Alexa Skill Connectionsに関する開発者向けドキュメント</a>に記載されています。こちらのドキュメントで、Skill Connectionsを使ってAlexaスキルを拡張する方法をぜひご覧ください。</p> <p>&nbsp;</p> <p>編集注:このブログは<a href="">Announcing General Availability for Alexa Skill Connections: Improving Productivity by Outsourcing Tasks to Other Skills</a>の翻訳です。</p> /blogs/alexa/post/07fe7ede-025d-4f8d-b25c-b27a238f51d5/how-vocala-is-creating-a-growing-voice-business How Vocala is Creating a Growing Voice Business Emma Martensson 2019-07-16T08:00:00+00:00 2019-07-16T08:00:00+00:00 <p><img alt="" src="" style="height:481px; width:1908px" /></p> <p><a href="" target="_blank">Vocala</a>, a digital agency based in Surrey, England and led by Richard Matthews, decided in 2018 to create a voice studio that specialises in creating games and interactive skills for Alexa-enabled devices.</p> <p><img alt="RichardMatthews_vocala_case_study.jpg" src="" /></p> <p><a href="" target="_blank">Vocala</a>, a digital agency based in Surrey, England and led by Richard Matthews, decided in 2018 to create a voice studio that specialises in creating games and interactive skills for Alexa-enabled devices. Now, eighteen months on from the decision, they have over ten skills, including leading titles with tens of thousands of daily players. Vocala also has a number of clients that seek their knowledge on voice to build best-in-class experiences.</p> <h2>Developing Monetised Alexa Skills</h2> <p>Vocala have two approaches to ideating new skills:</p> <ol> <li><strong>Create skills based on popular TV based gameshows and entertainment programmes. </strong>They identify TV programmes they believe will adapt well to voice first experiences and contact the IP owners to secure the rights to develop skills using the brands. Vocala has secured the rights to <a href=";qid=1561649506&amp;s=digital-skills&amp;sr=1-1" target="_blank">Deal or No Deal</a>, <a href=";qid=1561649584&amp;s=digital-skills&amp;sr=1-1" target="_blank">Pointless</a> and <a href=";qid=1561649609&amp;s=digital-skills&amp;sr=1-1" target="_blank">Tenable</a>.</li> <li><strong>Develop and create their own games. </strong>Any skill idea that has potential is drawn up in a simple format before it gets built. Vocala creates game engine prototypes and plays them. If the game is fun, they then allocate time to developing the skill.</li> </ol> <p>Everyone in the Vocala team submits ideas for new skills. These ideas are then vetted based on a voice first use case, development potential, audience type, marketing opportunities and competitive landscape. “The most important factor in our ideation stage is the understanding of the people for whom we’re designing the skill – the customer,” says Richard.</p> <p>In the VUI design stage, Vocala creates a customer journey map to identify the customers’ needs at the different stages of engagement. Once they have defined the various scenarios, they then create a sample dialog flow which outlines keywords that lead to the interactions and the branches, that represent where the conversation could lead to. They then write up full conversational dialogs of all the interactions that could take place between the customer and Alexa.</p> <p>The next step is to gather all the required assets for the game such as voice overs, music, and graphic design assets, as well as assessing their use of <a href="">in-skill purchasing (ISP)</a>. To date, Vocala has seven games using ISP, which gives them the opportunity to experiment with the upsell and product types. As each of their skills have different formats, they are able to see which product type and upsell design works with what format and, continue to improve based on reviews.</p> <h2>Free Content First, Premium Content Second</h2> <p>With the introduction of ISP, Vocala is extending their focus to include sales, marketing, audience profiling, upsell opportunity and premium content. However, Richard emphasized the importance of getting the free experience right prior to focusing on the premium experience. “Our focus has always been to drive volume of players and, to do this you need to make sure your free skill has all the attributes to excite and gain loyal, repeat players, who will want to purchase your premium content,” says Richard. He continues “ISP gives you the opportunity to add premium content, which your customers will pay for – but first they need to enjoy and use your skill with the free play options. Your focus should be on making your skill the best it can be – with premium content to follow.” His advice is to create a roadmap and a clear strategy, as he thinks this is vital when developing the skill, as well as understanding the audience so that the skill is targeted towards them.</p> <h2>Monetisation Provides Growth and Experimentation Opportunities for Voice Businesses</h2> <p>Vocala believes monetisation will give developers the opportunity to earn money for their work and, further develop the relationship with their customers. It will give them the resources to continue to invest in their skills to grow a bigger fan base and offer more to customers. “Premium means premium, so the time to develop will take longer, but the investment made will be returned, if done correctly. Through financial support from the people, who love the skill,” says Richard. He continues “Our goal is that monetisation will enable us to continue to release new skills and, to enhance existing skills, add more visual content, media and creative resource to our skills.”</p> <p>Vocala’s roadmap and pipeline is robust, with new skills already in development. They continue to evaluate IP opportunities and are in talks with a number of content owners for new skill releases in 2019 and beyond. In addition to developing their own skills, they’ve also attracted clients for their agency business from brands and companies who want to offer skills. It’s a busy but exciting time, and Vocala is recruiting to meet the demand and looking at new office space to accommodate their expanding team.</p> <h2>Related Content</h2> <ul> <li><a href="">Make Money with In-Skill Purchasing</a></li> <li><a href="">Sony Pictures Television Grows Its Brand and Reaches New Customers with Monetized Alexa Skills Jeopardy! and Who Wants to Be a Millionaire</a></li> <li><a href="">With In-Skill Purchasing, Gal Shenar Sets His Growing Voice Business Up for Long-Term Success</a></li> <li><a href="">Alexa Game Skill “Would You Rather for Family” Adds In-Skill Purchasing and Sees Revenue Growth</a></li> </ul> <h2>Make Money by Creating Engaging Voice Games Customers Love</h2> <p>With ISP, you can sell premium content to enrich your Alexa skill experience. ISP supports one-time purchases for entitlements that unlock access to features or content in your skill, subscriptions that offer access to premium features or content for a period of time, and consumables which can be purchased and depleted. You define your premium offering and price, and we handle the voice-first purchasing flow. <a href=";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/8840aefa-3f43-4049-9974-6e39360d11b4/alexa-skills-kit-expands-to-include-hindi Alexa Skills Kit Expands to Include Hindi; Alexa Voice Service to Follow Jeeta Das 2019-07-16T06:42:29+00:00 2019-07-19T16:53:55+00:00 <p><img alt="Blog.png" src="" /></p> <p>Today, we’re excited to announce that developers can now start building Alexa skills for customers in India using the new Hindi voice model of <a href="">Alexa Skills Kit</a> (ASK).</p> <p><img alt="Blog.png" src="" /></p> <hr /> <p>Since October 2017, Indian customers have used Alexa enabled devices to access thousands of voice experiences, called “skills”, built by developers worldwide. Today, we’re excited to announce that developers can start building Alexa skills for customers in India using the new Hindi voice model on the <a href="" target="_blank">Alexa Skills Kit</a> (ASK). Developers will get a head start and will be able to submit skills for certification as we prepare to offer engaging experiences for Alexa users in one of the most spoken languages in the country. Commercial hardware manufacturers who want to develop Alexa Built-in products for Hindi-speaking customers in India can request early access to the invite-only <a href="" target="_blank">Alexa Voice Service</a> (AVS) developer preview.</p> <hr /> <h3><strong>Create New Skills for Alexa with the Alexa Skills Kit</strong></h3> <p><a href="" target="_blank">Alexa Skills Kit</a> (ASK) is a collection of self-service APIs and tools that make it fast and easy for developers to create new voice-driven capabilities, or skills, for Alexa. Developers don’t need experience with speech recognition or natural language understanding to build a skill—Alexa does all the work to hear, understand, and process the customer’s spoken request so developers don’t have to.</p> <h3><strong>How to Build Alexa Skills for Hindi Speaking Customers</strong></h3> <p>It’s easy to start building voice experiences for Alexa in the new Hindi language model. Before you begin building your skill in Hindi, be sure to select Hindi (IN) as your language model in the <a href="" target="_blank">Alexa Developer Console</a>. However, if you’re new to the skill building process, check out this <a href="" target="_blank">detailed walkthrough</a> to get started. To build a skill in the Hindi voice model, get started with the following:</p> <ul> <li>Try our basic <a href="" target="_blank">fact skill</a> sample</li> <li>Go through a complete, <a href="" target="_blank">step by step guide</a> to create a new skill in Hindi</li> <li>Browse through our <a href="" target="_blank">technical documentation</a> to understand the nuances in building a skill for the Hindi language model</li> </ul> <h3><strong>Add Hindi to Your Existing English (India) Skill and Reach New Customers</strong></h3> <p>If you’re an Alexa developer and want to engage with new Hindi-speaking customers in India, you can update your existing published skill in India for Hindi by following these <a href="" target="_blank">simple steps</a>.</p> <h3><strong>Attend Our Webinar to Start Building Skills in Hindi</strong></h3> <p>Sign up for our first webinar on Hindi skill building scheduled on July 24 at 4 pm IST. Alongside our Technical Evangelist (Sohan Maheshwar) and Solutions Architect (Karthik Ragubathy) you will learn about how to reach new Hindi speaking customers with Alexa skills built using Hindi and ask any questions you may have. <a href="" target="_blank">Register here</a></p> <h3><strong>Submit and Win Exclusive Merchandise</strong></h3> <p>Ready to build an Alexa skill using Hindi? Developers in India who have their Hindi-language skill certified for publication in India before July 31 will receive exclusive Early Bird Alexa merchandise. <a href="" target="_blank">Learn more</a></p> <h3><strong>Share Feedback and Make the Skill Building Process in Hindi (IN) Better</strong></h3> <p>Join our <a href="" target="_blank">Slack channel</a> to get connected with your peer developers building for Hindi. If you have any questions or feedback on the HI_IN model, please <a href=";sc_channel=website&amp;sc_publisher=devportal&amp;sc_campaign=Conversion_Contact-Us&amp;sc_assettype=conversion&amp;sc_team=us&amp;sc_traffictype=organic&amp;sc_country=united-states&amp;sc_segment=all&amp;sc_itrackingcode=100020_us_website&amp;sc_detail=alexa-payment&amp;ref_=pe_1725760_157297530" target="_blank">contact us</a>.</p> <h3><strong>Integrate Alexa into Your Devices with the Alexa Voice Service (AVS)</strong></h3> <p>AVS enables device makers to integrate Alexa directly into their products to bring the convenience of voice interaction to any connected device. AVS provides a suite of resources, including APIs, hardware development kits, software development kits, and documentation. Device makers like Dish TV, Mybox, Sony, boAt and more will soon be able to leverage these resources to launch Alexa built-in products with the Hindi-language model for India. Commercial device makers that wish to add Hindi to their devices can request early access to our invite-only developer preview now through the <a href="" target="_blank">AVS Developer Portal</a>.</p> /blogs/alexa/post/efffb6a8-2921-486f-bca8-f58f015696df/learn-to-build-your-first-hindi-skill Learn To Build Your First Hindi Skill Sohan Maheshwar 2019-07-16T06:35:19+00:00 2019-07-16T07:19:05+00:00 <p>Developers can now use the Alexa Skills Kit to build skills for Hindi speaking customers in India using the new Hindi language model. This blogpost describes how to create the language model for a Hindi skill and how to create your skill's backend to deliver the right content.</p> <p>Today we announced that developers can now use the Alexa Skills Kit (ASK) to build skills for Hindi speaking customers in India using the new Hindi (hi-IN) language model. This is a detailed walkthrough for building your first skill in Hindi. To add the Hindi language model to your existing skill, read this <a href="" target="_blank">detailed guide</a>.</p> <p>In this tutorial, you will learn:</p> <ul> <li>&nbsp;&nbsp;&nbsp; How to create the language model for a Hindi skill</li> <li>&nbsp;&nbsp;&nbsp; How to create your skill’s backend so your skill delivers the right content to your customers<br /> &nbsp;</li> </ul> <h2>Create a skill in 5 minutes</h2> <ol> <li>Go to the <a href="" target="_blank">Amazon Developer Portal</a>. In the top-right corner of the screen, click the &quot;Sign In&quot; button<strong> </strong>(If you don't already have an account, you will be able to create a new one for free.)</li> <li>Once you have signed in, move your mouse over the ‘Your Alexa Consoles’ text at the top of the screen and Select the Skills Link.</li> <li>Click the ‘Create Skill’ button</li> <li>To type in Hindi, you can choose to use the built-in keyboard on your OS or a transliteration tool of your choice.</li> <li>We are going to create a simple Hello World skill in Hindi. Give your new skill a <strong>Name</strong>, such as नमस्ते दुनिया. Choose the Default Language as Hindi (IN).<br /> <br /> <img alt="Picture1.png" src="" /><br /> &nbsp;</li> <li>Keep the default <strong>Custom</strong> model selected, and scroll the page down. Choose <strong>Alexa-Hosted</strong> for the method to host your skill's backend resources. If you would prefer to manage the backend resources in your own AWS account or HTTPS endpoint, choose the <strong>Provision your own</strong> option. Check out <a href="" target="_blank">this guide</a> for a walkthrough on how to manage your backend with an AWS account.<br /> <br /> <img alt="Picture2.png" src="" style="height:453px; width:768px" /></li> <li>Scroll back up and select the <strong>Create Skill</strong> button at the top right. It will take a minute to create your Alexa-hosted skill, then you will be taken to the Build tab of the console.</li> </ol> <p>Every skill has a front end and a back end. The front end is where you map utterances (what the user says) into an intent (the desired action). You must decide how to handle the user's intent in the backend. Let’s build the front end of the skill.</p> <h2>Build the Interaction Model for your skill</h2> <ol> <li>On the left-hand navigation panel, select the <strong>Invocation</strong> tab under <strong>Interaction Model.</strong> In the text field provided, the invocation name by default will be नमस्ते दुनिया. Let’s leave it as is.<br /> <br /> <img alt="Picture3.png" src="" style="height:426px; width:870px" /></li> <li>By default, the skill has a HelloWorldIntent. Let’s remove all existing utterances and add Hindi utterances that indicate a sort of greeting. Here are few:<br /> <br /> <strong>नमस्ते दुनिया<br /> नमस्ते<br /> नमस्ते friend<br /> hello</strong><br /> <br /> You will note that these utterances contain a mix of Hindi and English. A rule of thumb to follow is to use Devanagari script for Hindi words and Latin script for foreign words.<br /> <br /> <img alt="Picture4.png" src="" style="height:438px; width:950px" /></li> <li>Once you’ve added a sufficient number of utterances, save and build your model. We will now build the back end for your skill.</li> </ol> <h2>Build the backend of the skill</h2> <p>The first thing a user will want to do with the skill is open it. The intent of opening the skill is built into the experience, so you don't need to define this intent in your front end. However, you need to respond to the <strong>HelloWorldIntent</strong> intent in your backend. In this step, you will update your backend code to greet the user when they open the skill.</p> <p>&nbsp;</p> <ol> <li>Open the नमस्ते दुनिया skill in the Alexa developer console. Click the Code tab. The code editor opens the index.js file.<br /> <br /> <img alt="Picture5.png" src="" style="height:278px; width:582px" /></li> <li> <p>You will use the ASK SDK for Node.js module. To define how your skill responds to a JSON request, you will define a handler for each intent</p> <p>There are two pieces to a handler:<br /> <strong>canHandle()</strong> function<br /> <strong>handle()</strong> function<br /> <br /> The <strong>canHandle()</strong> function is where you define what requests the handler responds to.<br /> The <strong>handle()</strong> function returns a response to the user.<br /> <br /> If your skill receives a request, the <strong>canHandle()</strong> function within each handler determines whether or not that handler can service the request. In this case, the user wants to launch the skill, which is a <strong>LaunchRequest</strong>. Therefore, the <strong>canHandle()</strong> function within the <strong>LaunchRequestHandler</strong> will let the SDK know it can fulfill the request.</p> </li> <li> <p>This <strong>speechText</strong> variable in the <strong>LaunchRequestHandler() </strong>method contains the string of words the skill should say back to the user when they launch the skill. Let’s<strong> modify the speechText variable to hear Alexa speak in Hindi.</strong><br /> &nbsp;</p> <pre> <code class="language-javascript">const speechText = “नमस्ते, आप hello या help कह सकते हो. आप क्या करना चाहेंगे?”</code></pre> <p><br /> <img alt="picture8.png" src="" /><br /> <br /> &nbsp;</p> </li> <li> <p>Look for <strong>handlerInput.responseBuilder</strong>. This piece of the SDK will help build the response to the user. On the next line, look for <strong>.speak(speechText)</strong>. Note the <strong>speechText</strong> variable, which you defined earlier. Calling the <strong>.speak()</strong> function tells <strong>responseBuilder</strong> to speak the value of <strong>speechText</strong> to the user.</p> </li> <li> <p>If you look at the code, you will notice the <strong>HelloWorldIntentHandler</strong>. This method handles any request from the HelloWorldIntent. Earlier we had defined few utterances for this intent in our interaction model. Let’s modify the speechText variable in the HelloWorldIntentHandler() to reply to the user when the user greets the skill.</p> </li> </ol> <pre> <code class="language-javascript">const speechText = “नमस्ते दोस्त”</code></pre> <p><img alt="Picture6.png" src="" /></p> <p>That’s it. Click <strong>Save</strong> and then <strong>Deploy.</strong> Your skill will take a few moments to deploy.</p> <h2>Test the Skill in the Simulator</h2> <ol> <li>&nbsp;Access the <strong>Alexa Simulator</strong>, by selecting the <strong>Test</strong> tab from the top navigation menu. Toggle the dropdown from <strong>Off</strong> to <strong>Development</strong> to enable Skill Testing<br /> <br /> <img alt="Picture7.png" src="" /><br /> &nbsp;</li> <li>To test your skill, Type the invocation name of your skill followed by a launch phrase. For example, नमस्ते दुनिया <em>खोलो</em>. You can also say <em>Open</em> नमस्ते दुनिया. If all goes well, you will hear the response defined in your <strong>LaunchRequestHandler</strong>.<br /> <br /> <img alt="picture9.png" src="" /><br /> &nbsp;</li> <li>Test the skill by saying नमस्ते or any of the other utterances we had defined earlier.<br /> <br /> <img alt="picture10.png" src="" /></li> </ol> <p>That’s it! You have just built your first Hindi skill.<br /> <br /> Since your users can reply in a mix of English and Hindi, there are few guidelines and best practices that you should follow while building a Hindi skill. Read <a href="" target="_blank">this document</a> to find out more.</p> <p>Sign up for our first webinar on building Hindi skills on July 24th at 4pm IST. <a href="" target="_blank">Register here.</a></p> /blogs/alexa/post/43be2da7-53ba-4687-a222-2518f0dbf8d0/how-to-update-your-alexa-skills-for-hindi How to Update Your Alexa Skills for Hindi Karthik Ragubathy 2019-07-16T06:34:53+00:00 2019-07-19T05:54:17+00:00 <p>Developers can now use the Alexa Skills Kit to build skills for Hindi speaking customers in India using the new Hindi language model. This blogpost describes how to update your existing skills model and Lambda functions to support the Hindi(IN) model.&nbsp;</p> <p>Today we <a href="" target="_blank">announced</a> that developers now can use the Alexa Skills Kit (ASK) to build skills for Hindi speaking customers in India using the new Hindi (IN) language model.</p> <p>If you are new to skill development, check out this <a href="" target="_blank">detailed walkthrough</a> to get started. If you’re an experienced Alexa developer, you can enhance your existing skill by extending it to support the new Hindi language model. This tutorial will show you how you can add support for the Hindi (IN) model for your existing skills. It will also show you how you can use ASK to enable Alexa to respond based on locales.</p> <p>In this tutorial, we will be localizing the <a href="" target="_blank">Space Facts Skill</a>. By the end of this tutorial, you will understand</p> <ol> <li>How to update an Alexa skill for Hindi customers using the new Hindi (IN) language model</li> <li>How to update your AWS Lambda function so your skill delivers the right content to your customers in each of the supported regions—all from a single code base.</li> </ol> <h2>Add the Hindi Language Model for your Skill</h2> <p>1. Navigate to your existing skill on the <a href="" target="_blank"><u>Amazon Developer Portal</u></a>.</p> <p>2. Click on the language drop down on the top left of the screen and select the last option: “<strong>Language Settings.</strong>”</p> <p><img alt="language_settings.png" src="" /></p> <p>3. Click on <strong>“Add new language”</strong></p> <p><img alt="add_new_language.png" src="" /></p> <p>4. Select “<strong>Hindi (IN)</strong>”</p> <p><img alt="add_hindi_model.png" src="" /></p> <p>5. Click on Save at the top of the screen. Once your settings are saved, click on the Build tab.You will now have Hindi language as an option in the language dropdown menu.</p> <p>6. Now provide the interaction model for the Hindi (IN) version. You can do this by copying the interaction model from one of the English versions of our skill, and translating&nbsp;the <strong>sample utterances</strong>, <strong>invocation name</strong>, <strong>slot values</strong> and <strong>synonyms</strong>.</p> <p>While translating&nbsp;the invocation name, sample utterances, slot values and synonyms, use <strong>Devanagari script</strong> for <strong>Hindi words</strong> and <strong>Latin script</strong> for <strong>English words</strong>.For example, consider our space facts skill. There are many ways a user can ask the skill to give a fact.</p> <p><strong>मुझे एक fact बताओ<br /> मुझे अंतरिक्ष के बारे में एक fact बताओ<br /> मुझे space के बारे में एक fact बताओ<br /> मुझे अंतरिक्ष के बारे में ज्ञान बताओ</strong></p> <p>For the invocation name, I will use <strong>'अंतरिक्ष facts'</strong></p> <p>Notice how we used a mix of Devanagari script for Hindi Words and Latin script for English words. The same holds true for your invocation name, slot values and prompts. For a list of Hindi conventions, follow our <a href="" target="_blank">Hindi conventions&nbsp;document</a>.&nbsp;</p> <p>7. We now have the language model built for <strong>Hindi.</strong> <strong>Click on the</strong> <strong>Save Model</strong> <strong>and the</strong> <strong>Build Model</strong> <strong>button.</strong></p> <p>If your interaction model uses any <a href="" target="_blank"><u>built-in slot t</u><u>y</u><u>pes</u></a>, you may need to make changes to ensure that the types are supported in the HI-IN locale. See the <a href="" target="_blank"><u>Slo</u><u>t</u> <u>Type Reference</u></a> for a list of slot types for each supported locale.</p> <p>Once you have finished translating your interaction model for Hindi (IN), you need to customize the responses your skill returns for the different locales that you support. You can do this by updating your Lambda Function.</p> <h2>Update the Lambda Function</h2> <p>Now that your skill is ready to support multiple regions, you may want to update your Lambda function to ensure that your skill provides responses translated or tailored to each supported region.</p> <p>At the least, you need to translate to Hindi the strings the skill is sending to Alexa to render with the voice of Alexa. One rule of thumb while writing out your responses in Hindi is to follow colloquial Hindi (Ex: The Hindi you hear in Radio, Bollywood movies) instead of Pure Hindi.</p> <p>You can use any localization library to help you to match strings to locale. In this article I’m using an example I made with the <a href="" target="_blank"><u>ASK SDK v2 for Node.js</u></a>, which you can replicate.</p> <h3><strong>Step </strong><strong>1</strong><strong>: Install a basic string localization library or class.</strong></h3> <p>To facilitate localizing your skills, you should use one of the internationalization libraries available for the language of your choosing or write your own. For this example, I am using the <a href="" target="_blank">i18next</a> library.&nbsp;</p> <p>If you are developing locally with the ASK Command-Line Interface (CLI), simply install them as you would install any other npm module using:</p> <pre> <code class="language-bash">npm i —save i18next i18next-sprintf-postprocessor</code></pre> <p>If you are developing using Alexa Hosted Skills, navigate to the Code tab and add the packages to your package.json file. Save and Deploy your Lambda function.&nbsp;</p> <pre> <code class="language-json">{ &quot;name&quot;: &quot;hello-world&quot;, &quot;version&quot;: &quot;0.9.0&quot;, &quot;description&quot;: &quot;alexa utility for quickly building skills&quot;, &quot;main&quot;: &quot;index.js&quot;, &quot;scripts&quot;: { &quot;test&quot;: &quot;echo \&quot;Error: no test specified\&quot; &amp;&amp; exit 1&quot; }, &quot;author&quot;: &quot;Amazon Alexa&quot;, &quot;license&quot;: &quot;ISC&quot;, &quot;dependencies&quot;: { &quot;ask-sdk-core&quot;: &quot;^2.0.7&quot;, &quot;ask-sdk-model&quot;: &quot;^1.4.1&quot;, &quot;aws-sdk&quot;: &quot;^2.326.0&quot;, &quot;i18next&quot;: &quot;^11.8.0&quot;, &quot;i18next-sprintf-postprocessor&quot;: &quot;^0.2.2&quot; } }</code></pre> <h3><strong>Step 2:&nbsp;Add a Request Interceptor</strong></h3> <p>Once the&nbsp;<a href="" target="_blank"><u>i18next</u></a>&nbsp;library has been installed, I will add a Request Interceptor. The interceptor is executed each time a request is received immediately before the control is handed to the relevant intent handler, which in this case can be GetNewFactIntentHandler, HelpIntentHandler, etc. The LocalizationInterceptor intercepts the request, gets the locale of the user and then returns the string from the&nbsp;language's specific array (which we will see in the later steps).</p> <pre> <code>const i18n = require('i18next'); const sprintf = require('i18next-sprintf-postprocessor'); const LocalizationInterceptor = { process(handlerInput) { // Gets the locale from the request and initializes i18next. const localizationClient = i18n.use(sprintf).init({ lng: handlerInput.requestEnvelope.request.locale, resources: languageStrings, }); // Creates a localize function to support arguments. localizationClient.localize = function localize() { // gets arguments through and passes them to // i18next using sprintf to replace string placeholders // with arguments. const args = arguments; const values = []; for (let i = 1; i &lt; args.length; i += 1) { values.push(args[i]); } const value = i18n.t(args[0], { returnObjects: true, postProcess: 'sprintf', sprintf: values, }); // If an array is used then a random value is selected if (Array.isArray(value)) { return value[Math.floor(Math.random() * value.length)]; } return value; }; // this gets the request attributes and save the localize function inside // it to be used in a handler by calling requestAttributes.t(STRING_ID, [args...]) const attributes = handlerInput.attributesManager.getRequestAttributes(); attributes.t = function translate(...args) { return localizationClient.localize(...args); }; }, };</code></pre> <h3><strong>Step 3: Register your Request Interceptor</strong></h3> <p>Once we have defined the LocalizationInterceptor, I will register it with the <strong>addRequestInterceptors</strong> method as shown below</p> <pre> <code class="language-javascript">const skillBuilder = Alexa.SkillBuilders.custom(); exports.handler = skillBuilder .addRequestHandlers( GetNewFactIntentHandler, HelpIntentHandler, CancelAndStopIntentHandler, SessionEndedRequestHandler ) .addRequestInterceptors(LocalizationInterceptor) .addErrorHandlers(ErrorHandler) .lambda();</code></pre> <h3><strong>Step 4 : Create arrays for Supported Languages</strong></h3> <p>Once the localization interceptor is in place, create arrays for different languages. Assuming you already support the English model, place all of your strings inside an object. This will allow you to localize easily to other languages.</p> <pre> <code>const enData = { translation: { SKILL_NAME: 'Space Facts', GET_FACT_MESSAGE: 'Here\'s your cool fact: ', HELP_MESSAGE: 'You can say tell me a fact, or, you can say exit... What can I help you with?', HELP_REPROMPT: 'What can I help you with?', ERROR_MESSAGE: 'Sorry, I can\'t understand the command. Please say again.', STOP_MESSAGE: 'Goodbye!', FACTS: [ 'A year on Mercury is just 88 days long.', 'Despite being farther from the Sun, Venus experiences higher temperatures than Mercury.', 'On Mars, the Sun appears about half the size as it does on Earth.', 'Jupiter has the shortest day of all the planets.', 'The Sun is an almost perfect sphere.' ], }, }; </code></pre> <p>I’m taking the English string as a base for my translations. The “enData” object contains all the strings used by my skill in the English language. Our interceptor coupled with i18next supports both single strings and arrays, which can be seen on “FACTS”.</p> <h3><strong>Step 5: Localize the strings for Hindi</strong></h3> <p>Using the English strings as base, I created a new array and translated all strings to Hindi and appropriately named the new object as hiData.</p> <pre> <code class="language-javascript">const hiData = { translation: { SKILL_NAME: 'अंतरिक्ष facts', GET_FACT_MESSAGE: 'ये लीजिए आपका fact: ', HELP_MESSAGE: 'आप मुझे नया fact सुनाओ बोल सकते हैं या फिर exit भी बोल सकते हैं... आप क्या करना चाहेंगे?', HELP_REPROMPT: 'मैं आपकी किस प्रकार से सहायता कर सकती हूँ?', ERROR_MESSAGE: 'सॉरी, मैं वो समज नहीं पायी. क्या आप repeat कर सकते हैं?', STOP_MESSAGE: 'अच्छा bye, फिर मिलते हैं', FACTS: [ 'बुध ग्रह में एक साल में केवल अठासी दिन होते हैं', 'सूरज से दूर होने के बावजूद, Venus का तापमान Mercury से ज़्यादा होता हैं', 'Earth के तुलना से Mars में सूरज का size तक़रीबन आधा हैं', 'सारे ग्रहों में Jupiter का दिन सबसे कम हैं', 'सूरज का shape एकदम गेंद आकार में हैं' ], }, };</code></pre> <h3><strong>Step 6: Add the translated strings object to the list of supported locales.</strong></h3> <p>When initializing the i18next service during step 2&nbsp;you might have noticed a reference to “languageStrings”. This is the list of supported locales and where to find them. Every language is reference by their locale code, i18next will always search for strings in the most specific match first. If for example you have all your strings available for “en” and only a specific welcome message written for “en-AU”, then requests coming from “en-AU” would receive this single welcome message while every other string would just get served from the “en”-pool.</p> <p>Here we added “hi-IN” to the end of our list and referenced the object we just translated.</p> <pre> <code class="language-javascript">const languageStrings = { 'hi-IN': hiData, 'en-US': enData };</code></pre> <h3><strong>Step 7: Using the strings in your code</strong></h3> <p>Using our interceptor in combination with the i18next library both showed in step 1 we can easily reference strings by their IDs and automatically answer the skill request with the right locale. The selected Strings will be rendered in the language that matches the locale of the incoming request.</p> <p>This handler for the &quot;GetNewFactIntentHandler&quot; just uses the &quot;t&quot; function saved in our request attributes referencing the resource ID. Save and Deploy your Lambda function when you are done</p> <pre> <code class="language-javascript">// core functionality for facts skill const GetNewFactIntentHandler = { canHandle(handlerInput) { const request = handlerInput.requestEnvelope.request; return request.type === 'LaunchRequest' || (request.type === 'IntentRequest' &amp;&amp; === 'GetNewFactIntent'); }, handle(handlerInput) { const requestAttributes = handlerInput.attributesManager.getRequestAttributes(); // gets a random fact by assigning an array to the variable // the random item from the array will be selected by the i18next library // the i18next library is set up in the Request Interceptor const randomFact = requestAttributes.t('FACTS'); // concatenates a standard message with the random fact const speakOutput = requestAttributes.t('GET_FACT_MESSAGE') + randomFact; return handlerInput.responseBuilder .speak(speakOutput) // Uncomment the next line if you want to keep the session open so you can // ask for another fact without first re-opening the skill // .reprompt(requestAttributes.t('HELP_REPROMPT')) .withSimpleCard(requestAttributes.t('SKILL_NAME'), randomFact) .getResponse(); }, };</code></pre> <p>That’s all that it takes to update your skill for Hindi customers. This space facts skill localized to Hindi (IN) is available for everyone to try out in <a href="" target="_blank">NodeJS</a> and <a href="" target="_blank">Python</a>.&nbsp;You can test out your skill using the in-built simulator tool in the Developer Console.&nbsp;</p> <p><img alt="testing_simulator.png" src="" /></p> <h3><br /> <strong>Attend Our Webinar to Update your Skills in Hindi</strong></h3> <p>Sign up for our webinar&nbsp;on Hindi skill building scheduled on July 31 at 4 pm IST, where we will learn how to update your existing&nbsp;Alexa skills to support Hindi locale and ask any questions you may have. Register <a href="" target="_blank">here</a>.</p> <p>We are excited to have Alexa available in Hindi soon, and we can't wait to see what you will build.</p> /blogs/alexa/post/c3d0905b-ee7c-4451-a935-4171a496e3dd/meet-the-alexa-prize-team-members-in-this-year-s-socialbot-grand-challenge Meet the Alexa Prize Team Members Participating in the Socialbot Grand Challenge 3 Lauren Stubel 2019-07-15T17:39:32+00:00 2019-07-15T17:39:32+00:00 <p>On June 5<sup>th</sup> <a href="">we announced the teams</a> selected to compete for the Alexa Prize Socialbot Grand Challenge 3, a university competition to advance the state of the art of conversational AI. Competing teams will work to build on the progress made in previous years to engage and delight users on a range of popular topics from news and current events to sports and entertainment.</p> <p>Today we’ve published detailed profiles shared by the teams and their members. To learn more about them, head to <a href=""></a> to meet the individuals who are helping us have fun and make history with the next generation of AI capabilities.</p> <p>This group of socialbots won’t be available until later this year, but you can stay up to date on all things Alexa Prize by following the #AlexaPrize hashtag. In the meantime, you can continue chatting with the winning socialbots from last year’s challenge by simply saying, “Alexa, let’s chat.”</p> /blogs/alexa/post/977e9729-5316-4fc4-845e-ab263aa70e7c/certification-tips-for-monetized-alexa-skills Certification Tips for Monetized Alexa Skills Ben Porter 2019-07-15T14:00:00+00:00 2019-07-15T14:00:00+00:00 <p><img alt="" src="" style="height:480px; width:1908px" /></p> <p>In-skill purchasing (ISP) lets you sell premium content such as game features and interactive stories with a custom interaction model.&nbsp;Buying in-skill products should be seamless to a customer. Following the tips in this blog will help you achieve that experience.</p> <p><img alt="" src="" style="height:480px; width:1908px" /></p> <p>Every skill published to the Alexa Skills Store goes through a <a href="">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.<br /> <br /> <a href="">In-skill purchasing</a> (ISP) lets you sell premium content such as game features and interactive stories with a custom interaction model. Buying in-skill products should be seamless to a customer. Following the tips in this blog will help you achieve that experience. Customers may ask to shop in-skill products or agree to purchase suggestions you make while they interact with your skill. In-skill purchasing uses the payment options already associated with their Amazon account.<br /> <br /> This blog will explore a few common skill certification pitfalls that are relatively easy to avoid. Addressing these upfront should lead to an improved certification experience for you.</p> <h2><strong>1. Only<em> </em>Reference Premium Content in the Language Models that Support In-Skill Purchasing</strong></h2> <p>At this time, <a href="">In-Skill purchasing</a> is available only for Alexa skills in <a href="">select languages</a>. If your skill supports languages other than the ones where ISP is supported, ensure you do not reference premium content in the unsupported languages. Your welcome prompts, skill interaction, and help prompts should not indicate any references to premium content. Refer to <a href="">Choose Pricing, Languages, and Distribution for In-Skill Products</a> and <a href="">Use In-Skill Product Service APIs</a> pages for tips on adding in-skill products to supported languages.</p> <h2><strong>2. Allow Your Customers to Cancel or Refund Their Purchases</strong></h2> <p>All monetized skills should allow the customers to cancel or refund their purchases. To support cancellation or refund requests, you should build a custom intent to support a refund/cancellation request and add code to handle the custom intent, which starts a cancellation flow by sending a directive. Refer to the <a href="">Handle a refund or cancel request</a> section of ISP documentation for an easy reference on how to implement this feature.</p> <h2><strong>3. Offer Purchase Suggestions (Upsells) Effectively for Every In-Skill Product</strong></h2> <p>Proactively offer products related to how the customer is currently interacting with your skill. You would need to check whether a customer owns a product from the saved list and pass the product you want to upsell as well as a message relevant to that product to Amazon's purchase flow. To offer purchase suggestions, add code that starts the purchase flow with a directive. Refer to <a href="">Offer Purchase Suggestions</a> and <a href="">Help Customers find your in-skill products</a> sections of the ISP documentation for resources on how to implement purchase offers. Never include price or offer details in the upsell message, as they will already be provided in the purchase flow by Alexa. We also recommend to <a href="">offer a reminder</a> in your skill interaction, as a great way to encourage customers to explore the premium content.</p> <h2><strong>4. Add Direct Support for Purchase Requests</strong></h2> <p>Enable customers to directly purchase an in-skill product that they are interested in, without having to go through an upsell or purchase suggestion during the skill interaction. To do so, build a custom intent to support a purchase request by adding code to handle the custom intent, and start a purchase flow by sending a directive. Refer to <a href="">Add support for purchase requests</a> section of the ISP documentation for steps to implement a direct purchase request.</p> <h2><strong>5. Allow Customers to Interact with the Available Content After the Purchase Flow</strong></h2> <p>Whether or not your customer buys an entitlement or consumable, or signs up for a subscription, you'll need to create a graceful hand off from the Amazon purchase flow back to your skill. If a customer purchases or subscribes to the product, ensure that you provide them with the premium content as soon as the purchase is complete. And remember to plan an alternative if the customer decides not to purchase. Refer to <a href="">Handling the post-purchase flow </a>documentation for techniques to handle this.</p> <h2><strong>Ask for Help</strong></h2> <p>If you run into any issues, we're here to help. In our skill certification feedback email, you will find a summary of any issues we've identified, step-by-step instructions on how to reproduce each issue (when needed), and guidance to address them to move your skill forward in the certification process. If you believe we've misunderstood the implementation of your skill, please let us know through the <a href="">testing instructions field </a>in the developer console.<br /> <br /> If you have any questions throughout the skill-building process, you can post questions and discuss with other Alexa skill developers on our <a href="">developer forum,</a> or connect with us through our <a href=";sc_channel=website&amp;sc_publisher=devportal&amp;sc_campaign=Conversion_Contact-Us&amp;sc_assettype=conversion&amp;sc_team=us&amp;sc_traffictype=organic&amp;sc_country=united-states&amp;sc_segment=all&amp;sc_itrackingcode=100020_us_website&amp;sc_detail=blog-alexa">contact form</a>.</p> <h2><strong>Related Content:</strong></h2> <ul> <li><a href="">Build a Monetized Fact Skill with the Premium Facts Sample Skill</a></li> <li><a href="">Best Practices for Building an Effective Monetized Skill That Is Eligible for Amazon Promotion</a></li> <li><a href="">Requirements for Skills that Make Any Products, Content, or Services Available for Purchase</a></li> <li><a href="">Certify In-Skill Purchasing Skills</a></li> <li><a href="">Custom Skill Certification Requirements</a></li> </ul>