はじめに
No, | タイトル |
---|---|
1<<今ここ | (インストールから、ハンドラー作成編)Lambdaで使える、Clova(CEK)のSDK作ってみた |
2 | (Clovaに喋らすメソッド編)Lambdaで使える、Clova(CEK)のSDK作ってみた |
3 | (スロット、セッション情報取得編)Lambdaで使える、Clova(CEK)のSDK作ってみた |
Alexaスキル開発でおなじみのask-sdk
とほぼ同じコードで動くSDKを作ってみました。
その紹介記事です。
CEKとLambdaのひも付けなどは、ここで説明しています。よかったらどうぞ。
リポジトリ
install
$ npm install love-clova
ファイル自動作成
indexファイルを作成するコマンド。ここはお好みでやってください。
$ node ./node_modules/.bin/clova-init
// もしくは、以下は個人的なディレクトリ構成を作成してくれる
$ node ./node_modules/.bin/init-original
Hnadler(ハンドラー)とは
何かのイベントが発生した時に実行される処理のことです。
Clovaスキルでは、イベントをインテント(もしくはリクエストタイプ)で判断します。
例えばSampleIntent
が発生した場合はSmapleIntentHandler
が実行されます。
ハンドラーの作成
上で説明した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();
}
}
コードの中の詳しい説明は後ほどします。
このままでは、SmapleIntent
をトリガーとして実行はできないので、できるように紐付けを行います
ハンドラーの登録
addRequestHandlers()
の引数にハンドラーを登録するだけです。
exports.handler = clova.extensionBuilders
.addRequestHandlers(SampleIntentHandler)
.lambda()
次にSmapleIntentHandlerの中身をみていきます。
canHandleメソッド
このハンドラーのトリガーか?を判断するメソッドです。
このメソッドの戻り値がtrueの場合、ハンドラーが1回だけ実行されます。
これらより、LuanchRequestがきた時は
return handlerInput.requestEnvelope.request.type === "LaunchRequest"
SampleIntentの時は
return handlerInput.requestEnvelope.request.type === "IntentRequest"
&& handlerInput.requestEnvelope.request.intent.name === "SampleIntent";
それぞれtrue
になります。
handleメソッド
canHandleがtrueを返した場合実行されるメソッドです。
スロット値や、sessionAttributesを取得し、Clovaに喋らす内容を構成します。
スロットやsessionAttributesの取得メソッドなども用意しているので、次回紹介します。