Aggiornamento dei dati con una FieldMask

Quando aggiorni i dati dell'agente con l'API, puoi scegliere di sovrascrivere l'intero tipo di dati o solo campi specifici del tipo di dati. In genere, è meglio sovrascrivere campi specifici per evitare di sovrascrivere accidentalmente tutti i dati. Per sovrascrivere campi specifici, fornisci un FieldMask alla tua richiesta di aggiornamento.

Gli esempi riportati di seguito mostrano come fornire un FieldMask per aggiornare il nome visualizzato per un tipo Intent.

Seleziona un protocollo e una versione per il riferimento all'intent:

Protocollo V3 V3beta1
REST Risorsa intent Risorsa per intent
RPC Interfaccia Intent Interfaccia per intent
C++ IntentsClient Non disponibile
C# IntentsClient Non disponibile
Vai IntentsClient Non disponibile
Java IntentsClient IntentsClient
Node.js IntentsClient IntentsClient
PHP Non disponibile Non disponibile
Python IntentsClient IntentsClient
Ruby Non disponibile Non disponibile

REST

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • AGENT_ID: il tuo ID agente
  • REGION_ID: il tuo ID regione
  • INTENT_ID: il tuo ID intenzione
  • DISPLAY_NAME: il nome visualizzato che preferisci

Metodo HTTP e URL:

PATCH https://REGION_ID-dialogflow.googleapis.com/v3/projects/PROJECT_ID/locations/REGION_ID/agents/AGENT_ID/intents/INTENT_ID?updateMask=displayName

Corpo JSON della richiesta:

{
  "displayName": "DISPLAY_NAME"
}

Per inviare la richiesta, espandi una delle seguenti opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_ID/locations/REGION_ID/agents/AGENT_ID/intents/INTENT_ID",
  "displayName": "DISPLAY_NAME",
  ...
}

Java

Per autenticarti a Dialogflow, configura le credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


import com.google.cloud.dialogflow.cx.v3.Intent;
import com.google.cloud.dialogflow.cx.v3.Intent.Builder;
import com.google.cloud.dialogflow.cx.v3.IntentsClient;
import com.google.cloud.dialogflow.cx.v3.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 agentId = "my-agent-id";
    String intentId = "my-intent-id";
    String location = "my-location";
    String displayName = "my-display-name";
    updateIntent(projectId, agentId, intentId, location, displayName);
  }

  // DialogFlow API Update Intent sample.
  public static void updateIntent(
      String projectId, String agentId, String intentId, String location, String displayName)
      throws IOException {

    // Note: close() needs to be called on the IntentsClient object to clean up resources
    // such as threads. In the example below, try-with-resources is used,
    // which automatically calls close().
    try (IntentsClient client = IntentsClient.create()) {
      String intentPath =
          "projects/"
              + projectId
              + "/locations/"
              + location
              + "/agents/"
              + agentId
              + "/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

Per autenticarti a Dialogflow, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.


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

const intentClient = new IntentsClient();

//TODO(developer): Uncomment these variables before running the sample.
//  const projectId = 'your-project-id';
//  const agentId = 'your-agent-id';
//  const intentId = 'your-intent-id';
//  const location = 'your-location';
//  const displayName = 'your-display-name';

async function updateIntent() {
  const agentPath = intentClient.projectPath(projectId);
  const intentPath = `${agentPath}/locations/${location}/agents/${agentId}/intents/${intentId}`;

  //Gets the intent from intentPath
  const intent = await intentClient.getIntent({name: intentPath});
  intent[0].displayName = displayName;

  //Specifies what is being updated
  const updateMask = {
    paths: ['display_name'],
  };

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

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

updateIntent();

Python

Per eseguire l'autenticazione in Dialogflow, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

from google.cloud.dialogflowcx_v3.services.intents import IntentsClient
from google.protobuf import field_mask_pb2


def update_intent(project_id, agent_id, intent_id, location, displayName):
    intents_client = IntentsClient()

    intent_name = intents_client.intent_path(project_id, location, agent_id, intent_id)

    intent = intents_client.get_intent(request={"name": intent_name})

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