ClovaとIoT家電
1. 全体の処理の流れ
2. Clova Developer Centerについて
2018年07月12日に、Clovaのスキル開発サイトが一般公開されました。これにより、個人や企業が、Clovaスキルを開発できるようになりました。
LINEアカウントをもっていれば、使用することができます。(β版のため、将来、仕様が変わる可能性があります。)
下記サイトからログインできます。
Clova Developer Center β
https://clova-developers.line.biz/#/
3. 開発手順
- スキル定義
- 対話モデル定義
- Extensionサーバーの用意
- AWS IoT Coreの設定 (公開予定)
- 赤外線リモコンの設定 (公開予定)
- Node-REDの設定 (公開予定)
4. スキルの定義
スキルの定義は、下記のスライダを参照して行うことができます。プロバイダー選択は、既存のものを使用しましたが、 新規に作成してもかまいません。 スキル設定基本情報のExtention IDは、既に登録済みの場合は、登録できないので注意が必要です。
5. 対話モデル定義
下記のスライダでは、対話モデル定義を行い、最後にビルドを行っています。
- カスタムスロットタイプ定義
led_color_typeを定義して、とりえる値として青と赤を定義 - カスタムスロットタイプの辞書定義
青に対し、青色、ブルーなどを登録 - カスタムインテント定義
LED照明をコントロールする「LEDColorManagement」を定義 - カスタムスロット名定義
色が格納されるled_colorを定義 - ビルド
「照明の色を青にして」が「カスタムインテント」となり、「青」が、 「カスタムスロットタイプ」の辞書に該当します。他には赤を定義しています。 青の同義語を登録することで、言葉の揺れを吸収することができます。 言葉の揺れを吸収することで、会話の処理をより安易に行うことができます。 下記のいずれも、スロットには「青」が設定されます。
- 照明の色を青にして
- 照明の色を青色にして
- 照明の色をブルーにして
6. Extensionサーバーの用意
「ClovaのExtensionサーバーをLambdaで構築する方法」を参照にして、Extensionサーバーを用意します。
7. 処理の流れ
- Clovaは、「照明を青にして」のメッセージを、Extensionサーバーに送信
- Extensionサーバーは、照明を青にするメッセージをTopicに送信
- メッセージにより、赤外線リモコンは、照明を青にする信号を発信
- Extensionサーバーは、Clovaに「照明を青色にしました。」のメッセージを返す。
Clovaが「照明を青にして」のメッセージを解析すると、JSON形式のデータになります。 38行目より、インテント名が「LEDColorManagement」で、スロット名「led_color」に青が設定されたのがわかります。
Clova ⇒ Extensionサーバー{ "version": "1.0", "session": { "sessionId": "xxxxxxxxxx", "sessionAttributes": {}, "user": { "userId": "yyyyyyyyyy", "accessToken": "zzzzzzzzzz" }, "new": true }, "context": { "System": { "application": { "applicationId": "xxx.xxx.xxx" }, "user": { "userId": "yyyyyyyyyy", "accessToken": "zzzzzzzzzz" }, "device": { "deviceId": "**********", "display": { "size": "l100", "orientation": "landscape", "dpi": 96, "contentLayer": { "width": 640, "height": 360 } } } } }, "request": { "type": "IntentRequest", "intent": { "name": "LEDColorManagement", "slots": { "led_color": { "name": "led_color", "value": "青" } } } } }
10行目の「照明を青にしました。」が、Clovaが話す言葉になります。 22行目の「マスター、他に何かご用件はございますか。」が、Clovaに、5秒間何も話しかけなかった場合の問いかけになります。
Extensionサーバー ⇒ Clova{ "version": "1.0", "sessionAttributes": {}, "response": { "outputSpeech": { "type": "SimpleSpeech", "values": { "type": "PlainText", "lang": "ja", "value": "照明を青色にしました。" } }, "card": {}, "directives": [], "shouldEndSession": false, "reprompt": { "outputSpeech": { "type": "SimpleSpeech", "values": { "type": "PlainText", "lang": "ja", "value": "マスター、他に何かご用件はございますか。" } } } } }