著者:岡本 秀高
2018 年3 月30 日、スマートスピーカー「Amazon Echo」の一般販売が開始されました。そのバックエンドに使用されるAIアシスタント「Amazon Alexa」を活用することで、自分のオリジナルアプリ(スキル)を簡単に作成できます。本企画で、シンプルなスキルを作りながら、スキルの開発方法を学んでいきましょう。
記事本文掲載のシェルスクリプトマガジンvol.54は以下のリンク先でご購入できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
'use strict'; // alexa-sdkを取得 const Alexa = require('alexa-sdk'); // AlexaのスキルIDを指定(省略可) const APP_ID = ''; // リクエスト内容から、nameスロットの値を取り出す処理 const getName = (event) => { if (!event.request.intent) return ''; if (!event.request.intent.slots.name.value) return ''; return `${event.request.intent.slots.name.value} さん`; } // インテントごとのレスポンスをオブジェクト形式で定義 // キーがインテント名となる const handlers = { 'LaunchRequest': function () { // LaunchRequestでは、HelloIntentを同じ内容を話すように設定 this.emit('HelloIntent'); }, 'HelloIntent': function () { const name = getName(this.event); // ユーザーからの返答が必要ない場合は「:tell」を使う // 第2引数にAlexaにしゃべらせたい内容を記述 this.emit(':tell', 'アレクサスキルへようこそ。' + name); }, 'Unhandled': function () { // Unhandledはユーザーの発話内容がどのインテントにも一致しなかった場合に呼び出される // ユーザーからの返答を求めたい場合は「:ask」を使う // 第2引数にAlexaにしゃべらせたい内容を記述 // 第3引数にユーザーがしばらく返答しなかった場合に再度よびかける内容を記述 this.emit(':ask', 'すみません。よく聞き取れませんでした。なにか試したいことはありますか?', 'なにか試したいことはありますか?'); }, 'AMAZON.HelpIntent': function () { // AMAZON.XXXIntentはAmazonのビルトインインテント // ビルトインインテントの詳細:https://developer.amazon.com/ja/docs/custom-skills/implement-the-built-in-intents.html this.emit(':ask', 'これはアレクサのサンプルスキルです', 'なにか試したいことはありますか?'); }, 'AMAZON.CancelIntent': function () { this.emit(':tell', 'ごきげんよう。'); }, 'AMAZON.StopIntent': function () { this.emit(':tell', 'ごきげんよう。'); }, }; // Alexaからのリクエストはeventに含まれる exports.handler = function (event, context, callback) { // alexa-sdkをセットアップ const alexa = Alexa.handler(event, context, callback); // AlexaのスキルIDをここで定義 alexa.appId = APP_ID; // 作成したレスポンスを登録 alexa.registerHandlers(handlers); // execute()を実行することで、リクエストに対応したレスポンス返す alexa.execute(); }; |