Regionalización y residencia de datos

Dialogflow proporciona una residencia de datos para mantener tus datos en reposo físicamente en una región geográfica o ubicación. 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 y los datos en reposo están dentro de EE.UU. global (opción recomendada), us o sin región (predeterminado)

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. Si la región especificada en el nombre de host no coincide con la región especificada en la ruta de URL, se rechazará la solicitud.

Para bibliotecas cliente, consulta la documentación de la biblioteca cliente. Debe seguir estos pasos:

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

    REGION_ID-dialogflow.googleapis.com:443
    
  • Establece el nombre de la sesión en:

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

Por ejemplo:

LÍNEA DE REST Y CMD

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

  • PROJECT_ID: Es el ID del proyecto de GCP.
  • REGION_ID: Un ID de región, por ejemplo: europe-west2
  • SESSION_ID: Es un ID de sesión.

Método HTTP y 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


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

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 elInstrucciones de configuración de C# en la página de bibliotecas cliente y, luego, visitaDocumentación de referencia de Dialogflow para .NET

PHP : Sigue elInstrucciones de configuración de PHP en la página de bibliotecas cliente y, luego, visitaDocumentación de referencia de Dialogflow para PHP.

Ruby : Sigue elInstrucciones de configuración de Ruby en la página de bibliotecas cliente y, luego, visitaDocumentació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: