やりたいこと
CASE1. カウントダウン
Gさん「アレクサ、フジロック」
アレクサ「フジロックまで、あと○○日です。」
↓クリックで完成動画が流れる
CASE2. ニュース読み上げ
Gさん「アレクサ、フジロックでニュースを教えて」
アレクサ「1つ目のニュース。FUJI ROCK FESTIVAL'18開催!」
アレクサ「2つ目のニュース。世界一クリーンなフェスを目指して」
Gさん「ストップ」
アレクサ「。。。」
全体の構成
ALEXAで声を聴いて、AWS上のlambdaに発話内容を送信
↓
lambdaで処理
↓
ALEXAで発音
手順
- amazon開発者コンソールでスキルの初期設定をする
- AWSコンソールにログインし、サーバー側の設定を書く
- 会話の流れを設定
- 処理を書く
- テスト
- 自分のアレクサに配布
CASE1. カウントダウン
1. amazon開発者コンソールでスキルの初期設定をする
- [https://developer.amazon.com] にアクセスして amazon alexaをクリック
- 「あなたのダッシュボード」をクリック
{
"intents": [
{
"intent": "HelloIntent"
},
{
"intent": "AMAZON.StopIntent"
},
{
"intent": "AMAZON.CancelIntent"
}
]
}
- エラーになるからしゃあなしでサンプル発話を設定する
HelloIntent こんにちは
2. AWSコンソールにログインし、サーバー側の処理を書いていく
[https://aws.amazon.com/jp/console/]
にアクセスし、「コンソールへログイン」をクリック
「一から作成」をクリック
↓
名前に「myFujirock」、ランタイムに「Node.js 6.10」を選択し、「カスタムロールの作成を」選択
- 上で作成したamazon developer[https://developer.amazon.com]のダッシュボード からアプリケーションIDをコピーし、lambdaのアプリケーションID欄に書く
4. 処理を書く
- lambdaの「myFujiRock」をクリックし、下へスクロール
- 右側に「Amazon CloudWach」等表示されていますが不要なので気にしないでください。
- 下記コードを貼り付け、「保存」をクリック
//フジロック
'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));
}
- 上へスクロールし、ARNをコピー
- 下にスクロールして「次へ」をクリック
- 下にスクロールして「保存」をクリック
5. テスト
6. 自分のアレクサに配布
- 処理が終了したら、ALEXAにこう言ってみよう
「フジロック情報を起動して」
細かいことはこちらの記事がわかりやすいです!
Amazon Echo (Alexa) のSkillの開発に必要な基本概念を押さえる
↓↓不明点やご質問はこちらまで↓↓
tsugumi.plus@gmail.com