Java 애플리케이션을 사용하여 Amazon Lex V2 봇과 상호 작용 - Amazon Lex

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Java 애플리케이션을 사용하여 Amazon Lex V2 봇과 상호 작용

AWS SDK for Java 2.0은 Java 애플리케이션에서 봇과 상호 작용하는 데 사용할 수 있는 인터페이스를 제공합니다. SDK for Java를 이용한 사용자용 클라이언트 애플리케이션을 빌드합니다.

다음 애플리케이션은 연습 1: 예제를 사용하여 봇 생성에서 생성한 OrderFlowers 봇과 상호 작용합니다. SDK for Java의 LexRuntimeV2Client를 사용하여 봇과 대화를 수행하기 위해 RecognizeText 작업을 호출합니다.

대화의 출력은 다음과 같습니다.

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.

클라이언트 애플리케이션과 Amazon Lex V2 봇 간에 전송되는 JSON 구조에 대한 내용은 연습 2: 대화 흐름 검토 단원을 참조하십시오.

애플리케이션을 실행하려면 다음 정보를 제공해야 합니다.

  • botId – 봇을 만들 때 봇에 할당된 식별자입니다. Amazon Lex V2 콘솔의 봇 설정 페이지에서 봇 ID를 확인할 수 있습니다.

  • botAliasId – 봇 별칭을 만들 때 봇 별칭에 할당된 식별자입니다. Amazon Lex V2 콘솔의 봇 별칭 페이지에서 봇 별칭 ID를 확인할 수 있습니다. 목록에서 별칭 ID가 보이지 않는 경우 오른쪽 상단의 톱니바퀴 아이콘을 선택하고 별칭 ID를 켜십시오.

  • localeId – 봇에 사용한 로캘의 식별자입니다. 로캘 목록은 Amazon Lex V2에서 지원하는 언어 및 로캘 섹션을 참조하십시오.

  • accessKey 및 secretKey – 계정의 인증 키입니다. 키 세트가 없는 경우 AWS Identity and Access Management 콘솔을 사용하여 키를 생성하세요.

  • sessionId – Amazon Lex V2 봇을 사용한 세션의 식별자입니다. 이 경우 코드는 임의의 UUID를 사용합니다.

  • 리전 – 봇이 미국 동부(버지니아 북부) 리전에 없는 경우 리전을 변경해야 합니다.

애플리케이션은 getRecognizeTextRequest라는 함수를 사용하여 봇에 대한 개별 요청을 생성합니다. 이 함수는 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; } }