【Alexaスキル開発トレーニング】試したけど、わからなすぎたから頑張った経緯を書いてみた

amazon alexa Blogs

2017年11月7日なのに、なぜにこんなに違う?

ってくらい画面が違ってるし、初心者には時間がかかったので。

フォロー。

Alexaスキル開発トレーニングシリーズ 第1回 初めてのスキル開発 : Alexa Blogs

はじめてのスキル開発

Alexaとは

  • 音声によるユーザーインターフェースを使って、クラウドベースでユーザーにさまざまな体験を届けるサービス

  • ユーザーごとの異なる設定や振る舞いを理解する。

  • パーソナライズされた音声体験を提供する。

Alexaスキル

  • カスタムスキル : 汎用のスキル
  • スマートホームスキル : 家電製品などを制御するスキル
  • フラッシュブリーフィングスキル : ニュースなどを読み上げるスキル

スキル実行の仕組み

f:id:kisokoji:20180203223658j:plain:w500

  1. ユーザーがAlexa対応デバイスに発話

  2. デバイスはマイクで集音した音声データを、インターネット経由でAlexaサービスに送信

  3. Alexaサービスは音声データをAIで解析し、AWS Lambdaを呼び出して解析結果を伝える

  4. Lambdaはスキルの処理を実行し、その結果をAlexaサービスにレスポンスとして返す

  5. Alexaサービスはレスポンスに応じた音声データを生成、デバイスに返信

  6. デバイスは音声データを再生し、ユーザーに伝える

実践!サンプルスキル作成

アカウントの作成

スキルの作成

スキルはAmazon開発者コンソールでAlexaスキルを作成や設定を行う。

まず、ヘッダーメニュー[ALEXA]からスタート。

f:id:kisokoji:20180203224451p:plain:w400

f:id:kisokoji:20180203224707p:plain:w300

次のページにある「新しいスキル」をクリックからスタート。

f:id:kisokoji:20180203224925p:plain:w600

[スキル情報]画面

このスキルサンプルでは

スキルの種類 カスタム対話モデル
言語 Japanease
スキル名 MyFactSkill
呼び出し名 宇宙豆知識
グローバルフィールド 既定値

保存をクリック

[対話モデル]画面

ここで注意しなきゃは

f:id:kisokoji:20180203225841p:plain:w400

これは無視した方がいい。スキルビルダーの説明じゃないからまぁ大変。

一通り理解出来て自分でゼロから作るときには便利なのかもしれないけど。

インテントスキーマ

{ "intents": [
  { "intent": "GetNewFactIntent" },
  { "intent": "AMAZON.HelpIntent" },
  { "intent": "AMAZON.StopIntent" },
  { "intent": "AMAZON.CancelIntent" }
]}

カスタムスロットタイプ (空のまま)




サンプル発話

GetNewFactIntent 豆知識
GetNewFactIntent 豆知識を教えて
GetNewFactIntent 他の豆知識
GetNewFactIntent 雑学
GetNewFactIntent 雑学を教えて
GetNewFactIntent 他の雑学
GetNewFactIntent 知識
GetNewFactIntent 何か
GetNewFactIntent 何か教えて

次へをクリック

ここで別のサービスに行く。

AWS Lambdaの設定

まずはZIPファイルをダウンロードしておく。

次にどう繋がるのかは不明。

AWSマネジメントコンソール画面でログインする。

画面右上のリージョン選択は「アジアパシフィック(東京)」を選択。

AWSのサービスでテキストボックスに「la」って入れれば

f:id:kisokoji:20180204001542p:plain:w400

候補として最初に表示されるので「Lambda」を選択すればいい。

関数の作成

初期画面ないし表示された画面の

f:id:kisokoji:20180204001742p:plain:w300

をクリックする。

その後の動作がサンプルと変わっていて大変に困った。

一から作成

これは既にそう選択されて「情報」入力欄が表示状態になっている。

f:id:kisokoji:20180204002342p:plain:w600

そう、参考にしている画面の情報と入力するものが違う。

名前 MyFuncSkill
ランタイム Node.js 6.10
ロール カスタムロールの作成
既存のロール lambda_basic_execution

