LoginSignup
1
4

More than 5 years have passed since last update.

Alexaで簡単アプリ開発~フジロックまでの日数を教えてもらう。~

Last updated at Posted at 2018-02-07

やりたいこと

CASE1. カウントダウン

Gさん「アレクサ、フジロック」
アレクサ「フジロックまで、あと○○日です。」
↓クリックで完成動画が流れる

完成イメージ

CASE2. ニュース読み上げ

Gさん「アレクサ、フジロックでニュースを教えて」
アレクサ「1つ目のニュース。FUJI ROCK FESTIVAL'18開催!」
アレクサ「2つ目のニュース。世界一クリーンなフェスを目指して」
Gさん「ストップ」
アレクサ「。。。」

全体の構成

ALEXAで声を聴いて、AWS上のlambdaに発話内容を送信

lambdaで処理

ALEXAで発音
概要.PNG

手順

  1. amazon開発者コンソールでスキルの初期設定をする
  2. AWSコンソールにログインし、サーバー側の設定を書く
  3. 会話の流れを設定
  4. 処理を書く
  5. テスト
  6. 自分のアレクサに配布

CASE1. カウントダウン

1. amazon開発者コンソールでスキルの初期設定をする


  • 「あなたのダッシュボード」をクリック

alexa_develop_console.PNG


  • 「Alexa Skill Kit」をクリック
    alexa_develop_loged_in.PNG

  • 「新しいスキルを追加する」をクリック
    alexa_skill.PNG

  • 言語を「日本語」。スキル名を「フジロック情報」。呼び出し名を「フジロック情報」とする。
    make_skill.PNG

  • 画面下の「保存」をクリック
    skill_save.PNG

    3. 会話の流れを設定

  • 「対話モデル」をクリック
    対話モデルに遷移.PNG

  • 今回は起動できたらそれでいいので
    適当なintent(呼び出し時に使用する変数)を設定する。関係ないことは気にしない。

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

対話モデル構築.PNG

  • エラーになるからしゃあなしでサンプル発話を設定する
HelloIntent  こんにちは


  • 画面下の「保存」をクリック
    サンプル発話.PNG

    • 以上で会話の設定は完了!
    • 「設定」移行の作業は後程書きます。進みたい気持ちを抑えて
    • まずはAWSコンソールを開いてlambdaの処理を書きます!

2. AWSコンソールにログインし、サーバー側の処理を書いていく

  • [https://aws.amazon.com/jp/console/]
    にアクセスし、「コンソールへログイン」をクリック
    awsコンソールログイン.PNG

  • 緑枠に検索枠に「lambda」と打ち込み、赤枠の「lambda」をクリック
    lambda検索.PNG

  • 「関数の作成」をクリック
    lambda関数の作成.PNG

  • 「一から作成」をクリック

    名前に「myFujirock」、ランタイムに「Node.js 6.10」を選択し、「カスタムロールの作成を」選択
    lambda関数の設定.PNG


  • 下記画面が出てくるので「許可」をクリック
    ロールを作成.PNG

  • 既存のロールに先ほどのロールを選択し、「関数の作成」をクリック
    関数作成ボタンクリック.PNG

  • 「Alexa Skill Kit」を選択し、下へスクロール
    lambdaの設定.PNG



アプリID入力.PNG

4. 処理を書く

  • lambdaの「myFujiRock」をクリックし、下へスクロール
  • 右側に「Amazon CloudWach」等表示されていますが不要なので気にしないでください。

lambdaをクリック.PNG


  • 下記コードを貼り付け、「保存」をクリック
//フジロック


'user strict';
var http = require('http');
exports.handler = function (event, context) {
    try {
        var request = event.request;

        if (request.type === "LaunchRequest") {
            handleLaunchRequest(context);
        } else if (request.type === "IntentRequest") {
            if (request.intent.name === "HelloIntent") {
                handleLaunchRequest(context);

            } else if (request.intent.name === "AMAZON.StopIntent" || request.intent.name === "AMAZON.CancelIntent") {
                context.succeed(buildResponse({
                    SpeechText: "なえばで会いましょう",
                    endSession: true
                }));
            } else {
                throw "Unknown intnt";
            }

        } else if (request.type === "SessionEndedRequest") {

        } else {
            throw "Unknown intent type";
        }
    } catch (e) {
        context.fail("Exception" + e);
    }
}

function getDif() {
    var fujiDate = new Date('2018/07/27 09:00:00');
    var myDate = new Date();
    var diffTime = fujiDate.getTime() - myDate.getTime();
    var diffDay = Math.floor(diffTime / (1000 * 60 * 60 * 24));
    return diffDay
}

function buildResponse(options) {
    var response = {
        version: "1.0",
        response: {
            outputSpeech: {
                type: "SSML",
                ssml: "<speak>" + options.SpeechText + "</speak>"
            },
            shouldEndSession: options.endSession
        }
    }
    if (options.repromptText) {
        response.response.reprompt = {
            outputSpeech: {
                type: "SSML",
                ssml: "<speak>" + options.repromptText + "</speak>"
            }
        };
    }
    return response;
}

function handleLaunchRequest(context) {

    let options = {};
    options.SpeechText = 'フジロックまで、あと<break time="0.5s"/>' + getDif() + '日です。';
    // options.repromptText = "はい か いいえ で 答えてください。";
    options.endSession = true;
    context.succeed(buildResponse(options));
}


コード.PNG


  • 上へスクロールし、ARNをコピー

ARNをコピー.PNG


  • amazon developerにて「設定」をクリック
  • 「AWS lambda のARM」をクリック
  • デフォルトに先ほどのARMを張り付ける ARN登録.PNG


  • 下にスクロールして「次へ」をクリック

スキル設定保存.PNG


  • カテゴリー、テストの手順、国と地域を適当に入力する 公開情報上.PNG


  • 簡単な説明、詳細な説明、サンプルフレーズを適当に入力 公開情報中.PNG


  • キーワードを適当に入力
  • 小アイコン、大アイコンを選択し
  • 「保存」をクリック
  • 「次へ」をクリック 公開情報下.PNG


  • プライバシーとコンプライアンスをクリック
  • 適当にチェック! プライバシーとコンプラ.PNG


  • 下にスクロールして「保存」をクリック

コンプラ保存.PNG


  • 「スキルのベータテスト」をクリック skillbatatestクリック.PNG


  • 「テスターのメールアドレス」にテストしたいアカウントのアドレスを記載し、「テストを開始」をクリック!!! テスター設定.PNG

5. テスト

6. 自分のアレクサに配布

  • メールが届くので、下記リンクをクリック!! メール.PNG


  • 「スキルテスト」をクリック!!!!!! テスト開始.PNG


  • 「有効にする」をクリック!! 有効にする.PNG


  • 処理が終了したら、ALEXAにこう言ってみよう

「フジロック情報を起動して」

↓をクリック
完成イメージ



細かいことはこちらの記事がわかりやすいです!
Amazon Echo (Alexa) のSkillの開発に必要な基本概念を押さえる

↓↓不明点やご質問はこちらまで↓↓
tsugumi.plus@gmail.com

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4