Generale
D: Dove e in quale lingua dobbiamo implementare la nostra infrastruttura di evasione cloud-to-cloud?
R: Se supporta SSL (TLS) e OAuth 2.0 moderni, 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 della tua infrastruttura, per migliorare l'affidabilità e ridurre la latenza di esecuzione sui dispositivi utente effettivi.
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 guida rapida per la 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 alle stanze per le luci, perché abbiamo stanze per questo scopo. Devono avere nomi univoci per stanza, ma possono sempre usare i plurali per controllare tutto (ad esempio, le due lampadine nelle applique dell'ufficio sono "luce nord" e "luce est", ma possono essere controllate semplicemente come "luci").
D: Con quale frequenza viene aggiornato lo stato del dispositivo?
R: Lo stato effimero viene recuperato in seguito a QUERY o EXECUTE, che sono azioni avviate dall'utente. Se l'utente chiede "La luce è accesa?" o vuole aumentare la luminosità di una luce, dobbiamo eseguire una query per capire 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: È necessario collegare gli account?
R: Sì, il collegamento dell'account è necessario per connettere i dispositivi di un utente ai servizi cloud del provider.
D: Per OAuth, facciamo scadere i token di accesso ogni 15.213 ore. Va bene?
R: Sì, ma esegui il test con un tempo di scadenza piuttosto breve, ad esempio 10-20 minuti. Il nostro client OAuth deve aggiornare i token in base alle necessità e il test con un breve periodo di scadenza dimostrerà che funziona.
Intent
D: Quando avviene la sincronizzazione?
R: La SINCRONIZZAZIONE avviene immediatamente dopo il completamento di OAuth e dopo 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 dispositivi sbagliati.
- Ad esempio, ci aspettiamo
action.devices.types.LIGHT
, ma tu inviiaction.devices.types.Light
.
- Ad esempio, ci aspettiamo
Stai inviando tipi di dispositivi non supportati.
- Ad esempio, invii
action.devices.types.FLASHLIGHT
, ma non è un'azione supportata.
- Ad esempio, invii
Stai inviando campi non validi/non supportati.
- Ad esempio, hai un campo che non è presente nelle nostre specifiche.
Si è verificato un altro problema di formattazione con la risposta SYNC.
- Controlla i tuoi pronostici.
Stai riscontrando 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" è accettabile?
R: Preferiremmo una risposta di tipo successo/errore, anziché in attesa, se i tuoi dispositivi sono disponibili in tempo reale. Contattaci se ritieni di aver bisogno di una risposta "in attesa". Ci rendiamo conto che alcuni dispositivi a basso consumo non in tempo reale potrebbero richiedere una risposta in attesa e un modello di esecuzione asincrono.
Test e invio
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 della casa dell'app Google Home. Cosa sta succedendo?
R: Verifica di essere uno sviluppatore per questo progetto.
Stato del report
D: Esistono prerequisiti per l'implementazione di Report State?
R: Il progetto deve utilizzare l'API Smart Home, supportare OAuth2 e avere caratteristiche 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 sposta 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 parziali dello stato non sono supportati, quindi le chiamate Report State devono sempre includere tutti i dati di una determinata caratteristica che è stata aggiornata. Se due caratteristiche creerebbero un'incoerenza, devono essere segnalate insieme.
D: Google può interrogare il mio dispositivo per ottenere lo stato (ovvero eseguire il polling del dispositivo)?
R: Si tratta di un meccanismo di fallback che non consigliamo. Se dobbiamo eseguire il polling di un dispositivo di frequente per questi utenti, non possiamo garantire quale sarà il carico aggiuntivo. La necessità deriva dalle nuove piattaforme visive. Oltre al problema di caricamento sconosciuto, l'esperienza utente sarà peggiore. Riteniamo che Report State sia fondamentale per la piattaforma.
D: Quali caratteristiche supportano lo stato del report al momento?
R: Sono supportati tutti i trait pubblici a cui sono associati stati. Deve essere segnalata anche qualsiasi modifica dello stato online del dispositivo.
Tieni presente che le scene non hanno stati. Tuttavia, potrebbero comportare una modifica dello stato 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 richiediamo 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 peggiore, ad esempio nelle Google Home app (GHA) e nelle piattaforme visive. Ciò significa che verranno inviati molti intent QUERY per eseguire il polling dello stato e non possiamo garantire a cosa corrisponderà un carico aggiuntivo sul cloud del partner.
D: Come posso testare l'implementazione di Report State?
R: Utilizza lo strumento di visualizzazione del grafico della casa, 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: Consigliamo ai partner di utilizzare lo stesso requestId ricevuto dalla richiesta EXECUTE se l'Report State viene attivato dalla richiesta EXECUTE, altrimenti puoi utilizzare un requestId casuale.
D: Se un utente ha più dispositivi e lo stato di uno di questi viene modificato, dobbiamo segnalare lo stato più recente di tutti i dispositivi?
R: No. Devi segnalare solo lo stato di quel dispositivo specifico.
Best practice
D: Quale tipo di latenza è accettabile?
R: L'ideale è meno di 200 ms, ma anche tra 2 e 5 secondi va bene. Se la latenza si aggira intorno ai 5 secondi, contattaci.
D: Come faccio a fare in modo che lo speaker con controllo vocale risponda correttamente quando è offline?
R: Restituisci lo stato offline per i dispositivi offline. Restituiamo "non disponibile al momento" come sintesi vocale per questo errore. Per ulteriori informazioni, consulta la sezione Errori ed eccezioni.