ごきげんよう
この記事は
「するめごはんのVUI・スマートスピーカー Advent Calendar 2018」
の16日目の記事です。
今回はClovaの話です。
LINE Clovaでスキルを作成する時、SDKを用いることは多いと思います。
けれども、SDKがなくとも自分でJSONを作成してしまえばスキルを作成できます。
このアドベントカレンダーの10日目の記事
https://qiita.com/surumegohan/items/e2488b5eee4c1bd5bfe8
にも記載している、この本からスタートするとClovaのスキルを動かすことが非常に素早くできます。
#Clovaのテキストスピーチは本に書いてある
上記の本には既にAPI GatewayとLambdaを使って挨拶をするスキルの作り方、および、ソースコードが記載されておりダウンロード可能です。
#ほぼ同様の記述でオーディオファイルを再生する
音声ファイルとしてmp3を作っておいて、例えばAWSならそのままS3に置いておくとします。
'use strict';
exports.handler = function (event, context, callback) {
var response = {
statusCode: 200,
headers: {},
body: ""
};
var speechText = "";
var requestJson = JSON.parse(event.body).request;
var endFlg = false;
if (requestJson.type === 'LaunchRequest') {
// 起動時処理
speechText = 'https://s3-ap-northeast-1.amazonaws.com/起動時に再生したいオーディオファイル.mp3';
} else if (requestJson.type === 'SessionEndedRequest') {
// セッション切れ
speechText = 'https://s3-ap-northeast-1.amazonaws.com/セッションが切れたら再生したいオーディオファイル.mp3';
endFlg = true;
} else if (requestJson.type === 'IntentRequest') {
if (requestJson.intent.name === 'EndIntent' || requestJson.intent.name === 'Clova.NoIntent') {
// 終了処理
speechText = 'https://s3-ap-northeast-1.amazonaws.com/終了時に再生したいオーディオファイル.mp3';
endFlg = true;
} else if (requestJson.intent.name === 'Clova.GuideIntent') {
// ヘルプ用
speechText = 'https://s3-ap-northeast-1.amazonaws.com/ヘルプの時に再生したいオーディオファイル.mp3';
} else if (requestJson.intent.name === 'HelloIntent') {
speechText = 'https://s3-ap-northeast-1.amazonaws.com/ハローと言われたの時に再生したいオーディオファイル.mp3';
} else if (requestJson.intent.name === 'MorningIntent') {
(略)
}
var responseJson = JSON.stringify({
"version": "1.0",
"response": {
"outputSpeech": {
"type": "SimpleSpeech",
"values": {
"type":"URL", //ここを「URL」にする
"lang":"ja", //ここはjaである必要すら本当はない
"value": speechText
}
},
"card": {},
"directives": [],
"shouldEndSession": endFlg
}
});
response.body = responseJson;
callback(null, response);
};
要するに、JSONを組み立てられればそれでOKなわけです。
実際に公式のSDKのコードを読めばすぐに気づきます。
https://github.com/line/clova-cek-sdk-nodejs
ド直球に言うと以下で気づくことができます。
https://github.com/line/clova-cek-sdk-nodejs/blob/master/src/speechBuilder.ts
#まとめ
Clovaに限らず、要するにJSONが組み立てられればそれで良くて、SDKはJSONの生成をわかりやすく補助するためのものでしかありません。
それは他のプラットフォームでも、もっというとどんなアプリやサービスでも、対応するプロトコルに合えばそれでいいのです。
#後から気づいたおまけ
本の著者がそのまま書いてるじゃん・・w