スマートホームの Locator トレイトのスキーマ

action.devices.traits.Locator - このトレイトは、位置を確認できるデバイスに使用します。たとえば、スマートフォン、ロボット(掃除機や芝刈り機など)、ドローン、他のデバイスに接続するタグ付き製品などが対象になります。

デバイスの位置は、デバイスに付属のインジケーター(ビープ音、呼び出し音、点滅、金属音など)で確認できます。「[デバイス] を探して」というリクエストを送信すると、デバイスはその位置を通知しようとします。

デバイスの属性

なし。表現上の違いがあっても(「[デバイス] を探して」、「X はどこ?」 など)、位置情報が確認され、パートナー / デバイスからのレスポンスから音声レスポンスが生成されます(たとえば、ビープ音を鳴らすなど)。

SYNC リクエストとレスポンスの例

リクエスト
{
    "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
    "inputs": [{
      "intent": "action.devices.SYNC"
    }]
}
Node.jsレスポンス
'use strict';

const {smarthome} = require('actions-on-google');
const functions = require('firebase-functions');

const app = smarthome();

app.onSync((body, headers) => {
  return {
    requestId: body.requestId,
    payload: {
      agentUserId: '1836.15267389',
      devices: [{
        id: '123',
        type: 'action.devices.types.VACUUM',
        traits: [
          'action.devices.traits.Locator'
        ],
        name: {
          defaultNames: ['Smart Vacuum'],
          name: 'SmartVac',
          nicknames: ['Vac']
        },
        willReportState: false,
        deviceInfo: {
          manufacturer: 'Smart Home Provider',
          model: 'g1340',
          swVersion: '1.0.31',
          hwVersion: '1.1'
        },
        customData: {
          smartHomeProviderId: 'fiGgZ0vrhFRgwf5XJkna2GRwO8z80J'
        }
      }]
    }
  };
});

// ...

exports.smarthome = functions.https.onRequest(app);
JSONレスポンス
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "agentUserId": "1836.15267389",
    "devices": [
      {
        "id": "123",
        "type": "action.devices.types.VACUUM",
        "traits": [
          "action.devices.traits.Locator"
        ],
        "name": {
          "defaultNames": [
            "Smart Vacuum"
          ],
          "name": "SmartVac",
          "nicknames": [
            "Vac"
          ]
        },
        "willReportState": false,
        "deviceInfo": {
          "manufacturer": "Smart Home Provider",
          "model": "g1340",
          "swVersion": "1.0.31",
          "hwVersion": "1.1"
        },
        "customData": {
          "smartHomeProviderId": "fiGgZ0vrhFRgwf5XJkna2GRwO8z80J"
        }
      }
    ]
  }
}
検証ツール

デバイスのステータス

なし。

QUERY リクエストとレスポンスの例

Locator は QUERY リクエストに対応していません。

デバイスのコマンド

コマンド パラメータ / 定義
action.devices.commands.Locate silent ブール値。デフォルトは false です。情報の検索と報告で音声対応が可能なデバイスに使用します。true の場合、検索中は消音で、デバイスが見つかるとアラームを鳴らします。
lang 文字列。デフォルトは en です。クエリ / 表示で使用される現在の言語。場所をローカライズされた文字列で返すこともできます(サポートされている言語 / 言語コードを参照)。
レスポンス パラメータ 定義
generatedAlertブール値。デバイスでアラート(音声または表示)が正常に生成された場合は true に設定されます。
このコマンドでデバイスが見つからなかった場合、オフライン エラーが返されることがあります。

EXECUTE リクエストとレスポンスの例

鍵はどこ? (位置情報が確認できるキーチェーンの場合)
リクエスト
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "inputs": [{
    "intent": "action.devices.EXECUTE",
    "payload": {
      "commands": [{
        "devices": [{
          "id": "123",
          "customData": {
            "fooValue": 74,
            "barValue": true,
            "bazValue": "lambtwirl"
          }
        }],
        "execution": [{
          "command": "action.devices.commands.Locate",
          "params": {
            "silent": false,
            "lang": "en"
          }
        }]
      }]
    }
  }]
}
Node.jsレスポンス
'use strict';

const {smarthome} = require('actions-on-google');
const functions = require('firebase-functions');

const app = smarthome();

app.onExecute((body, headers) => {
  return {
    requestId: body.requestId,
    payload: {
      commands: [{
        ids: ['123'],
        status: 'SUCCESS',
        states: {
          generatedAlert: true
        }
      }]
    }
  };
});

// ...

exports.smarthome = functions.https.onRequest(app);
JSONレスポンス
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [
      {
        "ids": [
          "123"
        ],
        "status": "SUCCESS",
        "states": {
          "generatedAlert": true
        }
      }
    ]
  }
}

この例では、次のようなテキストが読み上げられます。

はい、鍵を探しています。