Actualizar datos con una FieldMask

Cuando actualices los datos de los agentes con la API, puedes sobrescribir todo el tipo de datos o solo campos específicos del tipo de datos. Por lo general, es mejor sobrescribir campos específicos para evitar sobrescribir todos los datos por error. Para sobrescribir campos específicos, proporciona un FieldMask en tu solicitud de actualización.

En los siguientes ejemplos se muestra cómo proporcionar un FieldMask para actualizar el nombre visible de un tipo Intents.

REST

Proporciona el parámetro de consulta de URL updateMask para el método patch. Por ejemplo:

?updateMask=displayName

Java

Para autenticarte en Dialogflow, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo 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 autenticarte en Dialogflow, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo 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 autenticarte en Dialogflow, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo 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