Genel
S: Buluttan buluta sipariş karşılama altyapımızı nerede ve hangi dilde uygulamalıyız?
Y: Modern SSL (TLS) ve OAuth 2.0'ı desteklediği sürece altyapınızı istediğiniz platformda ve dilde uygulayabilirsiniz. Güvenilirliği artırmak ve gerçek kullanıcı cihazlarında yürütme gecikmesini azaltmak için altyapınızın geri kalanına mümkün olduğunca yakın bir şekilde dağıtım yapmanızı öneririz.
S: Cihaz kimliklerinin benzersiz olması gerekir mi?
Y: Kimlikler benzersiz olmalıdır. Hizmetinizde benzersiz kimlikler yoksa bunlar en azından kullanıcı düzeyinde benzersiz olmalıdır. Birden fazla evi olan bir kullanıcı olduğunu düşünün. Her iki ev de aynı kullanıcıyla entegre edilmiş. Bir evde ışığın açılmasını istemek, başka bir evde aynı kimliğe sahip ışığın açılmasına neden olmamalıdır.
S: Cihaz adlarının benzersiz olması gerekir mi?
Y: Adların benzersiz olması gerekmez. Ancak zaman içinde, daha iyi bir kullanıcı deneyimi için kurulumdan sonra kötü adlandırmaları iyileştirmelerini isteyebiliriz.
Adlandırma ile ilgili kısa bir kılavuzu aşağıda bulabilirsiniz:
- Adlar, kullanıcıların gerçekten söyleyebileceği şeyler olmalıdır.
- Dizelerin alt kümelerini tanırız. Bu nedenle, "acme color light" (acme renkli ışık) dizesi varsa "acme light" (acme ışığı) dizesine de yanıt veririz.
- Hem ürün için açıklayıcı bir ad hem de kullanıcı tanımlı bir veya daha fazla ad kullanmanızı öneririz.
- Kullanıcıların ışıklara oda adı vermesi gerekmez. Bunun için odalarımız vardır. Işıklar, oda başına benzersiz adlara sahip olmalıdır ancak her şeyi kontrol etmek için her zaman çoğul kullanılabilir (örneğin, ofisteki apliklerdeki iki ampul "kuzey ışığı" ve "doğu ışığı" olarak adlandırılır ancak yalnızca "ışıklar" olarak kontrol edilebilir).
S: Cihaz durumu ne sıklıkta güncellenir?
Y: Geçici durum, kullanıcı tarafından başlatılan işlemler olan QUERY veya EXECUTE ile alındığında. Kullanıcı "Işık açık mı?" diye sorarsa veya ışığı açmak isterse mevcut durumu öğrenmek için sorgu yapmamız gerekir.
S: Home Graph'i doğrudan bir cihazın mevcut durumuyla güncellemek mümkün mü?
Y: Evet, Report State API çağrısını kullanın.
Hesap bağlama ve OAuth
S: Hesap bağlama işlemi yapmamız gerekiyor mu?
Y: Evet, kullanıcının cihazlarını sağlayıcının bulut hizmetlerine bağlamak için hesap bağlama işlemi gereklidir.
S: OAuth için erişim jetonlarının süresini her 15.213 saatte bir sona erdiriyoruz. Bu uygun mu?
Y: Evet, ancak lütfen 10-20 dakika gibi kısa bir geçerlilik süresiyle test edin. OAuth istemcimiz, gerektiğinde jetonları yenilemelidir. Kısa bir geçerlilik süresiyle yapılan testler, bu işlemin çalıştığını kanıtlayacaktır.
Niyetler
S: Senkronizasyon ne zaman gerçekleşir?
Y: SYNC, OAuth tamamlandıktan ve Request Sync çağrısı yapıldıktan hemen sonra gerçekleşir.
S: SYNC
neden çalışmıyor?
Y: Bunun başarısız olmasının birkaç yaygın nedeni vardır.
Yanlış cihaz türlerini gönderiyorsunuz.
- Örneğin,
action.devices.types.LIGHT
bekliyoruz ancak sizaction.devices.types.Light
gönderiyorsunuz.
- Örneğin,
Desteklenmeyen cihaz türleri gönderiyorsunuz.
- Örneğin,
action.devices.types.FLASHLIGHT
gönderiyorsunuz. Bu, desteklediğimiz bir şey değil.
- Örneğin,
Geçersiz/desteklenmeyen alanlar gönderiyorsunuz.
- Örneğin, spesifikasyonumuzda yer almayan bir alanınız var.
SYNC yanıtınızla ilgili başka bir biçimlendirme sorunu var.
- Maç tahminlerinizi kontrol edin.
Hesap bağlama sorunu yaşıyorsunuz.
- Lütfen SYNC isteğinin Auth üstbilgisinde geçerli bir erişim jetonu aldığınızı doğrulayın.
SYNC isteğine yanıt vermeniz çok uzun sürüyor.
- Lütfen SYNC isteğine 5 saniye içinde yanıt verdiğinizi doğrulayın.
S: "Beklemede" yanıtı uygun mu?
Y: Cihazlarınız gerçek zamanlı olarak kullanılabiliyorsa beklemede yerine başarılı/başarısız yanıtı vermenizi önemle rica ederiz. "Beklemede" yanıtına ihtiyacınız olduğunu düşünüyorsanız lütfen bizimle iletişime geçin. Bazı düşük güç tüketen, anlık olmayan cihazların beklemede yanıt ve eşzamansız yürütme modeli gerektirebileceğinin farkındayız.
Test ve Gönderme
S: Geliştirme için bir bulut ortamı oluşturabilir miyiz?
Y: Evet, kullanıma sunulmamış bir bulut ortamını ve yapılandırmayı test edebilirsiniz.
S: İşlemim, Google Home uygulamasının Ev Kontrolü bölümünde görünmüyor. Neden?
Y: Bu proje için geliştirici olduğunuzu onaylayın.
Rapor Durumu
S: Durum raporu özelliğini uygulamak için ön koşullar var mı?
Y: Projenin Akıllı Ev API'sini kullanması, OAuth2'yi desteklemesi ve raporlanacak durumları olan özelliklere sahip olması gerekir.
S: Bir cihazda durumu ne sıklıkta bildirmemiz gerekir?
Y: Google, geçiş ve nihai durumla ilgilenir. Ancak kısa süre içinde çok sayıda durum değişikliği olursa (örneğin, bir kullanıcı buzdolabını bir dakika içinde üç kez açıp kapatırsa veya bir dimmer kaydırırsa) yalnızca son durumun bildirilmesi gerekir.
S: Durum raporu çağrıları yapılırken cihazın tam durumu gönderilmesi gerekir mi?
Y: Kısmi durum güncellemeleri desteklenmez. Bu nedenle, Report State çağrıları, güncellenen belirli bir özelliğe ait tüm verileri her zaman içermelidir. İki özellik tutarsızlık oluşturacaksa birlikte bildirilmelidir.
S: Google, durumu almak için cihazıma sorgu gönderebilir mi (yani cihazı yoklayabilir mi)?
Y: Bu, önermediğimiz bir yedek mekanizmadır. Bu kullanıcılar için cihazı sık sık yoklamaya geri dönmemiz gerekirse ek yükün ne olacağını garanti edemeyiz. Bu ihtiyaç, yeni görsel yüzeylerden kaynaklanmaktadır. Bilinmeyen yükleme sorununa ek olarak, kullanıcı deneyimi de olumsuz etkilenir. Report State, platform için kritik öneme sahip.
S: Şu anda hangi özellikler Report State'i destekliyor?
Y: Durumlarla ilişkili tüm herkese açık özellikler desteklenir. Cihazın Online durumundaki herhangi bir değişiklik de bildirilmelidir.
Sahnelerin durumları olmadığını unutmayın. Ancak bu işlemler, cihazların durumunda değişikliklere neden olabilir. Google Home Graph içindeki herhangi bir cihazda durum değişikliği olursa bu durumun bildirilmesi gerekir.
S: Durum raporu gönderilirken zaman damgası gönderilmesi gerekir mi?
Y: Zaman damgası gerekmez. Gönderilen son durum, önceki çağrıları geçersiz kılar.
S: Durumu Query ve/veya Execute'ta zaten gönderiyorsam durumu ayrı olarak bildirmem gerekir mi?
Y: Home Graph yalnızca Report State üzerinden gönderilen durumu depolar. EXECUTE ve QUERY amaçlarına yanıt olarak döndürülen durum yalnızca kullanıcıya verilen konuşma yanıtları için kullanılır ve depolanmaz. Bu nedenle, cihazın yeni durumu EXECUTE veya QUERY amacına yanıt olarak zaten döndürülmüş olsa bile Report State çağrılmalıdır.
S: Belirtilen son tarihe kadar Report State'i tam olarak uygulamamanın sonuçları nelerdir?
Y: Bu durum, kullanıcı deneyiminin kötüleşmesine neden olur. Örneğin, Google Home app (GHA) ve görsel yüzeylerde bu durum yaşanır. Bu durumda, durum için yoklama yapmak üzere birçok QUERY amacı gönderilir ve bunun iş ortağı bulutunda ek yüke karşılık geleceğini garanti edemeyiz.
S: Report State uygulamamızı nasıl test edebilirim?
Y: Home Graph'de depolanan mevcut cihaz durumlarınızı gösteren self servis bir test aracı olan Home Graph Görüntüleyici'yi kullanın.
S: Rapor Durumu için rastgele bir requestId kullanabilir miyiz?
Y: Report State, EXECUTE isteğiyle tetikleniyorsa iş ortaklarının EXECUTE isteğinden aldıkları requestId'yi kullanmalarını öneririz. Aksi takdirde rastgele bir requestId kullanabilirsiniz.
S: Bir kullanıcının birden fazla cihazı varsa ve bunlardan birinin durumu değişirse tüm cihazların en son durumunu bildirmemiz gerekir mi?
Y: Hayır. Yalnızca söz konusu cihazın durumunu bildirmeniz gerekir.
En İyi Uygulamalar
S: Ne tür bir gecikme kabul edilebilir?
Y: 200 ms'den az olması idealdir, 2-5 saniye arasında olması kabul edilebilir. Gecikme süreniz yaklaşık 5 saniye ise bizimle iletişime geçin.
S: Sesle etkinleştirilen hoparlörüm çevrimdışıyken nasıl düzgün şekilde yanıt verir?
Y: Çevrimdışı cihazlar için çevrimdışı durumu döndürün. Bu hata için TTS olarak "şu anda kullanılamıyor" yanıtını veriyoruz. Daha fazla bilgi için Hatalar ve istisnalar bölümünü inceleyin.