Umum
T: Di mana dan dalam bahasa apa kita harus menerapkan infrastruktur fulfillment Cloud-to-cloud?
A: Selama mendukung SSL (TLS) modern dan OAuth 2.0, Anda dapat menerapkan infrastruktur di platform apa pun dan dalam bahasa apa pun yang Anda pilih. Sebaiknya deploy sebisa mungkin dekat dengan infrastruktur lainnya, untuk meningkatkan keandalan dan mengurangi latensi untuk dieksekusi ke perangkat pengguna yang sebenarnya.
T: Apakah ID perangkat harus unik?
A: 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, dengan 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?
A: Nama tidak harus unik, meskipun seiring waktu kami mungkin mendorong pengguna untuk memperbaiki penamaan yang buruk setelah penyiapan untuk pengalaman pengguna yang lebih baik.
Berikut adalah panduan penamaan singkat:
- Nama harus berupa hal yang benar-benar dapat diucapkan orang.
- Kami mengenali subkumpulan 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 lampu, karena kita memiliki ruangan untuk itu; lampu harus memiliki nama unik per ruangan, tetapi selalu dapat menggunakan bentuk jamak untuk mengontrol semuanya (misalnya, dua bohlam di sconce kantor adalah 'lampu utara' dan 'lampu timur', tetapi dapat dikontrol hanya sebagai 'lampu').
T: Seberapa sering status perangkat diperbarui?
A: Status sementara diambil setelah QUERY atau EXECUTE, yang merupakan tindakan yang dimulai pengguna. Jika pengguna bertanya 'apakah lampu menyala?', atau ingin menambah terang lampu, kita harus melakukan kueri untuk mengetahui status saat ini.
T: Apakah Home Graph dapat diperbarui langsung dengan status perangkat saat ini?
A: Ya, gunakan panggilan API Report State.
Penautan Akun dan OAuth
T: Apakah kita perlu melakukan penautan akun?
A: Ya, penautan akun diperlukan untuk menghubungkan perangkat pengguna ke layanan cloud penyedia.
T: Untuk OAuth, kami menetapkan masa berlaku token akses setiap 15,213 jam, apakah itu tidak masalah?
A: Ya, tetapi harap uji dengan waktu habis masa berlaku yang cukup singkat, misalnya 10-20 menit. Klien OAuth kami harus memuat ulang token sesuai kebutuhan, dan pengujian dengan waktu habis masa berlaku yang singkat akan membuktikan bahwa token tersebut berfungsi.
Intent
T: Kapan SYNC terjadi?
A: SYNC terjadi segera setelah OAuth selesai, dan setelah panggilan Request Sync dilakukan.
T: Mengapa SYNC
tidak berfungsi?
A: Ada sejumlah alasan umum mengapa hal ini dapat gagal.
Anda mengirimkan 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
- hal ini tidak didukung oleh kami.
- Misalnya, Anda mengirim
Anda mengirim kolom yang tidak valid/tidak didukung.
- Misalnya, Anda memiliki kolom yang tidak ada dalam spesifikasi kami.
Ada beberapa masalah format lain dengan respons SYNC Anda.
- Periksa tanda kurung 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” dapat diterima?
A: Kami sangat menyukai 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 dengan daya rendah dan non-real-time mungkin memerlukan respons tertunda dan model eksekusi asinkron.
Pengujian dan Pengiriman
T: Dapatkah kita menyiapkan lingkungan cloud pengembangan?
A: Ya, Anda dapat menguji konfigurasi dan lingkungan cloud yang belum diluncurkan.
T: Action saya tidak terlihat di bagian Kontrol Rumah di aplikasi Google Home. Apa yang terjadi?
A: Mengonfirmasi bahwa Anda adalah Developer untuk project ini.
Status Laporan
T: Apakah ada prasyarat untuk menerapkan Status Laporan?
A: Project harus menggunakan Smart Home API, mendukung OAuth2, dan harus memiliki karakteristik yang memiliki status untuk dilaporkan.
T: Seberapa sering kita perlu Melaporkan Status di perangkat?
A: 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 dimmer), kita hanya perlu melaporkan status akhir.
T: Apakah status perangkat lengkap harus dikirim saat melakukan panggilan Status Laporan?
A: Pembaruan status parsial tidak didukung, sehingga panggilan Report State harus selalu menyertakan semua data untuk sifat tertentu yang telah diperbarui. Jika dua karakteristik akan membuat inkonsistensi, keduanya harus dilaporkan kembali bersama-sama.
T: Dapatkah Google membuat kueri perangkat saya untuk mendapatkan status (yaitu, melakukan polling perangkat)?
J: Ini adalah mekanisme penggantian yang tidak kami rekomendasikan. Jika kami perlu kembali melakukan polling perangkat secara rutin 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, hal ini akan menurunkan pengalaman pengguna. Kami merasakan bahwa Report State sangat penting bagi platform.
T: Apa saja karakteristik yang saat ini mendukung Status Laporan?
A: Semua karakteristik publik yang memiliki status yang terkait didukung. Setiap perubahan pada status Online perangkat juga harus dilaporkan.
Perhatikan bahwa Scene tidak memiliki status. Namun, hal ini dapat menyebabkan perubahan status perangkat. Jika ada perangkat di Google Home Graph yang memiliki status perubahan, hal ini harus dilaporkan kembali.
T: Apakah Status Laporan memerlukan pengiriman stempel waktu?
J: Kami tidak memerlukan stempel waktu; status terakhir yang dikirim akan mengganti panggilan sebelumnya.
T: Apakah saya perlu Melaporkan Status secara terpisah jika saya sudah mengirim status dalam Kueri dan/atau Eksekusi?
A: Home Graph hanya menyimpan status yang dikirim melalui Report State. Status yang ditampilkan sebagai respons terhadap intent EXECUTE dan QUERY hanya digunakan untuk respons ucapan kepada pengguna dan tidak disimpan. Akibatnya, Report State harus dipanggil meskipun status baru perangkat telah ditampilkan sebagai respons ke intent EXECUTE atau QUERY.
T: Apa konsekuensinya jika tidak sepenuhnya menerapkan Status Laporan dalam batas waktu yang ditentukan?
A: Hal ini akan mengakibatkan pengalaman pengguna yang menurun, misalnya di Google Home app (GHA) dan platform visual. Artinya, banyak intent QUERY akan dikirim untuk melakukan polling status dan kami tidak dapat menjamin hal ini akan sesuai dengan beban tambahan di cloud partner.
T: Bagaimana cara menguji penerapan Status Laporan?
A: Gunakan Home Graph Viewer - alat pengujian mandiri yang menampilkan status perangkat saat ini yang disimpan di Home Graph.
T: Dapatkah kami menggunakan requestId acak untuk Status Laporan?
A: Sebaiknya partner menggunakan requestId yang sama dengan yang mereka terima dari permintaan EXECUTE jika Report State dipicu oleh permintaan EXECUTE. Jika tidak, Anda cukup menggunakan requestId acak.
T: Jika pengguna memiliki beberapa perangkat dan salah satunya statusnya berubah, apakah kita harus melaporkan status terbaru semua perangkat?
A: Tidak. Anda hanya perlu melaporkan status perangkat tertentu tersebut.
Praktik Terbaik
T: Jenis latensi apa yang dapat diterima?
J: Idealnya kurang dari 200 md, antara 2-5 detik tidak masalah. Jika latensi Anda berada di sekitar 5 detik, hubungi kami.
T: Bagaimana cara membuat speaker yang diaktifkan 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.