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": "マスター、他に何かご用件はございますか。"
}
}
}
}
}























