As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
O AWS SDK para Java 2.0
O aplicativo a seguir interage com o OrderFlowers bot que você criou emExercício 1: criar um bot a partir de um exemplo. Ele usa o LexRuntimeV2Client
do SDK for Java para chamar RecognizeTexta operação e conduzir uma conversa com o bot.
A saída da conversa parece com o exemplo a seguir:
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.
Para as estruturas JSON enviadas entre o aplicativo cliente e o bot Amazon Lex V2, consulte Exercício 2: revisar o fluxo da conversação.
Para executar o aplicativo de amostra, é necessário fornecer as seguintes informações:
-
botId – O identificador atribuído ao bot quando ele foi criado. Você pode ver o ID do bot no console do Amazon Lex V2 na página Configurações do bot.
-
botAliasId — O identificador atribuído ao alias do bot quando você o criou. Você pode ver o ID do alias do bot no console do Amazon Lex V2 na página Aliases. Se você não conseguir ver o ID do alias na lista, escolha o ícone de engrenagem no canto superior direito e ative o ID do alias.
-
localeId – O identificador da localidade que você usou para o bot. Para obter uma lista de localidades, consulte Idiomas e locais aceitos pelo Amazon Lex V2.
-
accessKey e secretKey – As chaves de autenticação da sua conta. Se você não tiver um conjunto de chaves, crie-as usando o AWS Identity and Access Management console.
-
sessionId – Um identificador para a sessão com o bot Amazon Lex V2. Nesse caso, o código usa um UUID aleatório.
-
region – Se o bot não estiver na região Leste dos EUA (Norte da Virgínia), lembre-se de alterar a região.
Os aplicativos usam uma função chamada getRecognizeTextRequest
para criar solicitações individuais para o bot. A função cria uma solicitação com os parâmetros necessários para enviar ao 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;
}
}