Umum
T: Di mana dan dalam bahasa apa kami harus menerapkan infrastruktur pemenuhan Cloud-to-cloud?
J: Selama mendukung SSL (TLS) modern dan OAuth 2.0, Anda dapat menerapkan infrastruktur di platform mana pun dan dalam bahasa apa pun yang Anda pilih. Sebaiknya Anda men-deploy sedekat mungkin dengan infrastruktur lainnya untuk meningkatkan keandalan dan mengurangi latensi eksekusi ke perangkat pengguna sebenarnya.
T: Apakah ID perangkat harus unik?
J: ID harus unik. Jika Anda tidak memiliki ID unik di seluruh layanan, ID tersebut harus unik setidaknya di tingkat per pengguna. Bayangkan pengguna dengan beberapa rumah, di mana kedua rumah memiliki integrasi ke pengguna yang sama. Meminta untuk menyalakan lampu di satu rumah tidak boleh menyalakan lampu dengan ID yang sama di rumah lain.
T: Apakah nama perangkat harus unik?
J: Nama tidak harus unik, meskipun seiring waktu kami dapat mendorong orang untuk memperbaiki penamaan yang buruk setelah penyiapan demi pengalaman pengguna yang lebih baik.
Berikut panduan singkat penamaan:
- Nama harus berupa sesuatu yang dapat diucapkan orang.
- Kami mengenali subset string, jadi jika Anda memiliki 'acme color light', kami juga akan menjawab 'acme light'.
- Sebaiknya gunakan nama deskriptif untuk produk dan satu atau beberapa nama yang ditentukan pengguna.
- Pengguna tidak perlu memberi nama ruangan untuk lampu, karena kita memiliki ruangan untuk itu; lampu harus memiliki nama unik per ruangan, tetapi selalu dapat menggunakan bentuk jamak untuk memerintah semuanya (misalnya, dua bohlam di lampu dinding kantor adalah 'lampu utara' dan 'lampu timur', tetapi dapat diperintah hanya sebagai 'lampu').
T: Seberapa sering status perangkat diperbarui?
J: Status sementara diambil saat QUERY atau EKSEKUSI, yang merupakan tindakan yang dimulai pengguna. Jika pengguna bertanya ‘apakah lampu menyala?', atau ingin menerangkan lampu, kita perlu melakukan kueri untuk mengetahui status saat ini.
T: Apakah Home Graph dapat diupdate secara langsung dengan status perangkat saat ini?
J: Ya, gunakan panggilan API Report State.
Penautan Akun dan OAuth
T: Apakah kita perlu melakukan penautan akun?
J: Ya, penautan akun diperlukan untuk menghubungkan perangkat pengguna ke layanan cloud penyedia.
T: Untuk OAuth, kami menghentikan masa berlaku token akses setiap 15.213 jam, apakah itu tidak masalah?
J: Ya, tetapi harap uji dengan waktu habis yang cukup singkat, misalnya 10-20 menit. Klien OAuth kita harus memuat ulang token sesuai kebutuhan, dan pengujian dengan waktu habis masa berlaku yang singkat akan membuktikan bahwa hal itu berfungsi.
Intent
T: Kapan SINKRONISASI terjadi?
J: SYNC terjadi segera setelah OAuth selesai, dan setelah panggilan Request Sync dilakukan.
T: Mengapa SYNC tidak berfungsi?
J: Ada sejumlah alasan umum mengapa hal ini dapat gagal.
Anda mengirim jenis perangkat yang salah.
- Misalnya, kami mengharapkan
action.devices.types.LIGHT, tetapi Anda mengirimaction.devices.types.Light.
- Misalnya, kami mengharapkan
Anda mengirim jenis perangkat yang tidak didukung.
- Misalnya, Anda mengirim
action.devices.types.FLASHLIGHT- ini bukan sesuatu yang kami dukung.
- Misalnya, Anda mengirim
Anda mengirim kolom yang tidak valid/tidak didukung.
- Misalnya, Anda memiliki kolom yang tidak ada dalam spesifikasi kami.
Ada masalah pemformatan lain dengan respons SYNC Anda.
- Periksa bagan Anda.
Anda mengalami masalah penautan akun.
- Pastikan Anda menerima token akses yang valid di header Auth permintaan SYNC.
Anda memerlukan waktu terlalu lama untuk merespons permintaan SYNC.
- Pastikan Anda merespons permintaan SYNC dalam waktu 5 detik.
T: Apakah respons “tertunda” tidak masalah?
J: Kami lebih memilih respons berhasil/gagal, bukan tertunda, jika perangkat Anda tersedia secara real time. Hubungi kami jika Anda merasa memerlukan respons 'tertunda' -- kami menyadari bahwa beberapa perangkat non-real-time berdaya rendah mungkin memerlukan respons tertunda dan model eksekusi asinkron.
Pengujian dan Pengiriman
T: Dapatkah kita menyiapkan lingkungan cloud pengembangan?
J: Ya, Anda dapat menguji lingkungan dan konfigurasi cloud yang belum diluncurkan.
T: Action saya tidak terlihat di bagian Kontrol Rumah pada aplikasi Google Home. Apa yang terjadi?
J: Pastikan Anda adalah Developer untuk project ini.
Status Laporan
T: Apakah ada prasyarat untuk menerapkan Report State?
J: Project harus menggunakan Smart Home API, mendukung OAuth2, dan harus memiliki trait yang memiliki status untuk dilaporkan.
T: Seberapa sering kita perlu Melaporkan Status di perangkat?
J: Google tertarik dengan transisi dan status terminal. Namun, jika ada banyak perubahan status dalam waktu singkat (misalnya, pengguna membuka dan menutup kulkas tiga kali dalam satu menit atau menggeser peredup), kita hanya memerlukan status akhir yang dilaporkan.
T: Apakah status perangkat lengkap perlu dikirim saat melakukan panggilan Report State?
J: Pembaruan status parsial tidak didukung, sehingga panggilan Report State harus selalu menyertakan semua data untuk karakteristik tertentu yang telah diperbarui. Jika dua ciri akan menimbulkan inkonsistensi, keduanya harus dilaporkan bersama.
T: Dapatkah Google membuat kueri perangkat saya untuk mendapatkan statusnya (yaitu, melakukan polling perangkat)?
J: Ini adalah mekanisme penggantian yang tidak kami rekomendasikan. Jika kami perlu melakukan polling perangkat secara sering untuk pengguna tersebut, kami tidak dapat menjamin beban tambahan yang akan terjadi. Kebutuhan ini berasal dari platform visual baru. Selain masalah pemuatan yang tidak diketahui, pengalaman pengguna akan menurun. Kami merasa bahwa Report State sangat penting untuk platform.
T: Apa saja karakteristik yang mendukung Status Laporan saat ini?
J: Semua trait publik yang memiliki status terkait didukung. Setiap perubahan dalam status Online perangkat juga harus dilaporkan.
Perhatikan bahwa Adegan tidak memiliki status. Namun, tindakan ini dapat menyebabkan perubahan status perangkat. Jika ada perangkat dalam Google Home Graph yang berubah status, hal ini harus dilaporkan kembali.
T: Apakah Report State mengharuskan stempel waktu dikirim?
J: Kami tidak memerlukan stempel waktu; status terakhir yang dikirim akan menggantikan panggilan sebelumnya.
T: Apakah saya perlu melaporkan Status secara terpisah jika saya sudah mengirimkan status dalam Query dan/atau Execute?
J: Home Graph hanya menyimpan status yang dikirim melalui Report State. Status yang ditampilkan sebagai respons terhadap maksud EKSEKUSI dan KUERI hanya digunakan untuk respons ucapan kepada pengguna dan tidak disimpan. Akibatnya, Report State harus dipanggil meskipun status baru perangkat telah ditampilkan sebagai respons terhadap intent EXECUTE atau QUERY.
T: Apa konsekuensi jika tidak menerapkan Report State sepenuhnya dalam batas waktu yang ditentukan?
J: Hal ini akan mengakibatkan pengalaman pengguna yang menurun, misalnya di Google Home app (GHA) dan platform visual. Hal ini berarti banyak intent QUERY akan dikirim untuk melakukan polling status dan kami tidak dapat menjamin bahwa hal ini akan sesuai dengan beban tambahan pada cloud partner.
T: Bagaimana cara menguji penerapan Status Laporan kami?
J: Gunakan Home Graph Viewer - alat pengujian layanan mandiri yang menunjukkan status perangkat saat ini yang disimpan di Home Graph.
T: Dapatkah kami menggunakan requestId acak untuk Report State?
J: Sebaiknya partner menggunakan requestId yang sama dengan yang mereka terima dari permintaan EXECUTE jika Report State dipicu oleh permintaan EXECUTE, atau Anda dapat menggunakan requestId acak.
T: Jika pengguna memiliki beberapa perangkat dan salah satunya berubah status, apakah kita harus melaporkan status terbaru semua perangkat?
J: Tidak. Anda hanya perlu melaporkan status perangkat tertentu tersebut.
Praktik Terbaik
T: Latensi seperti apa yang dapat diterima?
J: Idealnya kurang dari 200 md, antara 2-5 dpt diterima. Jika latensi Anda berkisar di angka 5 detik, hubungi kami.
T: Bagaimana cara membuat speaker yang diaktifkan dengan suara merespons dengan benar saat offline?
A: Menampilkan status offline untuk perangkat offline. Kami menampilkan 'tidak tersedia saat ini' sebagai TTS untuk error ini. Untuk mengetahui informasi selengkapnya, lihat Error dan pengecualian.