General
P.: ¿Dónde y en qué idioma debemos implementar nuestra infraestructura de entrega de nube a nube?
R.: Siempre que admita SSL (TLS) y OAuth 2.0 modernos, puedes implementar tu infraestructura en cualquier plataforma y en cualquier 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 la ejecución en los dispositivos de los usuarios reales.
P.: ¿Los IDs de dispositivo deben ser únicos?
A: Los IDs deben ser únicos. Si no tienes IDs únicos en tu servicio, deben ser únicos, al menos, a nivel de cada 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 fomentemos que las personas mejoren 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 palabras que las personas puedan pronunciar.
- 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. Deberían tener nombres únicos por habitación, pero siempre pueden usar plurales para controlar todo (por ejemplo, las dos bombillas de los apliques de la oficina son "luz norte" y "luz este", pero se pueden controlar como "luces").
P.: ¿Con qué frecuencia se actualiza el estado del dispositivo?
A: El estado efímero se recupera en QUERY o EXECUTE, que son acciones que inicia el usuario. Si el usuario pregunta “¿está encendida la luz?” o quiere aclarar una luz, necesitaremos 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 vincular la cuenta?
R.: Sí, la vinculación de cuentas es necesaria para conectar los dispositivos de un usuario a los servicios en la nube del proveedor.
P.: En el caso de OAuth, hacemos que los tokens de acceso venzan cada 15, 213 horas. ¿Te parece bien?
R.: Sí, pero haz la prueba 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 se produce la sincronización?
A: La sincronización se produce 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.: Existen 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
, que no es compatible.
- Por ejemplo, envías
Estás enviando campos no válidos o no admitidos.
- Por ejemplo, tienes un campo que no está en nuestra especificación.
Hay otro problema de formato con tu respuesta de SYNC.
- Revisa los corchetes.
Tienes un problema con la vinculación de cuentas.
- Verifica que recibas un token de acceso válido en el encabezado de Auth de la solicitud SYNC.
Tardas demasiado en responder a la solicitud de sincronización.
- Verifica que respondes a la solicitud de SYNC en un plazo de 5 segundos.
P.: ¿Está bien una respuesta “pendiente”?
R.: Preferimos una respuesta de éxito o error, 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 no 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 una configuración y un entorno de nube que aún no se lanzaron.
P.: Mi Acción no se ve en la sección Control de la casa de la app de Google Home. ¿Qué sucede?
A: Confirmar que eres desarrollador de este proyecto
Estado del informe
P.: ¿Existen requisitos previos para implementar el estado del informe?
A: El proyecto debe usar la API de Smart Home, admitir OAuth2 y tener atributos que tengan estados que se informen.
P.: ¿Con qué frecuencia debemos informar el estado de un dispositivo?
A: A Google le interesa la transición y el estado final. Sin embargo, si hay muchos cambios de estado en un período breve (por ejemplo, un usuario abre y cierra la heladera 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?
A: No se admiten 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 crearan una incoherencia, se deben informar juntos.
P.: ¿Google puede consultar mi dispositivo para obtener el estado (es decir, sondearlo)?
A: Este es un mecanismo de resguardo que no recomendamos. Si necesitamos volver a sondear un dispositivo con frecuencia para esos usuarios, no podemos garantizar cuál será la carga adicional. La necesidad proviene de las nuevas plataformas visuales. Además del problema de carga desconocido, se producirá una experiencia del usuario degradada. Creemos que Report State es fundamental para la plataforma.
P.: ¿Qué atributos admiten el estado del informe en este momento?
A: Se admiten todos los atributos públicos que tengan 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 en los estados de los dispositivos. Si algún dispositivo en Google Home Graph tiene un estado de cambio, se debe informar.
P.: ¿El estado del informe 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 envío el estado en la consulta o la ejecución?
A: 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 se usa solo para las respuestas de voz al usuario y no se almacena. Como resultado, se debe llamar a Report State incluso si el estado nuevo del dispositivo ya se mostró como la respuesta a un intent EXECUTE o QUERY.
P.: ¿Cuáles son las consecuencias de no implementar completamente el estado de los informes dentro de la fecha límite establecida?
A: Esto provocará una experiencia del usuario degradada, por ejemplo, en Google Home app (GHA) y las plataformas visuales. Esto significa que se enviarán muchos intents de consulta para sondear el estado, y no podemos garantizar que esto corresponda a una carga adicional en la nube del socio.
P.: ¿Cómo puedo probar nuestra implementación de estado de informe?
A: Usa el Visor de Home Graph, una herramienta de prueba de autoservicio que muestra los estados actuales de los dispositivos almacenados en Home Graph.
P.: ¿Podemos usar un requestId aleatorio para el estado del informe?
R.: Recomendamos que los socios usen el mismo requestId que recibieron de la solicitud EXECUTE si la solicitud EXECUTE activa Report State; de lo contrario, puedes usar un requestId aleatorio.
P.: Si un usuario tiene varios dispositivos y se cambia el estado de uno de ellos, ¿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?
A: Lo ideal es menos de 200 ms, entre 2 y 5 s está bien. Si la latencia ronda los 5 segundos, comunícate con nosotros.
P.: ¿Cómo puedo hacer que mi bocina activada por voz responda correctamente cuando no tiene conexión?
A: Devuelve el estado sin conexión para los dispositivos sin conexión. Para este error, mostramos la frase "no disponible en este momento" como TTS. Para obtener más información, consulta Errores y excepciones.