Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8890

【Alexa】新機能 hostedスキルで作成する

$
0
0

はじめに

2020年7月頃よりβ版だったAlexa-hostedスキルが正式公開となりました。※なったはず。
ここでは新しく実装されたAlexa-hostedスキルを使ってスキルを作っていきます。

Amazon開発者ポータルを使用するためにAmazonデベロッパーアカウントが必要です。
あらかじめ環境を整えてから読んでください。

Alexa-hostedスキル以前の方法

Alexa-hostedスキルが正式に公開されるまではAlexaとのインターフェイスはAlexaスキル、そのプログラムの実装はAWSにて行われていました。

手段コンソールアカウント
Alexaにスキルを用意するAmazon開発者ポータルAmazonデベロッパー
Alexaにプログラムを用意するAWSコンソールAWSアカウント

そのためAmazon開発者ポータルAWSコンソールを行き来して開発する必要があります。
そしてAmazonデベロッパーアカウントのほかにAWSアカウントも必要になります。

さらにこの2つのサーバー?でデータをやりとりするためのインターフェイスを作る必要があります。

データの方向必要な情報
Alexaスキル→AWSAmazon開発者ポータルにて取得するスキルID
AWS→AlexaスキルAWSのLambdaにて取得するARN

現状ではこの方法でないと出来ない事もあるのですが、ちょっとAlexaのスキルを作ってみたいという人には壁が高すぎます。

Alexa-hostedスキルを使う

Alexa-hostedスキルを使ってスキルを作ると簡単にスキルを作ることができますが、そのための準備が必要なのでは結局ハードルが高くなっていまいます。

Alexa-hostedスキルはAmzaon開発者ポータルでスキルを作成すると自動的に使えるようになっています!!

早速使ってみましょう。

Amazon開発者ポータル

Amazon開発者ポータルからAlexa SkillsKit を選択して Alexa Developer consle を開きます。
今後このページを頻繁に開くのでブックマークにしておきましょう。

Alexa Developer consle

ページを開くと下記のような画面が表示されます。
console.png

書籍やネットの情報と見比べるとわかりますが上部のメニューに「コードエディタ」と表示されていますが、これがAlexa-hostedスキルを使ったやり方となるページです。

後の操作説明にも出てくると思いますが、このやり方にAWSが全く関係しないのではなく、Alexa Developer consleにてコードを記述した後デプロイという機能を利用してコードがAWSに送られています。
AWSでのソースコード記述をAlexa Developer consleから送信することでリモートで行っているようなイメージになります。

AWSのアカウントがなくてもAlexa Developer consleと紐付けされたプライベートアカウントとして動作するのでAWSアカウントがなくても動作するようです。本来のAWSアカウントではないのでいくつか出来ないことも存在します。

スキルを作成する

スキル一覧からスキル作成を選択します。
skillmake.png

スキル名を入力します。スキル名=スキル呼び出し名ではありませんが、呼び出し名の初期値はスキル名になります。スキル呼び出し名とは「Alexa xxx」の xxx部分になります。

下の方にスクロールすると
skillmake3.png

作るスキルは「カスタム」そして「Alexa-Hosted(Node.jp)」が選択されています。Alexa-hostedスキルとしてNode.jpを使うという意味になります。

これまでのようにAlexa-hostedスキルを使わない場合は「ユーザー定義のプロビジョニング」を使います。

skillmake4.png

HelloWorldをテンプレートとして使用します。

skillmake5.png

スキル作成には1分かかります。サーバー側の処理のためユーザー環境で速度は変わらないものと思われます。

スキルメニューから呼び出し名を確認します。

skillmake6.png

次にインテントを確認します。

インテントとは

「Alexa xxx で yyy して」
というときに xxx がスキル呼び出し名で yyy がインテントになります。

skillmake7.png

テンプレートを使ったのでインテント名が自動的に作られています。

対話するプログラムを作るときに様々な言い回しがプログラムを複雑にします。
たとえば「おはよう」「こんにちは」「こんばんは」と挨拶がありますが
これをプログラムで直接比較しようとすると

sample.v
if(say=='おはよう'||say=='こんにちは'||say=='こんばんは'){処理}

のように書く必要がありますが曖昧な言い回しが増えるたびにプログラムを変更していくと効率が悪くなります。
そのためインテントを使用して言い回しをここで吸収するようになっています。
言い回しをまとめるグループ名がインテント、その中の1つ1つの要素が発話となります。

インテント名発話
helloおはよう こんにちは こんばんは
eatみかん リンゴ ステーキ 寿司

では実際にインテントと発話の関係を見てみましょう
HelloWorldIntentが用意されていますのでこれをクリックして設定を見てみましょう。

skillmake8.png

さすがにテンプレートは日本語になっていません。手動で日本語にしましょう。

skillmake9.png

この設定方法、毎回行うのは手間ですね。左側のメニューでJSONエディターがあるので見てみましょう。

sample.json
{"interactionModel":{"languageModel":{"invocationName":"ノードテスト","intents":[{"name":"AMAZON.CancelIntent","samples":[]},{"name":"AMAZON.HelpIntent","samples":[]},{"name":"AMAZON.StopIntent","samples":[]},{"name":"HelloWorldIntent","slots":[],"samples":["おはよう","こんにちは","こんばんは"]},{"name":"AMAZON.NavigateHomeIntent","samples":[]}],"types":[]}}}

今まで設定した内容がそのまま反映されていることがわかります。つまりこのJSONを保存しておけば、ほかのスキルを作ったときにインテントを使い回すことができます。

AMAZON.CancelIntentやAMAZON.StopIntent、AMAZON.HelpIntent、AMAZON.NavigateHomeIntentは必須のインテントですが発音はテンプレートに無いようです。

この後コードエディタから保存、デプロイと操作して上部のメニューから「テスト」を選んでいくとAlexaエミュレータからテストを行うことが出来ます。
テストをする前に「非公開」から「開発中」に変更する必要があります。
その後テキスト入力欄に

「ノードテストを開く」

など入力すると まだ設定していないので英語ですが返事が返ってきます。
エミュレータからテストする場合は最初にAlexaを呼ぶ名称がなくても大丈夫です。

実機テスト

Alexaを持っている人ならテストしたいと思うのが当たり前ですが・・・なぜか説明がありません。
それもそのはずです、テストが問題なく行えたのであれば、そのままAlexaを呼んでスキルを実行すれば良いわけです。

うーん、まるでVisualBasicを実行したら実はexeファイルも出来てました!ぐらいの感動ですね。


Viewing all articles
Browse latest Browse all 8890

Trending Articles