기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Java 애플리케이션을 사용하여 Amazon Lex V2 봇과 상호 작용
AWS SDK for Java 2.0
다음 애플리케이션은 연습 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; } }