Anda dapat menggunakan izin di Action untuk meminta data pribadi dari pengguna untuk menyelesaikan permintaan. Misalnya, Action pengiriman makanan dapat menggunakan izin akses lokasi perangkat untuk meminta informasi tentang lokasi HTTP/HTTPS.
Saat Anda menambahkan izin ke Action, Asisten akan menyajikan antarmuka yang konsisten untuk meminta izin dari pengguna untuk menyediakan informasi ke Action Anda.
Izin yang tersedia
Izin berikut dapat diminta oleh Action Anda:
DEVICE_PRECISE_LOCATION
: Meminta lokasi akurat perangkat pengguna (koordinat dan alamat).DEVICE_COARSE_LOCATION
: Meminta lokasi sementara perangkat pengguna (kode pos dan kota).
Siapkan izin
Untuk menyiapkan izin bagi Action Anda, tambahkan jenis slot baru ke latar depan. Kemudian, Anda mengonfigurasi slot untuk izin data yang ingin diminta.
Tambahkan jenis slot izin
Anda dapat memberi Action Anda kemampuan untuk mendapatkan informasi pengguna dengan
Jenis slot actions.type.Permission
.
Untuk mengonfigurasi jenis slot ini, ikuti langkah-langkah berikut:
- Buka Konsol Actions dan pilih atau buat untuk sebuah proyek.
- Klik Develop di menu atas.
- Di bagian Scenes, klik scene yang ingin Anda tambahi alur izin.
- Di bagian Slot fill pada scene, klik + untuk menambahkan slot baru.
Di menu dropdown Select type, pilih jenis slot
actions.type.Permission
.Di kolom Masukkan nama slot, beri nama slot.
Aktifkan Writeback nilai slot kustom untuk menulis hasil ke sesi .
Konfigurasi slot
Anda kini dapat menyediakan string konteks dan daftar izin yang akan diberikan melakukan konfigurasi slot. String konteks adalah alasan mengapa Anda meminta informasi dari pengguna, dan ditampilkan kepada pengguna ketika mereka diminta untuk memberikan izin ke Action Anda.
Anda dapat mengonfigurasi string konteks dan izin di Konfigurasi slot seperti yang ditunjukkan dalam screenshot berikut:
Cuplikan kode berikut menunjukkan contoh konfigurasi slot:
{
"@type": "type.googleapis.com/google.actions.conversation.v3.PermissionValueSpec",
"context": "Context string",
"permissions": ["DEVICE_PRECISE_LOCATION"]
}
Perintah yang ditampilkan kepada pengguna akan dalam bentuk "$context_string, saya akan hanya perlu mendapatkan lokasi Anda saat ini dari Google. Apakah Anda setuju?"
Anda bisa mendapatkan informasi pengguna berikut menggunakan kode izin:
Izin | Deskripsi |
---|---|
DEVICE_PRECISE_LOCATION |
Lokasi presisi perangkat (koordinat dan alamat) |
DEVICE_COARSE_LOCATION |
Lokasi perkiraan perangkat (kode pos dan kota) |
Mendapatkan hasil izin
Bagian berikut menjelaskan cara memeriksa status izin dan membaca informasi pengguna jika mereka memberikan izin.
Memeriksa status izin
Saat pengguna memberikan izin, status yang dihasilkan akan ditulis ke sesi yang terkait dengan slot.
Anda dapat memeriksa status izin
akses dengan memeriksa nilai dari
session.params.<slot_name>.permissionStatus
dalam kondisi scene.
Untuk memeriksa status slot izin, ikuti langkah-langkah berikut:
- Buka Konsol Actions dan klik Kembangkan di menu atas.
- Di bagian Scenes, klik scene yang berisi slot izin.
- Di bagian Kondisi adegan, klik + untuk menambahkan yang baru .
Masukkan kondisi berikut untuk memeriksa status izin (dengan <slot_name> adalah nama parameter sesi yang Anda konfigurasi di (slot):
scene.slots.status == "FINAL" && (session.params.<slot_name>.permissionStatus == "PERMISSION_GRANTED" || session.params.<slot_name>.permissionStatus == "ALREADY_GRANTED")
Di bagian Kondisi adegan, klik + untuk menambahkan yang baru .
Masukkan kondisi berikut untuk menangani kasus jika pengguna tidak menyetujui untuk membagikan informasi mereka:
scene.slots.status == "FINAL"
Di bagian Kondisi adegan, klik + untuk menambahkan yang baru .
Masukkan kondisi berikut untuk menangani kasus jika pengguna sudah sudah diberi izin, dan tidak perlu ditanya lagi:
"DEVICE_PRECISE_LOCATION" in user.permissions
Membaca informasi pengguna
Jika pengguna memberikan izin, informasi pengguna diberikan di terhadap permintaan selanjutnya.
Dalam cuplikan di bawah, Anda dapat melihat informasi lokasi perangkat
yang ada dalam permintaan ke webhook di bawah device.currentLocation
:
Meminta JSON |
---|
{ "handler": { "name": "handler" }, "intent": { "name": "", "params": { "deviceLoc": { "original": "", "resolved": { "@type": "type.googleapis.com/google.actions.conversation.v3.PermissionValue", "permissionStatus": "PERMISSION_GRANTED", "grantedPermissions": [ "DEVICE_PRECISE_LOCATION" ] } } }, "query": "Yes" }, "scene": { "name": "Scene", "slotFillingStatus": "FINAL", "slots": { "deviceLoc": { "mode": "REQUIRED", "status": "SLOT_UNSPECIFIED", "value": { "grantedPermissions": [ "DEVICE_PRECISE_LOCATION" ], "@type": "type.googleapis.com/google.actions.conversation.v3.PermissionValue", "permissionStatus": "PERMISSION_GRANTED" }, "updated": true } }, "next": { "name": "actions.scene.END_CONVERSATION" } }, "session": { "id": "session_id", "params": { "deviceLoc": { "grantedPermissions": [ "DEVICE_PRECISE_LOCATION" ], "permissionStatus": "PERMISSION_GRANTED", "@type": "type.googleapis.com/google.actions.conversation.v3.PermissionValue" } }, "typeOverrides": [], "languageCode": "" }, "user": { "locale": "en-US", "params": {}, "accountLinkingStatus": "ACCOUNT_LINKING_STATUS_UNSPECIFIED", "verificationStatus": "VERIFIED", "packageEntitlements": [], "permissions": [ "DEVICE_PRECISE_LOCATION" ], "lastSeenTime": "2021-02-08T20:43:47Z" }, "home": { "params": {} }, "device": { "capabilities": [ "SPEECH", "RICH_RESPONSE", "LONG_FORM_AUDIO" ], "currentLocation": { "coordinates": { "latitude": 37.422, "longitude": -122.084 }, "postalAddress": { "revision": 0, "regionCode": "US", "languageCode": "en", "postalCode": "94043", "sortingCode": "", "administrativeArea": "California", "locality": "Mountain View", "sublocality": "", "addressLines": ["1600 Amphitheatre Parkway"], "recipients": [], "organization": "" } } } } |
Untuk mengetahui informasi selengkapnya tentang skema jenis lokasi, lihat
Referensi Location
.
Anda dapat mengakses informasi yang terdapat dalam permintaan dari webhook Anda, seperti yang ditunjukkan dalam cuplikan berikut:
Webhook |
---|
app.handle('handler', (conv) => { let location = conv.device.currentLocation; conv.add(`Your postal code is ${location.postalCode}`); }); |
Gunakan izin dalam perintah
Anda juga dapat merujuk izin dalam perintah statis. Misalnya, untuk lokasi perangkat,
Anda dapat menggunakan $device.currentLocation.coordinates.*
dan $device.currentLocation.postalAddress.*
.
Cuplikan kode berikut menunjukkan cara merujuk kota pengguna dalam perintah:
candidates:
- first_simple:
variants:
- speech: >-
There are no events scheduled tomorrow in the city of $device.currentLocation.postalAddress.locality.