Utilisation d'une application Java pour interagir avec un bot Amazon Lex V2 - Amazon Lex

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation d'une application Java pour interagir avec un bot Amazon Lex V2

La AWS SDK for Javaversion 2.0 fournit une interface que vous pouvez utiliser à partir de vos applications Java pour interagir avec vos robots. Utilisez le SDK for Java client pour créer des applications client pour les utilisateurs.

L'application suivante interagit avec le OrderFlowers bot que vous avez créé dansExercice 1 : créer un bot à partir d'un exemple. Il utilise leLexRuntimeV2Client fichier depuis le SDK for Java pour appeler l'RecognizeTextopération afin de mener une conversation avec le bot.

La sortie de la conversation ressemble à suit suit suit suit suit suit suit suit suit suit suit suit

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.

Pour les structures JSON qui sont envoyées entre l'application cliente et le bot Amazon Lex V2, consultezExercice 2 : Passez en revue le flux de conversation.

Pour exécuter l'application, vous devez renseigner les informations suivantes.

  • BotID comme suit suit suit suit suit suit suit suit suit suit suit suit suit suit suit suit suit suit suit suit suit suit suit suit suit suit suit suit Vous pouvez voir l'ID du bot dans la console Amazon Lex V2 sur la page des paramètres du bot.

  • botAliasId — L'ID se présente comme suit suit suit suit suit suit suit suit suit suit suit suit suit suit suit suit suit suit suit suit suit Vous pouvez consulter l'identifiant d'alias du bot dans la console Amazon Lex V2 sur la page Alias. Si vous ne voyez pas l'identifiant d'alias dans la liste, cliquez sur l'icône en forme d'engrenage en haut à droite et activez Alias ID.

  • localeID — L'identifiant des paramètres régionaux que vous avez utilisés pour votre bot. Pour obtenir la liste des paramètres régionaux, reportez-vous à la sectionLangues et paramètres régionaux pris en charge par Amazon Lex V2.

  • accessKey et secretKey : clés d'authentification de votre compte. Si vous n'en avez pas, créez-en un à l'aide de laAWS Identity and Access Management console.

  • SessionId : identifiant de la session avec le bot Amazon Lex V2. Dans ce cas, le code utilise un UUID aléatoire.

  • région USA Est (Virginie du Nord), assurez-vous de changer la région USA Est (Virginie du Nord), assurez-vous de changer la région USA Est (Virginie du Nord).

Les applications utilisent une fonction appeléegetRecognizeTextRequest à créer des demandes individuelles au bot. La fonction crée une requête avec les paramètres requis à envoyer à 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; } }