use of com.google.cloud.dialogflow.v2.SessionName in project java-dialogflow by googleapis.
the class DetectIntentStream method detectIntentStream.
// DialogFlow API Detect Intent sample with audio files processes as an audio stream.
static void detectIntentStream(String projectId, String audioFilePath, String sessionId) throws IOException, ApiException {
// Instantiates a client
try (SessionsClient sessionsClient = SessionsClient.create()) {
// Set the session name using the sessionId (UUID) and projectID (my-project-id)
SessionName session = SessionName.of(projectId, sessionId);
// Instructs the speech recognizer how to process the audio content.
// Note: hard coding audioEncoding and sampleRateHertz for simplicity.
// Audio encoding of the audio content sent in the query request.
InputAudioConfig inputAudioConfig = InputAudioConfig.newBuilder().setAudioEncoding(AudioEncoding.AUDIO_ENCODING_LINEAR_16).setLanguageCode(// languageCode = "en-US"
"en-US").setSampleRateHertz(// sampleRateHertz = 16000
16000).build();
// Build the query with the InputAudioConfig
QueryInput queryInput = QueryInput.newBuilder().setAudioConfig(inputAudioConfig).build();
// Create the Bidirectional stream
BidiStream<StreamingDetectIntentRequest, StreamingDetectIntentResponse> bidiStream = sessionsClient.streamingDetectIntentCallable().call();
// The first request must **only** contain the audio configuration:
bidiStream.send(StreamingDetectIntentRequest.newBuilder().setSession(session.toString()).setQueryInput(queryInput).build());
try (FileInputStream audioStream = new FileInputStream(audioFilePath)) {
// Subsequent requests must **only** contain the audio data.
// Following messages: audio chunks. We just read the file in fixed-size chunks. In reality
// you would split the user input by time.
byte[] buffer = new byte[4096];
int bytes;
while ((bytes = audioStream.read(buffer)) != -1) {
bidiStream.send(StreamingDetectIntentRequest.newBuilder().setInputAudio(ByteString.copyFrom(buffer, 0, bytes)).build());
}
}
// Tell the service you are done sending data
bidiStream.closeSend();
for (StreamingDetectIntentResponse response : bidiStream) {
QueryResult queryResult = response.getQueryResult();
System.out.println("====================");
System.out.format("Intent Display Name: %s\n", queryResult.getIntent().getDisplayName());
System.out.format("Query Text: '%s'\n", queryResult.getQueryText());
System.out.format("Detected Intent: %s (confidence: %f)\n", queryResult.getIntent().getDisplayName(), queryResult.getIntentDetectionConfidence());
System.out.format("Fulfillment Text: '%s'\n", queryResult.getFulfillmentMessagesCount() > 0 ? queryResult.getFulfillmentMessages(0).getText() : "Triggered Default Fallback Intent");
}
}
}
use of com.google.cloud.dialogflow.v2.SessionName in project java-dialogflow by googleapis.
the class DetectIntentTexts method detectIntentTexts.
// DialogFlow API Detect Intent sample with text inputs.
public static Map<String, QueryResult> detectIntentTexts(String projectId, List<String> texts, String sessionId, String languageCode) throws IOException, ApiException {
Map<String, QueryResult> queryResults = Maps.newHashMap();
// Instantiates a client
try (SessionsClient sessionsClient = SessionsClient.create()) {
// Set the session name using the sessionId (UUID) and projectID (my-project-id)
SessionName session = SessionName.of(projectId, sessionId);
System.out.println("Session Path: " + session.toString());
// Detect intents for each text input
for (String text : texts) {
// Set the text (hello) and language code (en-US) for the query
TextInput.Builder textInput = TextInput.newBuilder().setText(text).setLanguageCode(languageCode);
// Build the query with the TextInput
QueryInput queryInput = QueryInput.newBuilder().setText(textInput).build();
// Performs the detect intent request
DetectIntentResponse response = sessionsClient.detectIntent(session, queryInput);
// Display the query result
QueryResult queryResult = response.getQueryResult();
System.out.println("====================");
System.out.format("Query Text: '%s'\n", queryResult.getQueryText());
System.out.format("Detected Intent: %s (confidence: %f)\n", queryResult.getIntent().getDisplayName(), queryResult.getIntentDetectionConfidence());
System.out.format("Fulfillment Text: '%s'\n", queryResult.getFulfillmentMessagesCount() > 0 ? queryResult.getFulfillmentMessages(0).getText() : "Triggered Default Fallback Intent");
queryResults.put(text, queryResult);
}
}
return queryResults;
}
use of com.google.cloud.dialogflow.v2.SessionName in project java-dialogflow by googleapis.
the class DetectIntentWithLocation method detectIntentWithLocation.
// DialogFlow API Detect Intent sample with text inputs.
public static Map<String, QueryResult> detectIntentWithLocation(String projectId, String locationId, List<String> texts, String sessionId, String languageCode) throws IOException, ApiException {
SessionsSettings sessionsSettings = SessionsSettings.newBuilder().setEndpoint(locationId + "-dialogflow.googleapis.com:443").build();
Map<String, QueryResult> queryResults = Maps.newHashMap();
// Instantiates a client
try (SessionsClient sessionsClient = SessionsClient.create(sessionsSettings)) {
// Set the session name using the projectId (my-project-id), locationId and sessionId (UUID)
SessionName session = SessionName.ofProjectLocationSessionName(projectId, locationId, sessionId);
System.out.println("Session Path: " + session.toString());
// Detect intents for each text input
for (String text : texts) {
// Set the text (hello) and language code (en-US) for the query
TextInput.Builder textInput = TextInput.newBuilder().setText(text).setLanguageCode(languageCode);
// Build the query with the TextInput
QueryInput queryInput = QueryInput.newBuilder().setText(textInput).build();
// Performs the detect intent request
DetectIntentResponse response = sessionsClient.detectIntent(session, queryInput);
// Display the query result
QueryResult queryResult = response.getQueryResult();
System.out.println("====================");
System.out.format("Query Text: '%s'\n", queryResult.getQueryText());
System.out.format("Detected Intent: %s (confidence: %f)\n", queryResult.getIntent().getDisplayName(), queryResult.getIntentDetectionConfidence());
System.out.format("Fulfillment Text: '%s'\n", queryResult.getFulfillmentMessagesCount() > 0 ? queryResult.getFulfillmentMessages(0).getText() : "Triggered Default Fallback Intent");
queryResults.put(text, queryResult);
}
}
return queryResults;
}
use of com.google.cloud.dialogflow.v2.SessionName in project java-dialogflow by googleapis.
the class ContextsClientTest method listContextsTest.
@Test
public void listContextsTest() throws Exception {
Context responsesElement = Context.newBuilder().build();
ListContextsResponse expectedResponse = ListContextsResponse.newBuilder().setNextPageToken("").addAllContexts(Arrays.asList(responsesElement)).build();
mockContexts.addResponse(expectedResponse);
SessionName parent = SessionName.ofProjectSessionName("[PROJECT]", "[SESSION]");
ListContextsPagedResponse pagedListResponse = client.listContexts(parent);
List<Context> resources = Lists.newArrayList(pagedListResponse.iterateAll());
Assert.assertEquals(1, resources.size());
Assert.assertEquals(expectedResponse.getContextsList().get(0), resources.get(0));
List<AbstractMessage> actualRequests = mockContexts.getRequests();
Assert.assertEquals(1, actualRequests.size());
ListContextsRequest actualRequest = ((ListContextsRequest) actualRequests.get(0));
Assert.assertEquals(parent.toString(), actualRequest.getParent());
Assert.assertTrue(channelProvider.isHeaderSent(ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
}
use of com.google.cloud.dialogflow.v2.SessionName in project java-dialogflow by googleapis.
the class SessionEntityTypesClientTest method listSessionEntityTypesTest.
@Test
public void listSessionEntityTypesTest() throws Exception {
SessionEntityType responsesElement = SessionEntityType.newBuilder().build();
ListSessionEntityTypesResponse expectedResponse = ListSessionEntityTypesResponse.newBuilder().setNextPageToken("").addAllSessionEntityTypes(Arrays.asList(responsesElement)).build();
mockSessionEntityTypes.addResponse(expectedResponse);
SessionName parent = SessionName.ofProjectSessionName("[PROJECT]", "[SESSION]");
ListSessionEntityTypesPagedResponse pagedListResponse = client.listSessionEntityTypes(parent);
List<SessionEntityType> resources = Lists.newArrayList(pagedListResponse.iterateAll());
Assert.assertEquals(1, resources.size());
Assert.assertEquals(expectedResponse.getSessionEntityTypesList().get(0), resources.get(0));
List<AbstractMessage> actualRequests = mockSessionEntityTypes.getRequests();
Assert.assertEquals(1, actualRequests.size());
ListSessionEntityTypesRequest actualRequest = ((ListSessionEntityTypesRequest) actualRequests.get(0));
Assert.assertEquals(parent.toString(), actualRequest.getParent());
Assert.assertTrue(channelProvider.isHeaderSent(ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
}
Aggregations