Usando um aplicativo Java para interagir com um bot Amazon Lex V2 - Amazon Lex

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

Usando um aplicativo Java para interagir com um bot Amazon Lex V2

AWS SDK for JavaEle fornece uma interface que você pode usar em seus aplicativos Java para interagir com seus bots. Use o SDK for Java para criar aplicativos de cliente para usuários.

O aplicativo a seguir interage com o OrderFlowers bot que você criou emExercício 1: criar um bot. Ele usa oLexRuntimeV2Client do SDK for Java para chamar a RecognizeTextoperação e conduzir uma conversa com o bot.

O resultado da conversa foi semelhante a

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, consulteExercício 2: Revise o fluxo da conversa.

Para executar o aplicativo, você deve fornecer as seguintes

  • BotID — O identificador atribuído ao bot quando você o criou. Você pode ver o ID do bot no console Amazon Lex V2 na página de 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 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 seu bot. Para obter uma lista de localidades, consulteAmazon e localidades compatíveis com Amazon Lex V2.

  • accessKey e SecretKey — As chaves de autenticação da sua conta. Se você ainda não tiver um conjunto de chaves, crie-as usando oAWS 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.

  • região Leste dos EUA (Norte da Virgínia), certifique-se de alterar a região Leste dos EUA (Norte da Virgínia), certifique-se de alterar a região.

Os aplicativos usam uma função chamadagetRecognizeTextRequest 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; } }