本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Java 應用程式與 Amazon Lex V2 機器人互動
AWS SDK for Java2.0
下列應用程式會與您在中建立的 OrderFlowers 機器人互動練習 1:從範例建立機器人。它使用LexRuntimeV2Client
來自 SDK for Java 來調用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:檢閱交談流程。
若要執行應用程式,您必須提供以項目資訊:
-
BID ID — 建立機器人時向其指派的 ID ID 類似於如果 ID 類似於如果 ID 您可以在機器人設定頁面上的 Amazon Lex V2 主控台中查看機器人識別碼。
-
botAliasId — 建立機器人別名時指派給機器人別名 ID 類似於如果。您可以在「別名」頁面上的 Amazon Lex V2 主控台中看到機器人別名 ID。如果您在清單中看不到別名 ID,請選擇右上角的齒輪圖示,然後開啟「別名 ID」。
-
LocaleID — 您用於機器人的地區設定識別碼。如需地區設定的清單,請參閱亞馬遜萊克斯 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; } }