翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 — ボットのエイリアスの作成時に割り当てた識別子。ボットのエイリアス 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;
}
}