AlexaでSkillを作ってみよう、その2


「AlexaでSkillを作ってみよう、その1」からの続きです。
https://qiita.com/sanoh/items/26014808186cfd8f95f5
サーバーとの連携:今回はLambdaを使用します。

■Setp6:Lambda作成


コンソールにログインしてください。
https://aws.amazon.com/jp/


この中に「Lambda」がありますので、選択します。

の画面が現れたら「関数の作成」をします。

関数の作成には「設計図」を選択すると、下にいろいろと出てきますので「Alexa-skill-kit-sdk-factskill」を選択してください。

名前は今回は暫定的に「foodTest01」としロールは「既存のロールを選択」既存のロールは「lambda_basic_executuin」で

下の穂に「関数の作成」ボタンがありますので、そこで作成をします。

■Step7:Alexa Skills Kit の設定


「Alexa Skulls Kit」を選択すると、トリガーの設定があらわれますので、スキルIDを設定します。
このすきるIDに関しては別のブラウザで「AlexaでSkillを作ってみよう、その1」で使用したAlexa Skills Kit にアクセスします。

「エンドポイント」の「AWS LambdaのARN」を選択すると、この画面になるので、ここの現れた スキルID をLambdaの設定します。

「追加」を押して設定できます、これでます、AlexaSkillsKitからLambdaへの繋がりができました、こんどは逆に
LambdaからAlexaSkillsKitの繋がりを設定します。

まずは「保存」をしたあとにARNとかかれた部分をコピーします。

さきほどのAlexaSkillsKitのデフォルトの地域に、ARNの部分をコピーし、最後「エンドポイントの保存」を押してください。
これで、双方向の通信が可能になりました。

■Setp8:Node.jsの作成。


「foodTest01」を選択するとしたに関数コードが現れます。
今回は

'use strict';
var Alexa = require('alexa-sdk');
var APP_ID = undefined;

var handlers = {
    'LaunchRequest': function () {
        this.emit(':ask', 'どうしましたか', 'どうしましたか');
    },
    'commandProc': function () {
        var food = this.event.request.intent.slots.food.value;
        var feel = this.event.request.intent.slots.feel.value;
        this.emit(':tell', '私も'+food+''+feel+'です');
    },  
};

exports.handler = function (event, context, callback) {
    const alexa = Alexa.handler(event, context, callback);
    alexa.APP_ID = APP_ID;
    alexa.registerHandlers(handlers);
    alexa.execute();
};

とします。

■Step9:プログラムのテスト


上の「テストイベントの選択」をまず、します。

イベントテンプレートを「Amazon Alexa Starts Session」を選択
イベント名はとりあえず「StartTest」として「作成」ボタンをおします。

「テスト」ボタンをおして、実行結果:成功がでればOKです。

■Step10:動作確認


AlexaSkillsKitに戻り、「テスト」を選択します。
そして「開発中」に設定することで、ブラウザ上で、Alexaのテストができます。

最初「食べ物を起動して」と入力し、スキルを起動させたあとに「スイカが好きです」と入力すればAlexaが「私もスイカは好きです」とかえしてくれます。