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 Intents type.

REST

Supply the updateMask URL query parameter for the patch method. For example:

?updateMask=displayName

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.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

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 
' 
 ); 
 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

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

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