Regionalisasi dan residensi data

Dialogflow menyediakan residensi data untuk menyimpan data dalam penyimpanan secara fisik dalam region atau lokasi geografis. Saat region ditentukan, data dalam penyimpanan Anda tidak direplikasi di luar region tersebut. Harga sama untuk semua wilayah.

Wilayah digunakan karena alasan berikut:

  • Sistem Anda mungkin memiliki persyaratan peraturan atau kebijakan yang mengatur tempat data Anda harus berada.
  • Latensi jaringan Anda dapat ditingkatkan jika data berada di region yang sama dengan pelanggan. Misalnya, jika pelanggan di Inggris Raya menggunakan europe-west2, mereka dapat mengharapkan latensi yang lebih baik.

Data dalam penyimpanan

Semua data pengguna developer dan pengguna akhir Dialogflow disertakan dalam data dalam penyimpanan. Contoh:

  • Semua resource agen yang ditetapkan dengan konsol atau API (intent, entity, dll.)
  • Semua setelan agen ditetapkan dengan konsol atau API
  • Histori kueri
  • Hasil validasi
  • Tugas pembuatan model
  • Tugas pelatihan
  • Tugas operasi yang berjalan lama

Region yang tersedia

Dialogflow menyediakan region berikut:

Pengelompokan negara Lokasi geografis ID region
Eropa Belgia europe-west1
Eropa London europe-west2
Asia Pasifik Sydney australia-southeast1
Asia Pasifik Tokyo asia-northeast1
Global Penyajian Dialogflow bersifat global, data dalam penyimpanan berada dalam AS global (lebih disukai), us (tidak digunakan lagi), atau tidak ada region (default)

Memilih region dengan konsol

Area kiri atas Dialogflow ES Console memiliki menu drop-down untuk pemilihan region. Setiap agen memiliki region yang tidak dapat diubah dan akan ditentukan saat pembuatan. Saat memilih wilayah dari konsol, Anda hanya dapat mencantumkan atau membuat agen untuk wilayah yang dipilih. Region default-nya adalah us.

Pilih region dengan API

Jika agen dibuat di region non-default, Anda harus menentukan region tersebut saat memanggil API untuk permintaan waktu desain atau runtime.

Untuk menyediakan region, Anda harus memberikan parameter location ke permintaan API. Untuk panggilan REST, lakukan kedua hal berikut:

  • Berikan parameter jalur URL location.
  • Gunakan nama host spesifik per wilayah dari format REGION_ID-dialogflow.googleapis.com. Contoh: asia-northeast1-dialogflow.googleapis.com. Jika wilayah yang ditentukan dalam nama host tidak cocok dengan wilayah yang ditentukan dalam jalur URL, permintaan akan ditolak.

Untuk library klien, lihat dokumentasi library klien. Anda perlu melakukan tindakan berikut:

  • Tetapkan endpoint layanan Dialogflow ke:

    REGION_ID-dialogflow.googleapis.com:443
    
  • Tetapkan nama sesi ke:

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

Contoh:

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: project ID Google Cloud Anda
  • REGION_ID: ID wilayah, contoh: europe-west2
  • SESSION_ID: ID sesi

Metode HTTP dan URL:

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

Meminta isi JSON:

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

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

 

Java

Untuk mengautentikasi ke Dialogflow, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


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

Untuk mengautentikasi ke Dialogflow, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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")

Bahasa tambahan

C#: Ikuti Petunjuk penyiapan C# di halaman library klien lalu kunjungi Dokumentasi referensi Dialogflow untuk .NET.

PHP: Ikuti petunjuk penyiapan PHP di halaman library klien lalu kunjungi Dokumentasi referensi Dialogflow untuk PHP.

Ruby: Ikuti petunjuk penyiapan Ruby di halaman library klien, lalu buka Dokumentasi referensi Dialogflow untuk Ruby.

Cloud Logging

Lihat Panduan Cloud logging untuk mengontrol region tempat log disimpan.

Batasan

Jika region non-default dipilih di Konsol Dialogflow, fitur berikut tidak akan tersedia:

APIs Explorer, yang ditemukan di banyak dokumen referensi REST, hanya mendukung region global untuk panggilan API.