Request Sync が、任意の Google ユーザーのフルフィルメントへの SYNC
リクエストをトリガーします。
指定した要件を満たすデバイスと、
agentUserId
が関連付けられています(
によって送信されたデータ)が含まれます。これにより、ユーザーのデバイス
リンクを解除して再リンクする必要はありません。リンクされているすべてのユーザー
SYNC
リクエストを受け取ります。
SYNC
リクエストは次の場合にトリガーします。
- ユーザーが新しいデバイスを追加した場合
- ユーザーが既存のデバイスを削除した場合
- ユーザーが既存のデバイスの名前を変更した場合
- 新しいデバイスタイプ、トレイトを実装したか、新しいデバイス機能を追加した場合
使ってみる
Request Sync を実装する方法は次のとおりです。
Google HomeGraph API を有効にする
-
Google Cloud Console で、[HomeGraph API] ページに移動します。
[HomeGraph API] ページに移動 - smart home プロジェクト ID と一致するプロジェクトを選択します。
- [有効にする] をクリックします。
サービス アカウント キーを作成する
Google Cloud Console からサービス アカウント キーを生成する手順は次のとおりです。
-
Google Cloud Console で、[サービス アカウント キーの作成] ページに移動します。
[サービス アカウント キーの作成] ページに移動 - [サービス アカウント] リストから [新しいサービス アカウント] を選択します。
- [サービス アカウント名] フィールドに名前を入力します。
- [サービス アカウント ID] フィールドに ID を入力します。
[ロール] リストから、[サービス アカウント] > [サービス アカウント トークン作成者] を選択します。
[キーのタイプ] として [JSON] を選択します。
- [作成] をクリックするとキーが含まれている JSON ファイルがパソコンにダウンロードされます。
API を呼び出す
HTTP
HomeGraph API は HTTP エンドポイントを提供します。
- ダウンロードしたサービス アカウントの JSON ファイルを使用して、JSON ウェブトークン(JWT)を作成します。詳細については、サービス アカウントを使用した認証をご覧ください。
- oauth2l を使用し、
https://www.googleapis.com/auth/homegraph
スコープを指定して OAuth 2.0 アクセス トークンを取得します。 agentUserId
を使用して JSON リクエストを作成します。 次に、Request Sync に対する JSON リクエストの例を示します。- Request Sync JSON と HTTP POST リクエスト内のトークンを Google ホームグラフ エンドポイントに結合します。次の例では、テストとして
curl
を使用してコマンドラインでリクエストを行う方法を示します。
oauth2l fetch --credentials service-account.json \ --scope https://www.googleapis.com/auth/homegraph
{ "agentUserId": "user-123" }
curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d @request-body.json \ "https://homegraph.googleapis.com/v1/devices:requestSync"
gRPC
HomeGraph API は gRPC エンドポイントを提供します。
- HomeGraph API 用のプロトコル バッファ サービス定義を取得します。
- gRPC デベロッパー向けドキュメントに沿って、サポートされている言語のうちいずれかのクライアント スタブを生成します。
- RequestSync メソッドを呼び出します。
Node.js
Google API Node.js クライアントは、HomeGraph API のバインディングを提供します。
- アプリケーションのデフォルト認証情報を使用して、
google.homegraph
サービスを初期化します。 - RequestSyncDevicesRequest を使用して
requestSync
メソッドを呼び出します。RequestSyncDevicesResponse でPromise
が返されます。
const homegraphClient = homegraph({ version: 'v1', auth: new GoogleAuth({ scopes: 'https://www.googleapis.com/auth/homegraph' }) }); const res = await homegraphClient.devices.requestSync({ requestBody: { agentUserId: 'PLACEHOLDER-USER-ID', async: false } });
Java
Java 用 HomeGraph API クライアント ライブラリは、HomeGraph API 用のバインディングを提供します。
- アプリケーションのデフォルト認証情報を使用して
HomeGraphApiService
を初期化します。 RequestSyncDevicesRequest
を使用してrequestSync
メソッドを呼び出します。空のReportStateAndNotificationResponse
が返されます。
// Get Application Default credentials. GoogleCredentials credentials = GoogleCredentials.getApplicationDefault() .createScoped(List.of("https://www.googleapis.com/auth/homegraph")); // Create Home Graph service client. HomeGraphService homegraphService = new HomeGraphService.Builder( GoogleNetHttpTransport.newTrustedTransport(), GsonFactory.getDefaultInstance(), new HttpCredentialsAdapter(credentials)) .setApplicationName("HomeGraphExample/1.0") .build(); // Request sync. RequestSyncDevicesRequest request = new RequestSyncDevicesRequest().setAgentUserId("PLACEHOLDER-USER-ID").setAsync(false); homegraphService.devices().requestSync(request);
エラー レスポンス
Request Sync を呼び出したとき、次のいずれかのエラー レスポンスが返される場合があります。レスポンスは、HTTP ステータス コードの形で受け取ります。
400 Bad Request
- サーバーは処理できませんでした。 無効な構文が原因でクライアントから送信されたリクエスト。一般的な原因 不正な形式の JSON が含まれているか、"" ではなくnull
を使用している使用します。403 Forbidden
- サーバーは処理できませんでした。 エラーが発生したため、指定されたagentUserId
のリクエストは トークンを更新します。OAuth エンドポイントが応答することを確認する トークン リクエストを正しく更新し、ユーザーのアカウントのリンクを確認します。 ステータスです。404 Not Found
- リクエストされたリソースを 今後利用可能になる可能性もあります。通常これは ユーザー アカウントが Google とリンクされていないか、agentUserId
。agentUserId
が、サービスで指定された値と一致するようにしてください。 SYNC レスポンスを返せば、 DISCONNECT インテントを処理する。429 Too Many Requests
- 同時同期の最大数 指定したagentUserId
のリクエスト数が上限を超えました。発信者 同時に発行できる同期リクエストは 1 つのみです。ただし、async
フラグが true に設定されます。