amazon alexa Blogs
2017年11月7日なのに、なぜにこんなに違う?
ってくらい画面が違ってるし、初心者には時間がかかったので。
フォロー。
Alexaスキル開発トレーニングシリーズ 第1回 初めてのスキル開発 : Alexa Blogs
はじめてのスキル開発
Alexaとは
音声によるユーザーインターフェースを使って、クラウドベースでユーザーにさまざまな体験を届けるサービス。
ユーザーごとの異なる設定や振る舞いを理解する。
パーソナライズされた音声体験を提供する。
Alexaスキル
- カスタムスキル : 汎用のスキル
- スマートホームスキル : 家電製品などを制御するスキル
- フラッシュブリーフィングスキル : ニュースなどを読み上げるスキル
スキル実行の仕組み
ユーザーがAlexa対応デバイスに発話
デバイスはマイクで集音した音声データを、インターネット経由でAlexaサービスに送信
Alexaサービスは音声データをAIで解析し、AWS Lambdaを呼び出して解析結果を伝える
Lambdaはスキルの処理を実行し、その結果をAlexaサービスにレスポンスとして返す
Alexaサービスはレスポンスに応じた音声データを生成、デバイスに返信
デバイスは音声データを再生し、ユーザーに伝える
実践!サンプルスキル作成
アカウントの作成
Amazon開発者コンソール(Amazon Developer)アカウントの発行
AWSアカウントの発行
スキルの作成
スキルはAmazon開発者コンソールでAlexaスキルを作成や設定を行う。
まず、ヘッダーメニュー[ALEXA]からスタート。
次のページにある「新しいスキル」をクリックからスタート。
[スキル情報]画面
このスキルサンプルでは
スキルの種類 | カスタム対話モデル |
---|---|
言語 | Japanease |
スキル名 | MyFactSkill |
呼び出し名 | 宇宙豆知識 |
グローバルフィールド | 既定値 |
保存
をクリック
[対話モデル]画面
ここで注意しなきゃは
これは無視した方がいい。スキルビルダーの説明じゃないからまぁ大変。
一通り理解出来て自分でゼロから作るときには便利なのかもしれないけど。
インテントスキーマ
{ "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」って入れれば
候補として最初に表示されるので「Lambda」を選択すればいい。
関数の作成
初期画面ないし表示された画面の
をクリックする。
その後の動作がサンプルと変わっていて大変に困った。
一から作成
これは既にそう選択されて「情報」入力欄が表示状態になっている。
そう、参考にしている画面の情報と入力するものが違う。
名前 | MyFuncSkill |
---|---|
ランタイム | Node.js 6.10 |
ロール | カスタムロールの作成 |
既存のロール | lambda_basic_execution |
となるのだけど、ロールの設定をしないと既存のロールの選択に「lambda_basic_execution」は出てこない。
まず、「ロール」で「カスタムロールの作成」を選択する。
別画面で
このようになっているのでそのまま許可
をクリックする。
そうすると、既存のロールの選択に「lambda_basic_execution」が表示されるので選択する。
関数の作成
をクリックする。
MyFuncSkill関数が完了するとこういう画面が表示される。(既に作成しちゃってるので「MyTest」という関数でスクショを撮った)
この状況で「テスト」を実行する。画面の右上のテスト
をクリックすると、また別画面(レイヤー)が表示される。
- イベントテンプレート:Alexa Start Session
- イベント名:MyFuncSkillTest(テストは他でも使えるからこの命名はないかも)
作成
をすると元の画面に戻るので、上のバーの「テストイベントの選択」で先程作ったイベントを選択して、テスト
をクリック。
テストの結果のログが表示される。
トリガーの追加
次にトリガーの追加が表示されるのだけど、このサンプルをするためにはその次の「関数コード」を先にしなきゃ出来なかった。
関数コード
すごい開発トレーニングのブログと前後している状態。
どっちが良かったのかわからないけど、今の状態と違うものを初心者でするのは大変ってことだ。
単発は使えるのだけど。
- コード エントリ タイプ : .ZIPファイルをアップロード
- ランタイム:node.js 6.10
- ハンドラ:index.handler
- 関数パッケージ:最初の頃にダウンロードしたZIPを選択
再度トリガーの追加
- トリガーの追加:Alexa skills kit
これを選択すると、「関数コード」じゃなくて「トリガーの設定」に表示が変わる。
ここで困った。
アプリケーションIDって何!?
そんな表現どこにも見当たらないんですけど・・・
ってことで探すこと2時間ほど(気持ち的には)
先程「コピーする」ってした部分のことらしい。
これ間違えらしい。このアプリケーションIDはALXAのスキル情報のIDってことなのか?
し〜る〜か〜!!!!
だってさ
画面右上の「ARN」に表示されるARN(Amazonリソースネーム)をコピーしておく
とは書いてあるけど、アプリケーションIDなんて書いてないよ。
ってことで、こちらを入れて一安心。
追加
をクリックしてOKならまた最初の画面に戻ります。
スキルとLambdaの接続
Alexaスキルの管理画面はそのままだと思うのですが、続きです。
開発者コンソール画面から「MyFactSkill」を選択する。
設定
の画面を表示する。
グローバルフィールドの設定
- エンドポイント:AWS Lambda ARN(Amazonリネーム)
- デフォルト:Lambdaの画面右上のARN
以降はデフォルトで次へ
次は「テスト」になります。
サービスシミュレーターによる動作確認
テキストの「発話を入力してください」に
宇宙の豆知識を開いて
と入れて、MyFactSkillを呼び出す
をクリックすると・・・
サービスリクエスト、サービスレスポンスが表示されることが確認できました!
はぁ〜長かった。
2017年11月なんてついこの間って感じですが、この3ヶ月弱で手を入れすぎだろと言いたいくらいでした。
私は・・・Ruby on Railsの勉強がまだ進んでないのに脱線しすぎてる!?
まぁこれも何かの役に立つ技術だろうと言うことで。
基本的には現在「Alexa スキル」とググった最初の
Alexa | アレクサ | Alexaスキル開発トレーニング - Amazon Developer
をベースにやったら出来ないじゃん!を今の画面だとこうみたいよってことで書いてみただけだから、詳しくは本家参照ってことで。