Deine Alexa Dashboards Einstellungen
Vielen Dank für Ihren Besuch. Diese Seite ist momentan nur auf Englisch verfügbar. Wir arbeiten an der deutschen Version. Vielen Dank für Ihr Verständnis.
Alexa Blogs Alexa Developer Blogs /blogs/alexa/feed/entries/atom 2017-11-17T05:13:50+00:00 Apache Roller /blogs/alexa/post/cddf2434-42ee-422f-886d-5be9c36dba14/jp-training-chapter3 Alexaスキル開発トレーニングシリーズ 第3回 音声ユーザーインターフェースの設計 Motoko Onitsuka 2017-11-17T05:05:14+00:00 2017-11-17T05:13:50+00:00 <p>日本のAlexaのためのスキルを開発する皆様に向けた6回にわたるトレーニングシリーズです。第3回の今回は、Alexaスキルにおける音声ユーザーインターフェースの設計について解説します。</p> <p>このトレーニングは<a href="https://developer.amazon.com/ja/alexa-skills-kit/training/building-a-skill">6回のシリーズ</a>で、Alexaスキルの基礎、仕組み、スキルの開発と認証まで、幅広い内容を解説します。 第3回では、Alexaスキルにおける音声ユーザーインターフェースの設計について解説します。(<a href="https://dp-blogs-iad.iad.proxy.amazon.com/blogs/alexa/post/6e716e5c-55b0-445b-b936-9cfac4712e7b/training-1">第1回</a>、<a href="https://dp-blogs-iad.iad.proxy.amazon.com/blogs/alexa/post/07377568-2815-4028-8c21-409dd8e84fa2/alexa-training-jp-2nd">第2回</a>の記事もご覧ください)</p> <ol> <li>音声ユーザーインターフェースの設計</li> <li>スキルのセッション管理</li> <li>Alexa SDKの状態管理機能</li> <li>実習 : サンプルスキルへの処理の追加</li> </ol> <p>&nbsp;</p> <p>まずは、今回学習する内容を簡単に説明するビデオを見てみましょう。</p> <p><iframe allowfullscreen="" frameborder="0" height="360" src="//www.youtube.com/embed/2inokuKmrEA?rel=0" width="640"></iframe></p> <h2>&nbsp;</h2> <h2>3-1. 音声ユーザーインターフェースの設計</h2> <p>使いやすいスキルはユーザーとAlexaのやり取りが自然で、ユーザーの意図や要望に応える適切なふるまいを期待したいところです。やり取りやふるまいは、スキルのプログラムを開発する前に<strong>音声ユーザーインターフェース</strong>として事前に設計することができます。ここではその設計手法と手順について見ていきましょう。</p> <p style="text-align:left">なお、今回ご紹介する設計手法はAlexa開発者ポータルで設計ガイドとして公開されています。詳細については設計ガイドを参照してください: <a href="https://developer.amazon.com/ja/designing-for-voice/">Alexa音声設計ガイド</a></p> <p>まずは手順を以下に示します。それぞれ見ていきましょう。</p> <p>&nbsp;</p> <ol> <li>目的とストーリーの明確化</li> <li>台本の作成</li> <li>フロー図の作成</li> <li>対話モデルへの反映</li> </ol> <p style="text-align:left">&nbsp;</p> <h3>ステップ1 目的とストーリーの明確化</h3> <p>せっかく開発するスキルですから、ユーザーにとってスキルが役に立ち、スキルを気に入ってもらえるようスキルの目的や利用するシナリオを検討しましょう。例えば、以下の問いかけに応えられるような目的、機能を考えます。</p> <ul> <li>スキルを使う目的は何か。ユーザーはどんな理由でスキルを使うのか</li> <li>スキルとのやり取りの前、最中、後のそれぞれでユーザーがどんな行動を取るのか</li> <li>スキルを通してしか得られない何かがあるか</li> </ul> <p>例 : 株価スキル</p> <ul> <li>毎日の株価の推移を手軽に知りたい</li> <li>株価を聞いてから必要に応じて株取引を行う</li> <li>PCやスマートフォン・タブレットを操作しなくとも、株価のサマリが入手できる</li> </ul> <p>次にスキルの目的や機能を元に、以下の項目を整理していきます。</p> <ul> <li>ユーザーがスキルを通してできる事、できない事は何か</li> <li>ユーザーはどんな情報を得られると期待しているか</li> <li>ユーザーがスキルを起動するシチュエーションはなにか</li> <li>目的を直接的にサポートする機能はなにか</li> <li>Webサイトやモバイルアプリなど、情報を得るための他の手段はあるか</li> </ul> <p>例 : 株価スキル</p> <ul> <li>株価を聞くことはできるが取引はできない</li> <li>朝起きて習慣的に聞く</li> <li>手が離せないときに聞く</li> <li>株価自体はWebサイト、モバイルアプリなどで見ることもできる</li> </ul> <p>カスタムスキルはスキルの処理を自由にプログラミングできる一方で、目的や機能が拡散しがちでユーザーが直感的には利用できないものに変貌してしまうことがあります。目的や機能と、それに行き着くシチュエーションやシナリオをよく練っておきましょう。</p> <p>&nbsp;</p> <h3>ステップ2 台本の作成</h3> <p>台本は、映画や演劇のようにユーザーとAlexaとの詳細な会話内容を明らかにし、スキルにおける会話の進行を決める重要な手がかりになります。台本は、考慮していなかったシチュエーションを発見する助けにもなるでしょう。</p> <p>台本作成時の注意点を示します。</p> <ul> <li>やり取りは簡潔に</li> <li>書き言葉ではなく話し言葉で</li> <li>繰り返しの発言は避ける</li> <li>ユーザーが情報を伝えるタイミングを意識する</li> <li>ユーザーが何をするべきか、これから何が起こるかを知っていると仮定しない</li> <li>選択肢を明確にする</li> <li>多くの場合、一度に3つ以上の選択肢を与えない</li> <li>問いかける情報は、一度にひとつだけにする</li> </ul> <p>株取引スキル(架空のオレンジ証券スキル)を例として台本を示します。</p> <p>&nbsp;</p> <p><strong><u>台本の例1</u></strong></p> <p>ユーザー : アレクサ、オレンジ証券をひらいて</p> <p>Alexa : オレンジ証券スキルにようこそ。あなたのポートフォリオとマーケット情報のどちらを聞きますか</p> <p>ユーザー : ポートフォリオ</p> <p>Alexa : 本日のあなたのポートフォリオは0.27%増え、合計45,327円です。詳しくお話ししますか</p> <p>ユーザー : はい</p> <p>Alexa : かもめ急便は0.35%値上がりし19,546円 (0.5秒待機)、いろはピザは0.21%値上がりし17,604円 (0.5秒待機)、横井船舶は1.41%値上がりし3,254円 (0.5秒待機)、他のポートフォリオもお話しますか</p> <p>ユーザー : もういいです</p> <p>Alexa : 他になにかございますか</p> <p>ユーザー : 無いかな、ありがとう</p> <p>Alexa : わかりました、では良い一日を</p> <p>&nbsp;</p> <p><u><strong>台本の例2</strong></u></p> <p>ユーザー : アレクサ、オレンジ証券で今日の投資情報を教えて</p> <p>Alexa : 本日、あなたのポートフォリオは0.27%増え、合計45,000円です。詳しくお話ししますか</p> <p>ユーザー : はい</p> <p>Alexa : かもめ急便は0.35%値上がりし19,546円 (0.5秒待機)、いろはピザは0.21%値上がりし17,604円 (0.5秒待機)、横井船舶は1.41%値上がりし3,254円 (0.5秒待機)、他のポートフォリオもお話しますか</p> <p>ユーザー : 止めて</p> <p>Alexa : わかりました、では良い一日を</p> <p>&nbsp;</p> <h3>ステップ3 フロー図の作成</h3> <p>台本は、ユーザーとスキルとのやり取りの全てをあらわすわけではありません。ユーザーは短く話すこともあれば、たくさん話すこともあるでしょう。台本を元に、スキルの目的を達成するための様々な道筋をフォローする<strong>フロー図</strong>を作成しましょう。</p> <ol> <li>スキル完了までの最短ルートを描く</li> <li>他のパスややり取りを通したルートの分岐を描く</li> <li>スキルが応答するために必要な処理を描く</li> <li>スキルの使い方(ヘルプ)機能を描く</li> <li>(必要に応じて)アカウントリンク機能(第5回で紹介)の処理を描く</li> </ol> <p><img alt="フロー図の作成" src="https://m.media-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-skills-kit/jp/blog/figure-vui-flowchart._CB494631160_.png" style="height:599px; width:487px" /></p> <h3>ステップ4 対話モデルへの反映</h3> <p>台本とフロー図が作成できたら、ユーザーの発言内容をスキルの対話モデル(インテントやサンプル発話)と紐づけていきましょう。</p> <ul> <li>インテントの洗い出し</li> <li>発話の洗い出し</li> </ul> <p>インテントの例</p> <pre> <code>LaunchRequest PortfolioSummaryIntent PortfolioDetailIntent MarketSummaryIntent</code></pre> <p>&nbsp;</p> <p>サンプル発話の例<br /> &nbsp;</p> <pre> <code>PortfolioSummaryIntent 今日 の 投資情報 を 教えて PortfolioSummaryIntent ポートフォリオ を 教えて PortfolioSummaryIntent ポートフォリオ が知りたい PortfolioSummaryIntent ポートフォリオ PortfolioSummaryIntent 投資情報 を 教えて PortfolioSummaryIntent 投資情報 が 知りたい PortfolioSummaryIntent 投資情報 MarketSummaryIntent マーケット情報 を 教えて MarketSummaryIntent マーケット情報 が 知りたい MarketSummaryIntent マーケット情報</code></pre> <p>洗い出した対話モデルを元に、スキルの構成とプログラミングを進めて行きましょう。</p> <p>&nbsp;</p> <h2>3-2. スキルのセッション管理</h2> <p>ユーザーとAlexaスキルのやり取りは、ユーザーからの呼びかけとスキルによる応答の一問一答が基本です。しかしスキルの目的やシチュエーションによっては、ユーザーから複数の情報を聞き出したり、フローに従って会話を進めるようなスキルを必要とすることもあるでしょう。会話を維持するためにはどこまで会話が進んでいるかや、ユーザーから聞き出した情報を記憶しておくための<strong>セッション管理</strong>が必要です。</p> <p>&nbsp;</p> <p><strong>セッション管理がない場合</strong></p> <p>ユーザー : 「東京の天気を教えて」</p> <p>Alexa : 「東京の今日の天気は晴れ、気温は28度です。週間予報も聞きますか?」</p> <p>ユーザー : 「はい」</p> <p>Alexa : (「はい」というのはわかったけど、最初に言っていた天気の場所はどこだっけ?)</p> <p>&nbsp;</p> <p><strong>セッション管理がある場合</strong></p> <p>ユーザー : 「東京の天気を教えて」</p> <p>Alexa : 「東京の今日の天気は晴れ、気温は28度です。週間予報も聞きますか?」</p> <p>ユーザー : 「はい」</p> <p>Alexa : (「東京」を憶えているので)「東京の週間天気をお知らせします。明日は(以下続く)」</p> <p>&nbsp;</p> <p style="text-align:left">参考 : ユーザーから複数の情報を聞き出す機能としては、ダイアログモデルを利用することもできます。 <a href="https://developer.amazon.com/ja/docs/custom-skills/dialog-interface-reference.html">Dialogインターフェースのリファレンス</a></p> <p>&nbsp;</p> <h3>セッションアトリビュートの利用</h3> <p>セッション管理には<strong>セッションアトリビュート</strong>を利用できます。セッションアトリビュートは、ユーザーとAlexaサービスとの複数のやり取り(セッション)をまたぐときに情報を引き継ぐ機能です。AWS Lambda関数からAlexaサービスに返すレスポンスにセッションアトリビュートを追加すると、Alexaサービスは受け取ったセッションアトリビュートと同じものを次のAWS Lambda関数へのリクエストに含めて渡します。</p> <p><img alt="セッションアトリビュートの利用" src="https://m.media-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-skills-kit/jp/blog/figure-session-attributes._CB494631160_.png" style="height:360px; width:640px" /></p> <p>Lambda関数では、リクエストのセッションアトリビュートを参照することで、前の処理のデータを引き継ぐことができます。Alexa SDKのインテントハンドラでは、this.attributesハッシュの要素でセッションアトリビュートに代入したり参照することができます。</p> <p>&nbsp;</p> <p><strong>代入する例</strong></p> <p>this.attributes['city'] = '東京';</p> <p>&nbsp;</p> <p><strong>参照する例</strong></p> <p>var city = this.attributes['city'];</p> <p>&nbsp;</p> <h3>レスポンスアクション</h3> <p>ハンドラで実行するemitメソッドの1つ目の引数にレスポンスアクションを指定すると、Alexa SDKはそれに応じたレスポンスを生成します。主なレスポンスアクションとして、単発のレスポンスを返しセッションを終了するtellアクションと、セッションを維持するaskアクションがあります。</p> <p>&nbsp;</p> <p><strong>主なレスポンスアクション</strong></p> <ul> <li>:tell : 単発のレスポンスを返し、セッションを維持しない</li> <li>:ask : レスポンスを返し、セッションを維持する</li> </ul> <p>&nbsp;</p> <p><strong>tellアクションの記述例</strong></p> <pre> <code class="language-javascript">var speechOutput = city + 'の今日の天気は' + weather + 'です'; this.emit(':tell', speechOutput);</code></pre> <p>&nbsp;</p> <p><strong>askアクションの記述例</strong></p> <pre> <code class="language-javascript">var speechOutput = city + 'の今日の天気は' + weather + 'です。週間予報も聞きますか'; var repromptSpeech = '週間予報も聞きますか'; this.emit(':ask', speechOutput, repromptSpeech); // 3つ目の引数はAlexaサービスがユーザーからの追加の発言を聞き取れなかった場合のユーザーへの問いかけメッセージを示す</code></pre> <p>セッションを扱うスキルであれば、そのままスキルを終了する時以外はaskアクションを多用することになるでしょう。</p> <p>&nbsp;</p> <h2>3-3. Alexa SDKの状態管理機能</h2> <p>会話を継続させるためには、データの引き継ぎのほかにも考慮しなければならない事柄があります。例えば電車の運賃を照会するスキルで、先に出発駅を聞きそのあと行き先駅を聞くというフローがある場合、ユーザーの発話に含まれる駅名が出発駅なのか行き先駅なのかを段階によって聞き分ける必要があります。つまり、ユーザーが同じ発話をした場合でも、文脈によってスロットやインテントの意味合い、行うべき処理が変わってくることがあります。</p> <p>Alexa SDKでは<strong>ステート</strong>という概念を導入することでこの問題を解決しています。例えば、出発駅入力のステートと行き先駅入力のステートを定義し、出発駅のステートで受け取った駅名は出発駅、行き先駅のステート時に受け取った駅名は行き先駅として処理するという要領です。<strong>ステートハンドラ</strong>という仕組みで会話の段階(ステート)毎にインテントの処理を定義します。</p> <p><br /> <img alt="ステートハンドラ" src="https://m.media-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-skills-kit/jp/blog/figure-state-handler._CB494631161_.png" style="height:240px; width:540px" /></p> <p>ステートハンドラの利用手順を見ていきます。まずはステートの数やステート名を決め、プログラム内で後から参照するための配列として定義します。</p> <pre> <code class="language-javascript">var states = { STARTMODE: '_STARTMODE', WEEKLYMODE: '_WEEKLYMODE' }; </code></pre> <p>ここでは、スキル起動時のステートとしてSTARTMODEと、次のステートとしてWEEKLYMODEを定義しています。インテントハンドラは、Alexa.CreateStateHandlerメソッドで生成する関数(ステートハンドラ)をセットします。ステートを示す配列の要素を1つ目の引数に、ハンドラ定義を2つ目の引数に指定します。ハンドラでは、次に進むステートの指定やセッションアトリビュートのセットなどを行い、レスポンスを返します。<br /> &nbsp;</p> <pre> <code class="language-javascript">var startHandlers = Alexa.CreateStateHandler(states.STARTMODE, { 'WeatherIntent': function() { (中略) var city = this.event.request.intent.slots.City.value; this.handler.state = states.WEEKLYMODE; // 次に進むステートのセット this.attributes['city'] = city; // セッションアトリビュートへのセット var speechOutput = city + 'の今日の天気は' + weather + 'です。週間予報も聞きますか'; var repromptSpeech = '週間予報も聞きますか'; this.emit(':ask', speechOutput, repromptSpeech); }, : });</code></pre> <p>ステートハンドラは、通常のハンドラと同様AlexaインスタンスのregisterHandlersメソッドで登録します。</p> <pre> <code class="language-javascript">alexa.registerHandlers(handlers, startHandlers);</code></pre> <p>なお、ステートハンドラではビルトインインテントや対話モデルのインテントに加えて以下のハンドラも定義、利用できます。</p> <p>&nbsp;</p> <ul> <li>NewSession(任意) : スキル起動時のハンドラとして動作</li> <li>SessionEndedRequest(任意) : スキル終了時のハンドラとして動作</li> <li>Unhandled(必須) : 他のハンドラが呼ばれない時のデフォルトハンドラとして動作</li> </ul> <p>&nbsp;</p> <h2>今回の実習</h2> <p>第2回で作成した星占いスキルに、状態管理を追加した相性占いの機能をつけましょう。以下のようなやり取りができるようにします。</p> <p>&nbsp;</p> <p>ユーザー : 「アレクサ、うらないでうお座の運勢を教えて」</p> <p>Alexa : 「今日のうお座の運勢は星みっつで良いでしょう。相性を占いますので、相手の星座を教えてください」</p> <p>ユーザー : 「みずがめ座」</p> <p>Alexa : 「うお座とみずがめ座の相性は普通です。仲良くなるために頑張りましょう」</p> <p>&nbsp;</p> <ol> <li>スキルの変更点の確認</li> <li>AWS Lambda関数の変更</li> <li>動作確認</li> </ol> <p>&nbsp;</p> <h2>ステップ1 スキルの変更点の確認</h2> <p>相性占い機能を追加するために、AWS Lambda関数に以下の変更を行います。今回は対話モデルは変更しません。</p> <p>&nbsp;</p> <ul> <li>ユーザーの星座を保持しておくためのセッションアトリビュートの追加</li> <li>ユーザーの星座を聞いたあとに相手の星座をやりとするためのステートの追加</li> </ul> <p>&nbsp;</p> <pre> <code class="language-javascript">&quot;use strict&quot;; const Alexa = require('alexa-sdk'); const fortunes = [ { 'score' : 'good', 'description' : '星みっつで良いでしょう' }, { 'score' : 'normal', 'description' : '星ふたつで普通でしょう' }, { 'score' : 'bad', 'description' : '星ひとつでイマイチでしょう' } ]; // ステートの定義 const states = { SYNASTRYMODE: '_SYNASTRYMODE' }; // 相性占い結果の定義 const synastries = [ { 'score' : 'good', 'description' : '良いです。仲良くなれるかもしれません' }, { 'score' : 'normal', 'description' : '普通です。仲良くなるために頑張りましょう' }, { 'score' : 'bad', 'description' : '悪いです。仲良くなるためには努力が必要かもしれません' } ]; exports.handler = function(event, context, callback) { var alexa = Alexa.handler(event, context); // alexa.appId = process.env.APP_ID; alexa.registerHandlers(handlers, synastriesHandlers); // 既存のハンドラに加えてステートハンドラ(後半で定義)も登録 alexa.execute(); }; var handlers = { 'LaunchRequest': function () { this.emit('AMAZON.HelpIntent'); }, 'AMAZON.HelpIntent': function () { this.emit(':ask', '今日の運勢を占います。' + 'たとえば、うらないでふたご座の運勢を教えてと聞いてください'); }, 'HoroscopeIntent': function () { var sign = this.event.request.intent.slots.StarSign.value; var fortune = fortunes[Math.floor(Math.random()*3)]; this.handler.state = states.SYNASTRYMODE; // ステートをセット this.attributes['sign'] = sign; // 星座をセッションアトリビュートにセット var message = '今日の' + sign + 'の運勢は' + fortune.description + '。' + '相性を占いますので、お相手の星座を教えてください'; var reprompt = 'お相手の星座を教えてください'; this.emit(':ask', message, reprompt); // 相手の星座を聞くためにaskアクションに変更 console.log(message); } }; // ステートハンドラの定義 var synastriesHandlers = Alexa.CreateStateHandler(states.SYNASTRYMODE, { 'HoroscopeIntent': function() { // ハンドラの実行後、スキルの初期状態に戻すためステートをリセット this.handler.state = ''; this.attributes['STATE'] = undefined; var yourSign = this.attributes['sign']; // セッションアトリビュートsignを参照 var hisSign = this.event.request.intent.slots.StarSign.value; // スロットから相手の星座を参照 var synastry = synastries[Math.floor(Math.random()*3)]; // ランダムに相性を決める var message = yourSign + 'と' + hisSign + 'の相性は' + synastry.description; this.emit(':tell', message); console.log(message); }, 'Unhandled': function() { var reprompt = 'お相手の星座を教えてください'; this.emit(':ask', reprompt, reprompt); } });</code></pre> <h2>ステップ2 AWS Lambda関数の変更</h2> <p>ステップ1の変更をLambda関数のプログラムに適用します。</p> <p>&nbsp;</p> <ol> <li>AWSマネジメントコンソールにログインし、画面左上の[サービス]をクリック、テキストボックスに「lambda」と入力して候補として表示されるLambdaを選択しAWS Lambdaの管理画面を表示する</li> <li>関数のリストから「HoroscopeSkill」をクリックします</li> <li>関数コードにステップ1のプログラムをコピー&amp;ペーストで貼り付け、[保存してテスト]ボタンをクリックする</li> <li>画面右上の[テスト]ボタンをクリックしてHoroscopeSkill関数の実行をテストする。</li> <li>「実行結果: 成功」と表示され、[詳細]をクリックし結果を確認する</li> </ol> <p>&nbsp;</p> <h2>ステップ3 動作確認</h2> <p>サービスシミュレーターで星占いスキルの相性占い昨日の動作を確認しましょう。自分の星座、相手の星座を順に伝え、スキルがそれぞれのデータを別々に保持し、引き継いでいることが確認できます。</p> <p>&nbsp;</p> <ol> <li>Amazon開発者コンソールを開き、星占いスキルを選択、[テスト]タブを表示する</li> <li>サービスシミュレーターの[発話を入力してください]にユーザーの星座を入力し [星占いを呼び出す]ボタンをクリック、[サービスレスポンス]に星占い結果が出ることを確認する</li> </ol> <p><img alt="サービスシミュレーター" src="https://m.media-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-skills-kit/jp/blog/screenshot-test-1._CB494631162_.png" style="height:658px; width:813px" /></p> <p style="margin-left:40px">3. サービスシミュレーターの[発話を入力してください]に別の星座を入力し [星占いを呼び出す]ボタンを再度クリック、[サービスレスポンス]に相性占いの結果が出ることを確認する</p> <p><img alt="サービスシミュレーター" src="https://m.media-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-skills-kit/jp/blog/screenshot-test-2._CB494631162_.png" style="height:658px; width:813px" /></p> <p>これで今回の実習は完了です。星占いスキルに相性占い機能を追加して、スキルの状態管理の実装方法を確認しました。</p> <p>&nbsp;</p> <h2>まとめ</h2> <p>第3回では音声ユーザーインターフェースの設計とスキルでの状態管理について学習しました。次回はスキルでのデータ保存についてご紹介します。</p> <p><br /> </p> <p style="text-align:left">(このコンテンツはAmazonとの業務委託に基づいて、クラスメソッド株式会社が製作しました)</p> /blogs/alexa/post/07415054-3ef5-4b66-9b2d-fcf3cd94ac1b/amazon-streamlines-device-based-authorization-for-alexa-enabled-products Amazon Streamlines Device-Based Authorization for Alexa-Enabled Products Satish Iyer 2017-11-16T13:30:00+00:00 2017-11-16T13:30:00+00:00 <p><a><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/AlexaVoiceService/code-based-linking_blog_1x._CB494836363_.png" /></a></p> <p>We are excited to announce Code-Based Linking, a new authorization method that allows customers to easily link their Amazon account with an Alexa-enabled product.</p> <p><a><img alt="" /><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/AlexaVoiceService/code-based-linking_blog_1x._CB494836363_.png" /></a></p> <p>Voice has emerged as the UX of the future and commercial device makers across product categories have invested in bringing Alexa to their devices, introducing scenarios and use cases that didn’t exist before. We want to make it even easier for customers to get started with Alexa for the first time, whether that’s through a smart speaker or wearable.</p> <p>As a part of this endeavor, we are excited to announce Code-Based Linking, a new authorization method that allows customers to easily link their Amazon account with an Alexa-enabled product. Device makers building Alexa-enabled products that have limited capabilities for customer input such as smart TVs, wearables, or automotive accessories, will greatly benefit from this new feature of the Alexa Voice Service (AVS).</p> <p><a href="http://developer.amazon.com/alexa-voice-service/auth">Learn more</a><a href="http://developer.amazon.com/alexa-voice-service/auth" target="_blank">&nbsp;&raquo;</a></p> <h2>How does Code-Based Linking Work?</h2> <p>All Alexa-enabled products need to obtain a Login with Amazon (LWA) access token that is sent with each access request to AVS. With Code-Based Linking, we have simplified the workflow to obtain this token via devices with limited input capabilities. When a customer registers an Alexa-enabled product with that supports Code-Based Linking, they are provided a short alphanumeric code and a URL, usually displayed on the product screen. The customer opens the URL in a separate device (phone or computer), logs in with their Amazon credentials, and enters the short code to link their Amazon account with the Alexa-enabled product. Once linked, the Alexa-enabled product is ready for use.</p> <h2>Getting Started</h2> <p>We have a <a href="https://developer.amazon.com/docs/alexa-voice-service/code-based-linking-other-platforms.html" target="_blank">detailed guide</a> that provides a step-by-step walkthrough on how to implement this capability in your Alexa-enabled product. We also have supported screen templates and CX guidance in our <a href="https://developer.amazon.com/docs/alexa-voice-service/ux-design-overview.html#downloads" target="_blank">UX Design Guidelines</a>. Visit the <a target="_blank">AVS Authorization page</a> for more details about the customer workflow, different authorization methods, and resources.</p> <h2>What Is the Alexa Voice Service?</h2> <p>The Alexa Voice Service (AVS) enables developers to integrate Alexa directly into their products, bringing the convenience of voice control to any connected device. AVS provides developers with access to a suite of resources to quickly and easily build Alexa-enabled products, including APIs, hardware development kits, software development kits, and documentation. Through AVS, device makers can add a new intelligent interface to their products and offer customers access to a growing number of Alexa features, smart home integrations, and skills. Just ask, and Alexa will respond. Visit the <a href="https://developer.amazon.com/alexa-voice-service" target="_blank">AVS Developer Portal t</a>o get started.</p> <p>Have questions? Visit us on the <a href="https://forums.developer.amazon.com/spaces/38/index.html" target="_blank">AVS Forum</a> to speak with one of our experts.</p> /blogs/alexa/post/c53176c7-2f4e-4598-935b-7e5d3b08b97e/how-to-update-your-skills-for-canada How to Update Your Skills for Canada Kenny Mathers 2017-11-15T08:01:25+00:00 2017-11-15T08:05:31+00:00 <p>Today, we <a href="https://blogs/alexa/post/77d64543-231a-45c2-a1c1-595288e82b62/alexa-skills-kit-and-alexa-voice-service-expand-to-canada">announced</a> that Alexa devices are coming to Canada. Starting today, you can use the <a href="https://developer.amazon.com/alexa-skills-kit/learn">Alexa Skills Kit</a> to build skills for customers in Canada using the new English (Canada) language model.</p> <p>If you are new to skill development, check out this <a href="https://github.com/alexa/skill-sample-nodejs-fact/">detailed walkthrough</a> to get started.</p> <p>Today, we <a href="https://developer.amazon.com/blogs/alexa/post/77d64543-231a-45c2-a1c1-595288e82b62/alexa-skills-kit-and-alexa-voice-service-expand-to-canada">announced</a> that Alexa devices are coming to Canada. Starting today, you can use the <a href="https://developer.amazon.com/alexa-skills-kit/learn">Alexa Skills Kit</a> to build skills for customers in Canada using the new English (Canada) language model.</p> <p>If you are new to skill development, check out this <a href="https://github.com/alexa/skill-sample-nodejs-fact/">detailed walkthrough</a> to get started.</p> <p>If you’re an experienced Alexa developer, you can enhance your existing skill by extending it to support the new language model for Canada. This tutorial will show you how you can add support for the English (Canada) model for your existing skills. It will also show you how you can use the Alexa Skills Kit&nbsp;to respond based on locales.</p> <h2>What You Will Learn</h2> <ol> <li>How to update a skill for Canada using the new English (Canada) 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> <p>&nbsp;</p> <h2>Part 1: Add the New Language Model for Your Skill</h2> <ol> <li>Navigate to your existing skill on the <a href="http://developer.amazon.com">Amazon Developer Portal</a>.</li> <li>Click on Add a New Language button. In this example, the skill already has language models for English (U.S) and English (India).&nbsp;&nbsp;<img alt="Canada_1.png" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/CanadaTechBlog/Canada_1._CB494425821_.png?t=true" /></li> <li>Follow the steps below to complete the Skill Information tab: <ol> <li><strong>Language</strong>: Choose <strong>English (Canada)</strong> from the dropdown.<img alt="Canada_2.png" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/CanadaTechBlog/Canada_2._CB494424299_.png?t=true" /></li> <li><strong>Name</strong>: Keep the same name for this version: <strong>Daily Inspiration</strong>. If appropriate for the language, you could provide a different name.</li> <li><strong>Invocation Name</strong>: Let's set the invocation name to <strong>daily inspiration</strong>.</li> <li>Leave other options to their defaults.</li> <li>Click on <strong>Save</strong>, and then click on <strong>Next</strong> to move to the Interaction Model.</li> </ol> </li> <li>We now need to provide the interaction model for the Canada version. We can do that by simply copying the interaction model from the US version of our skill. This example illustrates setting up the interaction model with the skill builder (beta). Switch to the US version by clicking on the language dropdown in the skill builder, and choose English (US).&nbsp;&nbsp;</li> </ol> <p><img alt="Canada_3.png" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/CanadaTechBlog/Canada_3._CB494424293_.png?t=true" /></p> <p>5. Click on <strong>Code Editor</strong> on the left side bar. This displays the complete interaction model for the skill in JSON format.<img alt="Canada_4.png" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/CanadaTechBlog/Canada_4._CB494424295_.png?t=true" /></p> <p>6. Select and copy all of the JSON in the code window.</p> <p>7. Switch back to English (Canada) using the dropdown from Step 4.</p> <p>8. Click on Code Editor again, and paste the JSON into the code window, replacing the existing JSON.</p> <p>9.&nbsp;Click on the Apply Changes button.</p> <p>10. Click on the Build Model button.</p> <p><img alt="Canada_5.png" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/CanadaTechBlog/Canada_5._CB494424289_.png?t=true" /></p> <p>We now have the language model built for English (Canada). Since we just copied and pasted the entire interaction model from English (U.S.), all your intents, sample utterances, and custom slot values are identical for both languages. You can edit these elements separately if you want – for example, you might want to provide locale-specific sample utterances. Add and edit your sample utterances in skill builder normally. Your interaction model changes are specific to the selected locale.</p> <p>If your interaction model uses any <a href="https://developer.amazon.com/docs/custom-skills/slot-type-reference.html">built-in slot types</a>, you may need to make changes to ensure that the types are supported in the locale. For example, the <code>AMAZON.US_FIRST_NAME</code> is supported in English (U.S.), English (U.K.), English (Canada), and German. An equivalent first name slot type, <code>AMAZON.FirstName</code>, is available for English (India) and Japanese. See the <a href="https://developer.amazon.com/docs/custom-skills/slot-type-reference.html">Slot Type Reference</a> for a list of slot types for each supported locale.</p> <p>Once you have finished updating your interaction model for English (Canada), you need to customize the responses your skill returns for the different locales that you support. Do this by updating your Lambda function.</p> <h2>Part&nbsp;2: 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 tailored to each supported region.</p> <p>For instance, you may want to greet your customers with “Hello” in Canada and the UK, “Namaste,” in India, and &quot;Hi&quot; in the US. The Alexa Skills Kit&nbsp;makes that really simple. Here is an example in Node.js.</p> <p>Step 1: Set the language strings for each region</p> <p>To do this, we define all user-facing language strings in the following format:</p> <pre> <code>var languageStrings = { 'en-CA': { translation: { SKILL_NAME: 'Canadian Quotes', SKILL_GREETING: 'Hello', WELCOME_MESSAGE: '%s. You can ask me for an inspirational quote.', PERSONALIZED_INTRO: &quot;%s, here is your quote for today: &quot; }, }, 'en-US': { translation: { SKILL_NAME: 'American Quotes', SKILL_GREETING: 'Hi', WELCOME_MESSAGE: '%s! You can ask me for an inspirational quote.', PERSONALIZED_INTRO: &quot;%s, here is your quote for today: &quot; }, }, 'en-IN': { translation: { SKILL_NAME: 'Indian Quotes', SKILL_GREETING: 'Namaste', WELCOME_MESSAGE: '%s! You can ask me for an inspirational quote.', PERSONALIZED_INTRO: &quot;%s, here is your quote for today: &quot; }, }, 'en-GB': { translation: { SKILL_NAME: 'British Quotes', SKILL_GREETING: 'Hello' WELCOME_MESSAGE: '%s. You can ask me for an inspirational quote.', PERSONALIZED_INTRO: &quot;%s, here is your quote for today: &quot; }, } };</code></pre> <p>As you can see, the <code>languageStrings</code> object contains four objects, one for each supported English language (en-US, en-GB, en-IN, and now en-CA). The object names are identical to the value of the locale property that is passed to our skill when it is invoked by Alexa. This tells us the language model the end user’s device is configured to use so that we can respond with the appropriate language. If you wanted to support German and Japanese, you would add additional objects for 'de-DE' and 'ja-JP' with appropriate translations.</p> <p>You can see this in action by looking at the JSON request sent to your skill through the Service Simulator. When testing in the simulator, be sure you to select the tab for the language you want to test. In our example, when testing from the English (Canada) tab, the request sent to the skill includes the en-CA locale:</p> <p><img alt="Canada_6.png" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/CanadaTechBlog/Canada_6._CB494424288_.png?t=true" /></p> <p>Each language has a translations object within <code>languageStrings</code>. This is where we specify any properties that are different for each language. For our example, we have SKILL_GREETING and SKILL_NAME as part of the language strings. You can add more strings as you find relevant.</p> <p>Step 2: Enable internationalization for your skill using the Alexa Skills Kit.</p> <p>To enable string internationalization (i18n) features in Alexa-sdk, we set resources to the <code>languageStrings</code> object we created above:</p> <pre> <code>exports.handler = function (event, context) { const alexa = Alexa.handler(event, context); alexa.APP_ID = APP_ID; // To enable string internationalization (i18n) features, set a resources object. alexa.resources = languageStrings; alexa.registerHandlers(handlers); alexa.execute(); }; </code></pre> <p>Step 3: Access the language strings in your code</p> <p>Once you are done defining and enabling language strings, you can access these strings using the <strong>this.t() function</strong>. Strings will be rendered in the language that matches the locale of the incoming request.</p> <p>This handler for the <code>LaunchRequest</code> retrieves the localized strings for the welcome message and skill greeting, then assembles a complete welcome message for the skill. For an English (Canada) skill, this would return the speech output: &quot;Hello. You can ask me for an inspirational quote,&quot; while for an English (India) skill, this same code would return the speech output “Namaste! You can ask me for an inspirational quote.”</p> <pre> <code>'LaunchRequest': function () { this.attributes.speechOutput = this.t('WELCOME_MESSAGE', this.t('SKILL_GREETING')); this.attributes.repromptSpeech = this.t('HELP_REPROMPT'); this.response .speak(this.attributes.speechOutput) .listen(this.attributes.repromptSpeech); this.emit(':responseReady'); } </code></pre> <p>That’s all that it takes to update your skill to be available for customers in Canada.</p> <p>We are excited to have Alexa available in Canada, and we can't wait to see what you build.</p> <p>Check out our documentation on <a href="https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/developing-skills-in-multiple-languages">Developing Skills in Multiple Languages</a> to learn more about how you can use the Alexa Skills Kit to create multi-language skills.</p> <h2>Learn More</h2> <ol> <li>Alexa Skill Templates and Sample Code on <a href="https://github.com/alexa?utf8=%E2%9C%93&amp;q=skill&amp;type=&amp;language=">GitHub</a></li> <li><a href="https://github.com/alexa/alexa-cookbook">Alexa Cookbook</a></li> <li><a href="https://www.codecademy.com/learn/learn-alexa">Alexa Skill Development Courses on Codecademy</a></li> <li><a href="https://developer.amazon.com/alexa-skills-kit/alexa-skills-developer-training">Alexa Skills Kit Training Courses</a></li> <li><a href="https://forums.developer.amazon.com/spaces/165/index.html">Alexa Developer Forums</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/">Alexa Developer Blog</a></li> </ol> <p>&nbsp;</p> <h2>Useful Blog Posts</h2> <ol> <li><a href="https://developer.amazon.com/blogs/alexa/post/61d4a6ff-ed80-475a-b95e-d927989bc1de/tips-for-successful-alexa-skill-certification">Tips for a Successful Alexa Skill Certification</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/37da1dc8-08a1-4a65-a964-762517f3ddd7/why-console-log-is-your-friend">Why console.log() Is Your Friend</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/d362a0ab-61f3-4b17-9fb7-1ad12f39496e/export-your-amazon-lex-bot-schema-to-use-in-your-alexa-skill">Export Your Amazon Lex Bot Schema to Use in Your Alexa Skill</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/71ef5f47-c502-4e3d-8e61-9a6cd38b8e5c/getting-started-with-the-alexa-skill-management-api-and-the-alexa-skills-kit-command-line-interface">Getting Started with the Alexa Skill Management API and the Alexa Skills Kit Command-line Interface</a></li> <li><a href="https://developer.amazon.com/blogs/post/Tx1UE9W1NQ0GYII/Publishing-Your-Skill-Code-to-Lambda-via-the-Command-Line-Interface">Publishing Your Skill Code to Lambda via the Command Line Interface</a></li> <li><a href="https://developer.amazon.com/blogs/post/Tx3CX1ETRZZ2NPC/Alexa-Account-Linking-5-Steps-to-Seamlessly-Link-Your-Alexa-Skill-with-Login-wit">Alexa Account Linking: 5 Steps to Seamlessly Link Your Alexa Skill with Login with Amazon</a></li> </ol> <p>&nbsp;</p> <h2>SDKs</h2> <ul> <li><a href="https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs">Node.js</a></li> <li><a href="https://github.com/amzn/alexa-skills-kit-java">Java</a></li> </ul> <p>&nbsp;</p> <p>&nbsp;</p> /blogs/alexa/post/77d64543-231a-45c2-a1c1-595288e82b62/alexa-skills-kit-and-alexa-voice-service-expand-to-canada Alexa Skills Kit and Alexa Voice Service Expand to Canada Kenny Mathers 2017-11-15T08:00:46+00:00 2017-11-15T18:44:35+00:00 <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/blog(2)._CB494425165_.png?t=true" style="height:240px; width:954px" /></p> <p>Amazon is happy to announce that Alexa, the brain that powers Amazon Echo, is coming to Canada, along with three Alexa-enabled devices: Amazon Echo, Echo Plus, and Echo Dot.</p> <p style="margin-left:0in; margin-right:0in"><img alt="blog(2).png" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/blog(2)._CB494425165_.png?t=true" /></p> <p style="margin-left:0in; margin-right:0in">Amazon is happy to announce that Alexa, the brain behind&nbsp;Amazon Echo, is coming to Canada, along with three Alexa-enabled devices: Amazon Echo, Echo Plus, and Echo Dot.</p> <p style="margin-left:0in; margin-right:0in">This opens up new opportunities for developers in Canada and worldwide. Starting today, you can build for voice with Alexa and reach customers in Canada with the <a href="https://developer.amazon.com/alexa-skills-kit">Alexa Skills Kit (ASK)</a>, our collection of self-service APIs, tools, documentation, and code samples. Along with the Echo Family of Devices, third-party brands ecobee, Ultimate Ears, and FABRIQ have all announced that they are bringing Alexa-enabled products to Canada.</p> <p style="margin-left:0in; margin-right:0in">Hardware manufacturers can also start developing their own Alexa-enabled products for Canadian customers with the <a href="http://developer.amazon.com/alexa-voice-service">Alexa Voice Service (AVS)</a>.</p> <p style="margin-left:0in; margin-right:0in">More than 10,000 skills will be available to customers in Canada this year including Philips Hue, Samsung SmartThings, TED Talks, Uber and more. Popular Canadian brands are already creating voice experiences using the Alexa Skills Kit, including Air Canada, TD Bank, TELUS, Canadian Broadcasting Corporation, Sportsnet, The Weather Network, and ecobee. Developers around the world can extend their experiences to more customers in this new marketplace.</p> <h2>How to Build an Alexa Skill</h2> <p style="margin-left:0in; margin-right:0in">It’s easy to start building for voice with Alexa. Explore our simple <a href="https://developer.amazon.com/alexa-skills-kit/tutorials">tutorials</a> or watch our on-demand <a href="https://developer.amazon.com/alexa-skills-kit/webinars">webinars</a> to learn how to build a skill quickly. If you want to build a multi-language Alexa skill, read our <a href="https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/developing-skills-in-multiple-languages">technical documentation</a> to learn how to create a skill in all language models English (US), English (India), English (UK), English (CA), German and Japanese. If you’re already an Alexa developer, you can enhance your existing skill by extending support for the new language model for Canada.</p> <p style="margin-left:0in; margin-right:0in">No device? No problem. Use the&nbsp;<a href="https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/testing-an-alexa-skill">Service Simulator</a>&nbsp;or <a href="https://echosim.io/" target="_blank">Echosim.io</a> to test skill invocations and simulate a user using your skills.</p> <h2>How to Integrate Alexa into Your Product</h2> <p>The Alexa Voice Service (AVS) enables developers to integrate Alexa directly into their products, bringing the convenience of voice control to any connected device. Device makers can start building with AVS today, and can build an Alexa-enabled prototype for Raspberry Pi in an hour with the <a href="https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/getting-started-with-the-alexa-voice-service">AVS Quick Start Guide</a>. Learn how to build new products or update your existing products to reach new customers in Canada <a href="https://developer.amazon.com/alexa-voice-service/international/">here</a>.<a></a></p> <h2>Forums</h2> <p>Need help as you get started? Connect with the Alexa community on our <a href="https://forums.developer.amazon.com/spaces/165/index.html">developer forums</a>.</p> <p>We are excited to bring Alexa to Canada and enable developers to reach and delight new customers. We can't wait to see what you build.</p> /blogs/alexa/post/183200a2-1668-4831-aa8f-69f676e07957/echosim-io スキルのテストがシミュレーター「Echosim.io」で可能になりました Motoko Onitsuka 2017-11-15T06:43:08+00:00 2017-11-15T06:43:08+00:00 <p>私たちは11月8日に Amazon Echo, Echo Dot, Echo Plus と Alexa を日本で提供開始すると発表しました。続いて本日、ウェブベースのシミュレーター Echosim.io (通称:エコシム) が日本語のスキル開発のために使えるようになったことを発表します。</p> <h2>Echosim.io を通じて Alexa を体験する</h2> <p>iQuarius Media 社が提供する Echosim.io は、ブラウザ上で動作するため、誰でも、どこからでもアクセスして Alexa スキルをテストすることができます。つまり、Echosim.io があれば、スキルをテストするのに Alexa 対応デバイスを用意する必要はなくなります。</p> <p>Echosim.io は Alexa Voice Service (AVS) と JavaScript のアニメーションを使用して実装されています。世界中の開発者は、Echosim.ioで、英語(米国、カナダ、英国、インド)、ドイツ語、そして日本語のスキルを体験することができます。</p> <p><img alt="echosim言語設定" src="https://m.media-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-skills-kit/jp/blog/echosim-ja-jp-dropdown._CB494521749_.png" style="height:246px; width:246px" /></p> <p>スキルをテストするには、<a href="https://echosim.io/">Echosim.io </a>にアクセスし、Amazon 開発者アカウントでログインして、使いたい言語を選んでください。マイクのボタンを長押しし、選んだ言語のスキルの呼び出しフレーズを話してください。まだスキルを開発していない場合でも、Amazon のアカウントで Echosim.io にログインし、体験することもできます。例えば、「アレクサ、今日の天気を教えて」と話しかけて、マイクのボタンを離すと、Echosim.io があなたの音声リクエストを処理し、答えてくれます。ぜひ試してみてください。</p> <p><img alt="Echosim" src="https://m.media-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-skills-kit/jp/blog/echosim-ja-jp._CB494521748_.png" style="height:606px; width:1237px" /></p> <p>&nbsp;</p> <h2>日本の開発リソース、イベント</h2> <p>スキル開発をステップバイステップでお伝えするトレーニングシリーズや、エバンジェリストによるイベントなどをご用意しています。</p> <ul> <li><a href="https://developer.amazon.com/ja/alexa-skills-kit/training/building-a-skill">動画・Blogによるスキル開発トレーニングシリーズ</a></li> <li><a href="https://developer.amazon.com/ja/alexa/events">Alexaビジネスセミナー、スキル開発ハンズオントレーニングの日程</a></li> <li><a href="https://forums.developer.amazon.com/spaces/293/index.html">Alexa開発者フォーラム(日本語)</a></li> </ul> <p>&nbsp;</p> <h2>ソーシャルメディアでも日本語での最新情報を発信しています。</h2> <ul> <li>Alexa Developers JP公式 Facebook: <a href="https://www.facebook.com/AlexaDevsJP" target="_blank">https://www.facebook.com/AlexaDevsJP</a></li> <li>Alexa Developers JP公式 Twitter: <a href="https://twitter.com/AlexaDevsJP" target="_blank">https://twitter.com/AlexaDevsJP</a></li> </ul> <p>&nbsp;</p> /blogs/alexa/post/d9e00269-1c6c-44d1-91ec-0d8c92a919db/keep-users-engaged-entertained-while-processing-skill-responses Keep Users Engaged &amp; Entertained while Processing Skill Responses Kenny Mathers 2017-11-13T22:48:37+00:00 2017-11-13T22:48:37+00:00 <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/Skill-latency_blog._CB494636396_.png?t=true" style="height:240px; width:954px" /></p> <p>We are thrilled to announce that starting today, Alexa skill developers can now send content to users in stages, using Progressive Response.&nbsp; This new capability helps you to keep your users engaged while a full response to a skill request is being processed.</p> <p style="margin-left:0in; margin-right:0in"><img alt="Skill-latency_blog.png" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/Skill-latency_blog._CB494636396_.png?t=true" /></p> <p style="margin-left:0in; margin-right:0in">We are thrilled to announce that starting today, Alexa skill developers can now send content to users in stages, using Progressive Response.&nbsp;This new capability helps you to keep your users engaged while a full response to a skill request is being processed.&nbsp;</p> <p style="margin-left:0in; margin-right:0in">Prior to today, skills developers have been constrained in their ability to send content, with skills required to wait for all processing to be completed before delivering any payload to the user. This left users waiting and wondering what was happening while skills processed their experiences. With Progressive Response, you can now use that time to inform, amuse, engage, and delight your users.</p> <h2 style="margin-left:0in; margin-right:0in">Great News for Alexa Screen Skill Developers</h2> <p>Using Progressive Response is a great choice for developers building Alexa Screen Skills for devices such as Echo Show. In order to be certified as an Alexa Screen Skill, skills should start within two seconds of being launched; Progressive Response can help multi-modal skills achieve this benchmark even if they require substantial processing or rendering of large external images by allowing you to deliver interstitial audio content while your full response is being processed.</p> <h2>When to use Progressive Response</h2> <p>If you are building a skill that requires a significant amount of processing before delivering a response, you may be concerned that this leaves users waiting and wondering what is happening while their skill request is being processed.&nbsp;With Progressive Response you can use that time to send partial or interstitial content.</p> <p style="margin-left:0in; margin-right:0in">For example, in the updates to the HistoryBuff reference skill published today on the developer portal, the skill sends interstitial text that can be used to confirm that the skill heard the right date and to acknowledge that it is processing the request (e.g. “Getting history facts for August thirtieth.”) This additional content helps the skill to be more conversational, removing long pauses while the skill response is being processed.&nbsp;&nbsp;You can find the sample skill in Java&nbsp;<a href="https://github.com/alexa/skill-samples-java/tree/master/historybuff" target="_blank">here</a>&nbsp;and Node.JS&nbsp;<a href="https://github.com/alexa/alexa-cookbook/tree/master/handling-responses/progressive-response" target="_blank">here</a><a></a></p> <h2>How It Works</h2> <p>To use Progressive Response, you will program your skill to call an HTTPS endpoint with the content you want to send to the user. The structure of the request and the endpoint to call are documented <a href="https://developer.amazon.com/docs/custom-skills/send-the-user-a-progressive-response.html">here.</a></p> <p>When thinking about leveraging Progressive Response, identify points in your skill where you expect high processing times, such as when making an external API call or rendering media files (images, video, etc.) that require significant processing time. You should also consider what to you want to say in your interstitial response that will add value to your users. We have created a reference skill to help guide you on how to integrate Progressive Response into your skill.</p> <h2>Get Started</h2> <p>Visit the <a href="https://developer.amazon.com/docs/custom-skills/send-the-user-a-progressive-response.html">technical documentation</a> to find more information.&nbsp;You can find the Java SDK <a href="https://github.com/amzn/alexa-skills-kit-java" target="_blank">here</a> and Node.JS SDK <a href="https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs" target="_blank">here</a>.&nbsp;Also refer to the&nbsp;template skill on GitHub that uses the Progressive Response API.</p> <h2>Get Inspired</h2> <p style="margin-left:0in; margin-right:0in">To support today’s launch, we are excited to announce that CNN has updated its skill to take advantage of Progressive Response.</p> <p style="margin-left:0in; margin-right:0in">For more information about getting started with Progressive Response check out the following additional resources:</p> <p style="margin-left:0in; margin-right:0in"><a href="https://developer.amazon.com/docs/custom-skills/send-the-user-a-progressive-response.html">About Progressive Response</a><br /> &nbsp;</p> /blogs/alexa/post/ce374816-cb11-4d67-874d-beef218b6587/echo-show-wins-silver-at-the-ux-awards Echo Show Wins Silver at the UX Awards! Jennifer King 2017-11-10T19:16:22+00:00 2017-11-10T19:16:23+00:00 <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/EchoShowUXAwards._CB494310757_.png" style="height:240px; width:954px" /></p> <p>We’re excited to announce that one of our newest devices, Echo Show, has been named the Silver Award winner at the 2017 UX Awards, which showcases the best in future-oriented user experiences and design.</p> <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/EchoShowUXAwards._CB494310757_.png" /></p> <p>Here at Amazon, we work to enable you to develop interactive, voice-driven technology. And one way we do that is by building powerful Alexa-enabled user experiences that are engaging customers in an all-new way. We’re excited to announce that one of our newest devices, Echo Show, has been named the Silver Award winner at the <a href="http://userexperienceawards.com/2017-winners/#echo" target="_blank">2017 UX Awards</a>, which showcases the best in future-oriented user experiences and design.</p> <p>The UX Awards inspire technologists to create human-centered products that solve customer challenges through innovative products and user-centered design. Amazon is incredibly honored to receive this award, and it reaffirms our belief that multi-modal interfaces for Alexa are helping redefine how we interact with technology through voice.</p> <p>We designed <a href="https://developer.amazon.com/echo-show">Echo Show</a> so that the screen augments and enhances what Alexa skills offer to customers. You can complement your skill interactions with imagery, blocks of text, video, list navigation and selection, touch input, and more using our <a href="https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/build-skills-for-echo-show#how-and-when-to-use-display-templates-to-render-screen-displays">visual templates and skill directives</a>.</p> <p>Since customers can choose whether to speak or listen, see or touch, or combinations of all, you’ll want to spend the extra time to define the right experience. Follow our tips to enhance your skills and build multi-modal experiences with voice.</p> <h2><strong>Tips for Building Multi-Modal Skills for Alexa</strong></h2> <p>All published Alexa skills are automatically available on Echo Show. Skills will also display any skill cards you currently return in your response objects. However, we recommend that you update your skill with our display templates in order to optimize the experience of your skill for Echo Show. Here are some tips to help you start building multi-modal capabilities for Alexa skills:</p> <p><strong>Design voice-first experiences:</strong> Voice remains the primary means of interacting with Alexa, even on the Echo Show. Design your skill so customers can engage with it from across the kitchen or even when they can’t easily see it. Make the primary content of each template visible and recognizable from up to 7 feet away. If your skill requires a screen to be used effectively, you should create a voice interaction that tells customers on non-screen devices how to interact.</p> <p><strong>Show screens that complement voice:</strong> For each response in your skill, create a screen that matches the content and allows appropriate voice and touch actions for selection, scrolling, video control, and navigation. When displaying text, keep the messages short and to the point for quick reading. Make it similar though not necessarily the same as the text-to-speech (TTS) output so that it reinforces rather than duplicates what the skill is saying.</p> <p>For all images and video, make sure the sizes are such that they load quickly. Blur background images lightly and apply a black (#000000) layer set at 70% opacity to allow text to be easily read.</p> <p>To create screens that enhance the use of voice, use the <a href="https://developer.amazon.com/docs/custom-skills/display-interface-reference.html" target="_blank">templates</a> we have provided. They make it easy to offer visual output that supports and enhances the voice-first experience of your skill.</p> <p><strong>Get inspired: </strong><a href="https://developer.amazon.com/blogs/alexa/post/4d12d201-e509-4b63-9773-00e8e262b4b3/allrecipes-elevates-skill-for-alexa-with-new-enhanced-visual-capabilities-in-alexa-skills-kit">Allrecipes</a>, <a href="https://www.amazon.com/Bloomberg-Market-Data-and-News/dp/B01KN51D16/ref=sr_1_1?s=digital-skills&amp;ie=UTF8&amp;qid=1499876046&amp;sr=1-1&amp;keywords=bloomberg" target="_blank">Bloomberg</a>, <a href="https://www.amazon.com/Uber-Technologies-Inc/dp/B01AYJQ9QK/ref=sr_1_1?s=digital-skills&amp;ie=UTF8&amp;qid=1499876151&amp;sr=1-1&amp;keywords=uber" target="_blank">Uber</a>, <a href="https://www.amazon.com/Sony-Pictures-Television-Jeopardy/dp/B019G0M2WS/ref=sr_1_1?s=digital-skills&amp;ie=UTF8&amp;qid=1499876201&amp;sr=1-1&amp;keywords=jeopardy" target="_blank">Jeopardy</a>, and other skills have been updated to take advantage of the device capabilities. Enable and use them to experience how the screen makes great experiences even better.</p> <p>Follow these tips to start building multi-modal voice interfaces for Alexa and create the next great innovation in user-centered voice experiences.</p> <h2>Learn More about Creating Skills for Echo Show</h2> <ul> <li><a href="https://developer.amazon.com/designing-for-voice/" target="_blank">Alexa Voice Design Guide</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/982c9134-fbf6-4465-a105-5f5c4b4774f6/building-for-echo-show-choosing-the-right-template">Designing Skills for Echo Show: Choosing the Right Display Template</a></li> <li><a href="https://developer.amazon.com/docs/custom-skills/build-skills-for-echo-show.html">Build Skills for Echo Show</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/a7f25291-5418-4488-a6e3-fa531e49545c/7-tips-for-creating-great-multimodal-experiences-for-echo-show" target="_blank">7 Tips for Creating Great Multi-Modal Experiences for Echo Show</a></li> </ul> <h2>Build a New Skill, Earn Developer Perks</h2> <p>Bring your big idea to life with Alexa and earn perks through our tiered rewards system. US developers, publish a skill in November, and receive an <a href="https://developer.amazon.com/alexa-skills-kit/alexa-developer-skill-promotion" target="_blank">Alexa developer hoodie</a>. If 100 customers use your skill in its first 30 days in the Alexa Skills Store, you can also apply to receive a free Echo Dot to help you make Alexa even smarter. If you need inspiration, consider creating a holiday-themed skill to get into the holiday spirit. If you're not in the US, check out our promotions in the <a href="http://developer.amazon.com/en-gb/alexa-skills-kit/alexa-developer-skill-promotion" target="_blank">UK</a>, <a href="http://developer.amazon.com/de/alexa-skills-kit/alexa-developer-skill-promotion" target="_blank">Germany</a>, and <a href="http://developer.amazon.com/alexa-skills-kit/alexa-developer-skill-promotion-india" target="_blank">India</a>. <a href="https://developer.amazon.com/alexa-skills-kit/alexa-developer-skill-promotion">Learn more</a> about our promotion and start building today.</p> /blogs/alexa/post/82c46056-564a-4cc0-b58d-56451eba08ae/alexa-turn-on-the-tv-alexa-smart-home-device-controls-for-tvs-audio-video-devices-and-entertainment-hubs-now-available-in-uk Alexa, Turn on the TV – Alexa Smart Home Device Controls for TVs, Audio Video Devices and Entertainment Hubs Now Available in UK Jennifer King 2017-11-10T12:00:00+00:00 2017-11-10T12:00:00+00:00 <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/SmartHomeControlsBlogUK._CB494284481_.png" style="height:240px; width:954px" /></p> <p>Today we are happy to announce that the Alexa Smart Home Skill API entertainment device controls are available in the UK.</p> <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/SmartHomeControlsBlogUK._CB494284481_.png" /></p> <p>Today we are happy to announce that the Alexa Smart Home Skill API entertainment device controls are available in the UK. Now customers can easily control cloud-connected TVs, AV Receivers, IR Hubs, and even connected speakers without invoking a specific skill. For example, a customer could simply say, “Alexa, turn on the TV,” “Alexa, fast forward,” “Alexa, make it louder,” or “Alexa, switch input to Blu-Ray.” You create skills that connect devices directly to the entertainment capabilities in Alexa so that customers can control your devices using their voice. Launching today are smart home skills with entertainment controls from Sony and Logitech Harmony. Other skills are coming soon.</p> <h2>Voice Control TVs, AV Receivers, and IR Hubs</h2> <p>We are making it easy and intuitive for customers to enjoy their content on any capable device, without needing to think about how devices are connected. As an Alexa skills developer, you can now give you customers the ability to use Alexa to control their home entertainment devices (power, channel, volume, inputs, and transport). Because the Smart Home Skill API taps into Amazon’s standardized Alexa language model, you don’t need to build the voice interaction model for your skill. Alexa will understand the customer’s speech, convert it to a directive, and send that directive to your skill adapter. Your skill adapter can then communicate with your device to act on the directive and send a response back to Alexa. These capabilities are now available to developers in the UK.</p> <p>Here are some utterances you can leverage for your skill:</p> <table border="1" cellpadding="1" cellspacing="1" style="height:565px; width:819px"> <tbody> <tr> <td><strong>Control Feature</strong></td> <td><strong>Utterance</strong></td> </tr> <tr> <td>Device discovery</td> <td>Alexa, discover devices</td> </tr> <tr> <td>Power Controls (On/Off)</td> <td>Alexa, turn on/turn off&nbsp;TV</td> </tr> <tr> <td>Channel Change Controls</td> <td> <p>Alexa, change channel to [<em>channel name</em>] on TV</p> <p>Alexa, change channel to [<em>channel name</em>] on Kitchen</p> <p>Alexa, channel up/down on TV</p> Alexa, next/previous channel on Bob's room</td> </tr> <tr> <td>Volume Change Controls</td> <td> <p>Alexa, increase/decrease volume on TV</p> <p>Alexa, set volume to 100 on TV</p> <p>Alexa, mute/unmute my TV</p> Alexa increase/decrease volume by 20 on Kitchen</td> </tr> <tr> <td>Transport Controls (Play/Pause/Rewind/Forward/Stop)</td> <td> <div> &nbsp; </div> <div> Alexa, pause/resume on Bob's TV </div> <div> &nbsp; </div> <div> Alexa, start over on TV </div> <div> &nbsp; </div> <div> Alexa, previous(song/video/channel/photo) on TV </div> <div> &nbsp; </div> <div> Alexa, next (song/video/channel/photo) on TV </div> <div> &nbsp; </div> <div> Alexa, go forward on Kitchen </div> <div> &nbsp; </div> <div> Alexa, rewind/fast forward on [channel name] </div> <div> &nbsp; </div> <div> Alexa, eject on DVD </div> <div> &nbsp; </div> <div> Alexa, load on BluRay </div> </td> </tr> <tr> <td>Input Switching Controls</td> <td>Alexa, switch input to Fire TV on TV</td> </tr> </tbody> </table> <h2>How Companies Are Using the New Entertainment Capabilities in the Smart Home Skill API</h2> <p>Sony and Logitech have already created Alexa skills leveraging these new capabilities launching today.</p> <ul> <li><strong>Sony</strong> has enabled customers in UK with its 2016 and 2017 4K HDR Android TVs* to simply ask Alexa to power on/off, change volume, change channel by number or name, switch inputs, and control content using Play and Pause. It has also enabled customers to change channel via Alexa by connecting their set-top box to the TV. Sony also enables controlling functions of devices connected to the TV via IR Blaster</li> <li><strong>Logitech Harmony</strong> has created a Smart Home skill with entertainment controls. This provides customers greater control over their entertainment devices by supporting a more native way to play, pause, skip forward, change the channel, or control volume. Customers can use Alexa to control their TV, favorite media players, and speakers for a completely hands-free entertainment experience.</li> </ul> <p><em>* Sony 2016 Android TVs: XD70, XD75, XD80, SD80, XD83 and ZD9 Series and 2017 Android TVs: XE80, XE83, XE85, XE90, XE93, XE94 and A1 Series</em></p> <h2>Get Started</h2> <p style="margin-left:0in; margin-right:0in">You can connect your entertainment device to Alexa by following these steps:</p> <p style="margin-left:0in; margin-right:0in"><a href="https://developer.amazon.com/edw/home.html#/skill/create/" target="_blank">Register or log in</a> to the developer portal.</p> <ol> <li>Create and name your skill in the Alexa Skills Kit by selecting the <a href="https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/steps-to-create-a-smart-home-skill#register-as-an-amazon-developer-and-create-a-skill">Smart Home Skill API</a>.</li> <li>Configure your AWS Lambda function to use the <a href="https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/steps-to-create-a-smart-home-skill#create-a-lambda-function">Alexa Smart Home trigger</a>.</li> <li>Add <a href="https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/building-smart-home-skills-for-entertainment-devices#skill-implementation">code that processes messages</a> from Alexa to communicate with your entertainment device. To do this, you will select payload version 3 in the developer portal when you create your skill. <a href="https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/steps-to-create-a-smart-home-skill#create-a-lambda-function" target="_blank">Learn more</a>.</li> <li>Finish registering your skill in the developer portal by providing <a href="https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/steps-to-create-a-smart-home-skill#finish-registering-your-skill-in-the-developer-portal" target="_blank">skill descriptions, images, and account linking information</a>.</li> <li>Enable the skill on an Alexa device and <a href="https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/steps-to-create-a-smart-home-skill#test-your-skill" target="_blank">test it thoroughly</a>.</li> <li><a href="https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/steps-to-create-a-smart-home-skill#submit-your-skill-for-certification" target="_blank">Submit for certification</a>.</li> </ol> <p style="margin-left:0in; margin-right:0in">We look forward to seeing what you create with these new capabilities. To learn more about developing a smart home skill, check out these resources:</p> <ul> <li><a href="https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/building-smart-home-skills-for-entertainment-devices" target="_blank">Building Smart Home Skills for Entertainment Devices</a></li> <li><a href="https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/overviews/understanding-the-smart-home-skill-api">Understanding the Smart Home Skill API</a></li> <li><a href="https://developer.amazon.com/public/community/post/Tx4WG410EHXIYQ/Five-Steps-Before-Developing-a-Smart-Home-Skill">Five Steps Before Developing a Smart Home Skill</a></li> <li><a href="https://developer.amazon.com/public/community/post/TxWSCWZI9SPYNT/Coding-Smart-Home-Skill-Adapter-Directives-Using-Node-js">Coding Smart Home Skill Directives Using Node.js</a></li> <li><a href="https://developer.amazon.com/blogs/post/Tx38PSX7O9YKIK1/announcing-scenes-for-smart-home-skills">Scenes for Smart Home Skills</a></li> </ul> <h2>Build a New Skill, Earn Developer Perks</h2> <p>Bring your big idea to life with Alexa and earn perks through our tiered rewards system. If you need inspiration, consider creating a holiday-themed skill to get into the holiday spirit. Check out our promotions in the <a href="http://developer.amazon.com/en-gb/alexa-skills-kit/alexa-developer-skill-promotion" target="_blank">UK</a>, <a href="http://developer.amazon.com/de/alexa-skills-kit/alexa-developer-skill-promotion" target="_blank">Germany</a>, and the <a href="https://developer.amazon.com/alexa-skills-kit/alexa-developer-skill-promotion">US</a>. <a href="https://developer.amazon.com/alexa-skills-kit/alexa-developer-skill-promotion">Learn more</a> about our promotion and start building today.</p> /blogs/alexa/post/07377568-2815-4028-8c21-409dd8e84fa2/alexa-training-jp-2nd Alexaスキル開発トレーニングシリーズ 第2回 対話モデルとAlexa SDK Motoko Onitsuka 2017-11-10T04:15:00+00:00 2017-11-10T04:15:00+00:00 <p style="text-align:left">日本のAlexaのためのスキルを開発する皆様に向けた6回にわたるトレーニングシリーズです。Alexaスキルの基礎、仕組み、スキルの開発と認証まで、幅広い内容を解説します。第2回の今回は、Alexaカスタムスキルの基本的な仕組みである対話モデルと、スキル開発に利用するAlexa SDKについて学習します。</p> <p>このトレーニングは<a href="https://developer.amazon.com/ja/alexa-skills-kit/training/building-a-skill">6回のシリーズ</a>で、Alexaスキルの基礎、仕組み、スキルの開発と認証まで、幅広い内容を解説します。 第2回の今回は、Alexaカスタムスキルの基本的な仕組みである対話モデルと、スキル開発に利用するAlexa SDKについて学習します(第1回は<a href="https://developer.amazon.com/ja/blogs/alexa/post/6e716e5c-55b0-445b-b936-9cfac4712e7b/training-1">こちら</a>)。</p> <ol> <li>スキルの構成と対話モデル</li> <li>Alexa SDKによるAWS Lambda関数の実装</li> <li>実習 : サンプルスキルへの処理の追加</li> </ol> <p>まずは、今回学習する内容を簡単に説明するビデオを見てみましょう。</p> <h2><iframe allowfullscreen="" frameborder="0" height="360" src="//www.youtube.com/embed/W4CndeuW58Q" width="640"></iframe><br /> <br /> <br /> 2-1. スキルの構成と対話モデル</h2> <p>前回、流れに沿って必要な項目のみ設定したAmazon開発者コンソールの画面を見直してみましょう。カスタムスキル設定の主な項目をあらためて紹介します。</p> <ul> <li>スキル情報 画面 <ul> <li><strong>言語</strong> : スキルで扱う言語名(例 Japanese)</li> <li><strong>スキル名</strong> : Amazon開発者コンソールでの表示名</li> <li><strong>呼び出し名</strong> : スキルを特定するフレーズ (例 宇宙豆知識)</li> </ul> </li> </ul> <p><img alt="Alexaスキルの作成" src="https://m.media-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-skills-kit/jp/blog/alexa-skill-property._CB493938210_.png" style="height:458px; width:1148px" /></p> <ul> <li>対話モデル 画面 <ul> <li><strong>対話モデル</strong> : ユーザーの発話とAWS Lambda関数へのリクエストデータを関連付ける設定</li> </ul> </li> <li>設定画面 <ul> <li><strong>エンドポイント</strong> : Alexaサービスからのリクエスト先 (例 AWS Lambda関数のリソース名)</li> </ul> </li> </ul> <p><img alt="" src="https://m.media-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-skills-kit/jp/blog/figure-alexa-request-flow._CB493938211_.png" style="height:280px; width:640px" /></p> <p>スキルの設定として、まずは日本語や英語などAlexaが理解するべき<strong>言語</strong>を選択し、数あるスキルから起動するスキルを区別するための<strong>呼び出し名</strong>を指定します。</p> <p>続いてAlexaサービスからAWS Lambda関数の呼び出し先として<strong>エンドポイント</strong>を指定し、音声データとLambda関数に渡すデータを紐付けるための<strong>対話モデル</strong>を設定します。対話モデルの仕組みは少し複雑なので、このあと詳しく見ていきましょう。</p> <p>&nbsp;</p> <h3>対話モデル</h3> <p><img alt="対話モデル" src="https://m.media-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-skills-kit/jp/blog/figure-alexa-skill-property._CB493938211_.png" style="height:280px; width:640px" /></p> <p>Alexaサービスはユーザーが発した音声データを理解し、AWS Lambda関数を呼び出します。呼び出すリクエストには、音声に対応する処理を示す<strong>インテント名</strong>と、処理に利用するデータである<strong>スロット</strong>が含まれます。対話モデルは、発話内容をインテントおよびスロットに紐付けるためのルールを決めるわけです。</p> <p>&nbsp;</p> <p><strong>ユーザーの発話と対話モデルの対応例</strong></p> <p><strong><img alt="サンプル発話" src="https://m.media-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-skills-kit/jp/blog/alexa-sample-atterance._CB493938211_.png" style="height:180px; width:640px" /></strong></p> <p>例えば、都市の天気を返すスキルの「アレクサ、天気予報で東京の天気を教えて」という発話を考えてみましょう。対話モデルでは例文として<strong>サンプル発話</strong>を設定し、例えば「WeatherIntent {City}の天気を教えて」と表します。インテント名(WeatherIntent)やスロット名(City)をサンプル発話に含めているのがポイントです。では、それぞれについて詳しく見ていきましょう。</p> <p>&nbsp;</p> <h2>インテント</h2> <p>少し抽象的な言い方になりますが、インテントはユーザーの意図や要望を表します。スキルとしては、そのインテントに応じた処理を行うことでユーザーの要望を実現します。たとえば天気予報スキルを利用するユーザーは、「天気を知りたい」という意図でスキルを呼び出すので、その意図に応えるインテントとしてWeatherIntentを用意するという具合です。インテントはスキル内に複数定義することができるので、一つのスキルでユーザーの様々な意図に応えることができます。インテントには、`AMAZON.`からはじまる定義済みのビルトインインテントも利用できます。ビルトインインテントにはスキルが最低限応えるべきインテントや、定番のインテントがあります。</p> <p><strong>主な標準ビルトインインテント</strong></p> <ul> <li>AMAZON.HelpIntent : スキルの使い方を尋ねるインテント</li> <li>AMAZON.StopIntent : 処理やスキルを終了させるインテント</li> </ul> <p style="text-align:left">参考 : <a href="https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/built-in-intent-ref/built-in-intent-library">Built-in Intent Library</a></p> <p>スキルで異なる処理を行う場合、それに合わせてインテントを用意しましょう。</p> <p>&nbsp;</p> <h2>スロット</h2> <p>スロットは、プログラミングにおける変数のようなもので、ユーザーの発話内容に合わせてインテントの処理を工夫できます。たとえば天気予報スキルに当てはめると、東京の天気を知りたいユーザーが「アレクサ、天気予報で東京の天気を教えて」と発話するうち「東京」の部分をCityという名前のスロットにすることで、様々な地域の天気を答えることができるようになります。</p> <p>スロットには、スロット名とスロットタイプを定義します。スロットタイプとはスロットが取りうる値をまとめたもので、Amazonがあらかじめ用意するビルトインスロットタイプのほか、開発者が独自に設定する<strong>カスタムスロットタイプ</strong>があります。例えば、Cityスロットで利用するためのカスタムスロットタイプ ListOfCityを定義し、スロットタイプに含まれる値として「東京」、「大阪」、「名古屋」、「札幌」などを設定します。</p> <p><strong>注意</strong>:スロットでは、カスタムスロットタイプの値以外を受け取ることがあります。例えばListOfCityの値に「埼玉」が含まれていないときでも、AlexaがAIによる解析で「埼玉」がListOfCityに入るべき値と判断すれば、Cityスロットで「埼玉」を受け取るようになります。一方で値とは関連が薄いもの、例えば「しろくま」はスロットでは受け取らないでしょう。</p> <p><strong>ビルトインスロットタイプの例</strong></p> <ul> <li>AMAZON.DATE : 日付のスロットタイプ</li> <li>AMAZON.DURATION : 期間のスロットタイプ</li> </ul> <p style="text-align:left">参考 : <a href="https://developer.amazon.com/ja/docs/custom-skills/slot-type-reference.html">スロットタイプリファレンス</a></p> <p>&nbsp;</p> <p>認識精度の観点から、まずは対応するビルトインスロットタイプを探し、無い場合にカスタムスロットタイプを作成するのが良いでしょう。</p> <h2>&nbsp;</h2> <h2>インテントスキーマ</h2> <p>インテントとスロットは、<strong>インテントスキーマ</strong>というJSON(JavaScript Object Notation)形式でスキルに設定します。インテントごとにスロットを要素として持たせ、スロット名とスロットタイプを紐付けます。</p> <p>&nbsp;</p> <p><strong>インテントスキーマの例</strong></p> <pre> <code class="language-json">{ &quot;intents&quot;: [ { &quot;intent&quot;: &quot;WeatherIntent&quot;, &quot;slots&quot;: [ {&quot;name&quot;: &quot;CityName&quot;,&quot;type&quot;: &quot;City&quot;} ] }, {&quot;intent&quot;: &quot;AMAZON.HelpIntent&quot;}, {&quot;intent&quot;: &quot;AMAZON.StopIntent&quot;} ] }</code></pre> <p>&nbsp;</p> <p style="text-align:left">参考 : <a href="https://developer.amazon.com/ja/docs/custom-skills/custom-interaction-model-reference.html#intent-syntax">Alexa Skills Kitのカスタム対話モデルのリファレンス</a></p> <p>&nbsp;</p> <h2>サンプル発話</h2> <p>サンプル発話は、ユーザーの発話を適切なインテントおよびスロットに紐付けるために設定する発話の例文です。日本語には様々な言い回しがありますので、インテント(意図)に対するサンプル発話は複数個になるでしょう。例えば、東京の天気を知りたいユーザーは「東京の天気を教えて」と発話する場合もあれば、「東京の天気は?」と発話する場合もあるでしょう。インテントスキーマで設定したスロット名をサンプル発話に含めつつ、想定される発話のパターンをインテントごとに複数記述していきます。ユーザーの様々な言い回しに対応できるよう、なるべく多くのサンプル発話を設定することが重要です。</p> <pre> <code class="language-json">{City} の天気を教えて {City} の天気が知りたい {City} の天気は </code></pre> <p>これで対話モデルの設定は完了です。慣れないうちは実際のユーザーの発話をこれらのモデルに落とし込むのが大変かもしれませんが、意図した通りに動くとスキル作成がとても面白くなるので、いろいろなパターンを考えてみてください。</p> <p>続いて、AWS Lambda関数の実装について見ていきます。</p> <p>&nbsp;</p> <h2>2-2. Alexa SDKによるAWS Lambda関数の実装</h2> <p>AWS Lambda関数でAlexaカスタムスキルとして実行するために、Alexa Skills Kit向けの様々な機能を提供するライブラリとして<a href="https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs">Alexa Skills Kit SDK for Node.js</a> (以下Alexa SDK)が利用できます。Alexa SDKは、GitHubでソースが公開されているオープンソースソフトウェアです。Alexa SDKは、対話モデルへの対応やリクエストに含まれるスキルIDの検証のほか、第3回以降で紹介する各種機能を持ちます。</p> <p>&nbsp;</p> <p><strong>Alexa SDKの主な機能</strong></p> <ul> <li>対話モデルの対応</li> <li>スキルIDの検証</li> <li>状態管理</li> <li>データの保存(DynamoDB連携)</li> <li>複数言語対応</li> </ul> <p>&nbsp;</p> <h3>Lambda関数のプログラミング</h3> <p>AWS Lambda関数でカスタムスキルを実行するための最小限のソースプログラムを示します。ソースファイル名はindex.jsを利用することが多いです。</p> <p>&nbsp;</p> <p><strong>index.js</strong></p> <pre> <code class="language-javascript">&quot;use strict&quot;; const Alexa = require('alexa-sdk'); // Alexa SDKの読み込み exports.handler = function(event, context, callback) { var alexa = Alexa.handler(event, context); // Alexa SDKの処理 alexa.appId = process.env.APP_ID; alexa.registerHandlers(handlers); &nbsp;&nbsp;&nbsp; alexa.execute(); // ハンドラの定義 var handlers = { &nbsp;&nbsp; 'WeatherIntent': function () { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var city = this.event.request.intent.slots.City.value; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var weather = weatherFunc(city); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.emit(':tell', '本日の' + city + 'の天気は' + weather + 'です'); }, &nbsp;&nbsp;&nbsp; 'LaunchRequest': function () {...}, &nbsp;&nbsp;&nbsp; 'AMAZON.HelpIntent': function () {...}, &nbsp;&nbsp;&nbsp; 'AMAZON.StopIntent': function () {...}, &nbsp;&nbsp;&nbsp; 'SessionEndedRequest ': function () {...} };</code></pre> <p>&nbsp;</p> <p>Lambda関数でのNode.jsのプログラミングには、JavaScriptやNode.jsの知識が必要です。Node.jsやJavaScriptに関する書籍などを参考にすると良いでしょう。</p> <p>&nbsp;</p> <p style="text-align:left">参考 : <a href="https://www.amazon.co.jp/s/ref=nb_sb_noss?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&amp;url=search-alias%3Dstripbooks&amp;field-keywords=Node.js&amp;rh=n%3A465392%2Ck%3ANode.js">Amazon.co.jp: Node.js: 本</a></p> <p>&nbsp;</p> <h3>ハンドラの定義</h3> <p>ハンドラは、呼び出されるインテントに対応する処理を関数として定義していきます。</p> <p>対話モデルで設定したインテントのほかスキルの実行状態によってAlexaサービスから以下のリクエストが送られてくるため、それらも含めたハンドラを用意します。</p> <ul> <li>LaunchRequest : 呼び出し名のみの発話などインテントに紐付かないリクエスト</li> <li>SessionEndedRequest : 第3回で紹介するセッションが終了したときのリクエスト</li> </ul> <p><strong>index.js(抜粋)</strong></p> <pre> <code class="language-javascript"> // ハンドラの定義 var handlers = { 'WeatherIntent': function () { // WeatherIntentインテントの処理 var city = this.event.request.intent.slots.City.value; var weather = weatherFunc(city); &nbsp;&nbsp;&nbsp; this.emit(':tell', '本日の' + city + 'の天気は' + weather + 'です'); }, 'LaunchRequest': function () {...}, // LaunchRequestの処理 'AMAZON.HelpIntent': function () {...}, // AMAZON.HelpIntentインテントの処理 'AMAZON.StopIntent': function () {...}, // AMAZON.StopIntentインテントの処理 'SessionEndedRequest': function () {...} // SessionEndedRequestの処理 };</code></pre> <h3>スロットの参照</h3> <p>ハンドラの関数の処理では、リクエストに含まれるスロットをthis.event.request.intent.slots配列から参照します。配列のキーがスロット名になっていて、各要素のvalueメンバにスロットの値が入ります。</p> <p>&nbsp;</p> <p><strong>スロット名Cityの値を変数cityに代入する例</strong></p> <pre> <code class="language-javascript">var city = this.event.request.intent.slots.City.value;</code></pre> <h3>レスポンスの生成</h3> <p>Alexaサービスがユーザーに返答する音声(レスポンス)は、this.emitメソッドで指定します。メソッド呼び出しの一つ目の引数にレスポンスのタイプとして:tell(単発の返答)、二つ目の引数にメッセージを指定するのが最も基本的な形式です。</p> <p><strong>変数cityとweatherを含むメッセージを返答する例</strong></p> <pre> <code class="language-javascript">this.emit(':tell', '本日の' + city + 'の天気は' + weather + 'です');</code></pre> <p>メッセージには、文字列のほかに読み上げ方を調整するSSML形式が指定できます。SSMLについては第6回で解説します。レスポンスを生成するメソッドは他にもたくさんありますが、他の機能と連動するため次回以降必要に応じて紹介します。メソッドの一覧はGitHubのREADMEを参照してください。</p> <ul> <li style="text-align:left"><a href="https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs#installing-and-working-with-the-alexa-skills-kit-sdk-for-nodejs-alexa-sdk">alexa/alexa-skills-kit-sdk-for-nodejs: The Alexa Skills Kit SDK for Node.js </a></li> </ul> <p>&nbsp;</p> <h3>(参考) スキルIDの検証</h3> <p>AWS Lambda関数のトリガー(呼び出し)設定では、他のユーザーを含む全てのAlexaスキルからの呼び出しが許可されます。特定のスキルからのみに呼び出しを制限したい場合、Alexa SDKのスキルID検証機能を利用します。</p> <p>あらかじめカスタムスキルのスキルIDを控えておき、alexaオブジェクト(Alexa.handlerメソッドの返り値)のappIdメンバにセットすることで、Alexa SDKは異なるスキルIDからの呼び出し時にエラーをレスポンスとして返します。スキルIDをソースファイルに直接指定することもできますが、Lambdaの機能である環境変数を参照することでソースファイルを変更せずにスキルIDが後から変更でき、便利です。</p> <pre> <code class="language-javascript">alexa.appId = process.env.APP_ID; // 環境変数APP_IDの値をスキルIDに設定する</code></pre> <p><strong>設定とは異なるスキルIDから呼び出されたLambdaのエラーログ(Amazon CloudWatch Logs)の例</strong></p> <p><img alt="エラーログ" src="https://m.media-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-skills-kit/jp/blog/screenshot-app-id-error._CB493938237_.png" style="height:360px; width:885px" /></p> <h3>(参考) Alexa SDKのセットアップ</h3> <p>今回の実習ではLambdaで提供されている設計図(Blue Print)と呼ばれる、Alexa SDKがあらかじめ含まれている構成を利用します。もし設計図を使わず一からLambda関数を定義する場合は、Alexa SDKのライブラリを含めてLambdaにアップロードする手順が必要になります。Alexa SDKは、Lambda関数の関連ファイル(以下Lambdaパッケージ)に含める形でスキルごとに準備します。Lambdaパッケージに含めるファイルを置いておくフォルダ(ディレクトリ)を作成し、Node.jsのパッケージマネージャのひとつであるnpmコマンドでAlexa SDKをインストールします。フォルダの場所やフォルダ名は特に問いません。</p> <p><strong>Macのターミナルでのフォルダの作成とAlexa SDKのインストール例</strong></p> <pre> <code class="language-bash">$ mkdir ~/Desktop/my-first-alexa $ cd ~/Desktop/my-first-alexa $ npm install alexa-sdk</code></pre> <h2>実習 : 対話モデルの構成とAlexa SDKによるAWS Lambdaの実装</h2> <p>これまでに説明した手順にしたがって、実際に動作するスキルを作ってみましょう。今回の実習では、星占いのスキル作成を通して対話モデルの構成とAlexa SDKを用いたLambda関数の実装方法を確認します。</p> <p>発話例 : 「アレクサ、うらないでうお座の運勢を教えて」</p> <p>返答例 : 「今日のうお座の運勢は星みっつで良いでしょう」</p> <p>今回のスキルは発話にスロット(星座)を含み、それに応じた結果を返すのが特徴です。</p> <ol> <li>スキルの作成と対話モデルの構成</li> <li>Alexa SDKによるAWS Lambda関数の実装</li> <li>動作確認</li> </ol> <p>&nbsp;</p> <h2>ステップ1 スキルの作成と対話モデルの構成</h2> <p>第1回の実習の手順と同様に、Alexaスキルを新規作成します。前回と異なり、対話モデルにスロットを設定する点に注意しましょう。</p> <ol> <li>Webブラウザで <a href="https://developer.amazon.com/ja/">https://developer.amazon.com/ja/</a> にアクセス、サインインする</li> <li>開発者コンソールの「ALEXA」メニューをクリック</li> <li>Alexa Skills Kitの「始める &gt;」をクリック</li> <li>画面右上の「新しいスキルを追加する」をクリック</li> <li>[スキル情報]画面で以下のようにカスタムスキルを設定する</li> </ol> <p style="margin-left:80px">(ア) [スキルの種類]は「カスタム対話モデル」が選択されていることを確認</p> <p style="margin-left:80px">(イ) [言語]は「Japanese」(日本語)を選択</p> <p style="margin-left:80px">(ウ) [スキル名]は「星占い」と入力</p> <p style="margin-left:80px">(エ) [呼び出し名]は「うらない」と入力</p> <p style="margin-left:80px">(オ) [グローバルフィールド]は既定のままにし、[保存]をクリック</p> <p style="margin-left:80px">(カ) 画面右下に出てくる[次へ]をクリック</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6. [対話モデル] 画面では、以下のように設定する。</p> <p style="margin-left:80px">(ア) [インテントスキーマ]には、以下のJSONをコピー&amp;ペーストで入力する。Lambda関数で使用するため、スロット名StarSign、インテント名HoroscopeIntentを憶えておくこと</p> <pre> <code class="language-json">{ &quot;intents&quot;: [ { &quot;slots&quot;: [ { &quot;name&quot;: &quot;StarSign&quot;, &quot;type&quot;: &quot; ListOfSign &quot; } ], &quot;intent&quot;: &quot;HoroscopeIntent&quot; }, { &quot;intent&quot;: &quot;AMAZON.HelpIntent&quot; }, { &quot;intent&quot;: &quot;AMAZON.StopIntent&quot; }, { &quot;intent&quot;: &quot;AMAZON.CancelIntent&quot; } ] }</code></pre> <p style="margin-left:80px">(イ) [カスタムスロットタイプ]には、以下を入力する</p> <ul style="margin-left:80px"> <li>[タイプを入力] には「ListOfSign」(星座)を入力</li> <li>[値を入力] には、以下のテキストデータをコピー&amp;ペーストで入力し [更新] ボタンをクリック <pre> <code>おひつじ座 おうし座 ふたご座 かに座 しし座 おとめ座 てんびん座 さそり座 いて座 やぎ座 みずがめ座 うお座</code></pre> <p>&nbsp;</p> </li> </ul> <p style="margin-left:80px">(ウ) [サンプル発話]には、以下のテキストデータをコピー&amp;ペーストで入力する<br /> &nbsp;</p> <pre> <code>HoroscopeIntent {StarSign} を 占って HoroscopeIntent {StarSign} の 運勢 を 教えて HoroscopeIntent {StarSign} の 運勢 は どう HoroscopeIntent {StarSign} の 運勢 は HoroscopeIntent {StarSign} の 運気 を 教えて HoroscopeIntent {StarSign} の 運気 は どう HoroscopeIntent {StarSign} の 運気 は HoroscopeIntent {StarSign}</code></pre> <p style="margin-left:80px">(エ) [次へ]をクリック</p> <p style="margin-left:40px">7. [設定]画面に遷移したらWebページを開いたままにしておく</p> <p>&nbsp;</p> <h2>ステップ2 AWS Lambda関数の構成</h2> <p>Alexa SDKを含めたLambdaパッケージ一式を公開しているので、手順に従いLambdaパッケージをアップロードしましょう。</p> <ol> <li>AWSマネジメントコンソールにログインし、画面左上の[サービス]をクリック、テキストボックスに「lambda」と入力して候補として表示されるLambdaを選択しAWS Lambdaの管理画面を表示する</li> <li>AWS Lambdaの初期画面が表示されたら、「関数の作成」ボタンをクリックする</li> <li>&nbsp;[設計図の選択]画面では検索フォームに「alexa」と入力し、リストされる「alexa-skill-kit-sdk-factskill」をクリック</li> <li>[基本的な情報]画面では、[名前]に「HoroscopeSkill」、[ロール]は「既存のロールを選択」のまま、[既存のロール]は第1回の実習で作成した「lambda_basic_execution」を選択し、[関数の作成ボタン]をクリックしLambda 関数を作成します</li> <li>作成されたHoroscopeSkill関数の設定画面に遷移するので、[関数コード]のコード編集テキストエリアに以下のソースコードを貼り付ける<br /> &nbsp; <pre> <code class="language-javascript">&quot;use strict&quot;; const Alexa = require('alexa-sdk'); // 占い結果の定義 const fortunes = [ {'score':'good','description':'星みっつで良いでしょう' }, {'score':'normal', 'description':'星ふたつで普通でしょう' }, {'score':'bad','description':'星ひとつでイマイチでしょう' } ]; // Lambda関数のメイン処理 exports.handler = function(event, context, callback) { var alexa = Alexa.handler(event, context); // Alexa SDKのインスタンス生成 &nbsp;&nbsp;&nbsp; //alexa.appId = process.env.APP_ID; alexa.registerHandlers(handlers); // ハンドラの登録 alexa.execute();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // インスタンスの実行 }; var handlers = { // インテントに紐付かないリクエスト &nbsp; 'LaunchRequest': function () { this.emit('AMAZON.HelpIntent'); // AMAZON.HelpIntentの呼び出し }, // スキルの使い方を尋ねるインテント 'AMAZON.HelpIntent': function () { this.emit(':tell', '今日の運勢を占います。' + 'たとえば、うらないでふたご座の運勢を教えてと聞いてください'); }, // 対話モデルで定義した、占いを実行するインテント 'HoroscopeIntent': function () { var sign = this.event.request.intent.slots.StarSign.value; // スロットStarSignを参照 var fortune = fortunes[Math.floor(Math.random()*3)];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // ランダムに占い結果を取得 var message = '今日の' + sign + 'の運勢は' + fortune.description; // 応答メッセージ文字列の作成 this.emit(':tell', message); // レスポンスの生成 console.log(message); } };</code></pre> <p>6. [トリガー]タブの[+トリガーを追加]をクリック、ダイアログ左側の点線枠をクリックして「Alexa Skills Kit」を選択し、「送信」ボタンをクリック</p> </li> </ol> <p style="margin-left:40px">7.画面右上の[保存してテスト]ボタンをクリックする</p> <p style="margin-left:40px">8.テストイベントが未作成の場合、テストイベント作成のダイアログが開くので、[イベントテンプレート]から「Alexa Start Session」を選択し[イベント名]に「MyAlexaEvent」と入力、[作成]ボタンをクリックする</p> <p style="margin-left:40px">9.再度画面右上の[テスト]ボタンをクリックしてHoroscopeSkill関数の実行をテストする。</p> <p style="margin-left:40px">10.「実行結果: 成功」と表示され、[詳細]をクリックし結果を確認する</p> <p style="margin-left:40px">11.画面右上の「ARN」に表示されるARN(Amazonリソースネーム)をコピーしておく</p> <p>&nbsp;</p> <h2>ステップ3 サービスシミュレーターによるスキルの動作確認</h2> <p>第1回の実習と同様に、作成したLambda関数を呼び出すようにAlexaスキルを構成し、サービスシミュレーターで星占いスキルの動作を確認しましょう。</p> <ol> <li>Amazon開発者コンソールを開き、星占いスキルを選択、[設定]タブを表示する</li> <li>[エンドポイント] &gt; [サービスエンドポイントのタイプ]では「AWS Lambda ARN (Amazonリソースネーム) 」を選択</li> <li>[デフォルト]にステップ2でコピーしておいたLambda関数のARNをペーストする</li> <li>他の項目は既定値のまま[次へ]ボタンをクリック</li> <li>[テスト]タブに遷移したらサービスシミュレーターの[発話を入力してください]に任意の発話内容(例: うお座の運勢を教えて)を入力し[星占いを呼び出す]ボタンをクリック、[サービスレスポンス]に発話内容に応じたレスポンスが表示されることを確認する</li> </ol> <p style="margin-left:40px"><img alt="サービスシミュレーター" src="https://m.media-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-skills-kit/jp/blog/screenshot-test-skill._CB493938237_.png" style="height:658px; width:813px" /></p> <p>作成したスキルはEchoデバイスで動作させることもできます。Echo デバイスを管理するAlexaアプリと同じアカウントでAmazon開発者ポータルにサインインし、スキルを作成しましょう。Echoデバイスが手元にあれば、「アレクサ &lt;呼び出し名&gt; &lt;サンプル発話&gt;」の形式で星占いスキルの動作を確認するのも良いでしょう。</p> <p>&nbsp;</p> <h2>ステップ4 (任意)スキルのカスタマイズ</h2> <p>スキルの動作について、以下を試してみましょう。</p> <ul> <li>サービスシミュレーターに任意の発話内容を入力し、サンプル発話のパターンが動作することを確認する</li> <li>対話モデルに自身で考えたいくつかのサンプル発話を追加して、異なる言い回しでスキルが動作する様子を確認する</li> </ul> <p>これで今回の実習は完了です。星占いのスキル作成を通して、対話モデルの構成とAlexa SDKを用いたLambda関数の実装方法を確認しました。</p> <p>&nbsp;</p> <h2>まとめ</h2> <p>第2回ではAlexaスキル開発の基本として、対話モデルとスキルの開発環境について学習しました。次回はより実用的なAlexaスキルを開発するために、音声ユーザーインターフェース(VUI)の設計とスキルでの状態管理についてご紹介します。</p> <p>&nbsp;</p> <p>(このコンテンツはAmazonとの業務委託に基づいて、クラスメソッド株式会社が製作しました)</p> /blogs/alexa/post/9c338d8b-1fbb-4983-bf79-8972b05bd336/students-learn-to-build-for-alexa-with-hour-of-code Students, Learn to Build for Alexa with Hour of Code Marion Desmazieres 2017-11-08T20:31:12+00:00 2017-11-08T20:31:12+00:00 <p><a href="https://learn.amazonfutureengineer.com/alexa/fact-skill/#/" target="_blank"><img alt="blog.png" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/AlexaSkillsKit/blog._CB493906168_.png?t=true" /></a></p> <p>Happy National STEM day! Have you ever wanted to get into coding but did not know where and when to start? This is your time! Complete the <a href="https://learn.amazonfutureengineer.com/alexa/fact-skill/#/" target="_blank">Alexa fact skill tutorial</a> for Hour of Code and start building for voice, the next big thing in computing.</p> <p><a href="https://learn.amazonfutureengineer.com/alexa/fact-skill/#/" target="_blank"><img alt="blog.png" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/AlexaSkillsKit/blog._CB493906168_.png?t=true" /></a></p> <p>Happy National STEM day! Have you ever wanted to get into coding but did not know where and when to start? This is your time! Complete the <a href="https://learn.amazonfutureengineer.com/alexa/fact-skill/#/" target="_blank">Alexa fact skill tutorial</a> for Hour of Code and start building for voice, the next big thing in computing.</p> <p>Next month, you can take part in the annual Hour of Code campaign organized by <a href="https://code.org/" target="_blank">Code.org</a>, a non-profit dedicated to expanding access to computer science and increasing participation by women and underrepresented minorities. <a href="https://hourofcode.com/us" target="_blank">Hour of Code</a> is a global movement reaching tens of millions of students in more than 180 countries. Industry professionals have created one-hour introductions to Computer Science for students around the world. The event happens during Computer Science Education Week, which takes place from December 4 to December 10 this year.</p> <p>For the occasion, the Amazon Future Engineer, AWS Educate, and Amazon Alexa teams have teamed up to create a new <a href="https://learn.amazonfutureengineer.com/alexa/fact-skill/#/" target="_blank">Alexa fact skill tutorial</a> for high school students. With this tutorial, you can learn to build an Alexa skill in four simple steps, no programming experience required. You’ll learn to build a fact skill, called My School Facts, and test it with an online voice simulator - no Alexa-enabled device required.</p> <p>Visit the <a href="https://learn.amazonfutureengineer.com/alexa/fact-skill/#/" target="_blank">Alexa fact skill tutorial</a> to start building for voice, and help shape the UX of the future.</p> <p>Read <a href="https://www.amazon.com/p/feature/bw8tgoovkz7q7y3" target="_blank">Jeff Wilke’s blog</a> to learn more about Amazon’s participation in Code.org’s global Hour of Code.</p> <p>Happy coding!</p>