Autorisations

Vous pouvez utiliser les autorisations dans votre action pour demander des données à caractère personnel à l'utilisateur afin de finaliser une demande. Par exemple, une action de livraison de repas peut utiliser l'autorisation d'accéder à la position de l'appareil pour demander des informations l'emplacement.

Lorsque vous ajoutez une autorisation à votre action, l'Assistant présente un standard, une interface cohérente pour demander à l'utilisateur l'autorisation de fournir à votre action.

Autorisations disponibles

Les autorisations suivantes peuvent être demandées par votre action:

  • DEVICE_PRECISE_LOCATION: demande la position exacte de l'appareil de l'utilisateur. (coordonnées et adresse postale).
  • DEVICE_COARSE_LOCATION: demande la position approximative de l'appareil de l'utilisateur. (code postal et ville).

Configurer les autorisations

Afin de configurer les autorisations pour votre action, vous devez ajouter un nouveau type d'espace . Configurez ensuite l'emplacement pour l'autorisation d'accès aux données que vous souhaitez demander.

Ajouter un type d'emplacement d'autorisation

Vous pouvez donner à votre action la possibilité d'obtenir des informations sur l'utilisateur à l'aide de la méthode Type d'emplacement actions.type.Permission.

Pour configurer ce type d'emplacement, procédez comme suit:

  1. Accédez à la console Actions, puis sélectionnez ou créez un projet.
  2. Cliquez sur Develop (Développer) dans le menu du haut.
  3. Sous Scenes (Scènes), cliquez sur la scène à laquelle vous souhaitez ajouter le flux d'autorisation.
  4. Dans la section Remplissage d'emplacements de la scène, cliquez sur + pour ajouter un emplacement.
  5. Dans le menu déroulant Sélectionner un type, sélectionnez le type d'emplacement actions.type.Permission.

  6. Dans le champ Saisir le nom de l'emplacement, attribuez un nom à l'emplacement.

  7. Activez l'option Écriture de la valeur d'emplacement personnalisé pour écrire le résultat dans une session. .

Configurer l'emplacement

Vous pouvez maintenant fournir une chaîne de contexte et une liste d'autorisations à accorder configurer l'emplacement. La chaîne de contexte explique pourquoi demandant des informations à l'utilisateur. Elle s'affiche pour les utilisateurs demandé à accorder l'autorisation à votre action.

Vous pouvez configurer la chaîne de contexte et les autorisations dans la section Configurer l'emplacement. , comme illustré dans la capture d'écran suivante:

L'extrait de code suivant présente un exemple de configuration d'emplacement:

{
  "@type": "type.googleapis.com/google.actions.conversation.v3.PermissionValueSpec",
  "context": "Context string",
  "permissions": ["DEVICE_PRECISE_LOCATION"]
}

L'invite présentée aux utilisateurs se présente sous la forme "$context_string, il suffit d'obtenir votre position actuelle auprès de Google. Est-ce que cela vous convient ?"

Vous pouvez obtenir les informations utilisateur suivantes à l'aide des codes d'autorisation:

Autorisation Description
DEVICE_PRECISE_LOCATION Position exacte de l'appareil (coordonnées et adresse postale)
DEVICE_COARSE_LOCATION Localisation approximative de l'appareil (code postal et ville)

Obtenir le résultat de l'autorisation

Les sections suivantes décrivent comment vérifier l'état des autorisations et lire les informations de l’utilisateur s’il octroie l’autorisation.

Vérifier l'état des autorisations

Lorsque l'utilisateur accorde son autorisation, l'état obtenu est écrit dans la session. associé à l'espace publicitaire.

Vous pouvez vérifier l'état de l'autorisation en vérifiant la valeur de session.params.<slot_name>.permissionStatus dans la condition d'une scène.

Pour vérifier l'état de l'emplacement d'autorisation, procédez comme suit:

  1. Accédez à la console Actions et cliquez sur Développer dans le menu supérieur.
  2. Sous Scenes (Scènes), cliquez sur la scène contenant l'emplacement d'autorisation.
  3. Dans la section Condition de la scène, cliquez sur + pour ajouter une nouvelle .
  4. Saisissez la condition suivante pour vérifier l'état de l'autorisation (où &lt;slot_name&gt; est le nom du paramètre de session que vous avez configuré dans votre emplacement):

    scene.slots.status == "FINAL" && (session.params.<slot_name>.permissionStatus == "PERMISSION_GRANTED" || session.params.<slot_name>.permissionStatus == "ALREADY_GRANTED")
    

  5. Dans la section Condition de la scène, cliquez sur + pour ajouter une nouvelle .

  6. Saisissez la condition suivante pour gérer les cas où l'utilisateur n'a pas consentent à partager leurs informations:

    scene.slots.status == "FINAL"
    

  7. Dans la section Condition de la scène, cliquez sur + pour ajouter une nouvelle .

  8. Saisissez la condition suivante pour gérer le cas où l'utilisateur a déjà l'autorisation accordée, et qu'il n'est pas nécessaire de la demander à nouveau:

    "DEVICE_PRECISE_LOCATION" in user.permissions
    

Lire les informations sur l'utilisateur

Si l'utilisateur donne son autorisation, ses informations sont fournies dans les requêtes ultérieures.

Dans l'extrait ci-dessous, vous pouvez voir les informations de localisation de l'appareil contenu dans une requête adressée au webhook sous device.currentLocation:

Requête 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": ""
          }
        }
      }
    }
    

Pour en savoir plus sur le schéma du type d'emplacement, consultez les Référence Location.

Vous pouvez accéder aux informations contenues dans la requête à partir de votre webhook, comme indiqué dans l'extrait suivant:

Webhook
  app.handle('handler', (conv) => {
    let location = conv.device.currentLocation;
    conv.add(`Your postal code is ${location.postalCode}`);
  });
    

Utiliser l'autorisation dans les requêtes

Vous pouvez également référencer l'autorisation dans les invites statiques. Par exemple, pour l’emplacement de l’appareil, vous pouvez utiliser $device.currentLocation.coordinates.* et $device.currentLocation.postalAddress.*. L'extrait de code suivant montre comment référencer la ville de l'utilisateur dans une requête:

candidates:
  - first_simple:
      variants:
        - speech: >-
            There are no events scheduled tomorrow in the city of $device.currentLocation.postalAddress.locality.