Usar um aplicativo Java para interagir com um bot do Amazon Lex V2 - Guia do desenvolvedor

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á.

Usar um aplicativo Java para interagir com um bot do Amazon Lex V2

O AWS SDK for Java 2.0 fornece uma interface que você pode usar nos aplicativos Java para interagir com os bots. Use o SDK para Java para criar aplicativos cliente para os usuários.

O aplicativo a seguir interage com o bot OrderFlowers que você criou em Exercício 1: criar um bot a partir de um exemplo. Ele usa o LexRuntimeV2Client do SDK para Java para chamar a operação RecognizeText para 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 a ID do bot no console 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 a ID do alias do bot no console do Amazon Lex V2 na página Aliases. Se não conseguir ver a ID do alias na lista, selecione o ícone de engrenagem no canto superior direito e ative a 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 não tiver um conjunto de chaves, crie-as usando o console do AWS Identity and Access Management.

  • 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; } }