Vielen Dank für deinen Besuch. Diese Seite ist nur in Englisch verfügbar.
Alexa Blogs Alexa Developer Blogs /blogs/alexa/feed/entries/atom 2018-12-07T20:18:07+00:00 Apache Roller /blogs/alexa/post/3ac41587-f262-4fec-be60-2df2f64b9af9/the-role-of-context-in-redefining-human-computer-interaction The Role of Context in Redefining Human-Computer Interaction Richard Eckel 2018-12-07T13:03:00+00:00 2018-12-07T18:56:15+00:00 <p>In an invited talk at the second NeurIPS workshop on Conversational AI today, Alexa scientist Ruhi Sarikaya will focus on the role of context in redefining human-computer interaction through natural language.</p> <p>In the past few years, advances in artificial intelligence have captured our imaginations and led to the widespread use of voice services on our phones and in our homes. This shift in human-computer interaction represents a significant departure from the on-screen way we’ve interacted with our computing devices since the beginning of the modern computing era.</p> <p><img alt="Context_image_.jpg" src="" style="float:left; height:291px; margin-left:10px; margin-right:10px; width:437px" />Substantial advances in machine learning technologies have enabled this, allowing systems like Alexa to act on customer requests by translating speech to text, and then translating that text into actions. In an invited talk at the second NeurIPS <a href=";copyownerid=103643">workshop</a> on Conversational AI later this morning, I’ll focus on the role of context in redefining human-computer interaction through natural language, and discuss how we use context of various kinds to improve the accuracy of Alexa’s deep-learning systems to reduce friction and provide customers with the most relevant responses. I’ll also provide an update on how we’ve expanded the geographic reach of several interconnected capabilities (some new) that use context to improve customer experiences.</p> <p>There has been remarkable progress in conversational AI systems this decade, thanks in large part to the power of cloud computing, the abundance of the data required to train AI systems, and improvements in foundational AI algorithms. Increasingly, though, as customers expand their conversational-AI horizons, they expect Alexa to interpret their requests contextually; provide more personal, contextually relevant responses; expand her knowledge and reasoning capabilities; and learn from her mistakes.</p> <p>As conversational AI systems expand to more use cases within and outside the home, to the <a href=";hvadid=295796567981&amp;hvpos=1t1&amp;hvnetw=g&amp;hvrand=17538587399523028360&amp;hvpone=&amp;hvptwo=&amp;hvqmt=b&amp;hvdev=c&amp;hvdvcmdl=&amp;hvlocint=&amp;hvlocphy=1027028&amp;hvtargid=kwd-324445919971&amp;ref=pd_sl_3j0otr496z_e">car</a>, the <a href="">workplace</a> and beyond, the challenges posed by ambiguous expressions are magnified. Understanding the user’s context is key to interpreting a customer’s utterance and providing the most relevant response. Alexa is using an expanding number of contextual signals to resolve ambiguity, from personal customer context (historical activity, preferences, memory, etc.), skill context (skill ratings, categories, usage), and existing session context, to physical context (is the device in a home, car, hotel, office?) and device context (does the device have a screen? what other devices does it control, and what is their operational state?).</p> <p>Earlier this fall, Rohit Prasad, Alexa AI vice president and head scientist, <a href="">announced</a> we would be implementing new Alexa self-learning techniques to help her learn at a faster pace. Earlier this week we launched in the U.S. a new self-learning system that detects the defects in Alexa’s understanding and automatically recovers from these errors. This system is unsupervised, meaning that it doesn’t involve any manual human annotation; instead, it takes advantage of customers’ implicit or explicit contextual signals to detect unsatisfactory interactions or failures of understanding. The system learns how to address these issues and automatically deploys fixes to our production systems shortly after.</p> <p>For example, during our beta phase, the system automatically learned to associate the utterance “Play ‘Good for What’” to “Play ‘Nice for What’”, correcting a customer’s error and leading to a successful outcome in requesting a song by Drake. This system is currently applying corrections to a large number of music-related utterances each day, helping decrease customer interaction friction for the most popular use of Alexa-compatible devices. We’ll be looking to expand the use of this self-learning capability in the months ahead.</p> <p><img alt="Natural_skill_interaction.png" src="" style="float:right; height:254px; margin-left:10px; margin-right:10px; width:454px" />Our vision is for Alexa to help you with whatever you need. Alexa skills and the developers who build them are incredibly important to that vision. There are now hundreds of thousands of developers and device makers building Alexa experiences, as evidenced by the more than 50,000 skills now available. In a <a href="">post</a> published earlier this year, my colleague Young-Bum Kim described the machine-learning system we’re using to perform name-free skill interaction, which lets customers more naturally discover, enable, and launch Alexa skills. For example, to order a car, a customer can just say, “Alexa, get me a car”, instead of having to specify the name of the ride-sharing service. This requires a system that can process many contextual signals to automatically select the best skill to handle a particular request.</p> <p>We recently expanded the use of this system beyond the U.S.: customers in the U.K., Canada, Australia, India, Germany, and Japan can now discover and engage with select skills in a more natural way. &nbsp;For example, when customers in Germany say “Alexa, welche stationen kennst du?” (“Alexa, what stations do you know?”) Alexa will reply “Der Skill Radio Brocken kann dir dabei helfen. M&ouml;chtest du ihn aktivieren?” (“The skill Radio Brocken can help. Do you want to enable it?”).</p> <p>With more than 20,000 smart-home devices from more than 3,500 unique brands now compatible with Alexa, smart home use cases especially benefit, as we combine customer, session, and device context to provide more-natural experiences for our customers. For example, if you own an Alexa-compatible iRobot Roomba robot vacuum and say “Alexa, start cleaning”,&nbsp; your Roomba will get to work. Previously, you would have to remember the skill by saying, “Alexa, ask Roomba to start cleaning.” We have enabled this more natural interaction style for a subset of smart home skills and will gradually make this available to more smart home skills and customers in the U.S</p> <p>Additionally, my colleague Arpit Gupta described in a <a href="">post</a> earlier this year our solution to the problem of slot carryover, a crucial aspect of the context carryover capability we’ve phased into the Alexa experience this year. To engage in more natural spoken interactions, Alexa must track references through several rounds of conversation. For example, if a customer says “What’s the weather in Seattle?” and, after Alexa’s response, says “How about Boston?”, Alexa infers that the customer is asking about the weather in Boston. If, after Alexa’s response about the weather in Boston, the customer asks, “Any good restaurants there?”, Alexa infers that the customer is asking about restaurants in Boston.</p> <p>We initially launched context carryover in the U.S. earlier this year. Recently we’ve extended this friction-reducing capability to customers in Canada, the U.K., Australia, New Zealand, India, and Germany.</p> <p>Context carryover makes interactions with Alexa more natural, and <a href="">Follow-Up Mode</a> amplifies this experience by letting customers utter a series of requests without repeating the wake word “Alexa.” Follow-Up Mode depends on distinguishing the “signal” of follow-up requests from the “noise” of background conversations or TV audio. My colleague Harish Mallidi <a href="">described</a> the science behind Follow-Up Mode in a paper published this fall.</p> <p>Earlier this year, we made Follow-Up Mode <a href="">available</a> in the U.S., and recently we’ve expanded its availability to Canada, the U.K., Australia, New Zealand, India, and Germany. Perhaps not surprisingly, we’ve found that customers who use Follow-Up Mode have more interactions with Alexa than those who don’t.</p> <p><strong>The Road Ahead</strong></p> <p>As I indicated in a previous <a href="">post</a>, we’re on a multiyear journey to fundamentally change human-computer interaction. It’s still Day 1, and not unlike the early days of the Internet, when some suggested that the metaphor of a market best described the technology’s future. Nearly a quarter-century later, a market segment is forming around Alexa, and it’s clear that for that market segment to thrive, we must expand our use of contextual signals to reduce ambiguity and friction and increase customer satisfaction.&nbsp;</p> <p><em>Ruhi Sarikaya is a director of applied science, Alexa AI. You can follow him on Twitter @Ruhi_Sarikaya</em><strong>. </strong></p> <p><strong><a href="" target="_blank">Alexa science</a></strong></p> <p><strong>Related: </strong></p> <ul> <li><strong><a href="" target="_blank">NeurIPS 2018: The state of AI</a></strong></li> <li><strong><a href="" target="_blank">How Alexa keeps getting smarter</a></strong></li> <li><strong><a href="" target="_blank">Amazon at Interspeech 2018: How Interaction Histories Can Improve Speech Understanding</a></strong></li> <li><strong><a href="" target="_blank">Amazon @NeurIPS</a></strong></li> </ul> <p><em>Photo Credit:TungCheung/Shutterstock</em></p> /blogs/alexa/post/27350985-ef2f-480f-991a-52d02d7ad7bf/announcing-the-winners-of-the-alexa-skills-challenge-games Announcing the Winners of the Alexa Skills Challenge: Games Kristin Fritsche 2018-12-07T09:00:44+00:00 2018-12-07T15:59:20+00:00 <p><img alt="ASM1811-BlogPost-DE-Blue-GameSkillChallenge.jpg" src="" /></p> <p>Alexa developers from the UK, Germany, Austria, and Ireland have worked for two months to build the most engaging and entertaining game skills for Alexa. Today, we are happy to announce the grand prize and bonus prize winners.</p> <p><img alt="ASM1811-BlogPost-DE-Blue-GameSkillChallenge.jpg" src="" /></p> <p>Alexa developers from the UK, Germany, Austria, and Ireland have worked for two months to build the most engaging and entertaining game skills for Alexa. Even though voice games are still very new, transferring the game experience to voice is an exciting challenge for developers, from finding the most interesting use case to creating a voice user experience, which is very different from a graphical user interface. Thanks to the efforts of the Alexa developer community, customers can experience new and fun voice games and play them intuitively, via voice.</p> <p>This week, our jury decided on the two grand prize winners and the five winners of the bonus prizes. It was a tough decision, as all finalists and bonus prize nominees developed inspirational and delightful voice games – from interactive stories to voice-enabled card and board games, games integrating Alexa Gadgets, and fun quizes – our developers created a variety of voice games that put boredom to an end.&nbsp;</p> <p>Our panel of judges rated all skills based on their creativity and originality, a great voice-first user experience, technical implementation, and customer feedback and usage. The final jury comprised of experts in games, voice technology and skill development.</p> <ul> <li>Markus Schwerdtel, Cochief editor of game magazine GameStar</li> <li>Liam Sorta, Alexa Champion and Technical Evangelist at Unity Technologies</li> <li>Tim Kahle, Alexa Champion and CEO of 169 Labs</li> <li>Fabrice Rousseau, General Manager Europe Alexa Skills Kit and Alexa Voice Service</li> </ul> <h2>And the Winners Are…</h2> <p><strong>Grand Prize (€10,000 for an English finalist)</strong>: <a href=";qid=1543849957&amp;sr=8-1&amp;keywords=word+mine;qid=1543849957&amp;sr=8-1&amp;keywords=word+mine" target="_blank">Word Mine</a> is an anagram game, where your handy canary will help you discover the letters to master the mines. <a href=";ie=UTF8&amp;qid=1540922237&amp;sr=1-1&amp;keywords=word+mine" target="_blank">Try out Word Mine.</a></p> <p><strong>Grand Prize (€10,000 for a German finalist)</strong>: <a href=";ref-suffix=ss_rw" target="_blank">Der Eiserne Falke</a> is an interactive story, where you play the former soldier Sardak, who will be ensared in unexpected adventures, when trying to save the kingdom of Rivaan from its downfall. <a href=";ref-suffix=ss_rw" target="_blank">Try out Der Eiserne Falke</a>.</p> <p><strong>Bonus Prize – Best Voice Adaptation of a Game</strong>: (€2,500): <a href=";ref-suffix=ss_rw" target="_blank">Schnapsturnier</a> is the voice adaptation of the famous card game Schnapsen. <a href=";ref-suffix=ss_rw" target="_blank">Try out Schnapsturnier.</a></p> <p><strong>Bonus Prize – Customer's Choice Most Engaging Game Skill</strong>: (€2,500): In <a href=";ref-suffix=ss_rw" target="_blank">Sch&auml;tze den Preis</a>, you need to guess the prize of a product, can compete with other players. <a href=";ref-suffix=ss_rw" target="_blank">Try out Sch&auml;tze den Preis.</a></p> <p><strong>Bonus Prize – Best Game Skill for Echo Show and Echo Spot</strong>: (€2,500): <a href=";ie=UTF8&amp;qid=1543850201&amp;sr=1-1&amp;keywords=guess+the+logo" target="_blank">Guess the Logo</a> is an exciting quiz game, where players are pitted against each other to see who can win the most points by recognising brands and logos from across the world. Try out <a href=";ie=UTF8&amp;qid=1543850201&amp;sr=1-1&amp;keywords=guess+the+logo" target="_blank">Guess the Logo</a>.</p> <p><strong>Bonus Prize – Best Game Skill for Kids</strong>: (€2,500): In <a href=";ie=UTF8&amp;qid=1543850266&amp;sr=1-1&amp;keywords=kinder+besuchen+den+bauernhof" target="_blank">Kinder besuchen den Bauernhof</a>, kids learn together with farmer Willi interesting facts about farm animals. Try out <a href=";ie=UTF8&amp;qid=1543850266&amp;sr=1-1&amp;keywords=kinder+besuchen+den+bauernhof" target="_blank">Kinder besuchen den Bauernhof</a>.</p> <p><strong>Bonus Prize – Best Localized Game Skill</strong>: (€2,500): <a href=";ref-suffix=ss_rw" target="_blank">Monster Madness</a> is a game of luck and memory, that you can play on your own or with friends. You need to choose, which door to open and keep the scores of your teammates in mind. Try out <a href=";ref-suffix=ss_rw" target="_blank">Monster Madness</a>.</p> <p><strong>Congratulations, everyone!</strong> We are a little bit sad, that this exciting challenge has come to an end. But, we have had a great time seeing all your inspiring voice game skills coming to life, and we are sure customers will love these voice experiences. Thank you to everyone for participating in the Alexa Skills Challenge: Games.</p> <p>Stay Connected with the Alexa Developer Community: <a href=";sc_category=Owned&amp;sc_channel=WB&amp;sc_campaign=Blog&amp;sc_publisher=Alexa_Blog&amp;sc_content=Content&amp;sc_funnel=Discover&amp;sc_country=WW&amp;sc_medium=Owned_WB_Blog_Alexa_Blog_Content_Discover_WW_Unknown&amp;sc_segment=Unknown" target="_blank">Sign up to receive announcements</a> from Amazon Alexa to learn about upcoming challenges and Alexa developer news.</p> <h2>Enter the Alexa Skills Challenge: Multimodal</h2> <p>Your next opportunity to show your skill building expertise and win great prizes is just around the corner. Enter the <a href=";sc_category=Owned&amp;sc_channel=WB&amp;sc_campaign=apl&amp;sc_publisher=skillschallenge&amp;sc_content=Promotion&amp;sc_funnel=Discover&amp;sc_country=WW&amp;sc_medium=Owned_WB_apl_skillschallenge_Promotion_Discover_WW_unknown&amp;sc_segment=unknown" target="_blank">Alexa Skills Challenge: Multimodal</a> with Devpost and compete for cash prizes and Amazon devices. Developers in the UK, Germany, France, Italy, Spain, Mexico, India and Australia can also win a bonus prize for publishing an APL skill in their local Alexa Skills Store. We invite you to participate and build voice-first multimodal experiences that customers can enjoy across tens of millions of Alexa devices with screens. Learn more, start building APL skills, and <a href=";sc_category=Owned&amp;sc_channel=WB&amp;sc_campaign=apl&amp;sc_publisher=skillschallenge&amp;sc_content=Promotion&amp;sc_funnel=Discover&amp;sc_country=WW&amp;sc_medium=Owned_WB_apl_skillschallenge_Promotion_Discover_WW_unknown&amp;sc_segment=unknown" target="_blank">enter the challenge</a> by January 22.</p> /blogs/alexa/post/97b921be-4f4c-47ff-a5cd-f4c35c2ef03a/building-conversational-alexa-skills-validating-slots-with-dialog-management1 会話型Alexaスキルの開発 (3): ダイアログモデルを使用したスロットの検証 Toshimi Hatanaka 2018-12-06T04:35:02+00:00 2018-12-06T04:35:02+00:00 <p>会話型スキルの開発方法をお届けする3回シリーズの最後の回です。今回はダイアログモデルに新しく追加されたスロット検証機能について解説します。ユーザーが提供するスロットの値が有効かどうかを検証し、有効でなかったらもう一度ユーザーに聞き返す処理をAlexaが自動で行うようにする方法です。</p> <p>前回の記事では、<a href="">ダイアログモデルを使用したスロットの確認</a>について、コーヒーショップサンプルスキルを拡張し、<strong>Dialog.ConfirmSlot</strong>ディレクティブを使用して動的にスロットを確認する方法を説明しました。ユーザーがコーヒーを注文したら、スキルのバックエンドが<strong>Dialog.ElicitSlot</strong>ディレクティブを返し、<strong>flavor</strong>スロットを引き出します。<strong>flavor</strong>には50円の料金がかかるため、<strong>Dialog.ConfirmSlot</strong>ディレクティブを使用して追加料金の了承を得ます。</p> <p>記事の最後で、問題が発生する可能性があることを指摘しました。ユーザーが水を頼んだらどうしたらよいでしょうか? 飲み物ならまだいいですが、野球やユニコーンやランプを頼まれた場合はどうでしょうか? 有効な値を指定するように、ユーザーに再プロンプトする必要があるでしょう。</p> <p>何かデータを検証する方法が必要ですね。自分ならどのように問題を解決するか、ぜひ考えてみてください。前の記事でこう質問しましたね。必要なハンドラーは何か? スロットを再度引き出す方法は? 必要なダイアログディレクティブは何か?</p> <p>この問題を解決するには、もしスロット値が有効であれば、スロットとルールのセットが<strong>true</strong>を返すヘルパー関数を作成し、次に、指定されたスロット値が無効かどうかを判別し、無効であれば<strong>Dialog.ElicitSlot</strong>ディレクティブを使用してスロットを再引き出しするハンドラーを作成します。しかし、2018年11月に、<a href="">ダイアログモデルのスロット検証</a>が発表されました。つまり、スキルが<strong>Dialog.Delegate</strong>ディレクティブを返す限り、実際にコードを書く必要がなくなりました。不具合が起きず、テストする必要もなく、書き直す必要もないコードとは何でしょうか? その答えは、コードを書かなければいいのです。</p> <p>ダイアログモデルのスロット検証を詳しく見ていく前に、コーヒーショップスキルをおさらいしましょう。</p> <h1>前回までのおさらい: コーヒーショップスキル</h1> <p>コーヒーショップスキルでは、ユーザーがコーヒーまたはお茶を注文できます。ユーザーが選択した飲み物(<strong>drink</strong>)に応じて、スキルはコーヒーのローストの種類(<strong>coffeeRoast</strong>)またはお茶の種類(<strong>teaType</strong>)を尋ねます。さらに、コーヒーが注文されたら、スキルは<strong>Dialog.ElicitSlot</strong>ディレクティブを使用して、ユーザーにフレーバー(<strong>flavor</strong>)を追加するかどうか尋ねます。「いりません」と言えばフレーバーを断ることができます。 ユーザーがフレーバーを選択した場合は、スキルは<strong>Dialog.ConfirmSlot</strong>ディレクティブを使用して、フレーバーの追加には50円の追加料金がかかることの了承を求めます。</p> <p>自動的に<strong>drink</strong>スロットを検証して、ユーザーの選択が無効の場合はユーザーに再入力を促すよう、コードを追加せずにコーヒーショップスキルを更新する方法を見ていきましょう。</p> <h1>スキルの対話モデルのセットアップ</h1> <p>スロット検証機能がリリースされたので、<a href="">開発者ポータル</a>のビルドタブが更新され検証をオンにできるようになりました。<strong>OrderIntent</strong>から<strong>drink</strong>スロットを選択すると、<strong>ダイアログ</strong>と<strong>検証</strong>というラベルの2つのタブがあります。<strong>検証</strong>タブをクリックすると、スロット用の検証ルールを作成できます。</p> <p><img alt="" src="" /></p> <p>3つの検証ルールから選択できます。</p> <ol> <li>値セットのみを受け付ける</li> <li>値セットのみを拒否する</li> <li>スロットタイプの値と同義語のみを受け付ける</li> </ol> <p>これらのルールを使用して、スロット値の検証方法を指定できます。コーヒーショップスキルでは、3つめのオプションである「スロットタイプの値と同義語のみを受け付ける」を使用します。 このオプションでは、同義語を定義して、値に加えて同義語でもユーザーが言ったことを検証できます。</p> <p>このオプションを選択すると、スロットを再引き出しするためにAlexaが発話するプロンプトをいくつか用意する必要があります。これを行うために、drinkスロットが靴だった場合にAlexaが何というか考えてみましょう。</p> <ul> <li>すみません、靴は取り扱っていません。コーヒーかお茶のどちらにしますか?</li> <li>残念ですが靴はお出ししていません。コーヒーかお茶のどちらにしますか?</li> <li>残念ですが 靴はご用意できません。コーヒーかお茶のどちらにしますか?</li> <li>すみません、靴はご用意できません。コーヒーかお茶のどちらにしますか?</li> </ul> <p>上記の例を見ると、それぞれに「コーヒーかお茶のどちらにしますか?」が入っていることに気が付くと思います。 これは<strong>drink</strong>スロットを再度引き出すときにAlexaがユーザーに尋ねるプロンプトとして含まれています。例に共通しているもうひとつのものは「靴」です。 暗黙の確認を使用して、ユーザーが頼んだものは聞き取れたが無効な選択であることをユーザーに知らせる、もっともよい方法です。サンプルを定義するときに、ユーザーが無効な選択として何を言うかわからない場合に、それを復唱させるにはどうしたらよいでしょうか。 簡単ですね。スロットを使います。このケースでは、<strong>drink</strong>スロットを検証しているので、サンプル発話で使用します。</p> <ul> <li>すみません、{drink} は取り扱っていません。コーヒーかお茶のどちらにしますか?</li> <li>残念ですが {drink} はお出ししていません。コーヒーかお茶のどちらにしますか?</li> <li>残念ですが {drink} はご用意できません。コーヒーかお茶のどちらにしますか?</li> <li>すみません、{drink} はご用意できません。コーヒーかお茶のどちらにしますか?</li> </ul> <p>サンプル発話を変換してモデルに追加したら、モデルを保存してビルドします。</p> <p><img alt="" src="" /></p> <p>検証チェックを行うために追加でコードを作成する必要はありませんが、Alexaサービスが自動的にスロットを検証して、スロットが無効であればスロットを再度引き出すためには、スキルが<strong>Dialog.Delegate</strong>ディレクティブを返す必要があります。</p> <h1>スキルのバックエンドの更新</h1> <p><strong>Dialog.Delegate</strong>ディレクティブを返す必要があります。スキルのハンドラー関数はさまざまな事例をチェックします。<strong>StartedInProgressOrderIntentHandler</strong>ハンドラーを覚えているでしょうか。 この<strong>canHandle</strong>関数は次の場合にtrueを返します。</p> <ul> <li>request.typeがIntentRequestに<strong>等しい</strong></li> <li>request.intent.nameがOrderIntentに<strong>等しい</strong></li> <li>request.dialogStateがCOMPLETEDに<strong>等しくない</strong></li> </ul> <p>このハンドル関数は<strong>Dialog.Delegate</strong>ディレクティブを返します。Alexaが<strong>drink</strong>スロットを検証するのに必要です。そのため、バックエンドは完成しており、コードを更新する必要はありません。</p> <p>コードに変換すると、<strong>StartedInProgressOrderIntentHandler</strong>は次のようになります。</p> <div> <pre> <code class="language-none">const StartedInProgressOrderIntentHandler = { canHandle(handlerInput) { return handlerInput.requestEnvelope.request.type === &quot;IntentRequest&quot; &amp;&amp; === &quot;OrderIntent&quot; &amp;&amp; handlerInput.requestEnvelope.request.dialogState !== 'COMPLETED'; }, handle(handlerInput) { return handlerInput.responseBuilder .addDelegateDirective() .getResponse(); } } </code></pre> </div> <p>注: ダイアログモデルの検証は<strong>Dialog.Delegate</strong>ディレクティブのみをサポートしています。そのため、<strong>Dialog.ElicitSlot</strong>ディレクティブが返されると、引き出されたスロットで検証が実行されません。たとえば、<strong>Dialog.ElicitSlot</strong>を使用して<strong>coffeeRoast</strong>の値を受け取った後にフレーバーを引き出しているため、<strong>Dialog.ElicitSlot</strong>では検証が実行されません。</p> <p>この記事を最後まで読んでいただき、ありがとうございました。このテクニックや機能を応用して、ご自分のスキルで使ってみてください。オンラインのディスカッションも歓迎します。 Twitterのアカウントは<a href="">@Toshimin8</a>です。</p> <h1>関連リソース</h1> <ul> <li><a href="">スロット値の検証</a>(英語)</li> <li><a href="">スロットの検証を使用してダイアログモデルを簡素化する</a>(英語)</li> <li><a href="">会話型Alexaスキルの開発 (1): ダイアログモデルを使用して、前の会話に基づいて動的にスロットを引き出す方法</a></li> <li><a href="">会話型Alexaスキルの開発 (2): ダイアログモデルを使用したスロットの確認</a></li> <li><a href="">必要な情報を収集、確認するためにダイアログを定義する</a></li> </ul> /blogs/alexa/post/2c3da06a-5c9b-4129-9a97-539ee10c9926/how-sailing-wisdom-can-reduce-friction-in-your-alexa-skill How Sailing Wisdom Can Reduce Friction in Your Alexa Skill Jennifer King 2018-12-05T15:00:00+00:00 2018-12-05T15:00:00+00:00 <p>In the new Designing for Conversation course, we explain how you can create frictionless voice experiences.</p> <p>Voice is the most natural way for us to exchange information. As we engage in conversation, we're gradually building and modifying our understanding of each other and the world around us. But conversation is complicated. So complicated, in fact, that even the best of us can be bad at it at times. We've all found ourselves engaged in a “conversation” with someone who really wasn't interested in what we had to say.</p> <p>Here are two Alexa evangelists, <a href="" target="_blank">Cami Williams</a> and <a href="" target="_blank">Akersh Srivastava</a>, to demonstrate:</p> <p style="text-align:center"><iframe allowfullscreen="" frameborder="0" height="360" src="//" width="640"></iframe></p> <p>In this interaction, Akersh (playing the voice of an Alexa skill) is really just practicing his monologue. Cami's definitely there and trying to participate in the conversation, but she's not getting very far.</p> <p>There are a few problems with the way Akersh is interacting here, but chief among them is that he's simply not listening. It's clear that he's more interested in what he has to say than anything Cami might offer.</p> <p>Of course it's more complicated than just listening to the other person. Skipping ahead to another interaction, Akersh has learned to listen, but there's still a major issue. Take a look:</p> <p style="text-align:center"><iframe allowfullscreen="" frameborder="0" height="360" src="//" width="640"></iframe></p> <p>Now Akersh is capably listening to the things Cami says, but when she returns later, he's behaving as though they've never met. How frustrating!</p> <p>You might have experienced these sorts of issues in small ways when speaking with others, but the friction is magnified for people when their conversational partner isn't human.</p> <p>How can we make sure users have friction-less and fun conversations with our skills when conversation requires the skill to update and remember contextual details fluidly?</p> <p>As the skill designer, you have to plan ahead, making initial decisions about what your skill will remember within AND beyond any one given session. You also have to look at how the skill will capture different kinds of information to prevent asking the user to repeat themselves unnecessarily.</p> <p>But it doesn't end there. Conversation is rarely as straightforward as we design it to be. So instead of seeing your design as a straightforward way for your skill's users to get from point A to point B, you need to see it as an ongoing interaction between your skill and outside forces. You need to listen to the user to understand the flow of dialog with your skill and update your skill's design to react fluidly to what your users have to say.</p> <h2>So, How Is Designing for Conversation Like Sailing?</h2> <p>Recently, I had a chance to catch up with an old friend who loves sailing. Never having sailed myself, I was interested to learn about his first few solo-sailing trips on which he got lost a few times before learning that it's impossible to sail in a straight line.</p> <p>My friend's first impulse was to choose a direction and simply attempt to steer the boat toward it. When you sail, though, you're at the mercy of the wind and the waves. To go straight, you have to pay attention to the changes in the environment and constantly correct course by adjusting the sails and re-positioning the boat.</p> <p>As a result, going straight in a sailboat actually looks more like zig-zagging in a general direction. Doing this well requires a continual understanding of where everything was previously in relation to where it needs to be in the present moment. Sailors call this “tacking.” I call it having a conversation.</p> <p>Like sailing, participating in conversation requires constant attention to the flow of dialog and adapting to what's happening around you, not just plowing ahead towards a goal. To reduce the friction your users may encounter with your skill, you must plan to continually check in on the state of the conversation. After each check in, you'll need to start tacking. To do this, you'll need to think about:</p> <ul> <li>The kind of information your skill should remember</li> <li>When it makes sense to update that information</li> <li>How updated information should be reflected in the present state of the conversation</li> </ul> <p>Adjusting course effectively will enable genuine dialog to take place. Tacking in the context of conversation takes time and practice to get right. When applied to Alexa skills, it also requires research and forethought. It's probable that developing your skill's ability to listen and adjust the flow of conversation based on context will take time and iteration. Don't let that stop you.</p> <h2>Start Designing for Conversation in Our Self-Paced Training Course</h2> <p>The tools and patterns you need to develop conversational experiences are already available via the <a href="">Alexa Skills Kit</a>. In the new <a href="">Designing for Conversation</a> course, we'll show you how to reduce friction for your skill's users by taking advantage of the latest advanced features and patters like <a href="">dialog management</a>, <a href="">context switching</a>, <a href="">conditional slot collection</a>, and <a href="">memory</a>.</p> <h2>Related Content</h2> <ul> <li><a href="">New Alexa Skills Training Course: Designing for Conversation</a></li> <li><a href="">A Primer on Communication: Creating Conversational Transactions When Designing for Voice</a></li> <li><a href="">Build Advanced Alexa Skills Using Dialog Management</a></li> <li><a href="" target="_blank">Codecademy: Conversational Design with Alexa</a></li> <li><a href="">Why Conversational Design Matters: 4 Hallmarks of Conversational Skills</a></li> <li><a href="">Why Writing a Script Is the Best Way to Design for Conversation</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="">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="">Canada</a>, the <a href="" target="_blank">UK</a>, <a href="" target="_blank">Germany</a>, <a href="">Japan</a>, <a href="">France</a>, <a href="">Australia</a>, and <a href="" target="_blank">India</a>. <a href="">Learn more</a> about our promotion and start building today.</p> /blogs/alexa/post/db5fe3df-a032-4111-8c70-cbadbe64aa6e/smarthomejp-now-support-unclock スマートホームスキルが開錠操作にも対応できるようになりました Takuji Kawata 2018-12-05T06:00:27+00:00 2018-12-05T06:00:28+00:00 <p>スマートロックを Alexaから開錠する、英語環境ではすでにサポートされていた機能が、ついに日本語環境でも可能になりました。 Alexaアプリからの開錠操作に加え、声による開錠もできます。声による開錠ではあらかじめ設定した確認コードを Alexa に伝えます。</p> <p>スマートロックを Alexaから開錠する、英語環境ではすでにサポートされていた機能が、ついに日本語環境でも可能になりました。 Alexaアプリからの開錠操作に加え、声による開錠もできます。声による開錠ではあらかじめ設定した確認コードを Alexa に伝えます。</p> <p>&nbsp;</p> <p><strong>発話例:</strong></p> <p style="margin-left:40px">ユーザー:「アレクサ、玄関の鍵を開けて」</p> <p style="margin-left:40px">Alexa:「玄関の確認コードは何ですか?」</p> <p style="margin-left:40px">ユーザー:「1234」</p> <p style="margin-left:40px">Alexa:「ロック解除しています。お待ちください」</p> <p style="margin-left:40px">Alexa:「玄関をロック解除しました」</p> <p style="margin-left:40px">&nbsp;</p> <h1><strong>開錠機能の有効化は Alexa アプリから</strong></h1> <p>セットアップしたデバイスは初期状態では開錠機能は無効になっています。有効化は&nbsp;Alexaアプリから行います。デバイス一覧から該当のスマートロックデバイスを開き、右上のメニューボタンをタップすると、設定画面が開かれます。開錠機能の有効化、無効化はここから行います。</p> <p><img alt="smartlockjp_gui1.png" src="" /></p> <p>&nbsp;</p> <h1><strong>声での開錠には、確認コードを設定</strong></h1> <p>声で開錠を行う際は、ユーザーは毎回確認コードを Alexa に伝える必要があります。確認コードは Alexa アプリで設定します。Alexaアプリのスマートロックの設定画面で [音声でロック解除]&nbsp; を有効にすると確認コードの作成画面に移行するので、ここで確認コードを設定します。</p> <p><img alt="smartlockjp_gui2.png" src="" /></p> <p>&nbsp;</p> <h1><strong>すぐに試せる2つのスキル</strong></h1> <p><img alt="APP_ICON.png" src="" style="height:108px; width:108px" /><img alt="candyhouse.png" src="" style="height:108px; width:108px" /></p> <ul> <li> <h3><a href="" target="_blank">Qrio Lock ※新モデルQ-SL2専用</a></h3> </li> </ul> <p style="margin-left:40px">Qrio, Inc 社の最新スマートロック、Qrio Lock を操作することができます。これは新モデルに対応した新しいスキルです。</p> <ul> <li> <h3><a href="" target="_blank">セサミ</a></h3> </li> </ul> <p style="margin-left:40px">CANDY HOUSE, Inc 社のセサミスマートロックを操作することができます。既存のスキルが今回新たに開錠機能にも対応できるようになりました。</p> <p>&nbsp;</p> <h1><strong>施錠、解錠に対応したスマートホームスキルを作るには</strong></h1> <p>施錠、開錠に対応したスキルは&nbsp; <a href="" target="_blank">Alexa.LockController インターフェース</a>に対応したスマートホームAPIスキルを作成することにより実現することができます。開錠のための確認コードの保存や確認の処理はスキルロジック側には必要ありません。全てAlexaが行います。スキルはディレクティブの指示にしたがって開錠、施錠の処理を行うようにします。</p> <p>デバイスの状態変化を Alexa に報告するイベント通知機能の実装は必須です。スマートホームスキルの作り方、イベント通知機能については次を参考にしてください。</p> <ul> <li><a href="" target="_blank">スマートホームスキルを作る (1) サンプルコードからスキルの基本要素を作る</a></li> <li><a href="" target="_blank">スマートホームスキルを作る (3) イベント通知機能の実装と、スキルの公開</a></li> </ul> /blogs/alexa/post/833ea3c8-c5e7-4932-95b6-1cdf031ab1cc/new-alexa-smart-home-developer-tools-enable-seamless-voice-control-of-any-device-and-any-feature-new-toggle-mode-and-range-capabilities-are-generally-available-in-the-smart-home-skill-api New Alexa Smart Home Developer Tools Enable Seamless Voice Control of Any Device and Any Feature - New Toggle, Mode, and Range Capabilities are Generally Available in the Smart Home Skill API Brian Crum 2018-12-05T00:59:54+00:00 2018-12-05T00:59:54+00:00 <p><img alt="" src="" style="height:480px; width:1908px" /></p> <p>Today, we are happy to announce that some of these changes - the new <a href="">Mode</a>, <a href="">Range</a>, and <a href="">Toggle</a> capability interfaces - are now generally available in the US.</p> <p><img alt="" src="" style="height:480px; width:1908px" /></p> <p>In September, we <a href="" target="_blank">announced</a> the updated Smart Home Skill API (Preview), which included several changes that enable you to integrate any feature of any device with Alexa. Today, we are happy to announce that some of these changes - the new <a href="" target="_blank">Mode</a>, <a href="" target="_blank">Range</a>, and <a href="" target="_blank">Toggle</a> capability interfaces - are now generally available in the US. You can configure these capability interfaces to model many different features, though they are particularly well-suited to device settings and modes such as fan speed, oscillation, auto mode, and many others.</p> <p>&nbsp;</p> <h2>How You Can Use the New Toggle, Mode, and Range Capabilities</h2> <p><a href="" target="_blank">Mode</a> controllers set one value from a group of settings that are ordered (Low, Medium, High) or unordered (Auto, Heavy, Normal, Turbo). This allows commands like &quot;Alexa, set the dishwasher to auto&quot; or &quot;Alexa, set the wash cycle to cottons.&quot; If the controller is ordered, your customers can say things like &quot;Alexa, increase the fan speed&quot; where a fan endpoint defines an ordered <a href="" target="_blank">Alexa.ModeController</a> called speed that supports values of Low, Medium, and High.<br /> <br /> <a href="" target="_blank">Range</a> controllers enable interaction with a numeric range. This allows setting a numeric value like &quot;Alexa, set the living room fan speed to 5.&quot; Ranges also support custom, named presets like &quot;Alexa, set the fan speed on the living room fan to maximum&quot; where the value of <em>maximum</em> maps to a value of 10 in the range. You can use a Range controller to report the state of a range like &quot;Alexa, what is the speed of the living room fan?&quot;&nbsp;and configure each instance by defining a minimum, maximum, precision, and unit of measure like gallons, meters, pounds, liters, and more. This allows for very specialized commands like &quot;Alexa, set the blinds angle to 45 degrees&quot; where the unit of measure is <a href="" target="_blank">Alexa.Unit.Angle.Degrees</a> with a supported range of 30-60 in precision increments of 5.<br /> <br /> <a href="" target="_blank">Toggle</a> controllers turn features on or off. They support commands like &quot;Alexa, turn off oscillate on the fan&quot; or &quot;Alexa, turn on overdrive on the guitar amp.&quot;<br /> <br /> You can use multiple instances of each controller interface on a single endpoint, which gives you extra flexibility in the way you model your device to Alexa. You give each instance a friendly name such as “zone 1” or “zone 2” for two toggles on a sprinkler system. You can also provide additional friendly names, so your customers have the flexibility to use any names that make sense. For example, the <a href="" target="_blank">Alexa.ToggleController</a> for “zone 1” of the sprinkler system might have alternate names of “zone A,” “backyard,” or “roses.” By providing multiple names, customers can use utterance variations like &quot;turn off sprinkler zone 1,&quot; or &quot;turn off the roses sprinkler.&quot; For more details, see the <a href="" target="_blank">resources and assets</a> documentation.<br /> <br /> While these new capabilities allow you to customize many of the supported utterances for your devices, they don't give you full flexibility to define any custom utterance. If you want to provide custom utterances like “water the lawn,” “brew the coffee,” or “wash my clothes,” you can create a custom model to provide these utterances. However, in order to use both custom and smart home models in a single skill, you will need to sign up for the updated Smart Home Skill API Preview. For a deeper look at the technical details and to apply to the preview, please see <a href="" target="_blank">Understanding the Updated Smart Home Skill API (Preview)</a>.</p> <p>&nbsp;</p> <h2>How to Take Advantage of these New Capabilities in Your Smart Home Skill</h2> <p>If you currently have a smart home skill, or are just <a href="" target="_blank">getting started with Alexa Smart Home</a>, you can now incorporate the new interfaces as part of your discovery message.<br /> <br /> If you currently have a custom skill and are thinking about making the switch to a smart home skill to take advantage of these new APIs, we recommend you don't create an additional smart home skill that your customers would need to enable separately. Instead, please&nbsp;<a href="" target="_blank">apply for the Smart Home Skill API (Preview)</a> in order to support smart home utterances and custom utterances in a single skill. If you already have both a custom skill and a smart home skill today,&nbsp;<a href="" target="_blank">apply for the Smart Home Skill API (Preview)</a> in order to combine them into a single skill.</p> <p>A few device&nbsp;makers participating in the Smart Home Skill API (Preview)&nbsp;are already using these new APIs to add new functionality to their existing skills. Kenmore is using the new ModeController to give their customers a set of additional wash cycle presets that are<strong> </strong>voice exclusive to Alexa.<em>&nbsp;</em>Netgear is using ToggleControllers for guest Wi-Fi. Moen is using all three new APIs to add fully native voice and routines support for their smart showers. Michael Poloha, Group Manager Digital &amp; IoT,&nbsp;Moen Incorporated shared, &quot;The new Amazon Smart Home APIs have&nbsp;allowed us to add new functionality to the U by Moen shower. These new APIs give consumers the ability to integrate their shower into groups and routines to create an even better showering experience, all while using natural voice commands to activate and control their shower.&quot;</p> <p>To learn more about these new capabilites, check out our AWS re:Invent session:&nbsp;Connect Any Device to Alexa &amp; Control Any Feature:&nbsp;</p> <p><iframe allowfullscreen="" frameborder="0" height="315" src="" width="560"></iframe><br /> <br /> We can't wait to see what you build.</p> /blogs/alexa/post/846c2634-63cb-49bb-9e32-b6c6d1b7aa51/12-resources-on-building-alexa-skills-with-in-skill-purchasing 6 Resources on Building Alexa Skills with In-Skill Purchasing Jennifer King 2018-12-04T15:00:00+00:00 2018-12-04T15:00:00+00:00 <p><img alt="" src="" style="height:240px; width:954px" /></p> <p>Developers are using in-skill purchasing to deepen engagement with customers and build their voice businesses. Check out our top resources and developer stories for making money with in-skill purchasing.</p> <p><img alt="" src="" style="height:240px; width:954px" /></p> <p><em><strong>Editor’s Note:</strong></em><em> This is an installment of a new series that showcases the top developer tips, tutorials, and educational resources to help you build incredible Alexa skills. Follow the series to learn, get inspired, and start building your own voice experiences for Alexa. </em></p> <p>This year we opened up more opportunities for developers to <a href="">make money with Alexa skills</a> through <a href="">in-skill purchasing (ISP)</a>. Developers can sell premium content as one-time purchases for entitlements that unlock access to features or content, subscriptions that offer access to premium features or content for a period of time, and <a href="">consumables</a> that customers can purchase, use, and then purchase again.</p> <p>Developers are already using in-skill purchasing to deepen engagement with customers and build their voice businesses. Check out our top resources and developer stories for making money with in-skill purchasing.</p> <h2>Which Type of In-Skill Product Is Right for Your Skill?</h2> <p>Developers have three ways to deliver premium experiences to customers with in-skill purchasing—consumables, one-time purchases, and subscriptions. 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, <a href="">check out this blog post</a> for considerations on which in-skill product type aligns with your skill’s experience and can make your voice experience more delightful and engaging.</p> <h2>Understanding the In-Skill Purchasing Experience</h2> <p>A voice-first purchasing experience gives customers new ways to engage with skills, and there are several pathways customers can take throughout the purchase process. In a nutshell, your skill can recommend a product to a customer, which we call an “upsell,” or your customer can ask to purchase a product, which we call a “buy.” As you think about your in-skill purchasing experience, it’s important to consider all of the possible pathways a customer can take to make or decline a purchase in your Alexa skill. <a href="">Read this blog post</a> for an overview of the in-skill purchasing experience and tips to make the experience seamless for your customers.</p> <h2>8 Best Practices for Designing Premium Experiences for Alexa Skills</h2> <p>When designing your premium experience, it’s important to follow a set of <a href="">certification tests</a> and <a href="">customer experience best practices</a> to build your customers’ trust and confidence. This will ensure your customers have a consistent and positive experience when using skills that offer in-skill purchases. In <a href="">this post blog</a>, we share eight best practices to keep in mind as you design a premium experience for your customers.</p> <h2>How to Build an Alexa Skill with In-Skill Purchasing</h2> <p>You can use the Alexa Skills Kit Command-Line Interface (CLI) to add in-skill products to your voice experience. Check out this <a href="">technical post</a> and <a href="">sample skill</a> for adding in-skill purchasing as one-time purchases and subscriptions. To learn about adding consumables, check out <a href="">this post</a> for five best practices. And in the below video, our head of Alexa education Paul Cutsinger shares how to get started with in-skill purchasing.</p> <p style="text-align:center"><a href=""><iframe allowfullscreen="" frameborder="0" height="360" src="//" width="640"></iframe></a></p> <h2>How to Test Your In-Skill Product for a Great Customer Experience: 10 Test Cases</h2> <p>No matter which in-skill product you build, it’s important to create a seamless customer experience and test your ISP to reduce friction in the certification process. To help you prepare your ISP for testing and certification, check out the following 10 test cases in this <a href="">technical blog post</a>.</p> <h2>How Developers Are Growing Their Businesses with Alexa</h2> <p>Now with in-skill purchasing, developers are making money and growing their voice businesses with Alexa. Check out their stories below and get inspired to deliver premium content and enrich your voice experience:</p> <p>In less than 12 months, Volley’s games proved to be amongst the most engaging, amassing over 500,000 active monthly users. But it was the addition of in-skill purchasing that allowed Volley to scale. It began selling premium content in the form of expansion packs for its popular Yes Sire role-playing adventure game. Volley founder <strong>Max Child</strong> says the <a href="">conversion rate of customers purchasing expansion packs is much higher than mobile</a>, and he feels this bodes well for the future of sustainable businesses built with Alexa.</p> <p style="text-align:center"><a href=""><iframe allowfullscreen="" frameborder="0" height="360" src="//" width="640"></iframe></a></p> <p>When in-skill purchasing became available, <strong>Nick Schwab</strong> started selling monthly subscriptions in his skills that unlocked new premium content and features. Schwab says <a href="">the customer response has been overwhelmingly positive</a>—up to 30% of customers who are offered a free trial subscription sign up, and more than 90% of free trials convert to paid subscriptions.</p> <p><strong>Gal Shenar</strong> has more than 30 Alexa skills, some of which offer in-skill purchasing. Shenar says he’s seeing an <a href="">upsell conversion rate of 34%</a> on his popular skill Escape the Airplane—“much higher than what you’d expect on mobile.&quot;</p> <p style="text-align:center"><a href=""><iframe allowfullscreen="" frameborder="0" height="360" src="//" width="640"></iframe></a></p> <p><strong>Steven Arkonovich’s</strong> skill, Big Sky, is one of CNET's seven “must-have” Alexa skills with over 60,000 active monthly users. With in-skill purchasing, Arkonovich <a href="">offers a monthly subscription that unlocks premium features</a>, and customers love it—50% of Big Sky customers opt to purchase the premium experience when offered.</p> <p style="text-align:center"><a href=""><iframe allowfullscreen="" frameborder="0" height="360" src="//" width="640"></iframe></a></p> <p>Software veteran <strong>Jeff Bolton</strong> began selling <a href="">premium content in the form of annual subscriptions</a> for his popular Sleep and Relaxation Sounds 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> <h2>More Resource Roundups</h2> <ul> <li><a href="">5 Resources on Getting Started with Alexa Skills</a></li> <li><a href="">Resource Roundup: Top Alexa Tips and Tutorials for Building Skills with Visual Components</a></li> <li><a href="">Resource Roundup: Top Alexa Tips and Tutorials for Advanced Skill Builders</a></li> <li><a href="">Resource Roundup: Top Alexa Tips and Tutorials for Building Kid 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="">milestone-based developer promotion</a>. US developers, publish your first Alexa skill and earn an 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="">Canada</a>, the <a href="" target="_blank">UK</a>, <a href="" target="_blank">Germany</a>, <a href="">Japan</a>, <a href="">France</a>, <a href="">Australia</a>, and <a href="" target="_blank">India</a>. <a href="">Learn more</a> about our promotion and start building today.</p> /blogs/alexa/post/0a75134b-baca-42ac-8463-c08f63376af2/context-aware-deep-learning-method-boosts-alexa-dialogue-system-s-ability-to-recognize-conversation-topics-by-35 Context-Aware Deep-Learning Method Boosts Alexa Dialogue System’s Ability to Recognize Conversation Topics by 35% Larry Hardesty 2018-12-04T14:00:00+00:00 2018-12-04T14:00:00+00:00 <p>The addition of information about the last few turns of conversation and a small set of standard &quot;dialogue act&quot; tags boost Alexa's ability to determine the topic of an utterance by 35%.</p> <p>Conversational-AI systems have traditionally fallen into two categories: goal-oriented systems, which help users fulfill requests, and chatbots, which carry on informative or entertaining conversations.</p> <p>Recently, the two areas have begun to converge, but separately or together, they both benefit from accurate “topic modeling”. Identifying the topic of a particular utterance can help goal-oriented systems route requests more accurately and keep chatbots’ comments relevant and engaging. Accurate topic tracking has also been <a href="" target="_blank">shown</a> to be strongly correlated with users’ subjective assessments of the quality of chatbot conversations.</p> <p>In a <a href="" target="_blank">paper</a> we’re presenting at this year’s IEEE Spoken Language Technologies conference, we describe a system that uses two additional sources of information to determine the topic of a given utterance: the utterances that immediately preceded it and its classification as a “dialogue act”. Factoring that information in improves the accuracy of the system’s topic classification by 35%. &nbsp;</p> <p>We validated our approach using more than 100,000 annotated utterances collected during the 2017 Alexa Prize competition, in which 15 academic research teams deployed experimental Alexa chatbot systems. In addition to generating innovative ideas about system design, the Alexa Prize helps address the chicken-and-egg problem that plagues conversational AI: training quality chatbots depends on realistic interaction data, but realistic interaction data is hard to come by without chatbots that people want to talk to.</p> <p>Over the years, conversational-AI researchers have developed some standard taxonomies for classifying utterances as dialogue acts such as <em>InformationRequests</em>, <em>Clarifications</em>, or <em>UserInstructions</em>. Dialogue management systems generally use such classifications to track the progress of conversations.</p> <p>We asked a team of annotators to label the data in our training set according to 14 dialogue acts and 12 topics, such as Politics, Fashion, EntertainmentMovies, and EntertainmentBooks. We also asked them to identify keywords in the utterances that helped them determine topics. For instance, a chatbot’s declaration that “Gucci is a famous brand from Italy” was assigned the topic Fashion, and “Gucci”, “brand”, and “Italy” were tagged as keywords associated with that topic.</p> <p>We built topic-modeling systems that used three different neural-network architectures. One was a simple but fast network called a deep averaging network, or DAN. Another was a variation on the DAN that learned to predict not only the topics of utterances but also the keywords that indicated those topics. The third was a more sophisticated network called a bidirectional long-short-term-memory network.&nbsp;</p> <p>Long short-term memory (LSTM) networks process sequential data — such as strings of spoken words — in order, and a given output factors in the outputs that preceded it. LSTMs are widely used in natural-language understanding: the interpretation of the fifth word in a sentence, for instance, will often depend on interpretations of the first four. A bidirectional LSTM (bi-LSTM) network is one that runs through the same data sequence both forward and backward.</p> <p>Inputs to all three networks consist of a given utterance, its dialogue act classification, and it conversational context. Here, context means the last five turns of conversation, where a turn is a combination of a speaker utterance and a chatbot response. The dialogue act classifications come from a separate DAN model, which we trained using our labeled data.</p> <p>In the DAN-based topic-modeling system, the first step is to <em>embed</em> the words of the input utterances, both the current utterance and the prior turns of conversation. An embedding is a representation of a word as a point in a high-dimensional space, such that words with similar meanings are grouped together. The DAN produces embeddings of full sentences by simply averaging the embeddings of their words.&nbsp;</p> <p>The embeddings of the prior turns of conversation are then averaged with each other to produce a single summary embedding, which is appended to the embedding of the current utterance. The combined embedding then passes to a neural network, which learns to correlate embeddings with topic classifications.&nbsp;</p> <p><img alt="DAN_architecture.jpg" src="" style="display:block; height:385px; margin-left:auto; margin-right:auto; width:400px" /></p> <p style="text-align:center"><em><sup>The DAN architecture</sup></em></p> <p>The second system, which uses a modified DAN — or ADAN, for attentional DAN — adds several ingredients to this recipe. During training, the ADAN built a matrix that mapped every word it encountered against each of the 12 topics it was being asked to recognize, recording the frequency with which annotators correlated a particular word with a particular topic. Each word thus had 12 numbers associated with it — a 12-dimensional vector — indicating its relevance to each topic. This matrix, which we call a topic-word attention table, gives the ADAN its name.&nbsp;</p> <p>During operation, the ADAN embeds the words of the current utterance and the past utterances. Like the DAN, it averages the words of the past utterances, then averages the averages together. But it processes the words of the current utterance separately, adding to the embedding of each the corresponding 12-dimensional topic vector. Each of these combination vectors is also combined with the past-utterance summaries, before passing to the neural network for classification.&nbsp;</p> <p><img alt="ADAN_architecture.jpg" src="" style="display:block; height:400px; margin-left:auto; margin-right:auto; width:450px" /></p> <p style="text-align:center"><sup><em>The ADAN archictecture</em></sup></p> <p>The output of the neural network, however, includes not only a prediction of the topic label but also a prediction of which words in the input correspond to that label. Although such keywords were labeled in our data set, we used the labels only to gauge the system’s performance, not to train it. That is, it learned to identify keywords in an unsupervised way.</p> <p>Because it can identify keywords, the ADAN, unlike the DAN and the bi-LSTM, is “interpretable”: it issues not only a judgment but also an explanation of the basis for that judgment.</p> <p>We experimented with two different methods of feeding data about prior utterances to the bi-LSTM. With one method, we fed it an averaged embedding of all five prior turns; in the other, we fed it embeddings of the prior turns sequentially. The first method is more efficient, but the second proved to be more accurate.&nbsp;</p> <p><img alt="Bi-LSTM_architecture.jpg" src="" style="display:block; height:329px; margin-left:auto; margin-right:auto; width:450px" /></p> <p style="text-align:center"><sup><em>The bi-LSTM architecture</em></sup></p> <p>We evaluated four different versions of each system: a baseline version, which used only information about the current utterance; a version that added in only prior-turn information; a version that added in only dialogue act information; and a version that added in both.</p> <p>With all four systems — DAN, ADAN, and the two varieties of bi-LSTM — adding prior-turn information and dialogue act information, both separately and together, improved accuracy over baseline. The bi-LSTM system augmented with both dialogue act and prior-turn information performed best, with an accuracy of 74 percent, up from 55 percent for baseline.</p> <p>The ADAN had the lowest accuracy scores, but we suspect that its decision model was too complex to learn accurate correlations from the amount of training data we had available. Its performance should improve with more data, and as dialogue systems grow more sophisticated, interpretability may prove increasingly important.</p> <p><em>Behnam Hedayatnia is an applied scientist in the Alexa AI Speech group.</em>&nbsp;</p> <p><strong><a href="" target="_blank">Paper</a></strong>: “Contextual Topic Modeling for Dialog Systems”</p> <p><strong><a href="" target="_blank">Alexa science</a></strong></p> <p><strong>Acknowledgments</strong>: Chandra Khatri, Rahul Goel, Angeliki Metanillou, Anushree Venkatesh, Raefer Gabriel, Arindam Mandal</p> <p><strong>Related</strong>:</p> <ul> <li><a href="" target="_blank">How Voice and Graphics Working Together Enhance the Alexa Experience</a></li> <li><a href="">Learning to Recognize the Irrelevant</a></li> <li><a href="" target="_blank">Alexa at Interspeech 2018: How Interaction Histories Can Improve Speech Understanding</a></li> <li><a href="" target="_blank">How Alexa Is Learning to Converse More Naturally</a></li> <li><a href="">Amazon Alexa @ SLT</a><br /> &nbsp;</li> </ul> /blogs/alexa/post/61b0c345-e215-4787-a6a7-05d7e05d3631/building-conversational-alexa-skills-confirming-slots-with-dialog-management1 会話型Alexaスキルの開発 (2): ダイアログモデルを使用したスロットの確認 Toshimi Hatanaka 2018-12-04T06:32:06+00:00 2018-12-04T06:32:06+00:00 <p>会話型スキルの開発方法をお届けする3回シリーズの2回目です。今回はダイアログモデルを使用してユーザーにスロットの値を確認する方法、及びそのスロットの値に応じてAlexaの次の応答を動的に変化させる方法を学びます。</p> <p><a href="">ダイアログモデル</a>を使用すると、マルチターンの会話スキルを簡単に開発できます。 1つ以上のスロットで、<strong>このインテントを完了させるためにこのスロットは必須ですか?</strong> を選択すると、Alexa音声サービスはダイアログの状態と、 まだ収集されていない必須スロットを常に追跡し、この情報をバックエンドに送信します。各ターンで、スキルは <strong>dialog</strong> ディレクティブを返してAlexaの返事を決定できます。 <strong>Dialog.Delegate</strong> ディレクティブを返すと、Alexa音声サービスは自動的に次のスロットの入力を促します。 <strong>Dialog.ElicitSlot</strong> ディレクティブを返すと、Alexaが次に促すスロットを決定できます。 <strong>Dialog.ConfirmSlot</strong> ディレクティブを返すと、ユーザーにスロット値を確認できます。</p> <p>この技術記事では、<a href="">ダイアログモデルを使用して、前の会話に基づいて動的にスロットを引き出す方法</a>というブログで紹介したコーヒーショップスキルを元に作成していきます。</p> <h1>前回までのおさらい: コーヒーショップスキル</h1> <p>コーヒーショップスキルでは、ユーザーがコーヒーまたはお茶を注文できます。 ユーザーが選択した飲み物(<strong>drink</strong>)に基づいて、スキルはコーヒーのローストの種類(<strong>coffeeRoast</strong>)またはお茶の種類(<strong>teaType</strong>)を尋ねます。 前回の記事では、<strong>Dialog.ElicitSlot</strong>ディレクティブを使用して、<strong>drink</strong>に基づいて動的に<strong>coffeeRoast</strong>スロットと<strong>teaType</strong>スロットを引き出す方法を順を追って説明しました。</p> <h1>コーヒーショップスキルの改善</h1> <p>コーヒーにフレーバーを追加する機能を追加してみましょう。 コーヒーショップでは、フレーバー(<strong>flavor</strong>)を追加するには50円の追加料金がかかります。 そのため、<strong>Dialog.ConfirmSlot</strong>ディレクティブを使用して、ユーザーに追加料金がかかってもいいかどうかを尋ねます。 まずは、<strong>drink</strong>がコーヒーの場合に<strong>flavor</strong>を勧め、<strong>Dialog.ElicitSlot</strong>を使用して動的に新しい<strong>flavor</strong>を引き出します。</p> <p>次に、<strong>Dialog.ConfirmSlot</strong>を使用してスロットを確認します。では、ユーザーが<strong>flavor</strong>を追加しない場合はどうでしょうか。 <strong>flavor</strong>スロット値の1つとして「いりません」を追加しておき、ユーザーが<strong>flavors</strong>を選択した場合にのみ<strong>Dialog.ConfirmSlot</strong>ディレクティブを返します。</p> <p>次の2つを行うことになります。</p> <ol> <li><strong>drink</strong>が<strong>コーヒー</strong>の場合に<strong>Dialog.ElicitSlot</strong>を使用して動的に<strong>flavor</strong>を引き出します。</li> <li><strong>Dialog.ConfirmSlot</strong>で<strong>flavor</strong>が指定された場合は50円の追加料金が必要であることを確認します。</li> </ol> <p>最後に、ユーザーが<strong>flavor</strong>を追加するための追加料金を<strong>確認</strong>するか<strong>拒否</strong>するかによって、次に行うことを決めます。</p> <p>手順を追って説明しましょう。</p> <p>&nbsp;</p> <h1>対話モデルの更新</h1> <p>最初は対話モデルの更新です。この時点で、コーヒーショップスキルには<strong>drink</strong>、<strong>coffeeRoast</strong>、<strong>teaType</strong>という3つのカスタムスロットがあります。 値は次のとおりです。</p> <table border="1" cellpadding="1" cellspacing="1"> <thead> <tr> <th scope="col">drink</th> <th scope="col">coffeeRoast</th> <th scope="col">teaType</th> </tr> </thead> <tbody> <tr> <td>コーヒー</td> <td>ライト</td> <td>紅</td> </tr> <tr> <td>茶</td> <td>ミディアム</td> <td>緑</td> </tr> <tr> <td>&nbsp;</td> <td>ミディアムダーク</td> <td>白</td> </tr> <tr> <td>&nbsp;</td> <td>ダーク</td> <td>ウーロン</td> </tr> </tbody> </table> <p>スキルとのやり取りで、ユーザーは次のように注文すると考えられます。</p> <blockquote> <p>注文をお願い<br /> {drink} をください<br /> {drink} を飲みたい<br /> {coffeeRoast} {drink} をちょうだい<br /> {drink} がいい<br /> {teaType} {drink} をください<br /> {teaType} {drink} にしようかな<br /> {drink} をお願い</p> </blockquote> <p>ユーザーが追加したいフレーバーを指定するには、発話を更新して新しいカスタムスロットを追加する必要があります。たとえば、次のように言うかもしれません。</p> <blockquote> <p>ミディアムローストのコーヒーをバニラ風味で<br /> ヘーゼルナッツ入りのコーヒーを飲みたい<br /> コーヒーにキャラメルをワンプッシュ入れて<br /> バニラ入りコーヒー</p> </blockquote> <p>このような発話では、flavorという新しいスロットを使用します。drink、coffeeRoast、flavorの各スロットを使用して、入力したい値をスロットで置き換えます。</p> <blockquote> <p>{coffeeRoast} {drink} を {flavor} 風味で<br /> {flavor} 入りの {drink} を飲みたい<br /> {drink} に {flavor} をワンプッシュ入れて<br /> {flavor} 入り {drink}</p> </blockquote> <p>次の表に、flavorスロットのカスタム値を示します。</p> <table border="1" cellpadding="1" cellspacing="1"> <thead> <tr> <th scope="col">フレーバー</th> </tr> </thead> <tbody> <tr> <td>いりません</td> </tr> <tr> <td>バニラ</td> </tr> <tr> <td>ヘーゼルナッツ</td> </tr> <tr> <td>キャラメル</td> </tr> </tbody> </table> <p><strong>いりません</strong>という値を使って、<strong>drink</strong>が<strong>コーヒー</strong>の場合に<strong>Dialog.ElicitSlot</strong>ディレクティブで入力を促す<strong>flavor</strong>の追加を断ることができます。それ以外の値が指定された場合は、フレーバーの追加に50円の料金がかかることを了承するかどうかを尋ねます。</p> <p>これで音声ユーザー対話モデルの変更方法を理解していただけたと思います。次はバックエンドコードを見てみましょう。</p> <h1>バックエンドからスロットを引き出して確認する</h1> <p><strong>coffeeRoast</strong>スロットや<strong>teaType</strong>スロットと同様に、<strong>flavor</strong>スロットも動的です。<strong>drink</strong>が<strong>coffee</strong>の場合にのみ、フレーバーを追加するかどうかをユーザーに尋ねます。<strong>Dialog.ElicitSlot</strong>を使用して<strong>flavor</strong>スロットを引き出し、<strong>Dialog.SlotConfirmation</strong>を使用して確認を引き出します。この場合、さらに2つのハンドラーを定義します。これらのハンドラーはスキルのさまざまな状況を表します。これらを使用して、<strong>flavor</strong>スロットを引き出し、確認します。ハンドラーは次のとおりです。</p> <ul> <li>CoffeeRoastGivenPromptFlavorOrderIntentHandler</li> <li>FlavorGivenConfirmSlotOrderIntentHandler<br /> &nbsp;</li> </ul> <h2>CoffeeRoastGivenPromptFlavorOrderIntentHandler</h2> <p>このハンドラーは<strong>Dialog.ElicitSlot</strong>ディレクティブを使用して、動的に<strong>flavor</strong>スロットを引き出します。<strong>canHandle</strong>関数は次の場合にtrueを返します。</p> <ul> <li>request.typeがIntentRequestに<strong>等しい</strong></li> <li>request.intent.nameがOrderIntentに<strong>等しい</strong></li> <li>request.intent.slots.drink.valueが<strong>空ではない</strong></li> <li>request.intent.slots.drink.valueがコーヒーに<strong>等しい</strong></li> <li>request.intent.slots.coffeeRoast.valueが<strong>空ではない</strong></li> <li>request.intent.slots.flavor.valueが<strong>空ではない</strong><br /> &nbsp;</li> </ul> <p>たとえば、ユーザーが「ダークコーヒーをちょうだい」と言うと次のようになります。</p> <pre> <code class="language-coffeescript">canHandle(handlerInput) { return handlerInput.requestEnvelope.request.type === &quot;IntentRequest&quot; &amp;&amp; === &quot;OrderIntent&quot; &amp;&amp; handlerInput.requestEnvelope.request.intent.slots.drink.value &amp;&amp; handlerInput.requestEnvelope.request.intent.slots.drink.value === &quot;コーヒー&quot; &amp;&amp; handlerInput.requestEnvelope.request.intent.slots.coffeeRoast.value &amp;&amp; handlerInput.requestEnvelope.request.intent.slots.flavor.value &amp;&amp; handlerInput.requestEnvelope.request.intent.slots.flavor.value !== &quot;いりません&quot; &amp;&amp; handlerInput.requestEnvelope.request.intent.slots.flavor.confirmationStatus === &quot;NONE&quot;; }, </code></pre> <p>&nbsp;</p> <p>その後ハンドラーは<strong>Dialog.ElicitSlot</strong>ディレクティブを使用して、<strong>flavor</strong>スロットを引き出します。</p> <pre> <code class="language-coffeescript">handle(handlerInput) { return handlerInput.responseBuilder .speak(&quot;コーヒーにフレーバーを追加できます。キャラメル、ヘーゼルナッツ、バニラから選べます。 不要の場合はいりませんと言ってください。&quot;) .reprompt(&quot;コーヒーにどのフレーバーを追加しますか?キャラメル、ヘーゼルナッツ、バニラから選べます。 不要の場合はいりませんと言ってください。&quot;) .addElicitSlotDirective(&quot;flavor&quot;) .getResponse(); } </code></pre> <p>ハンドラー全体は次のようになります。</p> <pre> <code class="language-coffeescript">const CoffeeRoastGivenPromptFlavorOrderIntentHandler = { canHandle(handlerInput) { return handlerInput.requestEnvelope.request.type === &quot;IntentRequest&quot; &amp;&amp; === &quot;OrderIntent&quot; &amp;&amp; handlerInput.requestEnvelope.request.intent.slots.drink.value &amp;&amp; handlerInput.requestEnvelope.request.intent.slots.drink.value === &quot;コーヒー&quot; &amp;&amp; handlerInput.requestEnvelope.request.intent.slots.coffeeRoast.value &amp;&amp; !handlerInput.requestEnvelope.request.intent.slots.flavor.value; }, handle(handlerInput) { return handlerInput.responseBuilder .speak(&quot;コーヒーにフレーバーを追加できます。キャラメル、ヘーゼルナッツ、バニラから選べます。 不要の場合はいりませんと言ってください。&quot;) .reprompt(&quot;コーヒーにどのフレーバーを追加しますか?キャラメル、ヘーゼルナッツ、バニラから選べます。 不要の場合はいりませんと言ってください。&quot;) .addElicitSlotDirective(&quot;flavor&quot;) .getResponse(); } }; </code></pre> <p>コーヒーが注文され、<strong>flavor</strong>スロットを動的に引き出すことができるようになったので、次のハンドラーに移りましょう。</p> <h2>FlavorGivenConfirmSlotOrderIntentHandler</h2> <p><strong>FlavorGivenConfirmSlotOrderIntentHandler</strong>では<strong>Dialog.ConfirmSlot</strong>ディレクティブを使用します。これの<strong>canHandle</strong>関数は次の場合に<strong>true</strong>を返します。</p> <ul> <li>request.typeがIntentRequestに等しい</li> <li>request.intent.nameがOrderIntentに等しい</li> <li>request.intent.slots.drink.valueが空ではない</li> <li>request.intent.slots.drink.valueがコーヒーに等しい</li> <li>request.intent.slots.coffeeRoast.valueが空ではない</li> <li>request.intent.slots.flavor.valueが空ではない</li> <li>request.intent.slots.flavor.valueがいりませんに等しくない</li> <li>request.intent.slots.flavor.confirmationStatusがNONEに等しい<br /> &nbsp;</li> </ul> <p>この最後の条件、<strong>request.intent.slots.flavor.confirmationStatus</strong>が<strong>NONE</strong>に等しい、が非常に重要です。これがないと、スキルは<strong>flavor</strong>スロットの確認を永遠に続けるので、ユーザーは困ってしまいます。スロットが確認される前は、<strong>confirmationStatus</strong>は<strong>NONE</strong>です。ユーザーが答えると<strong>DENIED</strong>または<strong>CONFIRMED</strong>のいずれかになります。したがって、<strong>flavor</strong>スロットを確認する前に、<strong>confirmationStatus</strong>をチェックする必要があります。</p> <pre> <code class="language-javascript">canHandle(handlerInput) { return handlerInput.requestEnvelope.request.type === &quot;IntentRequest&quot; &amp;&amp; === &quot;OrderIntent&quot; &amp;&amp; handlerInput.requestEnvelope.request.intent.slots.drink.value &amp;&amp; handlerInput.requestEnvelope.request.intent.slots.drink.value === &quot;コーヒー&quot; &amp;&amp; handlerInput.requestEnvelope.request.intent.slots.coffeeRoast.value &amp;&amp; handlerInput.requestEnvelope.request.intent.slots.flavor.value &amp;&amp; handlerInput.requestEnvelope.request.intent.slots.flavor.value !== &quot;いりません&quot; &amp;&amp; handlerInput.requestEnvelope.request.intent.slots.flavor.confirmationStatus === &quot;NONE&quot;; }, </code></pre> <p><strong>handle</strong>関数は確認プロンプトを作成し、<strong>Dialog.ConfirmSlot</strong>ディレクティブを返します。</p> <pre> <code class="language-javascript">handle(handlerInput) { const flavor = handlerInput.requestEnvelope.request.intent.slots.flavor.value; const speechText = `${flavor}を追加すると50円の追加料金がかかります。追加してよろしいですか?`; return handlerInput.responseBuilder .speak(speechText) .reprompt(speechText) .addConfirmSlotDirective(&quot;flavor&quot;) .getResponse(); } </code></pre> <p>全体を見るとハンドラーのcanHandle関数とhandle関数がどのように連携しているかがわかります。</p> <pre> <code class="language-javascript">const FlavorGivenConfirmSlotOrderIntentHandler = { canHandle(handlerInput) { return handlerInput.requestEnvelope.request.type === &quot;IntentRequest&quot; &amp;&amp; === &quot;OrderIntent&quot; &amp;&amp; handlerInput.requestEnvelope.request.intent.slots.drink.value &amp;&amp; handlerInput.requestEnvelope.request.intent.slots.drink.value === &quot;コーヒー&quot; &amp;&amp; handlerInput.requestEnvelope.request.intent.slots.coffeeRoast.value &amp;&amp; handlerInput.requestEnvelope.request.intent.slots.flavor.value &amp;&amp; handlerInput.requestEnvelope.request.intent.slots.flavor.value !== &quot;いりません&quot; &amp;&amp; handlerInput.requestEnvelope.request.intent.slots.flavor.confirmationStatus === &quot;NONE&quot;; }, handle(handlerInput) { const flavor = handlerInput.requestEnvelope.request.intent.slots.flavor.value; const speechText = `${flavor}を追加すると50円の追加料金がかかります。追加してよろしいですか?`; return handlerInput.responseBuilder .speak(speechText) .reprompt(speechText) .addConfirmSlotDirective(&quot;flavor&quot;) .getResponse(); } }; </code></pre> <p>スロットが確認または拒否された後に何をするかは自由に決めてください。ここではこれ以上スロットを収集する必要がなく、<strong>FlavorGivenConfirmSlotOrderIntentHandler</strong>はコーヒー関連のスロットがすべて収集された後にのみ発生するため、<strong>CompletedOrderIntentHandler</strong>で確認後の処理をしましょう。</p> <h2>CompletedOrderIntentHandler</h2> <p>このハンドラーは、ダイアログが完了した後に実行されます。canHandleは次の場合にtrueを返します。</p> <ul> <li>request.typeがIntentRequestに等しい</li> <li>request.intent.nameがOrderIntentに等しい</li> <li>request.dialogStateがCOMPLETEDに等しい</li> </ul> <p><strong>canHandle</strong>は3つのシンプルなチェックに変換されます。</p> <pre> <code class="language-javascript">canHandle(handlerInput) { return handlerInput.requestEnvelope.request.type === &quot;IntentRequest&quot; &amp;&amp; === &quot;OrderIntent&quot; &amp;&amp; handlerInput.requestEnvelope.request.dialogState === &quot;COMPLETED&quot;; }, </code></pre> <p><strong>handle</strong>関数には、<strong>confirmationStatus</strong>を処理するロジックが含まれています。<strong>drink</strong>がコーヒーの場合、ロジックは<strong>confirmationStatus</strong>をチェックします。<strong>DENIED</strong>であれば、注文にフレーバーを付けないことをユーザーに知らせます。<strong>CONFIRMED</strong>であれば、いいですね、と言います。この時点でサンプルスキルは終了しますが、本格的なコーヒーショップスキルを開発する場合は、このロジックに続けてショッピングカートにアイテムを追加し、「支払いに進みますか?別のアイテムをショッピングカートに追加しますか?」と尋ねることになります。</p> <pre> <code class="language-javascript">handle(handlerInput) { const slots = handlerInput.requestEnvelope.request.intent.slots; const drink = slots.drink.value; let type = ''; let speechText = &quot;いいですね。&quot;; if (drink === 'コーヒー') { type = slots.coffeeRoast.value; if(slots.flavor.confirmationStatus === &quot;DENIED&quot;) { speechText = `わかりました。注文に${slots.flavor.value}は付けません。`; } else if (slots.flavor.confirmationStatus === &quot;CONFIRMED&quot;) { speechText = `おいしそうですね。${slots.flavor.value} は大好きです。`; } } else if (drink === '茶') { type = handlerInput.requestEnvelope.request.intent.slots.teaType.value; } speechText += `${type}${drink}をショッピングカートに追加します。`; return handlerInput.responseBuilder .speak(speechText) .getResponse(); } </code></pre> <p>ハンドラー全体は次のようになります。</p> <pre> <code class="language-javascript">const CompletedOrderIntentHandler = { canHandle(handlerInput) { return handlerInput.requestEnvelope.request.type === &quot;IntentRequest&quot; &amp;&amp; === &quot;OrderIntent&quot; &amp;&amp; handlerInput.requestEnvelope.request.dialogState === &quot;COMPLETED&quot;; }, handle(handlerInput) { const slots = handlerInput.requestEnvelope.request.intent.slots; const drink = slots.drink.value; let type; let speechText = &quot;いいですね。&quot;; if (drink === 'コーヒー') { type = slots.coffeeRoast.value; if(slots.flavor.confirmationStatus === &quot;DENIED&quot;) { speechText = `わかりました。注文に${slots.flavor.value}は付けません。`; } else if (slots.flavor.confirmationStatus === &quot;CONFIRMED&quot;) { speechText = `おいしそうですね。${slots.flavor.value} は大好きです。`; } } else if (drink === '茶') { type = handlerInput.requestEnvelope.request.intent.slots.teaType.value; } else { type = '水'; } speechText += `${type}${drink}をショッピングカートに追加します。`; return handlerInput.responseBuilder .speak(speechText) .getResponse(); } } </code></pre> <p>では、ユーザーが<strong>drink</strong>に対して有効な選択を指定しなかった場合、どうすればいいのでしょうか。<strong>水</strong>や<strong>野球</strong>と答えられたら、どうしますか? 次の記事では、ユーザーからの入力を検証する方法を説明します。それまでは、次のことについて考えてみてください。必要なハンドラーは何か? スロットを再度引き出す方法は? 必要なダイアログディレクティブは何か?</p> <p>この記事を最後まで読んでいただき、ありがとうございました。このテクニックを応用して、ご自分のスキルで使ってみてください。オンラインのディスカッションも歓迎します。 Twitterのアカウントは<a href="">@Tohimin8</a>です。</p> <h1>関連リソース</h1> <ul> <li><a href="">会話型のAlexaスキルを開発する: ダイアログモデルを使用して、前の会話に基づいて動的にスロットを引き出す方法</a></li> </ul> /blogs/alexa/post/6806230a-aa65-4bb5-9ecd-ba62e59bd7e5/amazon-pay-for-alexa-skills-jp Alexaスキル向けAmazon Payで収益につなげよう(日本で利用できるようになりました) Motoko Onitsuka 2018-12-03T01:00:12+00:00 2018-12-03T01:00:12+00:00 <p><img alt="amazon pay" src="" style="height:240px; width:954px" /></p> <p>Alexaスキルから実際の商品やサービスを販売したいと考えている販売事業者向けに、新しいチャネルができました。このほど、Alexaスキル向けAmazon Payが、日本にお住まいの販売事業者および開発者に一般公開されました。</p> <p><img alt="amazon pay" src="" style="height:240px; width:954px" /></p> <h2><strong>Alexaスキル向けAmazon Payで収益につなげよう(日本で利用できるようになりました)</strong></h2> <p>Alexaスキルから実際の商品やサービスを販売したいと考えている販売事業者向けに、新しいチャネルができました。このほど、<a href="">Alexaスキル向けAmazon Pay</a>が、日本にお住まいの販売事業者および開発者に一般公開されました。Alexaスキル向けAmazon Payでは、Amazonのシンプルな音声ショッピングフローを使用して、イベントのチケットやフードデリバリーといった商品やサービスを販売できます。Amazon Payを活用して、Alexaスキルで収益につなげましょう。</p> <p>&nbsp;</p> <h2 style="text-align:justify"><strong>仕組み</strong></h2> <p style="text-align:justify">ユーザーがAlexaスキルで実際の商品やサービスを購入する際に、クレジットカードや配送先住所を入力する必要はありません。販売事業者は、まずAmazon Payへの登録を行い、次にセラーセントラルでAmazon PayアカウントをAlexaスキルにリンクします。Amazon Payを使うと、既存のCRMや注文管理ソリューションと統合することができるため、現在の販売プロセス内で販売を管理できます。</p> <p style="text-align:justify">ユーザーの操作も簡単です。Alexaスキル向けAmazon Payの場合、ユーザーは、Amazonアカウントにすでにある情報を使用して、スキル内で実際の商品やサービスの代金を支払うことができます。ユーザー名とパスワードを覚えておく必要はありません。</p> <p style="text-align:justify">&nbsp;</p> <h2 style="text-align:justify"><strong>日本国内におけるAmazon Pay対応のAlexaスキル事例(五十音順)</strong></h2> <p style="text-align:justify"><img alt="" src="" style="height:149px; width:781px" /></p> <p><a href=";ie=UTF8&amp;qid=1542609102&amp;sr=1-1&amp;keywords=%E4%BA%AC%E6%A9%8B%E3%83%AF%E3%82%A4%E3%83%B3">京橋ワイン </a></p> <p>Amazon Payを使用した注文が可能です。「アレクサ、京橋ワインを開いて」と発話するだけでプロセスが始まり、京橋ワインスタッフが厳選したワインをご購入頂けます。</p> <p>&nbsp;</p> <p><a href=";ie=UTF8&amp;qid=1542609159&amp;sr=1-1&amp;keywords=JTB%E3%81%8A%E3%81%A7%E3%81%8B%E3%81%91%E3%83%81%E3%82%B1%E3%83%83%E3%83%88">JTBおでかけチケット</a></p> <p>JTBおでかけチケットスキルには、特別割引のお得な値段で購入できるチケットが多数あります。Amazon Payを使用して日本全国約2,000施設のレジャーチケットを電子チケットとして「音声ショッピング」で購入いただけます。</p> <p>&nbsp;</p> <p><a href=";ie=UTF8&amp;qid=1542608580&amp;sr=1-1&amp;keywords=%E5%87%BA%E5%89%8D%E9%A4%A8" target="_blank">出前館</a></p> <p>Amazon Payを導入する全国の『出前館』加盟店約12,000店舗の中から定番のピザや中華をはじめ、ハンバーガーやエスニック料理など、様々なジャンルのお料理をご注文から最短20分でお届けできます。</p> <p>&nbsp;</p> <p><a href="" target="_blank">日本赤十字社</a></p> <p>今年7月に日本初となる音声での寄付が可能なAlexaスキルの提供を開始しました。ユーザーはAlexaスキルを通して人道支援活動を援助することが可能になりました。たとえば、日本赤十字社のスキルユーザーはAlexaに寄付金額を伝えるだけで、Amazon Payで簡単に寄付を完了させることができます。</p> <p>&nbsp;</p> <p><a href=";ie=UTF8&amp;qid=1542609176&amp;sr=1-1&amp;keywords=PIZZA+SALVATORE+CUOMO">PIZZA SALVATORE CUOMO</a></p> <p>本格ナポリピッツァ、イタリアンが楽しめるPIZZA SALVATORE CUOMOでは、AlexaからPIZZA SALVATORE CUOMOのピッツァの宅配注文を実際にご注文いただけます。</p> <p>&nbsp;</p> <p><a href="">メガネスーパー</a></p> <p>Alexaがメガネスーパー公式通販サイトで前回購入した、コンタクトレンズ、カラコン、ケア用品を検索し、再注文してくれます。 お支払いは、Amazon Payを通して行われます。</p> <p>&nbsp;</p> <p><a href="">リンベルショップ</a></p> <p>お取り寄せや大切な方への贈り物に好適な逸品をAmazon Payを使って購入できます。 「アレクサ リンベルショップ を開いて」 というだけで、リンベル選りすぐりの商品を紹介します。</p> <h2><br /> <strong>Alexa</strong><strong>スキルで収益につなげるその他の方法</strong></h2> <p>Alexa開発者リワードプログラム: Alexa開発者リワードプログラムでは、ユーザーエンゲージメントがもっとも高かったスキルに、リワードをお支払いします。毎月、対象カテゴリーのスキルは自動的にプログラムの対象となります。リワード対象に選ばれた場合はご連絡いたします。<a href="">詳細はこちら</a></p> <h2 style="text-align:justify">&nbsp;</h2> <h2 style="text-align:justify"><strong>さあ始めましょう</strong></h2> <p>詳細については、<a href="" target="_blank">日本</a>、<a href="">米国</a>、<a href="" target="_blank">英国</a>、<a href="" target="_blank">アイルランド</a>、<a href="" target="_blank">ドイツ</a>、<a href="" target="_blank">オーストリア</a>、<a href="" target="_blank">フランス</a>のAlexaスキル向けAmazon PayのWebサイトをご覧ください。</p> <p>&nbsp;</p>