Berechtigungen

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:

  1. Gehen Sie zur Actions Console und wählen oder erstellen Sie für ein Projekt.
  2. Klicken Sie im oberen Menü auf Develop.
  3. Klicken Sie unter Szenen auf die Szene, der Sie den Berechtigungsablauf hinzufügen möchten.
  4. Klicken Sie im Abschnitt Slot-Füllung der Szene auf +, um einen neuen Zeitblock hinzuzufügen.
  5. Wählen Sie im Drop-down-Menü Typ auswählen den Slottyp actions.type.Permission aus.

  6. Geben Sie im Feld Name der Anzeigenfläche eingeben einen Namen für die Anzeigenfläche ein.

  7. 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. aus, 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 die folgenden 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:

  1. Rufen Sie die Actions Console auf und klicken Sie auf Entwickeln.
  2. Klicken Sie unter Szenen auf die Szene mit dem Berechtigungsslot.
  3. Klicken Sie im Abschnitt Bedingung der Szene auf +, um eine neue .
  4. Geben Sie die folgende Bedingung ein, um den Berechtigungsstatus zu prüfen (wobei &lt;slot_name&gt; 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")
    

  5. Klicken Sie im Abschnitt Bedingung der Szene auf +, um eine neue .

  6. Geben Sie die folgende Bedingung für den Fall ein, dass der Nutzer nicht in die Weitergabe ihrer Daten einwilligen:

    scene.slots.status == "FINAL"
    

  7. Klicken Sie im Abschnitt Bedingung der Szene auf +, um eine neue .

  8. 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 erteilt, 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.