Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

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

imajoriri
スマートスピーカーが好きすぎてエンジニアになりました。初心者です。主にCEKについて書きます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away