diff --git a/dialogflow-cx/snippets/src/main/java/dialogflow/cx/CreateFlow.java b/dialogflow-cx/snippets/src/main/java/dialogflow/cx/CreateFlow.java index 7098aa861fb..3f2b707ddb4 100644 --- a/dialogflow-cx/snippets/src/main/java/dialogflow/cx/CreateFlow.java +++ b/dialogflow-cx/snippets/src/main/java/dialogflow/cx/CreateFlow.java @@ -79,8 +79,10 @@ public static Flow createFlow( // Performs the create flow request. Flow response = flowsClient.createFlow(parent, flow); - System.out.format("Flow created: %s\n", response); + // TODO : Uncomment if you want to print response + // System.out.format("Flow created: %s\n", response.toString()); + flowsClient.shutdown(); return response; } } diff --git a/dialogflow-cx/snippets/src/main/java/dialogflow/cx/CreateIntent.java b/dialogflow-cx/snippets/src/main/java/dialogflow/cx/CreateIntent.java index d9e473585bc..603034d8f56 100644 --- a/dialogflow-cx/snippets/src/main/java/dialogflow/cx/CreateIntent.java +++ b/dialogflow-cx/snippets/src/main/java/dialogflow/cx/CreateIntent.java @@ -72,7 +72,9 @@ public static Intent createIntent( // Performs the create intent request. Intent response = intentsClient.createIntent(parent, intent); - System.out.format("Intent created: %s\n", response); + + // TODO : Uncomment if you want to print response + // System.out.format("Intent created: %s\n", response); return response; } diff --git a/dialogflow-cx/snippets/src/main/java/dialogflow/cx/CreatePage.java b/dialogflow-cx/snippets/src/main/java/dialogflow/cx/CreatePage.java index 4418e8970f8..14162bf8d09 100644 --- a/dialogflow-cx/snippets/src/main/java/dialogflow/cx/CreatePage.java +++ b/dialogflow-cx/snippets/src/main/java/dialogflow/cx/CreatePage.java @@ -101,8 +101,11 @@ public static Page createPage( // Performs the create page request. Page response = pagesClient.createPage(parent, page); - System.out.format("Page created: %s\n", response); + // TODO : Uncomment if you want to print response + // System.out.format("Page created: %s\n", response.toString()); + + pagesClient.shutdown(); return response; } } diff --git a/dialogflow-cx/snippets/src/main/java/dialogflow/cx/DetectIntent.java b/dialogflow-cx/snippets/src/main/java/dialogflow/cx/DetectIntent.java index d89067ad8ce..703f7a77393 100644 --- a/dialogflow-cx/snippets/src/main/java/dialogflow/cx/DetectIntent.java +++ b/dialogflow-cx/snippets/src/main/java/dialogflow/cx/DetectIntent.java @@ -56,8 +56,11 @@ public static Map detectIntent( try (SessionsClient sessionsClient = SessionsClient.create(sessionsSettings)) { // Set the session name using the projectID (my-project-id), locationID (global), agentID // (UUID), and sessionId (UUID). - SessionName session = SessionName.of(projectId, locationId, agentId, sessionId); - System.out.println("Session Path: " + session.toString()); + SessionName session = + SessionName.ofProjectLocationAgentSessionName(projectId, locationId, agentId, sessionId); + + // TODO : Uncomment if you want to print session path + // System.out.println("Session Path: " + session.toString()); // Detect intents for each text input. for (String text : texts) { @@ -81,11 +84,13 @@ public static Map detectIntent( // Display the query result. QueryResult queryResult = response.getQueryResult(); - System.out.println("===================="); - System.out.format("Query Text: '%s'\n", queryResult.getText()); - System.out.format( - "Detected Intent: %s (confidence: %f)\n", - queryResult.getIntent().getDisplayName(), queryResult.getIntentDetectionConfidence()); + // TODO : Uncomment if you want to print queryResult + // System.out.println("===================="); + // System.out.format("Query Text: '%s'\n", queryResult.getText()); + // System.out.format( + // "Detected Intent: %s (confidence: %f)\n", + // queryResult.getIntent().getDisplayName(), + // queryResult.getIntentDetectionConfidence()); queryResults.put(text, queryResult); } diff --git a/dialogflow-cx/snippets/src/main/java/dialogflow/cx/Example.java b/dialogflow-cx/snippets/src/main/java/dialogflow/cx/Example.java deleted file mode 100644 index f91c8362a4a..00000000000 --- a/dialogflow-cx/snippets/src/main/java/dialogflow/cx/Example.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2021 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dialogflow.cx; - -// [START dialogflow_webhook] - -// TODO: add GSON dependency to Pom file -// (https://mvnrepository.com/artifact/com.google.code.gson/gson/2.8.5) -// TODO: Uncomment the line bellow before running cloud function -// package com.example; - -import com.google.cloud.functions.HttpFunction; -import com.google.cloud.functions.HttpRequest; -import com.google.cloud.functions.HttpResponse; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import java.io.BufferedWriter; - -public class Example implements HttpFunction { - - public void service(HttpRequest request, HttpResponse response) throws Exception { - JsonParser parser = new JsonParser(); - Gson gson = new GsonBuilder().create(); - - JsonObject job = gson.fromJson(request.getReader(), JsonObject.class); - String str = job.getAsJsonObject("fulfillmentInfo").getAsJsonPrimitive("tag").toString(); - JsonObject o = null; - String a = '"' + "Default Welcome Intent" + '"'; - String b = '"' + "get-agent-name" + '"'; - String responseText = ""; - - if (str.equals(a)) { - responseText = '"' + "Hello from a Java GCF Webhook" + '"'; - } else if (str.equals(b)) { - responseText = '"' + "My name is Flowhook" + '"'; - } else { - responseText = '"' + "Sorry I didn't get that" + '"'; - } - - o = - parser - .parse( - "{ \"fulfillment_response\": { \"messages\": [ { \"text\": { \"text\": [" - + responseText - + "] } } ] } }") - .getAsJsonObject(); - BufferedWriter writer = response.getWriter(); - writer.write(o.toString()); - } -} -// [END dialogflow_webhook] diff --git a/dialogflow-cx/snippets/src/main/java/dialogflow/cx/ExportAgent.java b/dialogflow-cx/snippets/src/main/java/dialogflow/cx/ExportAgent.java new file mode 100644 index 00000000000..ba908af542e --- /dev/null +++ b/dialogflow-cx/snippets/src/main/java/dialogflow/cx/ExportAgent.java @@ -0,0 +1,66 @@ +/* + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package dialogflow.cx; + +// [START dialogflow_cx_export_agent] + +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(); + 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 future = + agentsClient.exportAgentOperationCallable().futureCall(request); + + // get the export agent response after the operation is completed + ExportAgentResponse response = future.get(); + System.out.println(response); + } + } +} +// [END dialogflow_cx_export_agent] diff --git a/dialogflow-cx/snippets/src/test/java/dialogflow/cx/ExampleIT.java b/dialogflow-cx/snippets/src/test/java/dialogflow/cx/ExampleIT.java deleted file mode 100644 index a62338c1772..00000000000 --- a/dialogflow-cx/snippets/src/test/java/dialogflow/cx/ExampleIT.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2021 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package dialogflow.cx; - -import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Mockito.when; - -import com.google.cloud.functions.HttpRequest; -import com.google.cloud.functions.HttpResponse; -import com.google.gson.Gson; -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.IOException; -import java.io.StringReader; -import java.io.StringWriter; -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -public class ExampleIT { - - @Mock private HttpRequest request; - @Mock private HttpResponse response; - - private BufferedWriter writerOut; - private StringWriter responseOut; - private static final Gson gson = new Gson(); - - @Before - public void beforeTest() throws IOException { - MockitoAnnotations.initMocks(this); - - // use an empty string as the default request content - BufferedReader reader = new BufferedReader(new StringReader("")); - when(request.getReader()).thenReturn(reader); - - responseOut = new StringWriter(); - writerOut = new BufferedWriter(responseOut); - when(response.getWriter()).thenReturn(writerOut); - } - - @Test - public void helloHttp_bodyParamsPost() throws IOException, Exception { - - String firstHalf = "{\fulfillmentInfo\": {\"tag\": \"Default Welcome Intent\",}"; - String secondHalf = ",\"text\": \"hi\",\"languageCode\": \"en\",}"; - - BufferedReader jsonReader = new BufferedReader(new StringReader(firstHalf + secondHalf)); - - when(request.getReader()).thenReturn(jsonReader); - - new Example().service(request, response); - writerOut.flush(); - - assertThat(responseOut.toString()).contains("Hello from a Java GCF Webhook"); - } -} diff --git a/dialogflow-cx/snippets/src/test/java/dialogflow/cx/ExportAgentIT.java b/dialogflow-cx/snippets/src/test/java/dialogflow/cx/ExportAgentIT.java new file mode 100644 index 00000000000..018ad27608d --- /dev/null +++ b/dialogflow-cx/snippets/src/test/java/dialogflow/cx/ExportAgentIT.java @@ -0,0 +1,93 @@ +/* + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package dialogflow.cx; + +import static com.google.common.truth.Truth.assertThat; + +import com.google.cloud.dialogflow.cx.v3.Agent; +import com.google.cloud.dialogflow.cx.v3.Agent.Builder; +import com.google.cloud.dialogflow.cx.v3.AgentsClient; +import com.google.cloud.dialogflow.cx.v3.AgentsSettings; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.PrintStream; +import java.util.UUID; +import java.util.concurrent.ExecutionException; +import org.junit.After; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +public class ExportAgentIT { + + private static String PROJECT_ID = System.getenv("GOOGLE_CLOUD_PROJECT"); + private static String parent = ""; + private static String agentPath = ""; + private static String agentID = ""; + + private ByteArrayOutputStream stdOut; + + @BeforeClass + public static void beforeAll() { + assertThat(PROJECT_ID).isNotNull(); + } + + @Before + public void setUp() throws IOException { + stdOut = new ByteArrayOutputStream(); + System.setOut(new PrintStream(stdOut)); + + Builder build = Agent.newBuilder(); + build.setDefaultLanguageCode("en"); + build.setDisplayName("temp_agent_" + UUID.randomUUID().toString()); + build.setTimeZone("America/Los_Angeles"); + + Agent agent = build.build(); + + String apiEndpoint = "global-dialogflow.googleapis.com:443"; + String parentPath = "projects/" + PROJECT_ID + "/locations/global"; + + AgentsSettings agentsSettings = AgentsSettings.newBuilder().setEndpoint(apiEndpoint).build(); + AgentsClient client = AgentsClient.create(agentsSettings); + + parent = client.createAgent(parentPath, agent).getName(); + ExportAgentIT.agentPath = parent; + ExportAgentIT.agentID = parent.split("/")[5]; + client.close(); + } + + @After + public void tearDown() throws IOException { + stdOut = null; + System.setOut(null); + String apiEndpoint = "global-dialogflow.googleapis.com:443"; + + AgentsSettings agentsSettings = AgentsSettings.newBuilder().setEndpoint(apiEndpoint).build(); + AgentsClient client = AgentsClient.create(agentsSettings); + + client.deleteAgent(ExportAgentIT.agentPath); + client.close(); + } + + @Test + public void testUpdateExportAgent() throws IOException, InterruptedException, ExecutionException { + + ExportAgent.exportAgent(PROJECT_ID, ExportAgentIT.agentID, "global"); + + assertThat(stdOut.toString()).contains(ExportAgentIT.agentID); + } +} diff --git a/dialogflow-cx/snippets/src/test/java/dialogflow/cx/ListTrainingPhrasesTest.java b/dialogflow-cx/snippets/src/test/java/dialogflow/cx/ListTrainingPhrasesTest.java index e3389ed166c..e0f528560a9 100644 --- a/dialogflow-cx/snippets/src/test/java/dialogflow/cx/ListTrainingPhrasesTest.java +++ b/dialogflow-cx/snippets/src/test/java/dialogflow/cx/ListTrainingPhrasesTest.java @@ -29,7 +29,7 @@ public class ListTrainingPhrasesTest { private static String PROJECT_ID = System.getenv().get("GOOGLE_CLOUD_PROJECT"); private static String LOCATION = "global"; private static String AGENT_ID = "b8d0e85d-0741-4e6d-a66a-3671184b7b93"; - private static String INTENT_ID = "45974f75-9412-445a-9863-47bfdfa3d96d"; + private static String INTENT_ID = "e2d688a6-c8b4-448e-a7d6-208f147ae689"; private ByteArrayOutputStream stdOut;