となるのだけど、ロールの設定をしないと既存のロールの選択に「lambda_basic_execution」は出てこない。

まず、「ロール」で「カスタムロールの作成」を選択する。

別画面で

f:id:kisokoji:20180204002841p:plain

このようになっているのでそのまま許可をクリックする。

そうすると、既存のロールの選択に「lambda_basic_execution」が表示されるので選択する。

関数の作成をクリックする。

MyFuncSkill関数が完了するとこういう画面が表示される。(既に作成しちゃってるので「MyTest」という関数でスクショを撮った)

f:id:kisokoji:20180204003629p:plain:w400

この状況で「テスト」を実行する。画面の右上のテストをクリックすると、また別画面(レイヤー)が表示される。

f:id:kisokoji:20180204004036p:plain:w400

  • イベントテンプレート:Alexa Start Session
  • イベント名:MyFuncSkillTest(テストは他でも使えるからこの命名はないかも)

作成をすると元の画面に戻るので、上のバーの「テストイベントの選択」で先程作ったイベントを選択して、テストをクリック。

f:id:kisokoji:20180204004522p:plain:w400

テストの結果のログが表示される。

トリガーの追加

次にトリガーの追加が表示されるのだけど、このサンプルをするためにはその次の「関数コード」を先にしなきゃ出来なかった。

関数コード

すごい開発トレーニングのブログと前後している状態。

どっちが良かったのかわからないけど、今の状態と違うものを初心者でするのは大変ってことだ。

単発は使えるのだけど。

f:id:kisokoji:20180204004930p:plain:w400

  • コード エントリ タイプ : .ZIPファイルをアップロード
  • ランタイム:node.js 6.10
  • ハンドラ:index.handler
  • 関数パッケージ:最初の頃にダウンロードしたZIPを選択

再度トリガーの追加

f:id:kisokoji:20180204005457p:plain:w400

  • トリガーの追加:Alexa skills kit

これを選択すると、「関数コード」じゃなくて「トリガーの設定」に表示が変わる。

ここで困った。

アプリケーションIDって何!?

そんな表現どこにも見当たらないんですけど・・・

ってことで探すこと2時間ほど(気持ち的には)

先程「コピーする」ってした部分のことらしい。

f:id:kisokoji:20180204003629p:plain:w400

これ間違えらしい。このアプリケーションIDはALXAのスキル情報のIDってことなのか?

し〜る〜か〜!!!!

だってさ

画面右上の「ARN」に表示されるARN(Amazonリソースネーム)をコピーしておく

とは書いてあるけど、アプリケーションIDなんて書いてないよ。

ってことで、こちらを入れて一安心。

追加をクリックしてOKならまた最初の画面に戻ります。

スキルとLambdaの接続

Alexaスキルの管理画面はそのままだと思うのですが、続きです。

開発者コンソール画面から「MyFactSkill」を選択する。

設定の画面を表示する。

グローバルフィールドの設定

f:id:kisokoji:20180204010912p:plain:w400

  • エンドポイント:AWS Lambda ARN(Amazonリネーム)
  • デフォルト:Lambdaの画面右上のARN

以降はデフォルトで次へ

次は「テスト」になります。

サービスシミュレーターによる動作確認

f:id:kisokoji:20180204011351p:plain:w400

テキストの「発話を入力してください」に

宇宙の豆知識を開いて

と入れて、MyFactSkillを呼び出すをクリックすると・・・

サービスリクエスト、サービスレスポンスが表示されることが確認できました!

はぁ〜長かった。

2017年11月なんてついこの間って感じですが、この3ヶ月弱で手を入れすぎだろと言いたいくらいでした。

私は・・・Ruby on Railsの勉強がまだ進んでないのに脱線しすぎてる!?

まぁこれも何かの役に立つ技術だろうと言うことで。

基本的には現在「Alexa スキル」とググった最初の

Alexa | アレクサ | Alexaスキル開発トレーニング - Amazon Developer

をベースにやったら出来ないじゃん!を今の画面だとこうみたいよってことで書いてみただけだから、詳しくは本家参照ってことで。