Te damos la bienvenida al Centro para desarrolladores de Google Home, el nuevo destino para aprender a desarrollar acciones para el hogar inteligente. Nota: Continuarás compilando acciones en la Consola de Actions.

Solicitar sincronización

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.
.

La sincronización de solicitudes activa una solicitud SYNC en tu entrega para cualquier usuario de Google con dispositivos que tengan el agentUserId especificado asociado (que enviaste en la solicitud SYNC original). Esto te permite actualizar los dispositivos de los usuarios sin desvincular ni volver a vincular su cuenta. Todos los usuarios vinculados a este identificador recibirán una solicitud SYNC.

Debes activar una solicitud SYNC:

  • Si el usuario agrega un dispositivo nuevo
  • Si el usuario quita un dispositivo existente.
  • Si el usuario cambia el nombre de un dispositivo existente
  • Si implementas un nuevo tipo de dispositivo, lo usas o agregas una nueva función.

Comienza ahora

Para implementar la sincronización de solicitudes, sigue estos pasos:

Habilita la API de Google HomeGraph

  1. En Google Cloud Platform Console, ve a la página de la API de HomeGraph.

    Ir a la página API de HomeGraph
  2. Selecciona el proyecto que coincida con el ID del proyecto de casa inteligente.
  3. Haz clic en HABILITAR.

Crea una clave de cuenta de servicio

Sigue estas instrucciones para generar una clave de cuenta de servicio desde GCP Console:

Nota: Asegúrate de usar el proyecto de GCP correcto cuando realices estos pasos. Este es el proyecto que coincide con tu ID del proyecto de casa inteligente.
  1. En GCP Console, ve a la página Crea una clave de la cuenta de servicio.

    Ir a la página Crear clave de la cuenta de servicio
  2. En la lista Cuenta de servicio, selecciona Cuenta de servicio nueva.
  3. Ingresa un nombre en el campo Nombre de cuenta de servicio.
  4. En el campo ID de cuenta de servicio, ingresa un ID.
  5. En la lista Función, selecciona Cuentas de servicio > Creador de tokens para cuenta de servicio.

  6. Para el Tipo de clave, selecciona la opción JSON.

  7. Haz clic en Crear. Se descargará a tu computadora un archivo JSON con la clave.

Llamar a la API

HTTP

La API de Home Graph proporciona un extremo HTTP

  1. Usa el archivo JSON descargado de la cuenta de servicio para crear un token web JSON (JWT). Para obtener más información, consulta Autentica con una cuenta de servicio.
  2. Obtén un token de acceso de OAuth 2.0 con el permiso https://www.googleapis.com/auth/homegraph mediante oauth2l:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. Crea la solicitud JSON con agentUserId. A continuación, se muestra un ejemplo de una solicitud JSON para la sincronización de solicitudes:
  5. {
      "agentUserId": "user-123"
    }
    
  6. Combina el JSON de Sync de solicitud y el token en tu solicitud HTTP POST al extremo del grafo de Google Home. A continuación, te mostramos un ejemplo de cómo realizar la solicitud en la línea de comandos con curl, como prueba:
  7. 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

La API de Home Graph proporciona un extremo de gRPC

  1. Obtén la definición del servicio del búfer de protocolo para la API de Home Graph.
  2. Sigue la documentación para desarrolladores de gRPC a fin de generar stubs de clientes de uno de los lenguajes compatibles.
  3. Llama al método RequestSync.

Node.js

El cliente Node.js de las API de Google proporciona vinculaciones para la API de Home Graph.

  1. Inicializa el servicio google.homegraph con las credenciales predeterminadas de la aplicación.
  2. Llama al método requestSync con RequestSyncDevicesRequest. Muestra un Promise con una RequestSyncDevicesResponse vacía.
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

La biblioteca cliente de la API de HomeGraph para Java proporciona vinculaciones con la API de Home Graph.

  1. Inicializa HomeGraphApiService con credenciales predeterminadas de la aplicación.
  2. Llama al método requestSync con RequestSyncDevicesRequest. Muestra un ReportStateAndNotificationResponse vacío.
// 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);
    

Respuestas de error

Es posible que recibas una de las siguientes respuestas de error cuando llames a Request Sync. Estas respuestas se presentan en forma de códigos de estado HTTP.

  • 400 Bad Request: el servidor no pudo procesar la solicitud que envió el cliente debido a una sintaxis no válida. Las causas comunes incluyen JSON con formato incorrecto o usar null en lugar de "" para un valor de string.
  • 403 Forbidden: el servidor no pudo procesar la solicitud de un agentUserId determinado debido a un error mientras se actualizaba el token. Asegúrate de que tu extremo de OAuth responda correctamente para actualizar las solicitudes de token y verifica el estado de vinculación de la cuenta del usuario.
  • 404 Not Found: no se encontró el recurso solicitado, pero es posible que esté disponible en el futuro. Por lo general, esto significa que la cuenta de usuario no está vinculada con Google o recibimos una agentUserId no válida. Asegúrate de que agentUserId coincida con el valor proporcionado en tu respuesta de SYNC y de que manejes correctamente los intents DISCONNECT.
  • 429 Too Many Requests: Se superó la cantidad máxima de solicitudes de sincronización simultáneas para la agentUserId determinada. Un emisor solo puede emitir una solicitud de sincronización simultánea, a menos que la marca async esté configurada como verdadera.