Jika Anda menggunakan Amazon Lex V2, lihat panduan Amazon Lex V2 sebagai gantinya.
Jika Anda menggunakan Amazon Lex V1, kami sarankan untuk meningkatkan bot Anda ke Amazon Lex V2. Kami tidak lagi menambahkan fitur baru ke V1 dan sangat menyarankan menggunakan V2 untuk semua bot baru.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
PostText
Mengirim masukan pengguna ke Amazon Lex. Aplikasi klien dapat menggunakan API ini untuk mengirim permintaan ke Amazon Lex saat runtime. Amazon Lex kemudian menafsirkan input pengguna menggunakan model pembelajaran mesin yang dibuatnya untuk bot.
Sebagai tanggapan, Amazon Lex mengembalikan yang berikutnya message
untuk menyampaikan kepada pengguna opsional responseCard
untuk ditampilkan. Perhatikan contoh pesan berikut:
-
Untuk masukan pengguna “Saya ingin pizza”, Amazon Lex mungkin mengembalikan respons dengan pesan yang memunculkan data slot (misalnya, PizzaSize): “Pizza ukuran apa yang Anda inginkan?”
-
Setelah pengguna memberikan semua informasi pesanan pizza, Amazon Lex mungkin mengembalikan tanggapan dengan pesan untuk mendapatkan konfirmasi pengguna “Lanjutkan dengan pesanan pizza?”.
-
Setelah pengguna membalas prompt konfirmasi dengan “ya”, Amazon Lex mungkin mengembalikan pernyataan kesimpulan: “Terima kasih, pizza keju Anda telah dipesan.”
Tidak semua pesan Amazon Lex memerlukan respons pengguna. Misalnya, pernyataan kesimpulan tidak memerlukan tanggapan. Beberapa pesan hanya memerlukan respons pengguna “ya” atau “tidak”. Selain itumessage
, Amazon Lex menyediakan konteks tambahan tentang pesan dalam respons yang mungkin Anda gunakan untuk meningkatkan perilaku klien, misalnya, untuk menampilkan antarmuka pengguna klien yang sesuai. Ini adalahslotToElicit
,dialogState
,intentName
, dan slots
bidang dalam tanggapan. Pertimbangkan contoh berikut:
-
Jika pesannya adalah untuk mendapatkan data slot, Amazon Lex mengembalikan informasi konteks berikut:
-
dialogState
disetel ke ElicitSlot -
intentName
disetel ke nama maksud dalam konteks saat ini -
slotToElicit
atur ke nama slotmessage
yang mendapatkan informasi -
slots
disetel ke peta slot, dikonfigurasi untuk maksud, dengan nilai yang diketahui saat ini
-
-
Jika pesan adalah prompt konfirmasi,
dialogState
diatur ke ConfirmIntent danSlotToElicit
diatur ke null. -
Jika pesan adalah prompt klarifikasi (dikonfigurasi untuk maksud) yang menunjukkan bahwa maksud pengguna tidak dipahami, maka akan disetel ke ElicitIntent dan
dialogState
slotToElicit
disetel ke null.
Selain itu, Amazon Lex juga mengembalikan aplikasi khusus sessionAttributes
Anda. Untuk informasi selengkapnya, lihat Mengelola Konteks Percakapan.
Minta Sintaks
POST /bot/botName
/alias/botAlias
/user/userId
/text HTTP/1.1
Content-type: application/json
{
"activeContexts": [
{
"name": "string
",
"parameters": {
"string
" : "string
"
},
"timeToLive": {
"timeToLiveInSeconds": number
,
"turnsToLive": number
}
}
],
"inputText": "string
",
"requestAttributes": {
"string
" : "string
"
},
"sessionAttributes": {
"string
" : "string
"
}
}
Parameter Permintaan URI
Permintaan menggunakan parameter URI berikut.
- botAlias
-
Alias bot Amazon Lex.
Diperlukan: Ya
- botName
-
Nama bot Amazon Lex.
Diperlukan: Ya
- userId
-
ID pengguna aplikasi klien. Amazon Lex menggunakan ini untuk mengidentifikasi percakapan pengguna dengan bot Anda. Saat runtime, setiap permintaan harus berisi
userID
bidang.Untuk memutuskan ID pengguna yang akan digunakan untuk aplikasi Anda, pertimbangkan faktor-faktor berikut.
-
userID
Bidang tidak boleh berisi informasi pribadi pengguna, misalnya, nama, nomor identifikasi pribadi, atau informasi pribadi pengguna akhir lainnya. -
Jika Anda ingin pengguna memulai percakapan di satu perangkat dan melanjutkan di perangkat lain, gunakan pengenal khusus pengguna.
-
Jika Anda ingin pengguna yang sama dapat melakukan dua percakapan independen di dua perangkat yang berbeda, pilih pengenal khusus perangkat.
-
Pengguna tidak dapat melakukan dua percakapan independen dengan dua versi berbeda dari bot yang sama. Misalnya, pengguna tidak dapat melakukan percakapan dengan versi PROD dan BETA dari bot yang sama. Jika Anda mengantisipasi bahwa pengguna perlu melakukan percakapan dengan dua versi yang berbeda, misalnya, saat menguji, sertakan alias bot di ID pengguna untuk memisahkan dua percakapan.
Kendala Panjang: Panjang minimum 2. Panjang maksimum 100.
Pola:
[0-9a-zA-Z._:-]+
Wajib: Ya
-
Isi Permintaan
Permintaan menerima data berikut dalam format JSON.
- activeContexts
-
Daftar konteks yang aktif untuk permintaan. Konteks dapat diaktifkan ketika maksud sebelumnya terpenuhi, atau dengan memasukkan konteks dalam permintaan,
Jika Anda tidak menentukan daftar konteks, Amazon Lex akan menggunakan daftar konteks saat ini untuk sesi tersebut. Jika Anda menentukan daftar kosong, semua konteks untuk sesi akan dihapus.
Tipe: Array objek ActiveContext
Anggota Array: Jumlah minimum 0 item. Jumlah maksimum 20 item.
Diperlukan: Tidak
- inputText
-
Teks yang dimasukkan pengguna (Amazon Lex menafsirkan teks ini).
Saat Anda menggunakan AWS CLI, Anda tidak dapat meneruskan URL dalam parameter.
--input-text
Lulus URL menggunakan--cli-input-json
parameter sebagai gantinya.Jenis: String
Batasan Panjang: Panjang minimum 1. Panjang maksimum 1024.
Diperlukan: Ya
- requestAttributes
-
Informasi khusus permintaan diteruskan antara Amazon Lex dan aplikasi klien.
Namespace dicadangkan
x-amz-lex:
untuk atribut khusus. Jangan membuat atribut permintaan apa pun dengan awalanx-amz-lex:
.Untuk informasi selengkapnya, lihat Menyetel Atribut Permintaan.
Tipe: Peta antar string
Diperlukan: Tidak
- sessionAttributes
-
Informasi khusus aplikasi diteruskan antara Amazon Lex dan aplikasi klien.
Untuk informasi selengkapnya, lihat Menyetel Atribut Sesi.
Tipe: Peta antar string
Diperlukan: Tidak
Sintaksis Respons
HTTP/1.1 200
Content-type: application/json
{
"activeContexts": [
{
"name": "string",
"parameters": {
"string" : "string"
},
"timeToLive": {
"timeToLiveInSeconds": number,
"turnsToLive": number
}
}
],
"alternativeIntents": [
{
"intentName": "string",
"nluIntentConfidence": {
"score": number
},
"slots": {
"string" : "string"
}
}
],
"botVersion": "string",
"dialogState": "string",
"intentName": "string",
"message": "string",
"messageFormat": "string",
"nluIntentConfidence": {
"score": number
},
"responseCard": {
"contentType": "string",
"genericAttachments": [
{
"attachmentLinkUrl": "string",
"buttons": [
{
"text": "string",
"value": "string"
}
],
"imageUrl": "string",
"subTitle": "string",
"title": "string"
}
],
"version": "string"
},
"sentimentResponse": {
"sentimentLabel": "string",
"sentimentScore": "string"
},
"sessionAttributes": {
"string" : "string"
},
"sessionId": "string",
"slots": {
"string" : "string"
},
"slotToElicit": "string"
}
Elemen Respons
Jika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.
Layanan mengembalikan data berikut dalam format JSON.
- activeContexts
-
Daftar konteks aktif untuk sesi tersebut. Konteks dapat diatur ketika maksud terpenuhi atau dengan memanggil
PostContent
,PostText
, atauPutSession
operasi.Anda dapat menggunakan konteks untuk mengontrol maksud yang dapat menindaklanjuti intent, atau untuk memodifikasi operasi aplikasi Anda.
Tipe: Array objek ActiveContext
Anggota Array: Jumlah minimum 0 item. Jumlah maksimum 20 item.
- alternativeIntents
-
Satu hingga empat maksud alternatif yang mungkin berlaku untuk maksud pengguna.
Setiap alternatif menyertakan skor yang menunjukkan seberapa yakin Amazon Lex bahwa maksud tersebut cocok dengan maksud pengguna. Maksudnya diurutkan berdasarkan skor kepercayaan.
Tipe: Array objek PredictedIntent
Anggota Array: Jumlah maksimum 4 item.
- botVersion
-
Versi bot yang menanggapi percakapan. Anda dapat menggunakan informasi ini untuk membantu menentukan apakah satu versi bot berkinerja lebih baik daripada versi lain.
Jenis: String
Batasan Panjang: Panjang minimum 1. Panjang maksimum adalah 64.
Pola:
[0-9]+|\$LATEST
- dialogState
-
Mengidentifikasi keadaan interaksi pengguna saat ini. Amazon Lex mengembalikan salah satu nilai berikut sebagai
dialogState
. Klien secara opsional dapat menggunakan informasi ini untuk menyesuaikan antarmuka pengguna.-
ElicitIntent
- Amazon Lex ingin mendapatkan niat pengguna.Misalnya, pengguna mungkin mengucapkan maksud (“Saya ingin memesan pizza”). Jika Amazon Lex tidak dapat menyimpulkan maksud pengguna dari ucapan ini, Amazon Lex akan mengembalikan DialogState ini.
-
ConfirmIntent
- Amazon Lex mengharapkan respons “ya” atau “tidak”.Misalnya, Amazon Lex menginginkan konfirmasi pengguna sebelum memenuhi maksud.
Alih-alih “ya” atau “tidak” sederhana, pengguna mungkin merespons dengan informasi tambahan. Misalnya, “ya, tapi buatlah pizza kerak kental” atau “tidak, saya ingin memesan minuman”. Amazon Lex dapat memproses informasi tambahan tersebut (dalam contoh ini, memperbarui nilai slot tipe kerak, atau mengubah maksud dari OrderPizza ke OrderDrink).
-
ElicitSlot
- Amazon Lex mengharapkan nilai slot untuk maksud saat ini.Misalnya, anggaplah dalam tanggapannya Amazon Lex mengirim pesan ini: “Berapa ukuran pizza yang Anda inginkan?”. Seorang pengguna mungkin membalas dengan nilai slot (misalnya, “medium”). Pengguna mungkin juga memberikan informasi tambahan dalam tanggapan (misalnya, “pizza kerak tebal sedang”). Amazon Lex dapat memproses informasi tambahan tersebut dengan tepat.
-
Fulfilled
- Menyampaikan bahwa fungsi Lambda yang dikonfigurasi untuk maksud telah berhasil memenuhi intent. -
ReadyForFulfillment
- Menyampaikan bahwa klien harus memenuhi niat. -
Failed
- Menyampaikan bahwa percakapan dengan pengguna gagal.Hal ini dapat terjadi karena berbagai alasan termasuk bahwa pengguna tidak memberikan respons yang sesuai terhadap permintaan dari layanan (Anda dapat mengonfigurasi berapa kali Amazon Lex dapat meminta pengguna untuk informasi tertentu), atau fungsi Lambda gagal memenuhi intent.
Jenis: String
Nilai yang Valid:
ElicitIntent | ConfirmIntent | ElicitSlot | Fulfilled | ReadyForFulfillment | Failed
-
- intentName
-
Maksud pengguna saat ini yang diketahui Amazon Lex.
Jenis: String
- message
-
Pesan untuk disampaikan kepada pengguna. Pesan dapat berasal dari konfigurasi bot atau dari fungsi Lambda.
Jika intent tidak dikonfigurasi dengan fungsi Lambda, atau jika fungsi Lambda
Delegate
ditampilkan sebagaidialogAction.type
responsnya, Amazon Lex memutuskan tindakan berikutnya dan memilih pesan yang sesuai dari konfigurasi bot berdasarkan konteks interaksi saat ini. Misalnya, jika Amazon Lex tidak dapat memahami masukan pengguna, Amazon Lex menggunakan pesan prompt klarifikasi.Saat membuat intent, Anda dapat menetapkan pesan ke grup. Ketika pesan ditetapkan ke grup Amazon Lex mengembalikan satu pesan dari setiap grup dalam respons. Bidang pesan adalah string JSON yang lolos yang berisi pesan. Untuk informasi lebih lanjut tentang struktur string JSON yang dikembalikan, lihatFormat Pesan yang Didukung.
Jika fungsi Lambda mengembalikan pesan, Amazon Lex meneruskannya ke klien dalam responsnya.
Jenis: String
Batasan Panjang: Panjang minimum 1. Panjang maksimum 1024.
- messageFormat
-
Format pesan respons. Salah satu nilai berikut:
-
PlainText
- Pesan berisi teks UTF-8 biasa. -
CustomPayload
- Pesan adalah format khusus yang ditentukan oleh fungsi Lambda. -
SSML
- Pesan berisi teks yang diformat untuk output suara. -
Composite
- Pesan berisi objek JSON yang lolos yang berisi satu atau beberapa pesan dari grup tempat pesan ditetapkan saat maksud dibuat.
Jenis: String
Nilai yang Valid:
PlainText | CustomPayload | SSML | Composite
-
- nluIntentConfidence
-
Memberikan skor yang menunjukkan seberapa yakin Amazon Lex bahwa intent yang dikembalikan adalah yang cocok dengan maksud pengguna. Skornya antara 0,0 dan 1,0. Untuk informasi lebih lanjut, lihat Skor Keyakinan.
Skor adalah skor relatif, bukan skor absolut. Skor dapat berubah berdasarkan peningkatan Amazon Lex.
Tipe: Objek IntentConfidence
- responseCard
-
Merupakan opsi yang harus ditanggapi pengguna terhadap prompt saat ini. Kartu Respons dapat berasal dari konfigurasi bot (di konsol Amazon Lex, pilih tombol pengaturan di sebelah slot) atau dari kait kode (fungsi Lambda).
Tipe: Objek ResponseCard
- sentimentResponse
-
Sentimen yang diungkapkan dan diucapkan.
Ketika bot dikonfigurasi untuk mengirim ucapan ke Amazon Comprehend untuk analisis sentimen, bidang ini berisi hasil analisis.
Tipe: Objek SentimentResponse
- sessionAttributes
-
Peta pasangan nilai kunci yang mewakili informasi konteks khusus sesi.
Tipe: Peta string ke string
- sessionId
-
Pengenal unik untuk sesi tersebut.
Jenis: String
- slots
-
Slot maksud yang dideteksi Amazon Lex dari input pengguna dalam percakapan.
Amazon Lex membuat daftar resolusi yang berisi kemungkinan nilai untuk slot. Nilai yang dikembalikan ditentukan oleh yang
valueSelectionStrategy
dipilih ketika jenis slot dibuat atau diperbarui. JikavalueSelectionStrategy
diatur keORIGINAL_VALUE
, nilai yang diberikan oleh pengguna dikembalikan, jika nilai pengguna mirip dengan nilai slot. JikavalueSelectionStrategy
diatur keTOP_RESOLUTION
Amazon Lex mengembalikan nilai pertama dalam daftar resolusi atau, jika tidak ada daftar resolusi, null. Jika Anda tidak menentukan avalueSelectionStrategy
, defaultnya adalahORIGINAL_VALUE
.Tipe: Peta string ke string
- slotToElicit
-
Jika
dialogState
nilainyaElicitSlot
, mengembalikan nama slot yang Amazon Lex memunculkan nilai.Jenis: String
Kesalahan
- BadGatewayException
-
Entah bot Amazon Lex masih dibangun, atau salah satu layanan dependen (Amazon Polly, AWS Lambda) gagal dengan kesalahan layanan internal.
Kode Status HTTP: 502
- BadRequestException
-
Validasi permintaan gagal, tidak ada pesan yang dapat digunakan dalam konteksnya, atau pembuatan bot gagal, masih dalam proses, atau berisi perubahan yang belum dibangun.
Kode Status HTTP: 400
- ConflictException
-
Dua klien menggunakan akun AWS yang sama, bot Amazon Lex, dan ID pengguna.
Kode Status HTTP: 409
- DependencyFailedException
-
Salah satu dependensi, seperti AWS Lambda atau Amazon Polly, memberikan pengecualian. Misalnya,
-
Jika Amazon Lex tidak memiliki izin yang cukup untuk memanggil fungsi Lambda.
-
Jika fungsi Lambda membutuhkan waktu lebih dari 30 detik untuk dijalankan.
-
Jika fungsi Lambda pemenuhan mengembalikan
Delegate
tindakan dialog tanpa menghapus nilai slot apa pun.
Kode Status HTTP: 424
-
- InternalFailureException
-
Kesalahan layanan internal. Coba lagi panggilannya.
Kode Status HTTP: 500
- LimitExceededException
-
Melebihi batas.
Kode Status HTTP: 429
- LoopDetectedException
-
Pengecualian ini tidak digunakan.
Kode Status HTTP: 508
- NotFoundException
-
Sumber daya (seperti bot Amazon Lex atau alias) yang disebut tidak ditemukan.
Kode Status HTTP: 404
Lihat Juga
Untuk informasi selengkapnya tentang penggunaan API ini di salah satu AWS SDK khusus bahasa, lihat berikut ini: