Puoi utilizzare le autorizzazioni nell'Azione per richiedere dati personali all'utente ai fini del completamento di una richiesta. Ad esempio, un'azione di consegna di cibo potrebbe utilizzare un'autorizzazione di accesso alla posizione del dispositivo per richiedere informazioni sull'accesso in ogni località.
Quando aggiungi un'autorizzazione all'azione, l'assistente presenta uno standard, coerente per richiedere l'autorizzazione all'utente per fornire informazioni all'Azione.
Autorizzazioni disponibili
L'Azione può richiedere le seguenti autorizzazioni:
DEVICE_PRECISE_LOCATION
: richiede la posizione esatta del dispositivo dell'utente (coordinate e indirizzo).DEVICE_COARSE_LOCATION
: richiede la posizione approssimativa del dispositivo dell'utente. (codice postale e città).
Configurare le autorizzazioni
Per impostare le autorizzazioni per l'Azione, aggiungi un nuovo tipo di area alla scena. Devi quindi configurare lo slot per l'autorizzazione dati che vuoi richiedere.
Aggiungi tipo di slot di autorizzazione
Puoi concedere all'Azione la possibilità di ottenere informazioni sugli utenti con la
Tipo di slot actions.type.Permission
.
Per configurare questo tipo di slot:
- Vai alla console Actions e seleziona o crea di un progetto.
- Fai clic su Sviluppa nel menu in alto.
- In Scene, fai clic sulla scena a cui vuoi aggiungere il flusso di autorizzazione.
- Nella sezione Riempimento degli slot della scena, fai clic su + per aggiungere un nuovo spazio.
Nel menu a discesa Seleziona tipo, seleziona il tipo di area
actions.type.Permission
.Nel campo Inserisci il nome dell'area, assegna un nome all'area.
Attiva Writeback valore slot personalizzato per scrivere il risultato in una sessione .
Configura slot
Ora puoi fornire una stringa di contesto e un elenco di autorizzazioni da concedere e configurare lo slot. La stringa di contesto è la motivazione per cui richiedono informazioni all'utente e vengono mostrate agli utenti quando viene chiesto di concedere l'autorizzazione all'azione.
Puoi configurare la stringa di contesto e le autorizzazioni nella sezione Configura slot come mostrato nello screenshot seguente:
Il seguente snippet di codice mostra una configurazione di slot di esempio:
{
"@type": "type.googleapis.com/google.actions.conversation.v3.PermissionValueSpec",
"context": "Context string",
"permissions": ["DEVICE_PRECISE_LOCATION"]
}
Il messaggio mostrato agli utenti avrà il formato "$context_string, devi solo ottenere la tua posizione attuale da Google. Va bene?"
Utilizzando i codici di autorizzazione puoi ottenere le seguenti informazioni utente:
Autorizzazione | Descrizione |
---|---|
DEVICE_PRECISE_LOCATION |
Posizione esatta del dispositivo (coordinate e indirizzo) |
DEVICE_COARSE_LOCATION |
Posizione approssimativa del dispositivo (codice postale e città) |
Ottieni risultato autorizzazione
Le seguenti sezioni descrivono come controllare lo stato dell'autorizzazione e leggere le informazioni dell'utente se concede l'autorizzazione.
Controllare lo stato delle autorizzazioni
Quando l'utente concede l'autorizzazione, lo stato risultante viene scritto nella sessione. associato allo slot.
Puoi controllare lo stato dell'autorizzazione controllando il valore di
session.params.<slot_name>.permissionStatus
nelle condizioni di una scena.
Per controllare lo stato dello spazio di autorizzazione:
- Vai alla console Actions e fai clic su Sviluppa nel menu in alto.
- In Scene, fai clic sulla scena contenente lo spazio per le autorizzazioni.
- Nella sezione Condizione della scena, fai clic su + per aggiungerne una nuova .
Inserisci la seguente condizione per verificare lo stato dell'autorizzazione (dove <slot_name> è il nome del parametro di sessione che hai configurato nella slot):
scene.slots.status == "FINAL" && (session.params.<slot_name>.permissionStatus == "PERMISSION_GRANTED" || session.params.<slot_name>.permissionStatus == "ALREADY_GRANTED")
Nella sezione Condizione della scena, fai clic su + per aggiungerne una nuova .
Inserisci la seguente condizione per gestire il caso in cui l'utente non Acconsenti alla condivisione delle proprie informazioni:
scene.slots.status == "FINAL"
Nella sezione Condizione della scena, fai clic su + per aggiungerne una nuova .
Inserisci la seguente condizione per gestire il caso in cui l'utente ha già è stata concessa l'autorizzazione e non sarà necessario richiederla di nuovo:
"DEVICE_PRECISE_LOCATION" in user.permissions
Lettura informazioni utente
Se l'utente concede l'autorizzazione, le informazioni sull'utente vengono fornite in richieste successive.
Nello snippet seguente puoi vedere le informazioni sulla posizione del dispositivo
contenuto in una richiesta al webhook in device.currentLocation
:
Richiedi 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": "" } } } } |
Per ulteriori informazioni sullo schema del tipo di località, consulta le
Riferimento Location
.
Puoi accedere alle informazioni contenute nella richiesta dal webhook, come mostrato nel seguente snippet:
Webhook |
---|
app.handle('handler', (conv) => { let location = conv.device.currentLocation; conv.add(`Your postal code is ${location.postalCode}`); }); |
Usa l'autorizzazione nei prompt
Puoi anche fare riferimento all'autorizzazione nei prompt statici. Ad esempio, per la posizione del dispositivo,
puoi usare $device.currentLocation.coordinates.*
e $device.currentLocation.postalAddress.*
.
Il seguente snippet di codice mostra come fare riferimento alla città dell'utente in un prompt:
candidates:
- first_simple:
variants:
- speech: >-
There are no events scheduled tomorrow in the city of $device.currentLocation.postalAddress.locality.