はじめに
No, | タイトル |
---|---|
1 | (インストールから、ハンドラー作成編)Lambdaで使える、Clova(CEK)のSDK作ってみた |
2<<今ここ | (Clovaに喋らすメソッド編)Lambdaで使える、Clova(CEK)のSDK作ってみた |
3 | (スロット、セッション情報取得編)Lambdaで使える、Clova(CEK)のSDK作ってみた |
前回は、ハンドラの登録実践しました。
canHandle内でリクエストを判断して、handlerでCEKに返す処理を実行しました。
今回はそのhandler内でClovaに喋らす内容を定義する方法を紹介します。
LaunchRequestHandler
今回は前回紹介したSampleIntentHandler
にて説明をします。
const SampleIntentHandler = {
canHandle: function(handlerInput){
return handlerInput.requestEnvelope.request.type === "IntentRequest"
&& handlerInput.requestEnvelope.request.intent.name === "SampleIntent";
// return handlerInput.requestEnvelope.isMatch('sampleIntent');
},
handle: function(handlerInput){
var msg = "";
return handlerInput.responseBuilder.speak(msg).reprompt(msg).getResponse();
}
}
前回、canHandle
とhandler
についての説明はしたので省きます。
このSampleIntentHandlerが実行された場合、Clovaは以下のように喋りユーザーに再度応答を求めます、(つまりスキルを終了しません)
SampleIntentが呼ばれた時に返します。
また、ユーザーがしばらく応答をしなかった時再度Clovaが喋る内容が以下になります。
ユーザーがしばらく応答をしなかった時に再度Clovaが喋ります。
speak(msg)
Clovaが喋るテキストを引数に与えます。
上記ですと、msg
変数に値します。
後述するrepromptがない場合、Clovaは発話した後にスキルを終了します。
reprompt(msg)
このメソッドを使用した場合、Clovaは発話した後にユーザーの応答を求めます。
つまり、スキルを終了しません。
また、この引数に指定したテキストはユーザーが数秒間応答がなかった時に再度Clovaが喋る内容になります。
audioPlay(url)
speakメソッドでは、引数にテキストを指定しましたが、このメソッドでは流したい音声のURLを指定します。
const URL = "https://audio.....";
return handlerInput.responseBuilder.audioPlay(URL);
audioPlayReprompt(url)
repromptメソッドでは、引数にテキストを指定しましたが、このメソッドでは流したい音声のURLを指定します。
const URL = "https://audio.....";
return handlerInput.responseBuilder.audioPlay(URL).audioPlayReprompt(URL);
合わせて利用する
このspeak
,reprompt
,audioPlay
,audioPlayReprompt
はそれぞれ繋げて利用することが可能です。
例
const audioStart = "オーディオを流します。";
const audioStop = "オーディオを止めます。";
const URL = "https://audio.....";
return handlerInput.responseBuilder
.speak(audioStart)
.audioPlay(URL)
.speak(audioStop)
この例ですと、Clovaは以下のように喋ります。
オーディオを流します。
(オーディオ再生)
オーディオを止めます。