Atualizar dados com um FieldMask

Ao atualizar os dados do agente com a API, você pode optar por substituir o tipo de dados inteiro ou substituir apenas campos específicos do tipo de dados. Em geral, é melhor substituir campos específicos, para evitar substituir acidentalmente todos os seus dados. Para substituir campos específicos, forneça um FieldMask à sua solicitação de atualização.

Os exemplos a seguir mostram como fornecer um FieldMask para atualizar o nome de exibição em um tipo de intents.

REST

Forneça o parâmetro updateMask de consulta do URL para o método patch. Exemplo:

?updateMask=displayName

Java

Para autenticar no Dialogflow, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

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

Para autenticar no Dialogflow, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

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

Para autenticar no Dialogflow, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.


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