ITブログ   HTML5.asia

ClovaとIoT家電

1. 全体の処理の流れ

ここでは、Clova Extensions Kitソフトウェア開発キットと、AWSクラウドサービス、ラズベリーパイ、Node-Red、 赤外線リモコンを使用したIoT家電操作の実例を通じて、Clovaのスキル開発とIoTについて学んでいきたいと思います。 下記の図が、処理の流れとなります。このブログを読んでいくと、それぞれの役割が理解できるようになります。

2. Clova Developer Centerについて

2018年07月12日に、Clovaのスキル開発サイトが一般公開されました。これにより、個人や企業が、Clovaスキルを開発できるようになりました。 LINEアカウントをもっていれば、使用することができます。(β版のため、将来、仕様が変わる可能性があります。)

下記サイトからログインできます。
Clova Developer Center β
https://clova-developers.line.biz/#/


3. 開発手順

下記の手順が、Clovaの開発手順となります。
  1. スキル定義
  2. 対話モデル定義
  3. Extensionサーバーの用意
  4. AWS IoT Coreの設定 (公開予定)
  5. 赤外線リモコンの設定 (公開予定)
  6. Node-REDの設定 (公開予定)

4. スキルの定義

スキルの定義は、下記のスライダを参照して行うことができます。プロバイダー選択は、既存のものを使用しましたが、 新規に作成してもかまいません。 スキル設定基本情報のExtention IDは、既に登録済みの場合は、登録できないので注意が必要です。

5. 対話モデル定義

下記のスライダでは、対話モデル定義を行い、最後にビルドを行っています。

  1. カスタムスロットタイプ定義
     led_color_typeを定義して、とりえる値として青と赤を定義
  2. カスタムスロットタイプの辞書定義
     青に対し、青色、ブルーなどを登録
  3. カスタムインテント定義
     LED照明をコントロールする「LEDColorManagement」を定義
  4. カスタムスロット名定義
     色が格納されるled_colorを定義
  5. ビルド


「照明の色を青にして」が「カスタムインテント」となり、「青」が、 「カスタムスロットタイプ」の辞書に該当します。他には赤を定義しています。 青の同義語を登録することで、言葉の揺れを吸収することができます。 言葉の揺れを吸収することで、会話の処理をより安易に行うことができます。 下記のいずれも、スロットには「」が設定されます。

  1. 照明の色をにして
  2. 照明の色を青色にして
  3. 照明の色をブルーにして

6. Extensionサーバーの用意

「ClovaのExtensionサーバーをLambdaで構築する方法」を参照にして、Extensionサーバーを用意します。

7. 処理の流れ

  1. Clovaは、「照明を青にして」のメッセージを、Extensionサーバーに送信
  2. Extensionサーバーは、照明を青にするメッセージをTopicに送信
  3. メッセージにより、赤外線リモコンは、照明を青にする信号を発信
  4. 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": "マスター、他に何かご用件はございますか。"
                  }
                }
              }
            }
          }
        
目次表示