Search in sources :

Example 1 with SessionsSettings

use of com.google.cloud.dialogflow.v2.SessionsSettings 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;
}
Also used : DetectIntentResponse(com.google.cloud.dialogflow.v2beta1.DetectIntentResponse) QueryInput(com.google.cloud.dialogflow.v2beta1.QueryInput) QueryResult(com.google.cloud.dialogflow.v2beta1.QueryResult) SessionsSettings(com.google.cloud.dialogflow.v2beta1.SessionsSettings) SessionsClient(com.google.cloud.dialogflow.v2beta1.SessionsClient) TextInput(com.google.cloud.dialogflow.v2beta1.TextInput) SessionName(com.google.cloud.dialogflow.v2beta1.SessionName)

Example 2 with SessionsSettings

use of com.google.cloud.dialogflow.v2.SessionsSettings 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;
}
Also used : DetectIntentResponse(com.google.cloud.dialogflow.cx.v3beta1.DetectIntentResponse) QueryInput(com.google.cloud.dialogflow.cx.v3beta1.QueryInput) QueryResult(com.google.cloud.dialogflow.cx.v3beta1.QueryResult) DetectIntentRequest(com.google.cloud.dialogflow.cx.v3beta1.DetectIntentRequest) SessionsSettings(com.google.cloud.dialogflow.cx.v3beta1.SessionsSettings) SessionsClient(com.google.cloud.dialogflow.cx.v3beta1.SessionsClient) TextInput(com.google.cloud.dialogflow.cx.v3beta1.TextInput) SessionName(com.google.cloud.dialogflow.cx.v3beta1.SessionName)

Example 3 with SessionsSettings

use of com.google.cloud.dialogflow.v2.SessionsSettings 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());
        }
    }
}
Also used : StreamingDetectIntentRequest(com.google.cloud.dialogflow.cx.v3beta1.StreamingDetectIntentRequest) AudioInput(com.google.cloud.dialogflow.cx.v3beta1.AudioInput) SessionsSettings(com.google.cloud.dialogflow.cx.v3beta1.SessionsSettings) OutputAudioConfig(com.google.cloud.dialogflow.cx.v3beta1.OutputAudioConfig) SessionName(com.google.cloud.dialogflow.cx.v3beta1.SessionName) FileInputStream(java.io.FileInputStream) QueryInput(com.google.cloud.dialogflow.cx.v3beta1.QueryInput) QueryResult(com.google.cloud.dialogflow.cx.v3beta1.QueryResult) InputAudioConfig(com.google.cloud.dialogflow.cx.v3beta1.InputAudioConfig) StreamingDetectIntentResponse(com.google.cloud.dialogflow.cx.v3beta1.StreamingDetectIntentResponse) SynthesizeSpeechConfig(com.google.cloud.dialogflow.cx.v3beta1.SynthesizeSpeechConfig) SessionsClient(com.google.cloud.dialogflow.cx.v3beta1.SessionsClient) VoiceSelectionParams(com.google.cloud.dialogflow.cx.v3beta1.VoiceSelectionParams)

Example 4 with SessionsSettings

use of com.google.cloud.dialogflow.v2.SessionsSettings in project MobileDicomViewer by awholeneworld.

the class MainActivity method setUpBot.

private void setUpBot() {
    try {
        // json name
        InputStream stream = this.getResources().openRawResource(R.raw.dicomviewer);
        GoogleCredentials credentials = GoogleCredentials.fromStream(stream).createScoped(Lists.newArrayList("https://www.googleapis.com/auth/cloud-platform"));
        String projectId = ((ServiceAccountCredentials) credentials).getProjectId();
        SessionsSettings.Builder settingsBuilder = SessionsSettings.newBuilder();
        SessionsSettings sessionsSettings = settingsBuilder.setCredentialsProvider(FixedCredentialsProvider.create(credentials)).build();
        sessionsClient = SessionsClient.create(sessionsSettings);
        sessionName = SessionName.of(projectId, uuid);
        Log.d(TAG, "projectId : " + projectId);
    } catch (Exception e) {
        Log.d(TAG, "setUpBot: " + e.getMessage());
    }
}
Also used : InputStream(java.io.InputStream) GoogleCredentials(com.google.auth.oauth2.GoogleCredentials) SessionsSettings(com.google.cloud.dialogflow.v2.SessionsSettings) ServiceAccountCredentials(com.google.auth.oauth2.ServiceAccountCredentials)

Aggregations

QueryInput (com.google.cloud.dialogflow.cx.v3beta1.QueryInput)2 QueryResult (com.google.cloud.dialogflow.cx.v3beta1.QueryResult)2 SessionName (com.google.cloud.dialogflow.cx.v3beta1.SessionName)2 SessionsClient (com.google.cloud.dialogflow.cx.v3beta1.SessionsClient)2 SessionsSettings (com.google.cloud.dialogflow.cx.v3beta1.SessionsSettings)2 GoogleCredentials (com.google.auth.oauth2.GoogleCredentials)1 ServiceAccountCredentials (com.google.auth.oauth2.ServiceAccountCredentials)1 AudioInput (com.google.cloud.dialogflow.cx.v3beta1.AudioInput)1 DetectIntentRequest (com.google.cloud.dialogflow.cx.v3beta1.DetectIntentRequest)1 DetectIntentResponse (com.google.cloud.dialogflow.cx.v3beta1.DetectIntentResponse)1 InputAudioConfig (com.google.cloud.dialogflow.cx.v3beta1.InputAudioConfig)1 OutputAudioConfig (com.google.cloud.dialogflow.cx.v3beta1.OutputAudioConfig)1 StreamingDetectIntentRequest (com.google.cloud.dialogflow.cx.v3beta1.StreamingDetectIntentRequest)1 StreamingDetectIntentResponse (com.google.cloud.dialogflow.cx.v3beta1.StreamingDetectIntentResponse)1 SynthesizeSpeechConfig (com.google.cloud.dialogflow.cx.v3beta1.SynthesizeSpeechConfig)1 TextInput (com.google.cloud.dialogflow.cx.v3beta1.TextInput)1 VoiceSelectionParams (com.google.cloud.dialogflow.cx.v3beta1.VoiceSelectionParams)1 SessionsSettings (com.google.cloud.dialogflow.v2.SessionsSettings)1 DetectIntentResponse (com.google.cloud.dialogflow.v2beta1.DetectIntentResponse)1 QueryInput (com.google.cloud.dialogflow.v2beta1.QueryInput)1