

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo di un'applicazione Java per interagire con un bot Amazon Lex V2
<a name="deploy-java"></a>

La [AWS SDK per Java versione 2.0](https://github.com/aws/aws-sdk-java-v2) fornisce un'interfaccia che è possibile utilizzare dalle applicazioni Java per interagire con i bot. Utilizza l'SDK for Java per creare applicazioni client per gli utenti. 

La seguente applicazione interagisce con il OrderFlowers bot in cui hai creato. [Esercizio 1: Creare un chatbot da un modello](exercise-1.md) Utilizza l'SDK `LexRuntimeV2Client` dell'SDK for Java per richiamare [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html)l'operazione per condurre una conversazione con il bot. 

L'output della conversazione è simile al seguente:

```
User : I would like to order flowers
Bot  : What type of flowers would you like to order?
User : 1 dozen roses
Bot  : What day do you want the dozen roses to be picked up?
User : Next Monday
Bot  : At what time do you want the dozen roses to be picked up?
User : 5 in the evening
Bot  : Okay, your dozen roses will be ready for pickup by 17:00 on 2021-01-04.  Does this sound okay?
User : Yes
Bot  : Thanks.
```

Per le strutture JSON inviate tra l'applicazione client e il bot Amazon Lex V2, vedi. [Esercizio 2: Rivedi il flusso di conversazione](exercise-2.md)

Per eseguire l'applicazione, devi fornire le seguenti informazioni:
+ botID: l'identificatore assegnato al bot al momento della sua creazione. Puoi visualizzare l'ID del bot nella console Amazon Lex V2 nella pagina **Impostazioni** del bot.
+ botAliasId — L'identificatore assegnato all'alias del bot al momento della creazione. Puoi visualizzare l'ID alias del bot nella console Amazon Lex V2 nella pagina **Alias**. **Se non riesci a visualizzare l'ID dell'alias nell'elenco, scegli l'icona a forma di ingranaggio in alto a destra e attiva l'ID alias.**
+ localeID: l'identificatore del locale che hai usato per il bot. Per un elenco delle impostazioni locali, vedi. [Lingue e impostazioni locali supportate da Amazon Lex V2](how-languages.md)
+ AccessKey e SecretKey: le chiavi di autenticazione per il tuo account. Se non disponi di un set di chiavi, creale utilizzando la console AWS Identity and Access Management.
+ SessionID: un identificatore per la sessione con il bot Amazon Lex V2. In questo caso, il codice utilizza un UUID casuale.
+ regione: se il tuo bot non si trova nella regione degli Stati Uniti orientali (Virginia settentrionale), assicurati di cambiare la regione.

L'applicazione utilizza una funzione chiamata `getRecognizeTextRequest` per creare richieste individuali al bot. La funzione crea una richiesta con i parametri richiesti da inviare ad Amazon Lex V2.

```
package com.lex.recognizetext.sample;

import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.lexruntimev2.LexRuntimeV2Client;
import software.amazon.awssdk.services.lexruntimev2.model.RecognizeTextRequest;
import software.amazon.awssdk.services.lexruntimev2.model.RecognizeTextResponse;

import java.net.URISyntaxException;
import java.util.UUID;


/**
 * This is a sample application to interact with a bot using RecognizeText API.
 */
public class OrderFlowersSampleApplication {

    public static void main(String[] args) throws URISyntaxException, InterruptedException {
        String botId = "";
        String botAliasId = "";
        String localeId = "en_US";
        String accessKey = "";
        String secretKey = "";
        String sessionId = UUID.randomUUID().toString();
        Region region = Region.US_EAST_1; // pick an appropriate region

        AwsBasicCredentials awsCreds = AwsBasicCredentials.create(accessKey, secretKey);
        AwsCredentialsProvider awsCredentialsProvider = StaticCredentialsProvider.create(awsCreds);

        LexRuntimeV2Client lexV2Client = LexRuntimeV2Client
                .builder()
                .credentialsProvider(awsCredentialsProvider)
                .region(region)
                .build();

        // utterance 1
        String userInput = "I would like to order flowers";
        RecognizeTextRequest recognizeTextRequest = getRecognizeTextRequest(botId, botAliasId, localeId, sessionId, userInput);
        RecognizeTextResponse recognizeTextResponse = lexV2Client.recognizeText(recognizeTextRequest);

        System.out.println("User : " + userInput);
        recognizeTextResponse.messages().forEach(message -> {
            System.out.println("Bot : " + message.content());
        });

        // utterance 2
        userInput = "1 dozen roses";
        recognizeTextRequest = getRecognizeTextRequest(botId, botAliasId, localeId, sessionId, userInput);
        recognizeTextResponse = lexV2Client.recognizeText(recognizeTextRequest);

        System.out.println("User : " + userInput);
        recognizeTextResponse.messages().forEach(message -> {
            System.out.println("Bot : " + message.content());
        });

        // utterance 3
        userInput = "next monday";
        recognizeTextRequest = getRecognizeTextRequest(botId, botAliasId, localeId, sessionId, userInput);
        recognizeTextResponse = lexV2Client.recognizeText(recognizeTextRequest);

        System.out.println("User : " + userInput);
        recognizeTextResponse.messages().forEach(message -> {
            System.out.println("Bot : " + message.content());
        });

        // utterance 4
        userInput = "5 in evening";
        recognizeTextRequest = getRecognizeTextRequest(botId, botAliasId, localeId, sessionId, userInput);
        recognizeTextResponse = lexV2Client.recognizeText(recognizeTextRequest);

        System.out.println("User : " + userInput);
        recognizeTextResponse.messages().forEach(message -> {
            System.out.println("Bot : " + message.content());
        });

        // utterance 5
        userInput = "Yes";
        recognizeTextRequest = getRecognizeTextRequest(botId, botAliasId, localeId, sessionId, userInput);
        recognizeTextResponse = lexV2Client.recognizeText(recognizeTextRequest);

        System.out.println("User : " + userInput);
        recognizeTextResponse.messages().forEach(message -> {
            System.out.println("Bot : " + message.content());
        });
    }

    private static RecognizeTextRequest getRecognizeTextRequest(String botId, String botAliasId, String localeId, String sessionId, String userInput) {
        RecognizeTextRequest recognizeTextRequest = RecognizeTextRequest.builder()
                .botAliasId(botAliasId)
                .botId(botId)
                .localeId(localeId)
                .sessionId(sessionId)
                .text(userInput)
                .build();
        return recognizeTextRequest;
    }
}
```