General
P.: ¿Dónde y en qué idioma debemos implementar nuestra infraestructura de procesamiento de Cloud-to-cloud?
R.: Siempre que admita SSL (TLS) moderno y OAuth 2.0, puedes implementar tu infraestructura en cualquier plataforma y en el idioma que elijas. Te recomendamos que realices la implementación lo más cerca posible del resto de tu infraestructura para mejorar la confiabilidad y reducir la latencia de ejecución en los dispositivos de los usuarios reales.
P.: ¿Los IDs de los dispositivos deben ser únicos?
R.: Sí, los IDs deben ser únicos. Si no tienes IDs únicos en tu servicio, deben ser únicos al menos a nivel del usuario. Imagina un usuario con varias casas, en las que ambas tienen integraciones con el mismo usuario. Pedir que se encienda una luz en una casa no debería encender una luz con el mismo ID en otra casa.
P.: ¿Los nombres de los dispositivos deben ser únicos?
R.: Los nombres no tienen que ser únicos, aunque, con el tiempo, es posible que alentemos a las personas a mejorar los nombres incorrectos después de la configuración para mejorar la experiencia del usuario.
Aquí tienes una guía rápida de nombres:
- Los nombres deben ser cosas que las personas puedan decir.
- Reconocemos subconjuntos de cadenas, por lo que, si tienes "acme color light", también responderemos a "acme light".
- Te recomendamos que uses un nombre descriptivo para el producto y uno o más nombres definidos por el usuario.
- Los usuarios no necesitan asignar nombres de habitaciones a las luces, ya que tenemos habitaciones para eso. Deben tener nombres únicos por habitación, pero siempre pueden usar plurales para ordenar todo (por ejemplo, las dos bombillas de las lámparas de pared de la oficina son "north light" y "east light", pero se pueden ordenar como "lights").
P.: ¿Con qué frecuencia se actualiza el estado del dispositivo?
R.: El estado efímero se recupera en QUERY o EXECUTE, que son acciones iniciadas por el usuario. Si el usuario pregunta "¿está encendida la luz?" o quiere iluminar una luz, tendremos que hacer una consulta para averiguar el estado actual.
P.: ¿Es posible actualizar Home Graph directamente con el estado actual de un dispositivo?
R.: Sí, usa la llamada a la API de Report State.
Vinculación de cuentas y OAuth
P.: ¿Necesitamos realizar la vinculación de cuentas?
R.: Sí, se requiere la vinculación de cuentas para conectar los dispositivos de un usuario a los servicios en la nube del proveedor.
P.: Para OAuth, hacemos que los tokens de acceso venzan cada 15.213 horas. ¿Está bien?
R.: Sí, pero haz pruebas con un tiempo de vencimiento bastante corto, por ejemplo, de 10 a 20 minutos. Nuestro cliente de OAuth debería actualizar los tokens según sea necesario, y las pruebas con un tiempo de vencimiento corto demostrarán que funciona.
Intents
P.: ¿Cuándo ocurre SYNC?
R.: SYNC ocurre inmediatamente después de que se completa OAuth y después de que se realiza una llamada a Request Sync.
P.: ¿Por qué no funciona SYNC?
R.: Hay varios motivos comunes por los que esto podría fallar.
Estás enviando los tipos de dispositivos incorrectos.
- Por ejemplo, esperamos
action.devices.types.LIGHT, pero envíasaction.devices.types.Light.
- Por ejemplo, esperamos
Estás enviando tipos de dispositivos no compatibles.
- Por ejemplo, envías
action.devices.types.FLASHLIGHT. Esto no es algo que admitamos.
- Por ejemplo, envías
Estás enviando campos no válidos o no compatibles.
- Por ejemplo, tienes un campo que no está en nuestra especificación.
Hay algún otro problema de formato con tu respuesta SYNC.
- Revisa los corchetes.
Tienes un problema de vinculación de cuentas.
- Verifica que recibas un token de acceso válido en el encabezado Auth de la solicitud SYNC.
Tardas demasiado en responder a la solicitud SYNC.
- Verifica que respondas a la solicitud SYNC en un plazo de 5 segundos.
P.: ¿Es aceptable una respuesta "pendiente"?
R.: Preferimos una respuesta de éxito o falla, en lugar de pendiente, si tus dispositivos están disponibles en tiempo real. Comunícate con nosotros si crees que necesitas una respuesta "pendiente". Reconocemos que algunos dispositivos de baja potencia y que no son en tiempo real pueden requerir una respuesta pendiente y un modelo de ejecución asíncrono.
Pruebas y envío
P.: ¿Podemos configurar un entorno de nube de desarrollo?
R.: Sí, puedes probar un entorno y una configuración de nube no lanzados.
P.: Mi acción no está visible en la sección Control del hogar de la app de Google Home. ¿Qué sucede?
R.: Confirma que eres desarrollador de este proyecto.
Report State
P.: ¿Existen requisitos previos para implementar Report State?
R.: El proyecto debe usar la API de Smart Home, admitir OAuth2 y tener atributos que tengan estados para informar.
P.: ¿Con qué frecuencia debemos informar el estado de un dispositivo?
R.: A Google le interesa la transición y el estado terminal. Sin embargo, si hay muchos cambios de estado en un período breve (por ejemplo, un usuario abre y cierra el refrigerador tres veces en un minuto o desliza un atenuador), solo necesitamos que se informe el estado final.
P.: ¿Se debe enviar el estado completo del dispositivo cuando se realizan llamadas a Report State?
R.: No se admiten las actualizaciones de estado parciales, por lo que las llamadas a Report State siempre deben incluir todos los datos de un atributo en particular que se haya actualizado. Si dos atributos crean una incoherencia, se deben informar juntos.
P.: ¿Google puede consultar mi dispositivo para obtener el estado (es decir, sondear el dispositivo)?
R.: Este es un mecanismo de resguardo que no recomendamos. Si necesitamos recurrir a sondear un dispositivo con frecuencia para esos usuarios, no podemos garantizar cuál será la carga adicional. La necesidad proviene de las nuevas superficies visuales. Además del problema de carga desconocido, será una experiencia del usuario degradada. Creemos que Report State es fundamental para la plataforma.
P.: ¿Qué atributos admiten Report State en este momento?
R.: Se admiten todos los atributos públicos que tienen estados asociados. También se debe informar cualquier cambio en el estado en línea del dispositivo.
Ten en cuenta que las escenas no tienen estados. Sin embargo, pueden provocar un cambio de estado en los dispositivos. Si algún dispositivo en Google Home Graph tiene un cambio de estado, se debe informar.
P.: ¿Report State requiere que se envíe una marca de tiempo?
R.: No requerimos una marca de tiempo. El último estado enviado anulará las llamadas anteriores.
P.: ¿Debo informar el estado por separado si ya lo envío en Query o Execute?
R.: Home Graph solo almacena el estado que se envía a través de Report State. El estado que se muestra como respuesta a los intents EXECUTE y QUERY solo se usa para las respuestas de voz al usuario y no se almacena. Como resultado, Report State se debe llamar incluso si el estado nuevo del dispositivo ya se mostró como respuesta a un intent EXECUTE o QUERY.
P.: ¿Cuáles son las consecuencias de no implementar por completo Report State dentro del plazo determinado?
R.: Esto provocará una experiencia del usuario degradada, por ejemplo, en las Google Home app (GHA) y las superficies visuales. Esto significa que se enviarán muchos intents QUERY para sondear el estado, y no podemos garantizar a qué corresponderá esta carga adicional en la nube del socio.
P.: ¿Cómo puedo probar nuestra implementación de Report State?
R.: Usa el Visor de Home Graph, una herramienta de pruebas de autoservicio que te muestra los estados actuales de los dispositivos almacenados en Home Graph.
P.: ¿Podemos usar un requestId aleatorio para Report State?
R.: Recomendamos que los socios usen el mismo requestId que recibieron de la solicitud EXECUTE si Report State activa la solicitud EXECUTE. De lo contrario, puedes usar un requestId aleatorio.
P.: Si un usuario tiene varios dispositivos y uno de ellos cambia de estado, ¿debemos informar el estado más reciente de todos los dispositivos?
R.: No. Solo debes informar el estado de ese dispositivo específico.
Prácticas recomendadas
P.: ¿Qué tipo de latencia es aceptable?
R.: Lo ideal es que sea inferior a 1,000 ms, y entre 2 y 5 s está bien. Si tu latencia ronda los 5 segundos, comunícate con nosotros.
P.: ¿Cómo hago para que mi bocina activada por voz responda correctamente cuando está sin conexión?
R.: Muestra el estado sin conexión para los dispositivos sin conexión. Mostramos "no disponible en este momento" como TTS para este error. Para obtener más información, consulta Errores y excepciones.