Régionalisation et résidence des données

Dialogflow assure la résidence des données de manière à conserver physiquement vos données au repos dans une région ou un emplacement. Lorsque vous spécifiez une région, les données au repos ne sont pas répliquées en dehors de cette région. Les tarifs sont identiques pour toutes les régions.

Les régions sont utilisées pour les raisons suivantes :

  • Votre système peut être soumis à des exigences réglementaires qui régissent l'emplacement de vos données.
  • Les latences réseau peuvent être améliorées lorsque les données se trouvent dans la même région que vos clients. Par exemple, les clients du Royaume-Uni peuvent s'attendre à une meilleure latence s'ils utilisent la région europe-west2.

Données au repos

Toutes les données des développeurs et des utilisateurs finaux de Dialogflow sont incluses dans les données au repos. Exemple :

  • Toutes les ressources de l'agent définies avec la console ou l'API (intents, entités, etc.)
  • Tous les paramètres de l'agent définis avec la console ou l'API
  • Historique des requêtes
  • Résultats de validation
  • Tâches de création de modèle
  • Tâches d'entraînement
  • Tâches d'opération de longue durée

Régions disponibles

Dialogflow fournit les régions suivantes :

Regroupement de pays Emplacement géographique. ID de la région
Europe Belgique europe-west1
Europe Londres europe-west2
Asie-Pacifique Sydney australia-southeast1
Asie-Pacifique Tokyo asia-northeast1
Global La diffusion Dialogflow est globale, les données au repos sont disponibles aux États-Unis global (recommandé), us (obsolète) ou aucune région (par défaut)

Sélectionner une région avec la console

En haut à gauche de la console Dialogflow ES, une liste déroulante permet de sélectionner une région. Chaque agent dispose d'une région immuable qui est spécifiée lors de sa création. Lorsque vous sélectionnez une région dans la console, vous pouvez uniquement répertorier ou créer des agents dans cette région. La région par défaut est us.

Sélectionner une région avec l'API

Si votre agent a été créé dans une région autre que celle par défaut, vous devez spécifier cette région lorsque vous appelez l'API pour les requêtes d'exécution et lors de la conception.

Pour indiquer une région, vous devez fournir un paramètre location aux requêtes API. Pour les appels REST, effectuez les deux opérations suivantes :

  • Fournissez le paramètre de chemin d'URL location.
  • Utilisez le nom d'hôte propre à l'emplacement du formulaire REGION_ID-dialogflow.googleapis.com. Exemple : asia-northeast1-dialogflow.googleapis.com. Si l'emplacement spécifié dans le nom d'hôte ne correspond pas à celui du chemin de l'URL, la requête est rejetée.

Pour les bibliothèques clientes, consultez la documentation de la bibliothèque cliente. Vous devez procéder comme suit :

  • Définissez le point de terminaison du service Dialogflow sur :

    REGION_ID-dialogflow.googleapis.com:443
    
  • Définissez le nom de la session sur :

    projects/PROJECT_ID/locations/REGION_ID/agent/sessions/SESSION_ID
    

Exemple :

REST

Avant d'utiliser les données de requête, effectuez les remplacements suivants:

  • PROJECT_ID : ID de votre projet Google Cloud
  • REGION_ID : ID de région, par exemple europe-west2
  • SESSION_ID : un ID de session

Méthode HTTP et URL :

POST https://REGION_ID-dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/REGION_ID/agent/sessions/SESSION_ID:detectIntent

Corps JSON de la requête :

