SlideShare a Scribd company logo
Alexaスキルを作ってみよう
1
マネージメントサービス株式会社 風間玲央
2
Alexaスキルとは
Alexaは、Amazon Echo、Echo Dotをはじめとする数
多くのデバイスで中枢的な働きをするAmazonの音
声サービスです。
https://developer.amazon.com/ja-JP/alexa/alexa-
skills-kit
⇒スマートスピーカーやスマートフォンに話しかける
と、色んなことをしてくれる音声サービス!
今回作るスキル
好きな言葉(+です)を話しかけると、Alexaがその言
葉をそのまま返します。
目的:AWSを使って、簡単に音声サービスが作れるこ
とを体験する
3
事前準備
・必ず用意:PCとAmazon Developerアカウント
(Amazonのショッピングサイトのアカウントを登録で
きます。)⇒登録方法はスライド5~11へ
・あると良い1:Visual Studio Code
(https://azure.microsoft.com/ja-jp/products/visual-
studio-code/)
(検索エンジンで「Visual Studio Code」で検索してイ
ンストール)
・あると良い2:スマートフォンとAlexaアプリ(アプリ
ストアから「Amazon Alexa」で検索してインストール)
・あると便利かも:マイク付きのイヤホン・ヘッドホン
(Alexaとのやり取りで使用。なくてもテストはブラウ
ザ上でテキストのやり取りでできます。)
Alexaアプリ
4
Amazon Developerアカウントの登録
5
スキル開発を始める
Alexaスキルを開発する
(https://developer.amazon.com
/ja-JP/alexa/alexa-skills-
kit/build)にアクセスし、「スキル
開発を始める」をクリックします。
「Alexaスキルを開発する」で検
索すると出てきます。
6
ログイン
Amazonアカウントでログインし
ます。
アカウントがなければ、新しく
Amazonアカウントを作成します。
7
プロフィール入力
ログイン後、開発者としてのプ
ロフィール情報を入力します。
メールアドレス、電話番号、住
所等は個人のものでも会社の
ものでも、アカウント作成が可
能です(スキルを公開した場合
の連絡先になります)。
入力し終わったら、「保存して続
行」をクリックします。
8
Agreementを承認
「承認して続行」をクリックします。
9
開発者プロフィールの
作成完了
「後で行う」をクリックします。
10
Amazon Developer
ダッシュボード
開発者プロフィールの作成が完
了すると、Amazon Developer
(https://developer.amazon.com
/dashboard)のダッシュボードに
遷移します。
以上でAmazon Developerアカウ
ントの登録は完了です。
11
対話モデルの作成
12
Amazon Developer
にアクセス
Amazon Developer にログインし
ていない場合、
Amazon Developer
(https://developer.amazon.com
/ja/)にアクセスします。
(「amazon developer」で検索す
ると出てきます。)
「ログイン」をクリックします。
13
ログイン
開発者プロフィールを作成した
Amazonアカウントでログインし
ます。
14
Alexa のページへ
ログインしたら、「Alexa」をクリッ
クします。
15
開発者コンソールへ
Alexaのトップページ
( https://developer.amazon.com
/ja-JP/alexa/ )に入ったら「Alexa
Skills Kit」タブの「開発者コン
ソール」をクリックします。
16
スキルの作成
alexa developer console
( https://developer.amazon.com
/alexa/console/ask )から
「スキルの作成」をクリックしま
す。
17
スキル名、言語、モデルを
入力・選択
任意のスキル名を入力して「ス
キルを作成」をクリックします。
デフォルトの言語、スキルに追
加するモデルはそのまま「日本
語(日本)」と「カスタム」にしてお
きます。
下にスクロールします。
18
ホスティングする方法を
選択
「Alexa-Hosted (Node.js)」を選択
したら、上にスクロールして「ス
キルを作成」をクリックします。
19
呼び出し名を選択
「呼び出し名」をクリックします。
20
呼び出し名を入力
スキルを呼び出すときに話しか
ける、呼び出し名を入力します。
何でもよいですが、「呼び出し名
の要件」(画面参照)は満たす
必要があります(※)。
入力後、「モデルをビルド」をク
リックします。
※日常的に使う言葉ではなく、
スキル特有の呼び出し名にした
方が、Alexaがスキルの呼び出
しを認識しやすくなります。
21
HelloWorldIntentを確認
ビルドを待っている間にインテ
ントを見てみます。
「HelloWorldIntent」をクリックし
てください。
22
インテントとは
スキルで実行するアクションの
ことをインテントと言います。
サンプル発話に登録された言
葉を話しかけると、インテントが
呼ばれます。
デフォルトでは、「Hello」「how
are you」など7個のインテントが
登録されています。
23
デプロイへ
「完全ビルドが完了しました」と
表示されたら、「コードエディタ」
をクリックします。
24
デプロイ
「デプロイ」をクリックします。
25
テストへ
「デプロイが完了しました」と表
示されたら、「テスト」をクリック
します。
26
テストを有効化
デフォルトではテストが無効に
なっているので、リストボックス
から「開発中」を選んでテストを
有効にします。
27
テストを実行
テキストを入力してEnterでAlexa
とのやり取りをシミュレーション
できます。
[呼び出し名(ここでは「こだ
ま」)]でスキルを呼び出し、サン
プル発話に登録されている発話
(ここでは「hello」)でインテント
を呼び出します。
やり取りを確認したら、「ビルド」
タブに戻ります。
28
インテントを追加
「インテント」の右にある「+追
加」をクリックします。
29
カスタムインテントを作成
テキストボックスに「EchoIntent」
と入力して「カスタムインテント
を作成」をクリックします。
30
インテントスロットを作成
下にスクロールします。
31
インテントスロットを追加
インテントスロットの名前に
「phrase」と入力して「+」ボタン
をクリックします。
32
スロットタイプを選択
スロットタイプを
「AMAZON.SerchQuery」にしま
す。(本来は検索用のスロットタ
イプです。何でも受け取ること
ができるので、今回はこちらを
利用します。)
33
サンプル発話を追加
ページ上部に戻ってサンプル発
話に「{phrase} です」と入力しま
す。「 {phrase}は「{」を入力する
と出てくる候補から選択できま
す。その後ろに「半角スペース
+です」を入力します。
※入力後、「+」ボタンをクリック
します。
34
スロットの編集へ
サンプル発話に「{phrase} で
す」が追加されたら、インテント
スロットの「phrase」をクリックし
ます。
35
スロットを必須に
「このインテントを完了させるた
めに、このスロットは必須です
か?」をオンにします。
36
スロット入力を編集
Alexaの音声プロンプトにAlexa
が話しかける任意の言葉を入
力して「+」ボタンをクリックしま
す。
さらに、ユーザーの発話に
「{phrase}」を入力して「+」ボタ
ンをクリックします。
37
モデルをビルド
サンプル発話に「{phrase} で
す」が追加されたら、「インター
フェース」をクリックします。
38
インターフェースへ
画面下部「オートデリゲート」の
スイッチボタンをクリックして無
効にします。
39
モデルをビルド
インターフェースがすべて無効に
なったら、「インターフェースを保
存」をクリックします。
その後、「モデルをビルド」をク
リックします。
「完全ビルドが完了しました」と表
示されたら、対話モデルの作成
は完了です( ※ ) 。
※ 「{phrase}」と「です」の間に半
角スペースがなかったり、全角ス
ペースが混ざっていたりすると、
エラーになるので注意。
40
AWS Lambda関数(Node.js)の実装
41
コードエディタへ
「完全ビルドが完了しまし
た」と表示されたら、「コード
エディタ」をクリックします。
42
Index.jsを編集
ソースコードの編集画面に
遷移します。
まずは、表示されている
index.jsを編集していきます。
なお、ソースコードは以下の
場所にあります。
https://github.com/forshoes
-admin/Alexa-
reception/tree/master/hand
s-on
画面上のソースコードを編
集したら、 「保存」をクリック
またはCtrl + Sで保存できま
す。
43
参考:Visual Studio
Codeで編集
Index.jsのソースコードを全
選択してコピーし、 Visual
Studio Codeに言語を
「JavaScript」、インデントを
「スペース:2」にして張り付け
ると見やすく、編集しやすい
です。
編集が終わったら、 Visual
Studio Codeのソースコード
を全選択してコピーし、
alexa developer consoleの
ソースコードを全選択して上
書きで貼り付けます
44
LaunchRequestHandler
を編集
const LaunchRequestHandler = {
canHandle(handlerInput) {
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'LaunchRequest';
},
handle(handlerInput) {
console.log(“LaunchRequestHandlerのhandleを呼び出し");
return handlerInput.responseBuilder
.addDelegateDirective({
name: 'EchoIntent',
confirmatioinStatus: 'NONE',
slots: {}
})
.getResponse();
}
};
LaunchRequestHandler
( const
LaunchRequestHandler = {
};の波括弧の中)を右の通り
に編集します。
45
解説
addDelegateDirective
関数に渡すオブジェクト
const LaunchRequestHandler = {
………………………………………………(省略)………………………………………………………………
handle(handlerInput) {
console.log("LaunchRequestHandlerが起動");
return handlerInput.responseBuilder
.addDelegateDirective({
name: 'EchoIntent',
confirmatioinStatus: 'NONE',
slots: {}
})
.getResponse();
}
};
nameプロパティにはインテント名を指
定します。
confirmatioinStatusプロパティにはイ
ンテントが確認されたか
(CONFIRMED)、拒否されたか
(DENIED)を表します。NONEの場合
は、ユーザーにまだ確認を行ってい
ないことを表します。
slotsプロパティには、スロット値を指
定します。今回はプログラムからス
ロット値を指定しないので、空のオブ
ジェクトを指定します。
最後にgetResponse関数を呼び出し
てレスポンスを返します。
46
EchoIntentHandler
を追加
const EchoIntentHandler = {
canHandle(handlerInput) {
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
&& Alexa.getIntentName(handlerInput.requestEnvelope) === 'EchoIntent'
&& Alexa.getDialogState(handlerInput.requestEnvelope) !== 'COMPLETED'
},
handle(handlerInput) {
console.log("EchoIntentHandlerのhandleを呼び出し");
let speakOutput = "";
try {
speakOutput = Alexa.getSlotValue(handlerInput.requestEnvelope, "phrase");
} catch (e) {
console.error(e);
}
return handlerInput.responseBuilder
.speak(speakOutput)
.getResponse();
}
};
右の通りの
EchoIntentHandler
(const EchoIntentHandler = {
};の波括弧)を追加します。
追加する場所は任意ですが、
LaunchRequestHandler
とHelloWorldIntentHandler
の間に追加しました(次ペー
ジ参照)。
47
EchoIntentHandler
を追加する場所
const LaunchRequestHandler = {
………………………………………………(省略)………………………………………………………………
};
const EchoIntentHandler = {
canHandle(handlerInput) {
………………………………………………(省略)………………………………………………………………
},
handle(handlerInput) {
………………………………………………(省略)………………………………………………………………
}
};
const HelloWorldIntentHandler = {
………………………………………………(省略)………………………………………………………………
};
LaunchRequestHandler
とHelloWorldIntentHandler
の間に追加しました。
48
解説
const EchoIntentHandler = {
………………………………………………(省略)………………………………………………………………
handle(handlerInput) {
console.log("EchoIntentHandlerのhandleを呼び出し");
let speakOutput = "";
try {
speakOutput = Alexa.getSlotValue(handlerInput.requestEnvelope, "phrase");
} catch (e) {
console.error(e);
}
return handlerInput.responseBuilder
.speak(speakOutput)
.getResponse();
}
};
getSlotValue関数は、
handlerInput.requestEnvelo
peとインテントスロット名を
引数として呼び出すと、取得
したスロットの値が返ってき
ます。
speak関数は、Alexaの応答
メッセージを引数として呼び
出すと、Alexaが引数の値で
応答します。今回は、スロッ
トの値そのままでAlexaが応
答します。
49
handler関数を編集
exports.handler = Alexa.SkillBuilders.custom()
.addRequestHandlers(
LaunchRequestHandler,
EchoIntentHandler,
HelloWorldIntentHandler,
HelpIntentHandler,
CancelAndStopIntentHandler,
SessionEndedRequestHandler,
//IntentReflectorHandler, // make sure IntentReflectorHandler is last so it
doesn't override your custom intent handlers
)
.addErrorHandlers(
ErrorHandler,
)
.lambda();
handler関数内の
addRequestHandlers 関数の
引数にEchoIntentHandlerを
追加し、
IntentReflectorHandler(テス
ト・デバッグ用の関数)をコメ
ントアウトします。
以上でindex.jsの編集は完
了です。
50
デプロイ
alexa developer consoleで
index.jsの編集が完了したら、
「デプロイ」をクリックしてデ
プロイします。
51
デプロイ完了
「デプロイが完了しました」と
表示されたら、デプロイ完了
です。
早速テストをしてみましょう。
52
動作を確認
「こだま」で呼び出し、「〇〇
です」に対して、Alexaが「〇
〇」と返すのを確認できます。
開発者アカウントでログイン
してAlexaアプリを使えば、シ
ミュレーションではなく、実際
のAlexaの動作を確認できま
す。
53
最後に
54
Alexaスキル開発についてもっと学びたい場合
・今回は「〇〇です」で発話していますが、以下のサイトの方法を使うとテキストをそのまま発話し
てオウム返しできます。
Alexaで自由テキストをつかむ方法 ー おうむ返しくんの場合 ー
(https://note.mu/torusnote/n/n77896a394177 2019年12月2日最終アクセス)
・公式サンプルコード(2019年12月5日最終アクセス)
ファクトスキルのテンプレート(https://github.com/alexa/skill-sample-nodejs-fact/tree/ja-JP)
トリビアスキルのテンプレート(https://github.com/alexa/skill-sample-nodejs-trivia/tree/ja-JP)
クイズゲームスキルのテンプレート(https://github.com/alexa/skill-sample-nodejs-quiz-
game/tree/ja-JP)
・ Alexa公式ブログには、スキルの学習用サンプルや、新しい機能の紹介があります。
Alexa公式ブログ 日本向け記事
( https://developer.amazon.com/ja/blogs/alexa/tag/Japan 2019年12月2日最終アクセス)
55
参考
・ Alexa Skills Kit Official Site: Build Skills for Voice
(https://developer.amazon.com/ja/alexa-skills-kit 2019年12月2日最終アクセス)
・【Alexa】Connpass用の受付スキルを作ってみた #Alexa #AlexaDevs(https://dev.classmethod.jp/voice-
assistant/try-to-develop-registration-skill/ 2019年12月2日最終アクセス)
・Alexaスキル開発トレーニングシリーズ第4回: ユーザーとの対話
( https://developer.amazon.com/ja/blogs/alexa/post/319a5083-7858-4cb2-987e-
5bcd7f833533/alexatraining-dialog 2019年12月2日最終アクセス)
・インテントチェーンを使って別のインテントのダイアログを管理する Dialog.Delegateを使ったインテントの
チェーン
(https://developer.amazon.com/ja/blogs/alexa/post/b3939b11-5cef-4598-b2f9-
c7ad904e1692/understanding-intent-chaining 2019年12月2日最終アクセス)
・[日本語Alexa] Alexa SDK for Node.js Ver2入門(その3)レスポンスの作成
(https://dev.classmethod.jp/cloud/alexa-sdk-v2-third/ 2019年12月2日最終アクセス)
・【Alexa】ASK SDKにスキルエンジニアの強い味方「ASK SDK Utilities」が登場。 #Alexa #AlexaDevs
(https://dev.classmethod.jp/voice-assistant/introduce-to-ask-sdk-utilities/ 2019年12月2日最終アクセス)
56

More Related Content

PPTX
Alexa Skills Kitを使って自作のSkillを作る
PDF
Rubyでalexaプログラミング
PDF
Alexa conversations に触れてみよう
PPTX
JAWS-UG IoT専門支部 Amazon AI
PPTX
Lambdaを使ったAlexaスキル開発の舞台裏
PPTX
AlexaでスマートホームをDIYする
PPTX
Alexaスキルのはじめ方
PDF
Alexa Gadgets Toolkitから広がるVUIの可能性
Alexa Skills Kitを使って自作のSkillを作る
Rubyでalexaプログラミング
Alexa conversations に触れてみよう
JAWS-UG IoT専門支部 Amazon AI
Lambdaを使ったAlexaスキル開発の舞台裏
AlexaでスマートホームをDIYする
Alexaスキルのはじめ方
Alexa Gadgets Toolkitから広がるVUIの可能性

Similar to 20191206_Alexaスキルを作ってみよう (20)

PPTX
15分でできるAmazon Alexa Skill開発
PPTX
Alexa Skills Kitでプロダクトの可能性を広げる
PPTX
Trat sprint11
PPTX
Alexa SDK Alexa Salon
PPTX
Amazon AlexaとServerless
PDF
AWS Amplify - Auth/API Category & Vue 構築ハンズオン
PPTX
Alexa Skills Kitの始め方
PPTX
俺の話を聞け!Lt大会#7
PPTX
JAWS-UG AI支部 #2 re:Invent アップデート
PDF
自然言語処理サービスとRaspberry PIで自分だけの音声入力デバイスを作ろう
PPTX
AWS CLIでAlexaのカスタムスキルをデプロイしている話
PPTX
「Alexaから君へ」Master cloud #9 新春クラウドLT大会
PDF
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
PDF
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
PDF
Alexaスキルを作ろう
PDF
Programming AWS with Perl at YAPC::Asia 2013
PDF
Azure Functions で Google Home, Amazon Echo, LINE Clova スキル開発 #decode19
PDF
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
PDF
Alexa gadgets toolkitで始まるAlexaスキルの世界
PDF
スタートアップならおさえておきたいAWS(Amazon Web Services)入門 2限目:基本構成とピーク対策編
15分でできるAmazon Alexa Skill開発
Alexa Skills Kitでプロダクトの可能性を広げる
Trat sprint11
Alexa SDK Alexa Salon
Amazon AlexaとServerless
AWS Amplify - Auth/API Category & Vue 構築ハンズオン
Alexa Skills Kitの始め方
俺の話を聞け!Lt大会#7
JAWS-UG AI支部 #2 re:Invent アップデート
自然言語処理サービスとRaspberry PIで自分だけの音声入力デバイスを作ろう
AWS CLIでAlexaのカスタムスキルをデプロイしている話
「Alexaから君へ」Master cloud #9 新春クラウドLT大会
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
Alexaスキルを作ろう
Programming AWS with Perl at YAPC::Asia 2013
Azure Functions で Google Home, Amazon Echo, LINE Clova スキル開発 #decode19
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
Alexa gadgets toolkitで始まるAlexaスキルの世界
スタートアップならおさえておきたいAWS(Amazon Web Services)入門 2限目:基本構成とピーク対策編
Ad

More from yamamotomsc (13)

PPTX
20200304 vuejs
PPTX
20191224 aws cloud9
PPTX
20191129 AWS CloudFormarion
PPTX
20191115_Cloud Front
PPTX
20191031_Amazon Api Gateway
PPTX
20191018 AWS Lambda
PDF
20191011_Route 53
PPTX
20190927_AWS VPC
PPTX
20190920 AWS IAM
PPTX
20190913 awscli
PPTX
20190906_私が使ったAWSサービス
PPTX
20190823_AMAZON EC2
PPTX
20190809_AWS第1歩目
20200304 vuejs
20191224 aws cloud9
20191129 AWS CloudFormarion
20191115_Cloud Front
20191031_Amazon Api Gateway
20191018 AWS Lambda
20191011_Route 53
20190927_AWS VPC
20190920 AWS IAM
20190913 awscli
20190906_私が使ったAWSサービス
20190823_AMAZON EC2
20190809_AWS第1歩目
Ad

20191206_Alexaスキルを作ってみよう