Możesz korzystać z uprawnień w akcji, aby poprosić użytkownika o dostęp do danych osobowych. . Na przykład zdarzenie dostawy jedzenia może użyć dostępu do lokalizacji urządzenia, aby zażądać informacji o lokalizacji.
Gdy dodasz uprawnienia do akcji, Asystent wyświetli standardowy komunikat, do wysyłania próśb o zgodę na udostępnienie do Akcji.
Dostępne uprawnienia
Akcja może mieć te uprawnienia:
DEVICE_PRECISE_LOCATION
: prosi o dokładną lokalizację urządzenia użytkownika (współrzędne i adres).DEVICE_COARSE_LOCATION
: prosi o przybliżoną lokalizację urządzenia użytkownika (kod pocztowy i miasto).
Konfigurowanie ustawień
Aby skonfigurować uprawnienia akcji, dodaj nowy typ przedziału scena. Następnie skonfigurujesz przedział dla żądanego uprawnienia do danych.
Dodaj typ przedziału uprawnień
Możesz zezwolić Akcji na pozyskiwanie informacji o użytkowniku za pomocą
Typ przedziału: actions.type.Permission
.
Aby skonfigurować ten typ przedziału, wykonaj te czynności:
- Otwórz konsolę działań i wybierz lub utwórz projekt.
- Kliknij Develop (Rozbuduj) w menu u góry.
- W sekcji Sceny kliknij scenę, do której chcesz dodać uprawnienia.
- W sekcji Wypełnianie boksu kliknij +, aby dodać nowy boks.
W menu Wybierz typ wybierz typ boksu
actions.type.Permission
.W polu Wpisz nazwę boksu wpisz nazwę.
Włącz zapis zwrotny niestandardowego przedziału, aby zapisać wynik w sesji. .
Skonfiguruj przedział
Możesz teraz podać ciąg kontekstu i listę uprawnień, które otrzymasz i skonfigurować przedział czasu. Ciąg kontekstowy to uzasadnienie, żądania informacji od użytkownika i są wyświetlane, prosi o przyznanie uprawnień akcji.
Ciąg tekstowy kontekstu i uprawnienia możesz skonfigurować w sekcji Skonfiguruj przedział jak na tym zrzucie ekranu:
Ten fragment kodu zawiera przykładową konfigurację przedziału:
{
"@type": "type.googleapis.com/google.actions.conversation.v3.PermissionValueSpec",
"context": "Context string",
"permissions": ["DEVICE_PRECISE_LOCATION"]
}
Prompt będzie miał postać "$context_string, wystarczy pobrać Twoją bieżącą lokalizację z Google. Czy możemy tak zrobić?”
Za pomocą kodów uprawnień możesz uzyskać następujące informacje o użytkowniku:
Uprawnienie | Opis |
---|---|
DEVICE_PRECISE_LOCATION |
Dokładna lokalizacja urządzenia (współrzędne i adres). |
DEVICE_COARSE_LOCATION |
Przybliżona lokalizacja urządzenia (kod pocztowy i miasto) |
Uzyskaj wynik dotyczący uprawnień
W poniższych sekcjach opisano, jak sprawdzić stan uprawnień i odczytać informacje o użytkowniku, jeśli udzieli on zgody.
Sprawdzanie stanu uprawnień
Gdy użytkownik przyzna uprawnienia, wynikowy stan zostanie zapisany w sesji. powiązany z boksem.
Stan uprawnień możesz sprawdzić, sprawdzając wartość
session.params.<slot_name>.permissionStatus
.
Aby sprawdzić stan przedziału uprawnień, wykonaj te czynności:
- Otwórz konsolę działań i kliknij Programuj w menu u góry.
- W sekcji Sceny kliknij scenę zawierającą przedział uprawnień.
- W sekcji Warunek sceny kliknij +, aby dodać nowy .
Wpisz poniższy warunek, aby sprawdzić stan uprawnień (gdzie <slot_name> to nazwa parametru sesji skonfigurowanego w tagu gniazdo):
scene.slots.status == "FINAL" && (session.params.<slot_name>.permissionStatus == "PERMISSION_GRANTED" || session.params.<slot_name>.permissionStatus == "ALREADY_GRANTED")
W sekcji Warunek sceny kliknij +, aby dodać nowy .
Wpisz poniższy warunek, aby obsłużyć zgłoszenie, w przypadku którego użytkownik nie wyrazić zgodę na udostępnienie swoich informacji:
scene.slots.status == "FINAL"
W sekcji Warunek sceny kliknij +, aby dodać nowy .
Wpisz poniższy warunek, aby obsłużyć zgłoszenie, w przypadku którego użytkownik już to zrobił ma uprawnienia i nie trzeba ponownie prosić:
"DEVICE_PRECISE_LOCATION" in user.permissions
Odczytywanie informacji o użytkownikach
Jeśli użytkownik przyzna odpowiednie uprawnienia, informacje o nim zostaną podane w kolejnych żądań.
Ten fragment kodu zawiera informacje o lokalizacji urządzenia
zawarte w żądaniu do webhooka pod adresem device.currentLocation
:
Żądanie 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": "" } } } } |
Więcej informacji o schemacie typu lokalizacji znajdziesz w
Location
.
Informacje zawarte w żądaniu możesz uzyskać z webhooka, jak pokazano poniżej w tym fragmencie:
Webhook |
---|
app.handle('handler', (conv) => { let location = conv.device.currentLocation; conv.add(`Your postal code is ${location.postalCode}`); }); |
Używanie uprawnień w promptach
Możesz też odwoływać się do tych uprawnień w promptach statycznych. Na przykład w przypadku lokalizacji urządzenia
możesz używać $device.currentLocation.coordinates.*
i $device.currentLocation.postalAddress.*
.
Ten fragment kodu pokazuje, jak uwzględnić w prompcie miasto użytkownika:
candidates:
- first_simple:
variants:
- speech: >-
There are no events scheduled tomorrow in the city of $device.currentLocation.postalAddress.locality.