AlexaのCustom Skill作成Hello World (Node.js)

AlexaのCustom Skill作成のHello World

■公式サンプル

https://github.com/alexa

に色々なサンプルが公開されていますが、今回はskill-sample-nodejs-hello-worldというサンプルを動かしてみます。

https://github.com/alexa/skill-sample-nodejs-hello-world

 

■Skillの解説サイト
https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/overviews/steps-to-build-a-custom-skill

https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/overviews/understanding-custom-skills

 

■AWSコンソールでの設定


AWSコンソールにログインして、リージョンを東部(バージニア)かEU(Ireland)にする。

■Lambdaで関数を作成

https://console.aws.amazon.com/lambda/home?region=us-east-1#/

で「関数の作成」を押す。

「設計図」という画面になるので、フィルター欄にalexaと入れると、alexaのテンプレだけ表示されるので適宜選択してすぐに試せるようになっている。

が、今回はそこには出てこないhello-worldのサンプルをcloneしてzipをアップロードする方法でやってみる。

 

■Lambdaコンソールで行う作業の流れ

  • 「一から作成」を押して次へ
  • 関数名やロールを設定して「関数の作成」
  • コードエントリタイプを「zipをアップロード」にする
  • 「アップロード」ボタンが出るので、自作の関数のzipファイルをアップロードする。(関数の中身とzip方法は後述)
  • 「トリガー」タブを押して「トリガーの追加」->”Alexa Skill Kit”を選択
  • 画面右上のARNをメモっておく。(これを後述のスキルのエンドポイントに指定する。ARN – arn:aws:lambda:us-east-1:xxxxxxxxxx)

 

■スキル用のLambda関数の中身

今回はサンプルのskill-sample-nodejs-hello-worldを試してみますので、

https://github.com/alexa/skill-sample-nodejs-hello-world.git

をcloneして、/srcで

node_modules/ に alexa-sdk/ ができます。

package.jsonのnameなどを適宜修正(しなくても大丈夫)。

index.jsのハンドラ登録の部分にApplication IDを設定する行を追加

※applicationId は作成したスキルの「Skill Information」-> 「Application Id」
※時々、alexa.APP_IDという例をネットで見かけますが、appIdです。

ついでに自分のサーバーのweb APIと連携したい場合は下記のサンプルそのままで行けます。
https://github.com/alexa/alexa-cookbook/tree/master/external-calls/httpsGet#title

 

■関数パッケージ作成

zipが必要になるのでzipコマンドを入れてない場合はインストールしてください。

src/で

これをLambdaの「関数パッケージ」にアップロードします。

 

■スキルの作成(開発者コンソールで行う作業)


https://developer.amazon.com/

ログインして「Alexa」->「Alexa Skill Kit」”Get Started”

右上の「Add a New Skill」

・Skill Information

skill type : custom interaction model

name: 今回はhellowroldなど

invocation name: my worldなど(これがスキルの呼び出しの名前になる。”Alexa, ask my world 〜〜”のように使える)

Application ID をメモっておく。

 

・Interaction Model

Intent Schema

今回は、サンプルのspeechAssets/IntentSchema.jsonをそのままコピペ。このインテントをどの様に呼び出すかが次のutteranceで決まる。

 

・Sample Utterances

これもサンプルのspeechAssets/Utterances.txtからそのままコピペ。

 

・Configuration

Endpoint:  AWS Lambda ARN (Amazon Resource Name) を選択して、上述のLambda関数のARNを入力。 その他はデフォルトのまま。

 

・Test

Service SimulatorのText欄に”hello”と入力して”ask 〜”ボタンを押してみて、service response欄にレスポンスのjsonが表示されたらOKです。

下のListenボタンを押せば音声で聞く事もできます。

 

 

■実機で確認

スキルのテストが出来たら

https://alexa.amazon.com/

で自分のechoの管理画面を開いて「your skill」画面で今回作成したskillが有効になっている事を確認。

Alexaにmy worldと呼びかけて”Hello World”と答えてくれたら成功です。

この記事を書いている時点では日本でamazon echoは販売していないので、raspberry piで自作のalexa搭載デバイスを作成して確認しました。

自作の方法は下記を参照してください。

Raspberry Pi3でAlexaを起動するまで