7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-07-18

はじめに

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

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?