Jika perangkat atau permintaan tidak berfungsi seperti yang diharapkan, penting untuk memberikan penanganan error dan komunikasi yang baik kepada pengguna agar mereka memahami apa yang terjadi, dan jika memungkinkan, cara memperbaikinya. Pastikan Anda memikirkan kemungkinan skenario kegagalan dan bagaimana perangkat Anda harus merespons: Bagaimana jika pengguna mengganggu tugas yang sedang berlangsung? Bagaimana jika pengguna meminta tindakan dari perangkat saat perangkat sedang offline? Merencanakan masalah ini dan membantu pengguna pulih dari masalah tersebut dapat menghindari frustrasi pengguna dan menciptakan pengalaman berkualitas lebih tinggi untuk perangkat Anda.
Panduan ini memberikan beberapa contoh respons intent yang menangani error. Lihat
Error dan pengecualian untuk
meninjau nilai errorCode yang valid untuk error dan pengecualian.
Contoh 1: Respons error untuk intent EXECUTE
Seorang pengguna akhir memiliki dua lampu smart yang terpasang di ruang keluarganya. Pengguna
mengeluarkan perintah "nyalakan lampu ruang keluarga" dan Google mengirimkan intent
EXECUTE ke URL fulfillment Anda. Anda mendapati bahwa perangkat pengguna sedang offline
dan tidak dapat dikontrol, sehingga fulfillment Anda menampilkan respons EXECUTE dengan
status ERROR dan errorCode deviceOffline.
Contoh ini menunjukkan cara menampilkan respons EXECUTE dengan
errorCode dari perangkat lampu seperti yang dijelaskan sebelumnya:
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [ { "ids": [ "light-device-id-1" ], "status": "ERROR", "errorCode": "deviceOffline" }, { "ids": [ "light-device-id-2" ], "status": "ERROR", "errorCode": "deviceOffline" } ] } }
Google Assistant akan menampilkan perintah kepada pengguna dengan "perangkat
tidak tersedia saat ini" setelah menerima respons. Ingat bahwa Anda masih perlu mengirim status offline untuk perangkat dalam status laporan setelah mengirim errorCode deviceOffline dalam respons EXECUTE.
Contoh 2: Pengecualian yang tidak memblokir untuk intent EXECUTE
Pengguna mencoba mengunci smart lock di pintu depan menggunakan
Assistant. Anda berhasil mengontrol smart lock, tetapi
mengetahui bahwa baterai perangkat lemah, sehingga fulfillment Anda menampilkan respons EXECUTE
dengan status SUCCESS dan exceptionCode lowBattery.
Contoh ini menunjukkan cara mengirim respons EXECUTE dengan
exceptionCode dari perangkat smart lock seperti yang dijelaskan sebelumnya:
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["lock-device-id-1"], "status": "SUCCESS", "states": { "on": true, "online": true, "isLocked": true, "isJammed": false, "exceptionCode": "lowBattery" } }] } }
Assistant akan meminta pengguna dengan "perangkat memiliki baterai lemah" setelah menerima respons.
Contoh 3: Notifikasi error proaktif
Dalam beberapa kasus, memberi tahu pengguna tentang error dapat membantu, terutama untuk fungsi yang diharapkan pengguna akan selesai secara otomatis. Untuk karakteristik yang mendukung notifikasi proaktif, Anda dapat secara proaktif memberi tahu pengguna saat terjadi error jika Anda telah menerapkan smart home notifikasi proaktif.
Pengering smart sedang berjalan, dan seseorang membuka pintu sebelum siklus selesai.
Anda dapat memanggil metode reportStateAndNotifications
Google Home Graph API untuk mengirim notifikasi proaktif dengan
errorCode:
Contoh ini menunjukkan cara mengirim notifikasi proaktif dengan
errorCode dari perangkat pengering seperti yang dijelaskan sebelumnya:
POST https://homegraph.googleapis.com/v1/devices:reportStateAndNotification
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "agentUserId": "agent-user-id", "eventId": "unique-event-id", "payload": { "devices": { "notifications": { "dryer-device-id": { "RunCycle": { "priority": 0, "status": "FAILURE", "errorCode": "deviceDoorOpen" } } }, "states": { "dryer-device-id": { "isRunning": false, "isPaused": true } } } } }
Assistant akan menampilkan perintah "pintu perangkat terbuka" kepada pengguna setelah menerima notifikasi. Anda dapat mengirim status perangkat yang sesuai bersama dengan notifikasi dalam payload yang sama.
Contoh 4: Notifikasi tindak lanjut
Untuk perintah karakteristik yang mendukung notifikasi tindak lanjut, Anda dapat mengirim notifikasi tindak lanjut kepada pengguna saat terjadi error atau pengecualian, jika Anda telah menerapkan smart home notifikasi tindak lanjut.
Pengguna memberikan perintah untuk menutup pintu garasi, tetapi pintu macet
saat menutup. Anda dapat mengirim notifikasi tindak lanjut dengan errorCode:
POST https://homegraph.googleapis.com/v1/devices:reportStateAndNotification
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "agentUserId": "agent-user-id", "eventId": "unique-event-id", "payload": { "devices": { "notifications": { "door-device-id": { "LockUnlock": { "priority": 0, "followUpResponse": { "status": "FAILURE", "errorCode": "deviceJammingDetected", "followUpToken": "follow-up-token-1" } } } }, "states": { "door-device-id": { "openPercent": 70 } } } } }
Assistant akan menampilkan pesan "perangkat macet" kepada pengguna setelah menerima notifikasi. Anda dapat mengirim status perangkat yang sesuai dengan notifikasi dalam payload yang sama.
Untuk mengetahui informasi selengkapnya dan errorCodes mendetail, lihat dokumentasi referensi Error dan pengecualian.