Generale
D: dove e in quale linguaggio dobbiamo implementare la nostra infrastruttura di evasione degli ordini cloud-to-cloud?
R: Puoi implementare la tua infrastruttura su qualsiasi piattaforma e in qualsiasi lingua, a condizione che supporti SSL (TLS) e OAuth 2.0 moderni. Ti consigliamo di eseguire il deployment il più vicino possibile al resto della tua infrastruttura per migliorare l'affidabilità e ridurre la latenza per l'esecuzione sui dispositivi degli utenti effettivi.
D: gli ID dispositivo devono essere univoci?
R: Gli ID devono essere univoci. Se non disponi di ID univoci per il tuo servizio, devono essere univoci almeno a livello di utente. Immagina un utente con più case, in cui entrambe le case hanno integrazioni con lo stesso utente. Se chiedi di accendere una luce in una casa, non deve accendersi 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 gli utenti a migliorare i nomi sbagliati dopo la configurazione per offrire un'esperienza utente migliore.
Ecco una breve guida alla scelta del nome:
- I nomi devono essere parole che le persone possono effettivamente pronunciare.
- Riconosciamo sottoinsiemi di stringhe, quindi se hai "acme color light" risponderemo anche a "acme light".
- Ti consigliamo di utilizzare un nome descrittivo per il prodotto e uno o più nomi definiti dall'utente.
- Gli utenti non devono assegnare nomi alle luci, perché abbiamo le stanze per questo; devono avere nomi univoci per ogni 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 "lampade").
D: con quale frequenza viene aggiornato lo stato del dispositivo?
R: lo stato effimero viene recuperato in QUERY o EXECUTE, che sono azioni avviate dall'utente. Se l'utente chiede "è accesa la luce?" o vuole illuminare una luce, dovremo eseguire una query per capire lo stato corrente.
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 degli account è necessario per collegare i dispositivi di un utente ai servizi cloud del fornitore.
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 abbastanza breve, ad esempio 10-20 minuti. Il nostro client OAuth dovrebbe aggiornare i token in base alle esigenze e il test con un termine di scadenza breve dimostrerà che funziona.
Intent
D: Quando avviene la sincronizzazione?
R: la sincronizzazione avviene immediatamente dopo il completamento dell'autenticazione OAuth e dopo che è stata effettuata una chiamata Request Sync.
D: perché SYNC
non funziona?
R: Esistono diversi motivi comuni per cui l'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
, che non è supportato.
- 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'header Auth della richiesta SYNC.
Stai impiegando troppo tempo per rispondere alla richiesta di sincronizzazione.
- Verifica di rispondere alla richiesta SYNC entro 5 secondi.
D: va bene una risposta "in attesa"?
R: preferiremmo una risposta di successo/errore, anziché in attesa, se i tuoi dispositivi sono disponibili in tempo reale. Contattaci se ritieni di avere bisogno di una risposta "in attesa". Siamo consapevoli 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 invio
D: Possiamo configurare un ambiente cloud di sviluppo?
R: Sì, puoi testare un ambiente e una configurazione cloud non lanciati.
D: La mia azione non è visibile nella sezione Controllo della casa dell'app Google Home. Che cosa succede?
R: Conferma di essere uno sviluppatore per questo progetto.
Stato del report
D: sono previsti prerequisiti per l'implementazione dello stato del report?
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 su un dispositivo?
R: Google è interessata alla transizione e allo stato finale. Tuttavia, se si verificano molte modifiche dello stato in un breve periodo di tempo (ad esempio, un utente apre e chiude il frigorifero tre volte in un minuto o regola un dimmer), è sufficiente segnalare solo lo stato finale.
D: è necessario inviare lo stato completo del dispositivo quando si effettuano chiamate allo stato del report?
R: Gli aggiornamenti parziali dello stato non sono supportati, pertanto le chiamate Report State devono sempre includere tutti i dati relativi a un determinato tratto aggiornato. Se due tratti creano un'incongruenza, devono essere segnalati insieme.
D: Google può eseguire query sul mio dispositivo per ottenere lo stato (ovvero eseguire il polling del dispositivo)?
R: si tratta di un meccanismo di riserva che non consigliamo. Se dobbiamo ricorrere nuovamente al polling di un dispositivo per questi utenti, non possiamo garantire quale sarà il carico aggiuntivo. La necessità deriva dalle nuove piattaforme visive. Oltre al problema di caricamento sconosciuto, si verificherà un'esperienza utente degradata. Ritengo che Report State sia fondamentale per la piattaforma.
D: quali tratti supportano attualmente lo stato del report?
R: sono supportati tutti gli attributi pubblici con stati associati. Deve essere segnalata anche qualsiasi variazione dello stato Online del dispositivo.
Tieni presente che le scene non hanno stati. Tuttavia, potrebbero comportare una modifica dello stato o degli stati dei dispositivi. Se un dispositivo in Google Home Graph ha un stato di variazione, deve essere segnalato.
D: lo stato del report richiede l'invio di un timestamp?
R: Non è richiesto un timestamp. L'ultimo stato inviato sostituirà le chiamate precedenti.
D: Devo segnalare lo stato separatamente se lo sto già inviando in Query e/o Execute?
R: Home Graph memorizza solo lo stato inviato tramiteReport 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 intento EXECUTE o QUERY.
D: quali sono le conseguenze della mancata implementazione completa dello stato del report entro la scadenza indicata?
R: Ciò comporterà un peggioramento dell'esperienza utente, ad esempio nelle piattaforme visuali e Google Home app (GHA). Ciò significa che molti intent di QUERY verranno inviati per eseguire il polling dello stato e non possiamo garantire che questo corrisponderà a un carico aggiuntivo sul cloud del partner.
D: come faccio a testare l'implementazione dello stato del report?
R: utilizza 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 lo stato del report?
R: Consigliamo ai partner di utilizzare lo stesso requestId ricevuto dalla richiesta EXECUTE se Report State viene attivato dalla richiesta EXECUTE, altrimenti puoi semplicemente 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 solo segnalare lo stato del dispositivo specifico.
Best practice
D: quale tipo di latenza è accettabile?
R: Il valore ideale è inferiore a 200 ms, ma anche 2-5 secondi sono accettabili. Se la latenza oscilla intorno ai 5 secondi, contattaci.
D: come faccio a fare in modo che il mio altoparlante con comandi vocali risponda correttamente quando è offline?
R: Restituisce lo stato offline per i dispositivi offline. Per questo errore viene restituito il testo "non disponibile al momento" come TTS. Per ulteriori informazioni, consulta Errori ed eccezioni.