Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Usar una aplicación Java para interactuar con un bot de Amazon Lex V2
La versión 2.0 de AWS SDK for Java
La siguiente aplicación interactúa con el bot PedirFlores que creó en Ejercicio 1: Creación de un bot a partir de un ejemplo. Utiliza la LexRuntimeV2Client
del SDK para Java para llamar a la operación RecognizeText y mantener una conversación con el bot.
La salida de la conversación es como se muestra a continuación:
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 ver las estructuras JSON que se envían entre la aplicación del cliente y el bot de Amazon Lex V2, consulte Ejercicio 2: Revisar el flujo de la conversación.
Para ejecutar la aplicación, necesita proporcionar la siguiente información:
-
ID de bot: el identificador único asignado al bot cuando se creó. Puede ver el ID del bot en la consola de Amazon Lex V2 en la página Configuración del bot.
-
ID de alias del bot: el identificador único asignado al alias del bot cuando se creó. Puede ver el ID del alias del bot en la consola de Amazon Lex V2 en la página Alias. Si no puede ver el ID de alias en la lista, seleccione el icono con forma de engranaje situado en la esquina superior derecha y active el ID de alias.
-
ID de configuración regional: el identificador de la configuración regional que utilizó para su bot. Para obtener una lista de las configuraciones regionales, consulte Lenguajes y configuraciones regionales compatibles con Amazon Lex V2.
-
Clave de acceso y clave secreta: las claves de autenticación de su cuenta. Si no tiene las claves, puede crearlas utilizando la consola de AWS Identity and Access Management.
-
ID de sesión: un identificador de la sesión con el bot de Amazon Lex V2. En este caso, el código usa un UUID aleatorio.
-
Región: si su bot no está en la región Este de EE. UU. (Norte de Virginia), asegúrese de cambiar de región.
La aplicación utiliza una función llamada getRecognizeTextRequest
para crear solicitudes individuales al bot. La función crea una solicitud con los parámetros necesarios para enviarla a 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; } }