use of com.google.cloud.dialogflow.cx.v3beta1.Intent in project java-dialogflow-cx by googleapis.
the class DetectIntent method detectIntent.
// DialogFlow API Detect Intent sample with text inputs.
public static Map<String, QueryResult> detectIntent(String projectId, String locationId, String agentId, String sessionId, List<String> texts, String languageCode) throws IOException, ApiException {
SessionsSettings.Builder sessionsSettingsBuilder = SessionsSettings.newBuilder();
if (locationId.equals("global")) {
sessionsSettingsBuilder.setEndpoint("dialogflow.googleapis.com:443");
} else {
sessionsSettingsBuilder.setEndpoint(locationId + "-dialogflow.googleapis.com:443");
}
SessionsSettings sessionsSettings = sessionsSettingsBuilder.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 (global), agentID
// (UUID), and sessionId (UUID).
SessionName session = SessionName.ofProjectLocationAgentSessionName(projectId, locationId, agentId, sessionId);
// Detect intents for each text input.
for (String text : texts) {
// Set the text (hello) for the query.
TextInput.Builder textInput = TextInput.newBuilder().setText(text);
// Build the query with the TextInput and language code (en-US).
QueryInput queryInput = QueryInput.newBuilder().setText(textInput).setLanguageCode(languageCode).build();
// Build the DetectIntentRequest with the SessionName and QueryInput.
DetectIntentRequest request = DetectIntentRequest.newBuilder().setSession(session.toString()).setQueryInput(queryInput).build();
// Performs the detect intent request.
DetectIntentResponse response = sessionsClient.detectIntent(request);
// Display the query result.
QueryResult queryResult = response.getQueryResult();
// 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);
}
}
return queryResults;
}
use of com.google.cloud.dialogflow.cx.v3beta1.Intent in project java-dialogflow-cx by googleapis.
the class DetectIntentStream method detectIntentStream.
// DialogFlow API Detect Intent sample with audio files processes as an audio stream.
public static void detectIntentStream(String projectId, String locationId, String agentId, String sessionId, String audioFilePath) throws ApiException, IOException {
SessionsSettings.Builder sessionsSettingsBuilder = SessionsSettings.newBuilder();
if (locationId.equals("global")) {
sessionsSettingsBuilder.setEndpoint("dialogflow.googleapis.com:443");
} else {
sessionsSettingsBuilder.setEndpoint(locationId + "-dialogflow.googleapis.com:443");
}
SessionsSettings sessionsSettings = sessionsSettingsBuilder.build();
// Instantiates a client
try (SessionsClient sessionsClient = SessionsClient.create(sessionsSettings)) {
// Set the session name using the projectID (my-project-id), locationID (global), agentID
// (UUID), and sessionId (UUID).
// Using the same `sessionId` between requests allows continuation of the conversation.
SessionName session = SessionName.of(projectId, locationId, agentId, 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).setSampleRateHertz(// sampleRateHertz = 16000
16000).build();
// Build the AudioInput with the InputAudioConfig.
AudioInput audioInput = AudioInput.newBuilder().setConfig(inputAudioConfig).build();
// Build the query with the InputAudioConfig.
QueryInput queryInput = QueryInput.newBuilder().setAudio(audioInput).setLanguageCode(// languageCode = "en-US"
"en-US").build();
// Create the Bidirectional stream
BidiStream<StreamingDetectIntentRequest, StreamingDetectIntentResponse> bidiStream = sessionsClient.streamingDetectIntentCallable().call();
// Specify sssml name and gender
VoiceSelectionParams voiceSelection = // Voices that are available https://cloud.google.com/text-to-speech/docs/voices
VoiceSelectionParams.newBuilder().setName("en-GB-Standard-A").setSsmlGender(SsmlVoiceGender.SSML_VOICE_GENDER_FEMALE).build();
SynthesizeSpeechConfig speechConfig = SynthesizeSpeechConfig.newBuilder().setVoice(voiceSelection).build();
// Setup audio config
OutputAudioConfig audioConfig = // https://cloud.google.com/dialogflow/cx/docs/reference/rpc/google.cloud.dialogflow.cx.v3#outputaudioencoding
OutputAudioConfig.newBuilder().setAudioEncoding(OutputAudioEncoding.OUTPUT_AUDIO_ENCODING_UNSPECIFIED).setAudioEncodingValue(1).setSynthesizeSpeechConfig(speechConfig).build();
// The first request must **only** contain the audio configuration:
bidiStream.send(StreamingDetectIntentRequest.newBuilder().setSession(session.toString()).setQueryInput(queryInput).setOutputAudioConfig(audioConfig).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) {
AudioInput subAudioInput = AudioInput.newBuilder().setAudio(ByteString.copyFrom(buffer, 0, bytes)).build();
QueryInput subQueryInput = QueryInput.newBuilder().setAudio(subAudioInput).setLanguageCode(// languageCode = "en-US"
"en-US").build();
bidiStream.send(StreamingDetectIntentRequest.newBuilder().setQueryInput(subQueryInput).build());
}
}
// Tell the service you are done sending data.
bidiStream.closeSend();
for (StreamingDetectIntentResponse response : bidiStream) {
QueryResult queryResult = response.getDetectIntentResponse().getQueryResult();
System.out.println("====================");
System.out.format("Query Text: '%s'\n", queryResult.getTranscript());
System.out.format("Detected Intent: %s (confidence: %f)\n", queryResult.getIntent().getDisplayName(), queryResult.getIntentDetectionConfidence());
}
}
}
use of com.google.cloud.dialogflow.cx.v3beta1.Intent in project java-dialogflow-cx by googleapis.
the class UpdateIntent method updateIntent.
// DialogFlow API Update Intent sample.
public static void updateIntent(String projectId, String agentId, String intentId, String location, String displayName) throws IOException {
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);
}
}
use of com.google.cloud.dialogflow.cx.v3beta1.Intent in project java-dialogflow-cx by googleapis.
the class UpdateIntentTest method setUp.
@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();
UpdateIntentTest.agentID = parent.split("/")[5];
try (IntentsClient intentsClient = IntentsClient.create()) {
com.google.cloud.dialogflow.cx.v3.Intent.Builder intent = Intent.newBuilder();
intent.setDisplayName("temp_intent_" + UUID.randomUUID().toString());
UpdateIntentTest.intentPath = intentsClient.createIntent(parent, intent.build()).getName();
UpdateIntentTest.intentID = UpdateIntentTest.intentPath.split("/")[7];
}
}
Aggregations