Regionalización y residencia de datos

Dialogflow proporciona residencia de datos para mantener tus datos en reposo de forma física dentro de una región o ubicación geográfica. Cuando se especifica una región, tus datos en reposo no se replican fuera de esta. Los precios son los mismos para todas las regiones.

Las regiones se usan por los siguientes motivos:

  • Tu sistema puede tener requisitos regulatorios o de políticas que rigen la ubicación de tus datos.
  • Las latencias de la red pueden mejorarse cuando los datos se encuentran en la misma región que tus clientes. Por ejemplo, si los clientes del Reino Unido usan europe-west2, pueden esperar una mejor latencia.

Datos en reposo

Todos los datos de usuario final y usuario de Dialogflow se incluyen en datos en reposo. Por ejemplo:

  • Todos los recursos de agente se configuran con la consola o la API (intents, entidades, etcétera)
  • Todas las opciones de configuración del agente se establecen con la consola o la API
  • Historial de consultas
  • Resultados de validación
  • Tareas de creación de modelos
  • Tareas de entrenamiento
  • Tareas de operaciones de larga duración

Regiones disponibles

Dialogflow proporciona las siguientes regiones:

Agrupación por país Ubicación geográfica ID de región
Europa Bélgica europe-west1
Europa Londres europe-west2
Asia-Pacífico Sídney australia-southeast1
Asia-Pacífico Tokio asia-northeast1
Global La entrega de Dialogflow es global, los datos en reposo están dentro de EE.UU. global (opción preferida), us (obsoleta) o ninguna región (predeterminada)

Selecciona una región con la consola

El área superior izquierda de la consola de Dialogflow ES tiene un menú desplegable para seleccionar la región. Cada agente tiene una región inmutable que se especifica en el momento de su creación. Cuando seleccionas una región de la consola, solo puedes enumerar o crear agentes para la región seleccionada. La región predeterminada es us.

Selecciona una región con la API

Si tu agente se creó en una región no predeterminada, debes especificar esa región cuando llames a la API para las solicitudes de tiempo de diseño o entorno de ejecución.

Para proporcionar una región, suministra un parámetro location a las solicitudes a la API. Para las llamadas REST, haz lo siguiente:

  • Proporciona el parámetro de ruta de URL location.
  • Usa el nombre de host específico de la región con el formato REGION_ID-dialogflow.googleapis.com. Por ejemplo: asia-northeast1-dialogflow.googleapis.com. Se rechazará la solicitud si la región especificada en el nombre de host no coincide con la región especificada en la ruta de URL.

En el caso de las bibliotecas cliente, consulta la documentación de las bibliotecas cliente. Debe seguir estos pasos:

  • Configura el extremo del servicio de Dialogflow de la siguiente manera:

    REGION_ID-dialogflow.googleapis.com:443
    
  • Configura el nombre de la sesión de la siguiente manera:

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

Por ejemplo:

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto de Google Cloud.
  • REGION_ID: Es un ID de región, por ejemplo: europe-west2.
  • SESSION_ID: Es un ID de sesión.

HTTP method and URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, expande una de estas opciones:

 

Java

Para autenticarte en Dialogflow, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo 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

Para autenticarte en Dialogflow, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo 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")

Idiomas adicionales

C#: sigue lasinstrucciones de configuración de C# en la página Bibliotecas cliente y, luego, visita la documentación de referencia de Dialogflow para .NET.

PHP: sigue las instrucciones de configuración de PHP en la página Bibliotecas cliente y, luego, visita la documentación de referencia de Dialogflow para PHP.

Ruby: sigue las instrucciones de configuración de Ruby en la página Bibliotecas cliente y, luego, visita la documentación de referencia de Dialogflow para Ruby.

Cloud Logging

Consulta la guía de Cloud Logging para controlar la región en la que se almacenan los registros.

Limitaciones

Cuando se selecciona una región no predeterminada en la consola de Dialogflow, las siguientes características no están disponibles:

El Explorador de APIs, que se encuentra en muchos documentos de referencia de REST, solo es compatible con la región global para las llamadas a la API.