30分で作るAmazon Alexa自作スキル!初めてのスキル開発

デベロッパーページへ

以下の Amazon Alexa デベロッパーページより、サインイン
Amazonのアカウントを持っている人はそのアカウント情報でサインイン。

Alexa はAmazonのクラウドベースの音声サービスで、Amazonからデバイスや、サードパーティーのデバイスで使う…

デベロッパーとしての必要情報を入力する。

最初からいろいろ設定増えると辛いので「支払い」タブの「収益化を予定しているか?」には一旦「いいえ」を選んでおくとスムーズに進む

このステップで何か躓いた場合は以下のリンクを参考に!!

Amazon Apps & Services Developer Portal…

スキルの作成と設定

先程のページ右上の「Alexaコンソール」より「Skill」をクリック

「スキルを作成」をクリック

スキル名を入力します

ひとまずサンプルとして「今日のラッキーナンバー」的な感じでラッキーな素数を教えてくれる「今日のラッキー素数」というクソスキルにしてみましたw入力したら右上の「次へ」をクリック

スキルに追加するモデルは一番左の「カスタム」を選択。選択できたら「スキルを作成」をクリック

こんな画面が出てきます。この画面で Alexa の対話モデルを作っていきます

まずは左側の「呼び出し名」もしくは右側のやや大きな「呼び出し名」をクリック。どちらでもクリックすると同じ画面に遷移します。

「スキルの呼び出し名」を入力。なお、この時必ず「呼び出し名の要件」は満たすようにチェックします。(ワタクシは最初チェックしないで失敗しました。。。)
入力できたら一応「モデルの保存」をクリックします。

次はカスタムインテントを作成します。

たぶんどんな名前でもいいんだろうけど一旦「GetNewFactIntent」というカスタムインテント名を入力して「カスタムインテントを作成」をクリックします。

今日のラッキー素数を知りたいであろうユーザーが聞きそうな言葉を入れていきます。

イメージとしては「呼び出し名で」に続く言葉で考えると良いと思います

今日のラッキー素数の場合なら以下のように考えて作ってます。
「今日のラッキー素数で」「教えて」
「今日のラッキー素数で」「何か教えて」
「今日のラッキー素数で」「落ちつけ」
「今日のラッキー素数で」「落ちつくんだ」
「今日のラッキー素数で」「わたしに勇気を与えて」

さあ、一旦 Alexa Console 側では設定はこの辺で一段落です。

後で使うのでここでこのウィンドウは閉じないでください!

このウィンドウはこのままにして、次はAWS側の設定を行います

Lambda関数の作成

まず以下のサンプルコードをダウンロードしておきます。

次にAWSマネージメントコンソールにログインします。

Amazon Web Services, Inc.

AWS マネジメントコンソールを使用すると、シンプルで直感的なウェブベースのユーザーインターフェイスから AWS にアク…

AWSアカウントを持っている人はログイン持っていない人は無料登録を行ってください。

プランは無料で大丈夫です!

画面右上からリージョンを「アジアパシフィック(東京)」に設定します。

画面中央の検索ボックスに「lambda」と入力し出てくる候補のうちから「Lambda」を選択します。

「関数の作成」をクリックします。

まず「設計図」を選択します。次にキーワード検索ボックスに「fact 」と入力しEnterキーを押します。表示された「alexa-skill-kit-sdk-factskill」を選択肢、右下の「設定」ボタンをクリックします。

関数の名前に「MyFactSkill」と入力ロールは「カスタムロールの作成」をクリックします。

この画面が出てきたら何も変更せずに「許可」をクリックします。

画面下の「関数を作成」ボタンをクリックします。

左側から「Alexa Skills Kit」をクリックします。

ちなみにこの時もし「Alexa Skills Kit」がトリガーに表示されていない人はリージョンを確認してみましょう。東京になっていないと表示されていない可能性があります。

セキュリティ的にはスキルIDを入力すべきらしいんだけど入力しなくてもとりあえずテスト的には動かせるので一旦「無効」を選択して「追加」ボタンをクリックします。

次に画面中央の「MyFactSkill」をクリックします。

関数コードのエディタ部分に表示されている内容をすべて削除します。
このステップの最初にダウンロードしたサンプルコードのlambda.zipファイルにあるindex.jsの中身をすべてコピペします。

このサンプルコードは以下の画像の赤枠内のテキストをランダムに返すという内容です。

「今日のラッキー素数」というスキルなので、このテキストを「素数」に置き換えたいと思います。

このテキスト部分を例えば「大吉」「中吉」「小吉」「凶」にすれば「おみくじ」スキルにできますね。

素数に置き換えてみました!

あと以下の画像の通り変数も書き換えるとより自分のスキルに適した返答になります。

SKILL_NAMEは自分の作るスキルの名前に。
GET_FACT_MESSAGEは先程用意した回答データの前に必ず言う言葉です。
このあたりも変更を加えてみてください。どこをかえるとどうなるのかは最後のテストでわかると思いますので適当に変えてみてまずは進んでみましょう。

ソースコードの書き換えが完了したら画面右上の「保存」ボタンをクリックします。

そして「保存」ボタンの横にある「テスト」ボタンをクリックします。この辺で疲れてくるかもしれないけどもう少しだ!!!

イベントテンプレートは「Alexa Start Session」を選択し、イベント名に「AlexaTest」と入力をしたら右下の「作成」ボタンをクリックします。

テスト名が「AlexaTest」になっていることを確認し、「テスト」ボタンをクリックします。

テスト結果が表示されます。今日のラッキー素数は67か・・・

次がAWS側ですることの最後。

右上の「arn」から始まる文字列をコピーします。

スキルとLambdaの接続

さあ、ようやく完成まで最後のステップです。

最後はスキルとAWSのLambdaを接続します。

Alexaのコンソール画面に戻り、「エンドポイント」をクリックし、ラジオボタンの「AWS LambdaのARN」をクリックします。右側の「デフォルトの地域」に先程AWSでコピーした文字列をペーストします。

最後に「エンドポイントを保存」ボタンをクリックします。

下記画面で右側のチェックボタンがすべて緑色になっていることを確認します。ここまで来ると完成した感が出てきてテンションが上ります。

実行

次に「テスト」タブをクリックし、左上のボタンからテストを有効にします。

話しかけたり、文字で入力するとAlexaが今日のラッキー素数を教えてくれる!!!!うおおおおおおおおおお!!!誰が使うんだこんなクソスキル!!!!!!

というわけでこの画面で、「どう話しかけたら自作スキルが呼び出されるか?」がわかります

公開

「公開」タブをクリックして必要情報を入力すると公開の申請ができます。

ただ、これAmazonによる審査が行われるそうでして。。。(今日のラッキー素数は絶対リジェクトだろw)

試しに昨日から申請出してますがまだ回答はなし。

やっぱ作ったものはどんなにクソでも世の中に公開しないと経験値が雲泥の差ですからね。

Alexaスキル面白いのでもっともっといろいろ作ってみます^^