Menggunakan aplikasi Java untuk berinteraksi dengan bot Amazon Lex V2 - Amazon Lex

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan aplikasi Java untuk berinteraksi dengan bot Amazon Lex V2

AWS SDK for Java2.0 menyediakan antarmuka yang dapat Anda gunakan dari aplikasi Java Anda untuk berinteraksi dengan bot Anda. Gunakan SDK for Java untuk membuat aplikasi klien untuk pengguna.

Aplikasi berikut berinteraksi dengan OrderFlowers bot yang Anda buatLatihan 1: Buat bot dari contoh. MenggunakanLexRuntimeV2Client dari SDK for Java untuk memanggil RecognizeTextoperasi untuk melakukan percakapan dengan bot.

Keluaran dari percakapan terlihat seperti ini ini ini ini ini ini ini ini ini ini ini ini ini ini ini

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.

Untuk struktur JSON yang dikirim antara aplikasi klien dan bot Amazon Lex V2, lihatLatihan 2: Tinjau alur percakapan.

Untuk menjalankan aplikasi, Anda harus memberikan informasi berikut ini:

  • BotID — Pengenal yang ditugaskan untuk bot saat Anda membuatnya. Anda dapat melihat ID bot di konsol Amazon Lex V2 di halaman Pengaturan bot.

  • botAliasId — Pengenal yang ditugaskan untuk alias bot saat Anda membuatnya. Anda dapat melihat ID alias bot di konsol Amazon Lex V2 di halaman Alias. Jika Anda tidak dapat melihat ID alias dalam daftar, pilih ikon roda gigi di kanan atas dan nyalakan ID Alias.

  • LocaleID — Pengenal lokal yang Anda gunakan untuk bot Anda. Untuk daftar lokal, lihatBahasa dan lokal yang didukung oleh Amazon Lex V2.

  • accessKey dan secretKey - Kunci otentikasi untuk akun Anda. Jika tidak memiliki sekumpulan kunci, buatlah denganAWS Identity and Access Management konsol.

  • sessionId — Pengenal untuk sesi dengan bot Amazon Lex V2. Dalam hal ini, kode menggunakan UUID acak.

  • Wilayah — Jika bot Anda tidak di Wilayah US East (N. Virginia), pastikan Anda mengubah Wilayah US East (N. Virginia).

Aplikasi menggunakan fungsi yang dipanggilgetRecognizeTextRequest untuk membuat permintaan individu ke bot. Fungsi membangun permintaan dengan parameter yang diperlukan untuk dikirim ke 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; } }