Update data with a FieldMask

When updating agent data with the API, you can choose to overwrite the entire data type or to overwrite only specific fields of the data type. It is usually best to overwrite specific fields, so you avoid accidentally overwriting all of your data. To overwrite specific fields, supply a FieldMask to your update request.

The following examples show how to supply a FieldMask to update the display name for an Intent type.

Select a protocol and version for the Intent reference:

Protocol V3 V3beta1
REST
Intent resource Intent resource
RPC
Intent interface Intent interface
C++
IntentsClient Not available
C#
IntentsClient Not available
Go
IntentsClient Not available
Java
IntentsClient IntentsClient
Node.js
IntentsClient IntentsClient
PHP
Not available Not available
Python
IntentsClient IntentsClient
Ruby
Not available Not available

REST

Before using any of the request data, make the following replacements:

  • PROJECT_ID : your Google Cloud project ID
  • AGENT_ID : your agent ID
  • REGION_ID : your region ID
  • INTENT_ID : your intent ID
  • DISPLAY_NAME : your desired display name

HTTP method and URL:

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

Request JSON body:

{
  "displayName": " DISPLAY_NAME 
"
}

To send your request, expand one of these options:

You should receive a JSON response similar to the following:

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

Java

To authenticate to Dialogflow, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .

  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

To authenticate to Dialogflow, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .

  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

To authenticate to Dialogflow, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .

  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 
 
Design a Mobile Site
View Site in Mobile | Classic
Share by: