Memperbarui data dengan FieldMask

Saat memperbarui data agen dengan API, Anda dapat memilih untuk menimpa seluruh jenis data atau hanya menimpa kolom tertentu dari jenis data. Sebaiknya ganti kolom tertentu, agar Anda tidak menimpa semua data secara tidak sengaja. Untuk menimpa kolom tertentu, berikan FieldMask ke permintaan pembaruan Anda.

Contoh berikut menunjukkan cara menyediakan FieldMask untuk memperbarui nama tampilan untuk jenis Intent.

REST

Berikan parameter kueri URL updateMask untuk metode patch. Contoh:

?updateMask=displayName

Java

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

import com.google.cloud.dialogflow.v2.Intent;
import com.google.cloud.dialogflow.v2.Intent.Builder;
import com.google.cloud.dialogflow.v2.IntentsClient;
import com.google.cloud.dialogflow.v2.UpdateIntentRequest;
import com.google.protobuf.FieldMask;
import java.io.IOException;

public class UpdateIntent {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "my-project-id";
    String intentId = "my-intent-id";
    String location = "my-location";
    String displayName = "my-display-name";
    updateIntent(projectId, intentId, location, displayName);
  }

  // DialogFlow API Update Intent sample.
  public static void updateIntent(
      String projectId, String intentId, String location, String displayName) throws IOException {
    try (IntentsClient client = IntentsClient.create()) {
      String intentPath =
          "projects/" + projectId + "/locations/" + location + "/agent/intents/" + intentId;

      Builder intentBuilder = client.getIntent(intentPath).toBuilder();

      intentBuilder.setDisplayName(displayName);
      FieldMask fieldMask = FieldMask.newBuilder().addPaths("display_name").build();

      Intent intent = intentBuilder.build();
      UpdateIntentRequest request =
          UpdateIntentRequest.newBuilder()
              .setIntent(intent)
              .setLanguageCode("en")
              .setUpdateMask(fieldMask)
              .build();

      // Make API request to update intent using fieldmask
      Intent response = client.updateIntent(request);
      System.out.println(response);
    }
  }
}

Node.js

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

const {IntentsClient} = require('@google-cloud/dialogflow');

const intentClient = new IntentsClient();

const agentPath = intentClient.projectAgentPath(projectId);
const intentPath = agentPath + '/intents/' + intentId;

const intent = await intentClient.getIntent({name: intentPath});
intent[0].displayName = displayName;
const updateMask = {
  paths: ['display_name'],
};

const updateIntentRequest = {
  intent: intent[0],
  updateMask: updateMask,
  languageCode: 'en',
};

//Send the request for update the intent.
const result = await intentClient.updateIntent(updateIntentRequest);
console.log(result);

Python

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


from google.cloud.dialogflow_v2 import IntentsClient
from google.protobuf import field_mask_pb2


def update_intent(project_id, intent_id, display_name):
    intents_client = IntentsClient()

    intent_name = intents_client.intent_path(project_id, intent_id)
    intent = intents_client.get_intent(request={"name": intent_name})

    intent.display_name = display_name
    update_mask = field_mask_pb2.FieldMask(paths=["display_name"])
    response = intents_client.update_intent(intent=intent, update_mask=update_mask)
    return response