Du kannst Berechtigungen in deiner Aktion verwenden, um personenbezogene Daten vom Nutzer anzufordern um eine Anfrage abzuwickeln. Beispiel: Eine Lieferservice-Aktion kann eine Berechtigung zur Standortermittlung verwenden, um Informationen zu den Standort.
Wenn Sie Ihrer Aktion eine Berechtigung hinzufügen, zeigt Assistant einheitliche Oberfläche für die Anforderung der Nutzerberechtigung zur Bereitstellung der Informationen zu deiner Aktion hinzufügen.
Verfügbare Berechtigungen
Die folgenden Berechtigungen können von deiner Aktion angefordert werden:
DEVICE_PRECISE_LOCATION
: Fordert den genauen Gerätestandort des Nutzers an (Koordinaten und Adresse).DEVICE_COARSE_LOCATION
: Fordert den ungefähren Gerätestandort des Nutzers an (Postleitzahl und Stadt).
Berechtigungen einrichten
Um Berechtigungen für Ihre Aktion einzurichten, fügen Sie dem Szene. Anschließend konfigurieren Sie den Slot für die Datenberechtigung, die Sie anfordern möchten.
Berechtigungsslottyp hinzufügen
Du kannst deiner Aktion das Abrufen von Benutzerinformationen über die
actions.type.Permission
Slottyp.
So konfigurieren Sie diesen Slottyp:
- Gehen Sie zur Actions Console und wählen oder erstellen Sie für ein Projekt.
- Klicken Sie im oberen Menü auf Develop.
- Klicken Sie unter Szenen auf die Szene, der Sie den Berechtigungsablauf hinzufügen möchten.
- Klicken Sie im Abschnitt Slot-Füllung der Szene auf +, um einen neuen Zeitblock hinzuzufügen.
Wählen Sie im Drop-down-Menü Typ auswählen den Slottyp
actions.type.Permission
aus.Geben Sie im Feld Name der Anzeigenfläche eingeben einen Namen für die Anzeigenfläche ein.
Benutzerdefinierter Slotwert-Schreibvorgang aktivieren, um das Ergebnis in eine Sitzung zu schreiben .
Slot konfigurieren
Sie können jetzt einen Kontextstring und eine Liste der Berechtigungen angeben, die gewährt werden sollen konfigurieren Sie die Anzeigenfläche. Der Kontextstring ist die Begründung dafür, und fordert Informationen vom Nutzer an und wird Nutzern angezeigt, möchte deiner Aktion die Berechtigung erteilen.
Sie können den Kontextstring und die Berechtigungen auf der Seite Slot konfigurieren konfigurieren. wie im folgenden Screenshot gezeigt:
Das folgende Code-Snippet zeigt eine Beispielkonfiguration für eine Anzeigenfläche:
{
"@type": "type.googleapis.com/google.actions.conversation.v3.PermissionValueSpec",
"context": "Context string",
"permissions": ["DEVICE_PRECISE_LOCATION"]
}
Die Aufforderung, die Nutzern angezeigt wird, hat folgende Form: "$context_string, I're Du brauchst nur deinen aktuellen Standort von Google abzurufen. Ist das in Ordnung?“
Mithilfe der Berechtigungscodes erhalten Sie folgende Nutzerinformationen:
Berechtigung | Beschreibung |
---|---|
DEVICE_PRECISE_LOCATION |
Genauer Gerätestandort (Koordinaten und Adresse) |
DEVICE_COARSE_LOCATION |
Ungefährer Gerätestandort (Postleitzahl und Ort) |
Ergebnis der Berechtigung abrufen
In den folgenden Abschnitten wird beschrieben, wie Sie den Berechtigungsstatus prüfen und des Nutzers, wenn er die Berechtigung erteilt.
Berechtigungsstatus prüfen
Wenn der Nutzer die Berechtigung erteilt, wird der resultierende Status in die Sitzung geschrieben. -Parameter, der mit der Anzeigenfläche verknüpft ist.
Sie können den Berechtigungsstatus überprüfen, indem Sie den Wert der
session.params.<slot_name>.permissionStatus
in der Bedingung einer Szene.
So prüfen Sie den Status des Berechtigungsslots:
- Rufen Sie die Actions Console auf und klicken Sie auf Entwickeln.
- Klicken Sie unter Szenen auf die Szene mit dem Berechtigungsslot.
- Klicken Sie im Abschnitt Bedingung der Szene auf +, um eine neue .
Geben Sie die folgende Bedingung ein, um den Berechtigungsstatus zu prüfen (wobei <slot_name> ist der Name des Sitzungsparameters, den Sie in Ihrem Slot):
scene.slots.status == "FINAL" && (session.params.<slot_name>.permissionStatus == "PERMISSION_GRANTED" || session.params.<slot_name>.permissionStatus == "ALREADY_GRANTED")
Klicken Sie im Abschnitt Bedingung der Szene auf +, um eine neue .
Geben Sie die folgende Bedingung für den Fall ein, dass der Nutzer nicht in die Weitergabe ihrer Daten einwilligen:
scene.slots.status == "FINAL"
Klicken Sie im Abschnitt Bedingung der Szene auf +, um eine neue .
Geben Sie die folgende Bedingung für den Fall ein, dass der Nutzer bereits Berechtigung erteilt und muss nicht noch einmal gefragt werden:
"DEVICE_PRECISE_LOCATION" in user.permissions
Nutzerinformationen lesen
Wenn der Nutzer die Berechtigung einräumt, werden die Nutzerinformationen in nachfolgende Anfragen.
Im Snippet unten sehen Sie Informationen zum Gerätestandort
in einer Anfrage an den Webhook unter device.currentLocation
enthalten:
Anfrage (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": "" } } } } |
Weitere Informationen zum Schema des Standorttyps finden Sie in der
Referenz zu Location
Sie können wie unten gezeigt über den Webhook auf die in der Anfrage enthaltenen Informationen zugreifen. im folgenden Snippet einfügen:
Webhook |
---|
app.handle('handler', (conv) => { let location = conv.device.currentLocation; conv.add(`Your postal code is ${location.postalCode}`); }); |
Berechtigung in Prompts verwenden
Sie können die Berechtigung auch in statischen Prompts referenzieren. Zum Beispiel für den Gerätestandort:
können Sie $device.currentLocation.coordinates.*
und $device.currentLocation.postalAddress.*
verwenden.
Das folgende Code-Snippet zeigt, wie in einer Eingabeaufforderung auf die Stadt des Nutzers verwiesen wird:
candidates:
- first_simple:
variants:
- speech: >-
There are no events scheduled tomorrow in the city of $device.currentLocation.postalAddress.locality.