Gérer les contextes

Dans la plupart des cas, vous configurez les contextes au moment de la conception (lors de la création d'un agent). Par exemple, si vous avez une phrase d'entraînement comme "Je souhaite ajouter une pizza à mon panier."

Dans certains scénarios avancés, vous pouvez également écrire un code permettant d'obtenir et de définir des contextes lors de l'exécution (au cours d'une conversation en direct). Par exemple, vous avez détecté la position d'un appareil et vous l'avez ajoutée au contexte, afin de pouvoir vous y reporter ultérieurement.

Ce document explique comment obtenir et définir des contextes au moment de la conception et de l'exécution à l'aide de la console Dialogflow, de l'API ou du fulfillment.

Nommer les contextes

Les règles suivantes s'appliquent à l'attribution de noms des contextes :

Règle Examples
Utilisez des noms alphanumériques. mycontext1
Utilisez - ou _ à la place des espaces. my-context-1
Les noms ne sont pas sensibles à la casse. Abc123 et abc123 sont considérés comme équivalents.
Tous les noms de contexte sont en minuscules si vous utilisez l'API. abc123

Définir des contextes lors de la conception

Console

  1. Accédez à la console Dialogflow ES.
  2. Sélectionnez un agent.
  3. Cliquez sur Intents dans le menu de la barre latérale gauche.
  4. Développez la section Contextes dans les données d'intents.
  5. Cliquez sur le champ Ajouter un contexte de sortie ou Ajouter un contexte d'entrée dans les données d'intents.
  6. Entrez un nom pour le contexte et appuyez sur la touche Retour.
  7. Pour les contextes de sortie, vous pouvez également cliquer sur le cercle de la durée de vie et modifier celle-ci.Instantané de l'interface utilisateur concernant la durée de vie
  8. Ajoutez d'autres contextes, si nécessaire.
  9. Cliquez sur Enregistrer.

API

Consultez la documentation de référence sur les intents.

Définir des contextes lors de l'exécution

Fulfillment

Lorsque votre service de webhook envoie une réponse WebhookResponse, définissez le champ outputContexts sur les contextes actifs souhaités.

API

La requête d'appel detectIntent de type Sessions contient un champ queryParameters.contexts, qui permet de définir les contextes actifs.

Voici un exemple JSON REST d'une requête detectIntent :

POST https://dialogflow.googleapis.com/v2/{session=projects/*/agent/sessions/*}:detectIntent

{
  "queryInput": {
    "text": {
      "languageCode": "en-US",
      "text": "I would like to add pizza to my shopping cart."
    }
  },
  "queryParams": {
    "contexts": [{
        "name": "projects/project-id/agent/sessions/session-id/contexts/product-chosen",
        "lifespanCount": 5,
        "parameters": {
          "product": "Pizza",
          "device-location" "@52.3377871,4.8698096,17z"
        }
      }]
  }
}

Vous pouvez à tout moment appeler les méthodes Create, Delete et Update à l'aide du type Contexts.

Obtenir des contextes lors de l'exécution

Fulfillment

Lorsque votre service de webhook reçoit une requête WebhookRequest, le champ queryResult.outputContexts contient les contextes actifs.

API

La réponse à un appel detectIntent de type Sessions contient un champ queryResult.outputContexts, qui fournit la liste des contextes actifs.

Voici un exemple REST JSON d'une réponse detectIntent :

{
  "responseId": "response-id",
  "queryResult": {
    "queryText": "I would like to add pizza to my shopping cart.",
    "parameters": {
      "product": "pizza"
    },
    "allRequiredParamsPresent": true,
    "fulfillmentText": "The product has been added.",
    "fulfillmentMessages": [
      {
        "text": {
          "text": [
            "The product has been added."
          ]
        }
      }
    ],
    "outputContexts": [
      {
        "name": "projects/project-id/agent/sessions/session-id/contexts/product-chosen",
        "lifespanCount": 5,
        "parameters": {
          "product": "Pizza",
          "device-location" "@52.3377871,4.8698096,17z"
        }
      }
    ],
    "intent": {
      "name": "projects/project-id/agent/intents/intent-id",
      "displayName": "buy-product"
    },
    "intentDetectionConfidence": 0.8057143,
    "languageCode": "en",
  }
}

Vous pouvez à tout moment appeler les méthodes Get et List à l'aide du type Contexts.