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 — ボットのエイリアスの作成時に割り当てた識別子。ボットのエイリアス ID は、Amazon Lex V2 コンソールの エイリアス ページで参照してください。リストにエイリアス 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; } }