Long-running operations

Some methods of the Conversational Agents (Dialogflow CX) API return a long-running operation. These methods are asynchronous, and the operation may not be completed when the method returns a response. You can check on the status, wait for completion, or cancel operations.

Wait for an operation to complete

The following shows how to wait for an operation to complete.

REST

To poll an operation's status, call the get method for the Operations resource. When the operation has completed, the done field is set to true.

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

  • REGION_ID : your region ID
  • PROJECT_ID : your Google Cloud project ID
  • OPERATION_ID : your operation ID

HTTP method and URL:

GET https:// REGION_ID 
-dialogflow.googleapis.com/v3/projects/ PROJECT_ID 
/locations/ REGION_ID 
/operations/ OPERATION_ID 

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 
/operations/ OPERATION_ID 
",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.dialogflow.v3.SomeOperationType",
    "state": "DONE"
  },
  "done": true,
  ...
}

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.api.gax.longrunning. OperationFuture 
 
 ; 
 import 
  
 com.google.cloud.dialogflow.cx.v3. AgentName 
 
 ; 
 import 
  
 com.google.cloud.dialogflow.cx.v3. AgentsClient 
 
 ; 
 import 
  
 com.google.cloud.dialogflow.cx.v3. AgentsSettings 
 
 ; 
 import 
  
 com.google.cloud.dialogflow.cx.v3. ExportAgentRequest 
 
 ; 
 import 
  
 com.google.cloud.dialogflow.cx.v3. ExportAgentResponse 
 
 ; 
 import 
  
 com.google.protobuf. Struct 
 
 ; 
 import 
  
 java.io.IOException 
 ; 
 import 
  
 java.util.concurrent.ExecutionException 
 ; 
 public 
  
 class 
 ExportAgent 
  
 { 
  
 public 
  
 static 
  
 void 
  
 main 
 ( 
 String 
 [] 
  
 args 
 ) 
  
 throws 
  
 IOException 
 , 
  
 InterruptedException 
 , 
  
 ExecutionException 
  
 { 
  
 // TODO(developer): Replace these variables before running the sample. 
  
 String 
  
 projectId 
  
 = 
  
 "my-project-id" 
 ; 
  
 String 
  
 agentId 
  
 = 
  
 "my-agent-id" 
 ; 
  
 String 
  
 location 
  
 = 
  
 "my-location" 
 ; 
  
 exportAgent 
 ( 
 projectId 
 , 
  
 agentId 
 , 
  
 location 
 ); 
  
 } 
  
 public 
  
 static 
  
 void 
  
 exportAgent 
 ( 
 String 
  
 projectId 
 , 
  
 String 
  
 agentId 
 , 
  
 String 
  
 location 
 ) 
  
 throws 
  
 IOException 
 , 
  
 InterruptedException 
 , 
  
 ExecutionException 
  
 { 
  
 // Sets the api endpoint to specified location 
  
 String 
  
 apiEndpoint 
  
 = 
  
 String 
 . 
 format 
 ( 
 "%s-dialogflow.googleapis.com:443" 
 , 
  
 location 
 ); 
  
  AgentsSettings 
 
  
 agentsSettings 
  
 = 
  
  AgentsSettings 
 
 . 
 newBuilder 
 (). 
 setEndpoint 
 ( 
 apiEndpoint 
 ). 
 build 
 (); 
  
 // Note: close() needs to be called on the AgentsClient object to clean up resources 
  
 // such as threads. In the example below, try-with-resources is used, 
  
 // which automatically calls close(). 
  
 try 
  
 ( 
  AgentsClient 
 
  
 agentsClient 
  
 = 
  
  AgentsClient 
 
 . 
 create 
 ( 
 agentsSettings 
 )) 
  
 { 
  
  ExportAgentRequest 
 
  
 request 
  
 = 
  
  ExportAgentRequest 
 
 . 
 newBuilder 
 () 
  
 . 
 setName 
 ( 
  AgentName 
 
 . 
 of 
 ( 
 projectId 
 , 
  
 location 
 , 
  
 agentId 
 ). 
 toString 
 ()) 
  
 . 
 build 
 (); 
  
 // Returns a future of the operation 
  
 OperationFuture<ExportAgentResponse 
 , 
  
 Struct 
>  
 future 
  
 = 
  
 agentsClient 
 . 
  exportAgentOperationCallable 
 
 (). 
 futureCall 
 ( 
 request 
 ); 
  
 // get the export agent response after the operation is completed 
  
  ExportAgentResponse 
 
  
 response 
  
 = 
  
 future 
 . 
 get 
 (); 
  
 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 
  
 { 
 AgentsClient 
 , 
  
 protos 
 } 
  
 = 
  
 require 
 ( 
 ' @google-cloud/dialogflow-cx 
' 
 ); 
 const 
  
 api_endpoint 
  
 = 
  
 ` 
 ${ 
 location 
 } 
 -dialogflow.googleapis.com` 
 ; 
 const 
  
 client 
  
 = 
  
 new 
  
  AgentsClient 
 
 ({ 
 apiEndpoint 
 : 
  
 api_endpoint 
 }); 
 const 
  
 exportAgentRequest 
  
 = 
  
 new 
  
 protos 
 . 
 google 
 . 
 cloud 
 . 
 dialogflow 
 . 
 cx 
 . 
 v3 
 . 
  ExportAgentRequest 
 
 (); 
 exportAgentRequest 
 . 
 name 
  
 = 
  
 `projects/ 
 ${ 
 projectId 
 } 
 /locations/ 
 ${ 
 location 
 } 
 /agents/ 
 ${ 
 agentId 
 } 
 ` 
 ; 
 // exportAgent call returns a promise to a long running operation 
 const 
  
 [ 
 operation 
 ] 
  
 = 
  
 await 
  
 client 
 . 
 exportAgent 
 ( 
 exportAgentRequest 
 ); 
 // Waiting for the long running opporation to finish 
 const 
  
 [ 
 response 
 ] 
  
 = 
  
 await 
  
 operation 
 . 
 promise 
 (); 
 // Prints the result of the operation when the operation is done 
 console 
 . 
 log 
 ( 
 response 
 ); 
 

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.agents.client 
  
 import 
 AgentsClient 
 from 
  
 google.cloud.dialogflowcx_v3.types.agent 
  
 import 
 ExportAgentRequest 
 def 
  
 export_long_running_agent 
 ( 
 project_id 
 , 
 agent_id 
 , 
 location 
 ): 
 api_endpoint 
 = 
 f 
 " 
 { 
 location 
 } 
 -dialogflow.googleapis.com:443" 
 client_options 
 = 
 { 
 "api_endpoint" 
 : 
 api_endpoint 
 } 
 agents_client 
 = 
 AgentsClient 
 ( 
 client_options 
 = 
 client_options 
 ) 
 export_request 
 = 
 ExportAgentRequest 
 () 
 export_request 
 . 
 name 
 = 
 ( 
 f 
 "projects/ 
 { 
 project_id 
 } 
 /locations/ 
 { 
 location 
 } 
 /agents/ 
 { 
 agent_id 
 } 
 " 
 ) 
 # export_agent returns a long running operation 
 operation 
 = 
 agents_client 
 . 
 export_agent 
 ( 
 request 
 = 
 export_request 
 ) 
 # Returns the result of the operation when the operation is done 
 return 
 operation 
 . 
 result 
 () 
 
Design a Mobile Site
View Site in Mobile | Classic
Share by: