Clova Skill開発 with AWS Lambda: その２ Clovaスキルの設定編

## 概要
Clovaスキルを制作するにあたって、Clovaから送られてくるRequestを処理しResponseを返すwebhook部分をAWSのLambdaで実装する方法を記載したいと思います。

Clovaスキルのロジック処理だけでなく、LINE Messaging APIのロジック処理をLambdaで実装する方法を数回に分けて説明したいと思います。

今回は、前回記事「[Clova Skill開発 with AWS Lambda: その１ LambdaとAPI Gatewayの設定編](https://qiita.com/rinpa/items/d9dd59afd3a6f5d574dc)」で作成したAWS Lambda、API GatewayにアクセスするClovaスキルの設定を説明したいと思います。

今回行うこと

- Clovaスキルの設定
    - 新規プロバイダ作成
    - 新規チャンネル作成
    - 新しいスキルの作成
    - 基本情報の設定
    - 対話モデルの作成
    - 開発設定
    - ユーザー設定

## Clovaスキルの設定

Clova Developer Centerにログイン

https://clova-developers.line.biz

![img_01.png](https://qiita-image-store.s3.amazonaws.com/0/112736/064c5f25-ce76-9e4b-cf1b-9a40f502c85b.png)

「スキルを開発する」をクリック

### LINEアカウントでログイン

Clovaスキルを開発にするにあたってLINEアカウントでログインする必要があります。

![img_02.png](https://qiita-image-store.s3.amazonaws.com/0/112736/dd320189-fc91-f7b9-276b-1ab8b0ed8120.png)

ログインしていない場合は上のような画面が出てくるので、既存のLINEアカウントでログインするかアカウントを作成してください。

### スキル設定

![img_03.png](https://qiita-image-store.s3.amazonaws.com/0/112736/2490ecfd-90d9-b421-0202-2d6e12efc28b.png)

ログインするとスキルチャンネルを作成しClovaスキルの開発に必要な設定をしていきます。「LINE Developersでスキルチャネルを新規作成」をクリックして進めてめていきます。

### 新規プロバイダ作成

はじめての方はプロバイダーを作成していきます。すでにプロバイダーを制作しており、そこでスキル開発する場合はそちらを選択してください。

※プロバイダーに紐付いて、複数のClovaスキルを作成することが出来ます。なのでClovaスキル毎にプロバイダーの作成する必要はないので、会社名やグループ名などで制作するなど適宜最適なプロバイダーを作成してください。

![img_04.png](https://qiita-image-store.s3.amazonaws.com/0/112736/ddb501ca-e508-7fb9-d28c-580995a56f99.png)

- プロバイダー選択：新規プロバイダー作成 にチェック
- プロバイダー名：[任意のプロバイダー名を入力]（※ ここでは仮にClova DEVとしました）

「次のページ」をクリックして進めます。

#### 新規チャンネル作成：入力

Clovaスキルのためのチャンネルを新規に作成していきます。チャンネルという名称になっていますがプロジェクト的な要素で、このチャンネル単位でClovaスキルを１：１で作成していきます。

![img_05.png](https://qiita-image-store.s3.amazonaws.com/0/112736/5f3b4ab1-cb84-6581-1d33-cba7823b9ff2.png)

- 選択プロバイダー：[先程制作もしくは選択したプロバイダー名]（※ここではClova DEV）
- チャンネル名：[任意のチャンネルの名前]（※ここではmyClovaTest）

「入力内容を確認する」をクリック

#### 新規チャンネル作成：確認

上記設定した内容が表示されるので「作成してClova Developer Centerに移動」をクリック

### Clova Developer Center

Clova Developer Centerに遷移するので、ここから実際のClovaスキル開発に必要な設定を始めます。

#### 新しいスキルを作成する

現在は「カスタム」のスキル一択になっていますが、今後は他のGoogleやAmazonなどのプラットフォーマーのように「ホームスキル」などが選択できるようになるかもしれません。

![img_06.png](https://qiita-image-store.s3.amazonaws.com/0/112736/f17be8b8-fbb4-39bb-2323-47ea2f972a5b.png)

- Clova Extensions Kit利用規約に同意します：チェック
- LINE User Data Policyに則って個人情報を保護します。：チェック

「スキル開発を始める」をクリック

#### 基本情報

スキルの基本情報を設定していきます。

ここで設定する「Extension ID」などは別記事で説明する実際のコーディング時にClovaスキルを識別する際に使用します。

![img_07.png](https://qiita-image-store.s3.amazonaws.com/0/112736/c95cf41c-363e-029d-fcdb-2d4a6202bafb.png)

- Channel ID：[自動で割り振られるID]
- Channel Name：[設定したチャンネル名]（※ここではmyClovaTest）
- タイプ：カスタム
- Extension ID: [ユニークなID:リバースドメインを推奨]（※ここではcom.yourdomain.myclovatest)
- スキル名：[スキル名]（※ここではテストスキル）
- 呼び出し名（メイン）：[上記のスキル名の呼び出し名]（※ここではテストスキル）
- 呼び出し名（サブ）：[必要であればここも記載]

「作成」をクリック

問題なければ、入力した内容で作成され入力した項目の確認画面に遷移するので、画面下に新たに表示された「次へ」をクリック


#### 対話モデルの作成

Clovaスキルでユーザの発話を解析し、その発話内容がどのインテントの物なのかを紐付ける設定を行なっていきます。

##### カスタムインテントを作成

対話モデルは初期状態ではカスタムインテントがない状態なので、まずはテストもかねて「こんにちは」というユーザー発話を取得する``hello_intent``を作成してみます。

![img_08.png](https://qiita-image-store.s3.amazonaws.com/0/112736/c969f6ec-5332-0d85-2431-bad38ced699f.png)

「カスタム インテント」の右にある「追加」ボタンをクリック

###### インテントを追加

任意の名前を決めて新規のカスタムインテントを制作します。

![img_09.png](https://qiita-image-store.s3.amazonaws.com/0/112736/53026d86-fa78-7294-cd14-d513aa3f01b4.png)

新規のカスタムインテントを作成の画面に遷移するので「``hello_intent``」と入力して「作成」をクリック

###### サンプル発話の登録

作成したカスタムインテントで受け取る（解析対象とする）ユーザー発話を登録していきます。

![img_10.png](https://qiita-image-store.s3.amazonaws.com/0/112736/d95bb6c4-ea56-4536-c339-939cd738cfa8.png)

「サンプル発話リスト」の下の入力フィールド（新しいサンプル発話を追加してみてください。）に①「こんにちは」と入力し、その右にある②「＋」ボタンをクリック


サンプル発話リストに③「こんにちは」が追加されるので、④「保存」をクリック

##### 対話モデルのビルド

カスタムインテントを制作しましたが、このままでは対話モデルにまだ反映されていない状態なので、変更を反映さるために「ビルド」ボタンをクリックして対話モデルをビルドします。

※ビルドは結構時間（1分~数分）がかかるので、ウィンドウなど閉じないように地道に「ビルド中」という文字が「ビルド」に変わるまで待ちます。

#### 開発設定

先程対話モデルを作成しましたが、Extentionサーバー（今回は前回説明したLambda）のURL設定とサーバーのプログラムを記載していないので動作しません。「開発設定」の項目でExtentionサーバーのURLの設定など各種設定を行っていきます。

##### サーバー設定

Clovaスキルで実際のロジック部分をコーディングしていくサーバの設定を行います。

![img_11.png](https://qiita-image-store.s3.amazonaws.com/0/112736/5e3d688d-2afa-bfd3-0e0e-0d9fc843bf28.png)

- ExtentionサーバーのURL：[API Gatwayで設定したURL]（※右のようなURLになります。``https://xxxxxxxxxxxxxxx.ap-northeast-1.amazonaws.com/production/api``）
- AudioPlayer利用の有無：「いいえ」にチェック

（※Clovaの発話で短い言葉などの録音した音声mp3を再生するのみであれば、いいえにチェックで問題ありません。AudioPlayerは楽曲やラジオなどの長い音楽再生機能を使用するときの特殊な機能なので、そういった用途でない限り「いいえ」にチェックします）

※API GatewayとLambdaの設定については、前回の記事「[Clova Skill開発 with AWS Lambda: その１ LambdaとAPI Gatewayの設定編](https://qiita.com/rinpa/items/d9dd59afd3a6f5d574dc)」を参照してください。

設定した後、「保存」「次へ」をクリック

##### アカウント連携

俗に言うアカウントリンクの有無の設定を行います。

![img_12.png](https://qiita-image-store.s3.amazonaws.com/0/112736/9670318b-bf01-f7e0-1999-597a456f4533.png)

- アカウント連携の有無：「いいえ」にチェック

 ※今回はアカウント連携を行わないので「いいえ」にチェックをして「次へ」をクリック

#### ユーザー設定

Clovaスキルについての情報の設定を行う項目です。

##### スキルストア

Clovaスキルストアに公開される項目の設定です。

![img_13.png](https://qiita-image-store.s3.amazonaws.com/0/112736/62489464-3b82-d014-a715-2155207bfd92.png)

- カテゴリ：[プルダウンから選択]（※ここではテストなのでエンターテインメントを選択）
- サービスを提供する国及び地域：ClovaがExtensionを提供するすべての国および地域
- スキルの説明（スキルストア表示）：[サンプルを参照しつつスキルの説明を記載する]（※ここではテストなので適宜入力）
- 代表サンプル発話：「ねぇClova、[アプリ名]を起動して」など
- 検索キーワード（任意）：任意
- アイコン：512 x 512px の画像（透過PNG OK）（※丸くトリミングされるので画像を見きれないように注意しましょう。今回は適宜512x512pxの画像を作成してアップロードします。）
- 対象デバイス：適宜選択

各種入力して「次へ」をクリック



##### 個人情報の保護および規約同意

文字通り、個人情報の保護および規約同意などに関する設定項目です。

![img_14.png](https://qiita-image-store.s3.amazonaws.com/0/112736/fda90bb2-779b-c6b3-5883-57608e86c358.png)

- 購入/支払い機能はありますか？：「いいえ」にチェック
- 個人情報を取得しますか？：「いいえ」にチェック
- プライバシーポリシーのURL (任意)：任意
- 利用規約のURL (任意)：任意

設定出来たら「次へ」をクリック



#### テスト

テストの画面に遷移します。実際に対話モデルで設定した「こんにちは」が正常に動作するかをテストすることが出来ます。

![img_15.png](https://qiita-image-store.s3.amazonaws.com/0/112736/33fa2b57-2efe-53bd-1d63-5beda33e0a80.png)

対話モデルで設定した①「こんにちは」を入力し②「テスト」ボタンをクリックしてみましょう。

「テスト結果」に以下のように表示されると思います。

- サンプル発話：③ こんにちは
- サービスの応答：④ 応答がありません。（200）
- 実行されるイベント：IntentRequest
- 解析されたインテント：⑤ hello_intent

④「サービスの応答」で「応答がありません。（200）」と表示されていると思いますが、これは「開発設定」で設定した「ExtentionサーバーのURL」のAPI Gatewayを介したLambdaのコードをまだコーディングしていないため。status code 200をサーバが返しているのは現段階では正常な動作です。Lambdaのコーディングについては追って説明します。

ここで注目すべきは⑤「解析されたインテント：hello_intent」の項目で、対話モデルで設定した``hello_intent``が解析されているかを確認しておくことが重要です。ここで設定した``hello_intent``が帰ってきてない場合は、対話モデルの設定漏れがある可能性が高いので再度確認します（ビルドし忘れなど）。

※スクリーンショットでは撮っていませんが、画面下に「JSONのサービスリクエスト」「サービス応答」が表示されているので、requestとresponseの概要はそちらで確認することが出来ます。

以上で、基本のClovaスキルの設定は完了です。

実際の開発に移る時は対話モデルで必要なインテントやスロットの作成を行うことになります。

また、実際にClovaスキルを公開する場合は「審査申請」で「審査情報（スキル提供者の情報など）」を入力する必要がありますがここでは割愛させていただきます。

## まとめ

前回記事「[Clova Skill開発 with AWS Lambda: その１ LambdaとAPI Gatewayの設定編](https://qiita.com/rinpa/items/d9dd59afd3a6f5d574dc)」のClovaスキルで使用するAPI GatewayとLambdaの設定に続き、今回はClovaスキルの設定を行いました。次回は実際にLambdaにClovaスキルから送られてくるリクエストに対してレスポンスを返すコーディングの部分を説明していきたいと思います。