Edited at

(インストールから、ハンドラー作成編)Lambdaで使える、Clova(CEK)のSDKを作ってみた


はじめに

No,
タイトル

1<<今ここ
(インストールから、ハンドラー作成編)Lambdaで使える、Clova(CEK)のSDK作ってみた

2
(Clovaに喋らすメソッド編)Lambdaで使える、Clova(CEK)のSDK作ってみた

3
(スロット、セッション情報取得編)Lambdaで使える、Clova(CEK)のSDK作ってみた

Alexaスキル開発でおなじみのask-sdkとほぼ同じコードで動くSDKを作ってみました。

その紹介記事です。

CEKとLambdaのひも付けなどは、ここで説明しています。よかったらどうぞ。


リポジトリ

npm

GitHub


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がきた時は


LaunchRequest

return handlerInput.requestEnvelope.request.type === "LaunchRequest"


SampleIntentの時は


sampleIntent

return handlerInput.requestEnvelope.request.type === "IntentRequest"

&& handlerInput.requestEnvelope.request.intent.name === "SampleIntent";

それぞれtrueになります。


handleメソッド

canHandleがtrueを返した場合実行されるメソッドです。

スロット値や、sessionAttributesを取得し、Clovaに喋らす内容を構成します。

スロットやsessionAttributesの取得メソッドなども用意しているので、次回紹介します。

次回 >> (Clovaに喋らすメソッド編)Lambdaで使える、Clova(CEK)のSDK