{
  "query_input": {
    "text": {
      "text": "I want a pony.",
      "language_code": "en-US"
    }
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

 

Java

Pour vous authentifier auprès de Dialogflow, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.


import com.google.api.gax.rpc.ApiException;
import com.google.cloud.dialogflow.v2beta1.DetectIntentResponse;
import com.google.cloud.dialogflow.v2beta1.QueryInput;
import com.google.cloud.dialogflow.v2beta1.QueryResult;
import com.google.cloud.dialogflow.v2beta1.SessionName;
import com.google.cloud.dialogflow.v2beta1.SessionsClient;
import com.google.cloud.dialogflow.v2beta1.SessionsSettings;
import com.google.cloud.dialogflow.v2beta1.TextInput;
import com.google.common.collect.Maps;
import java.io.IOException;
import java.util.List;
import java.util.Map;

public class DetectIntentWithLocation {

  // DialogFlow API Detect Intent sample with text inputs.
  public static Map<String, QueryResult> detectIntentWithLocation(
      String projectId,
      String locationId,
      List<String> texts,
      String sessionId,
      String languageCode)
      throws IOException, ApiException {
    SessionsSettings sessionsSettings =
        SessionsSettings.newBuilder()
            .setEndpoint(locationId + "-dialogflow.googleapis.com:443")
            .build();
    Map<String, QueryResult> queryResults = Maps.newHashMap();
    // Instantiates a client
    try (SessionsClient sessionsClient = SessionsClient.create(sessionsSettings)) {
      // Set the session name using the projectId (my-project-id), locationId and sessionId (UUID)
      SessionName session =
          SessionName.ofProjectLocationSessionName(projectId, locationId, sessionId);
      System.out.println("Session Path: " + session.toString());

      // Detect intents for each text input
      for (String text : texts) {
        // Set the text (hello) and language code (en-US) for the query
        TextInput.Builder textInput =
            TextInput.newBuilder().setText(text).setLanguageCode(languageCode);

        // Build the query with the TextInput
        QueryInput queryInput = QueryInput.newBuilder().setText(textInput).build();

        // Performs the detect intent request
        DetectIntentResponse response = sessionsClient.detectIntent(session, queryInput);

        // Display the query result
        QueryResult queryResult = response.getQueryResult();

        System.out.println("====================");
        System.out.format("Query Text: '%s'\n", queryResult.getQueryText());
        System.out.format(
            "Detected Intent: %s (confidence: %f)\n",
            queryResult.getIntent().getDisplayName(), queryResult.getIntentDetectionConfidence());
        System.out.format(
            "Fulfillment Text: '%s'\n",
            queryResult.getFulfillmentMessagesCount() > 0
                ? queryResult.getFulfillmentMessages(0).getText()
                : "Triggered Default Fallback Intent");

        queryResults.put(text, queryResult);
      }
    }
    return queryResults;
  }
}

Python

Pour vous authentifier auprès de Dialogflow, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

def detect_intent_texts_with_location(
    project_id, location_id, session_id, texts, language_code
):
    """Returns the result of detect intent with texts as inputs.

    Using the same `session_id` between requests allows continuation
    of the conversation."""
    from google.cloud import dialogflow

    session_client = dialogflow.SessionsClient(
        client_options={"api_endpoint": f"{location_id}-dialogflow.googleapis.com"}
    )

    session = (
        f"projects/{project_id}/locations/{location_id}/agent/sessions/{session_id}"
    )
    print(f"Session path: {session}\n")

    for text in texts:
        text_input = dialogflow.TextInput(text=text, language_code=language_code)

        query_input = dialogflow.QueryInput(text=text_input)

        response = session_client.detect_intent(
            request={"session": session, "query_input": query_input}
        )

        print("=" * 20)
        print(f"Query text: {response.query_result.query_text}")
        print(
            f"Detected intent: {response.query_result.intent.display_name} (confidence: {response.query_result.intent_detection_confidence,})\n"
        )
        print(f"Fulfillment text: {response.query_result.fulfillment_text}\n")

Langages supplémentaires

C# : Veuillez suivre les Instructions de configuration de C# sur la page des bibliothèques clientes, puis consultez la Documentation de référence sur Dialogflow pour .NET.

PHP : Veuillez suivre les Instructions de configuration pour PHP sur la page des bibliothèques clientes, puis consultez la Documentation de référence sur Dialogflow pour PHP.

Ruby : Veuillez suivre les Instructions de configuration pour Ruby sur la page des bibliothèques clientes, puis consultez la Documentation de référence sur Dialogflow pour Ruby.

Cloud Logging

Consultez le guide Cloud Logging pour contrôler la région dans laquelle les journaux sont stockés.

Limites

Lorsqu'une région autre que celle par défaut est sélectionnée dans la console Dialogflow, les fonctionnalités suivantes ne sont pas disponibles :

APIs Explorer, disponible dans de nombreux documents de référence REST, n'accepte que la région global pour les appels d'API.