Generale
D: Dove e in quale lingua dobbiamo implementare la nostra infrastruttura di evasione degli ordini cloud-to-cloud?
R: Se supporta SSL (TLS) moderno e OAuth 2.0, puoi implementare la tua infrastruttura su qualsiasi piattaforma e in qualsiasi lingua tu scelga. Ti consigliamo di eseguire il deployment il più vicino possibile al resto dell'infrastruttura, per migliorare l'affidabilità e ridurre la latenza di esecuzione sui dispositivi degli utenti reali.
D: Gli ID dispositivo devono essere univoci?
R: Gli ID devono essere univoci. Se non hai ID univoci nel tuo servizio, devono essere univoci almeno a livello di utente. Immagina un utente con più case, dove entrambe le case hanno integrazioni con lo stesso utente. La richiesta di accendere una luce in una casa non deve accendere una luce con lo stesso ID in un'altra casa.
D: I nomi dei dispositivi devono essere univoci?
R: I nomi non devono essere univoci, anche se nel tempo potremmo incoraggiare le persone a migliorare i nomi errati dopo la configurazione per una migliore esperienza utente.
Ecco una breve guida alla denominazione:
- I nomi devono essere cose che le persone possono effettivamente dire.
- Riconosciamo i sottoinsiemi di stringhe, quindi se hai "acme color light" risponderemo anche a "acme light".
- Ti consigliamo di utilizzare sia un nome descrittivo per il prodotto sia uno o più nomi definiti dall'utente.
- Gli utenti non devono assegnare nomi di stanze alle luci, perché abbiamo stanze per questo scopo; devono avere nomi univoci per stanza, ma possono sempre usare i plurali per comandare tutto (ad esempio, le due lampadine nelle applique dell'ufficio sono "luce nord" e "luce est", ma possono essere comandate semplicemente come "luci").
D: Con quale frequenza viene aggiornato lo stato del dispositivo?
R: Lo stato effimero viene recuperato al momento di QUERY o EXECUTE, che sono azioni avviate dall'utente. Se l'utente chiede "La luce è accesa?" o vuole illuminare una luce, dobbiamo eseguire una query per determinare lo stato attuale.
D: È possibile aggiornare Home Graph direttamente con lo stato attuale di un dispositivo?
R: Sì, utilizza la chiamata API Report State.
Collegamento dell'account e OAuth
D: Dobbiamo eseguire il collegamento dell'account?
R: Sì, il collegamento dell'account è obbligatorio per connettere i dispositivi di un utente ai servizi cloud del fornitore.
D: Per OAuth, i token di accesso scadono ogni 15, 213 ore.Va bene?
R: Sì, ma esegui i test con una data di scadenza abbastanza breve, ad esempio 10-20 minuti. Il nostro client OAuth dovrebbe aggiornare i token in base alle esigenze e il test con una data di scadenza breve dimostrerà che funziona.
Intent
D: Quando si verifica SYNC?
R: SYNC si verifica immediatamente dopo il completamento di OAuth e dopo aver effettuato una chiamata Request Sync.
D: Perché SYNC non funziona?
R: Esistono diversi motivi comuni per cui questa operazione potrebbe non riuscire.
Stai inviando i tipi di dispositivo errati.
- Ad esempio, ci aspettiamo
action.devices.types.LIGHT, ma tu inviiaction.devices.types.Light.
- Ad esempio, ci aspettiamo
Stai inviando tipi di dispositivo non supportati.
- Ad esempio, invii
action.devices.types.FLASHLIGHT: non è un elemento che supportiamo.
- Ad esempio, invii
Stai inviando campi non validi/non supportati.
- Ad esempio, hai un campo che non è presente nella nostra specifica.
Si è verificato un altro problema di formattazione con la risposta SYNC.
- Controlla le parentesi.
Si è verificato un problema di collegamento dell'account.
- Verifica di ricevere un token di accesso valido nell'intestazione Auth della richiesta SYNC.
Stai impiegando troppo tempo per rispondere alla richiesta SYNC.
- Verifica di rispondere alla richiesta SYNC entro 5 secondi.
D: Una risposta "in attesa" va bene?
R: Se i tuoi dispositivi sono disponibili in tempo reale, preferiremmo una risposta di successo/errore, anziché in attesa. Contattaci se ritieni di aver bisogno di una risposta "in attesa": riconosciamo che alcuni dispositivi a basso consumo e non in tempo reale potrebbero richiedere una risposta in attesa e un modello di esecuzione asincrono.
Test e contenuti inviati
D: Possiamo configurare un ambiente cloud di sviluppo?
R: Sì, puoi testare un ambiente cloud e una configurazione non ancora lanciati.
D: La mia azione non è visibile nella sezione Controllo domestico dell'app Google Home. Cosa sta succedendo?
R: Verifica di essere uno sviluppatore per questo progetto.
Report State
D: Esistono prerequisiti per l'implementazione di Report State?
R: Il progetto deve utilizzare l'API Smart Home, supportare OAuth2 e avere tratti con stati da segnalare.
D: Con quale frequenza dobbiamo segnalare lo stato di un dispositivo?
R: Google è interessata alla transizione e allo stato finale. Tuttavia, se si verificano molti cambiamenti di stato in un breve periodo di tempo (ad esempio, un utente apre e chiude il frigorifero tre volte in un minuto o fa scorrere un dimmer), abbiamo bisogno solo dello stato finale segnalato.
D: È necessario inviare lo stato completo del dispositivo quando si effettuano chiamate Report State?
R: Gli aggiornamenti di stato parziali non sono supportati, quindi le chiamate Report State devono sempre includere tutti i dati di un determinato tratto che è stato aggiornato. Se due tratti creano un'incoerenza, devono essere segnalati insieme.
D: Google può eseguire una query sul mio dispositivo per ottenere lo stato (ovvero eseguire il polling del dispositivo)?
R: Questo è un meccanismo di fallback che non consigliamo. Se dobbiamo eseguire il polling di un dispositivo di frequente per questi utenti, non possiamo garantire il carico aggiuntivo. La necessità deriva dalle nuove superfici visive. Oltre al problema del carico sconosciuto, l'esperienza utente sarà degradata. Riteniamo che Report State sia fondamentale per la piattaforma.
D: Quali tratti supportano Report State al momento?
R: Sono supportati tutti i tratti pubblici con stati associati. È necessario segnalare anche qualsiasi modifica dello stato online del dispositivo.
Tieni presente che le scene non hanno stati. Tuttavia, potrebbero comportare una modifica degli stati dei dispositivi. Se lo stato di un dispositivo in Google Home Graph cambia, è necessario segnalarlo.
D: Report State richiede l'invio di un timestamp?
R: Non è necessario un timestamp; l'ultimo stato inviato sostituirà le chiamate precedenti.
D: Devo segnalare lo stato separatamente se lo invio già in Query e/o Execute?
R: Home Graph memorizza solo lo stato inviato tramite Report State. Lo stato restituito come risposta agli intent EXECUTE e QUERY viene utilizzato solo per le risposte vocali all'utente e non viene memorizzato. Di conseguenza, Report State deve essere chiamato anche se il nuovo stato del dispositivo è già stato restituito come risposta a un intent EXECUTE o QUERY.
D: Quali sono le conseguenze del mancato completamento dell'implementazione di Report State entro la scadenza indicata?
R: Ciò comporterà un'esperienza utente degradata, ad esempio nelle Google Home app (GHA) e nelle superfici visive. Ciò significa che verranno inviati molti intent QUERY per eseguire il polling dello stato e non possiamo garantire che ciò corrisponda a un carico aggiuntivo sul cloud del partner.
D: Come posso testare l'implementazione di Report State?
R: Utilizza lo Home Graph Viewer, uno strumento di test self-service che mostra gli stati attuali dei dispositivi memorizzati in Home Graph.
D: Possiamo utilizzare un requestId casuale per Report State?
R: Se Report State viene attivato dalla richiesta EXECUTE, consigliamo ai partner di utilizzare lo stesso requestId ricevuto dalla richiesta EXECUTE. In caso contrario, puoi utilizzare un requestId casuale.
D: Se un utente ha più dispositivi e lo stato di uno di questi cambia, dobbiamo segnalare l'ultimo stato di tutti i dispositivi?
R: No. Devi segnalare solo lo stato di quel dispositivo specifico.
Best practice
D: Che tipo di latenza è accettabile?
R: L'ideale è meno di 1000 ms, ma va bene anche tra 2 e 5 secondi. Se la latenza si aggira intorno ai 5 secondi, contattaci.
D: In che modo posso fare in modo che il mio speaker ad attivazione vocale risponda correttamente quando è offline?
R: Restituisci lo stato offline per i dispositivi offline. Restituiamo "Non disponibile al momento" come TTS per questo errore. Per ulteriori informazioni, consulta la sezione Errori ed eccezioni.