Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AWS Lambda format respons untuk Lex V2
Langkah kedua dalam mengintegrasikan fungsi Lambda ke bot Amazon Lex V2 Anda adalah memahami bidang dalam respons fungsi Lambda dan menentukan parameter mana yang ingin Anda manipulasi. JSONObjek berikut menunjukkan format umum respons Lambda yang dikembalikan ke Amazon Lex V2:
{ "sessionState": { // see Status sesi for details about the structure }, "messages": [ { "contentType": "CustomPayload | ImageResponseCard | PlainText | SSML", "content":
string
, "imageResponseCard": { "title":string
, "subtitle":string
, "imageUrl":string
, "buttons": [ { "text":string
, "value":string
}, ... ] } }, ... ], "requestAttributes": {string
:string
, ... } }
Setiap bidang dalam tanggapan dijelaskan di bawah ini:
Keadaan percakapan antara pengguna dan bot Amazon Lex V2 Anda yang ingin Anda kembalikan. Lihat Status sesi untuk detail tentang struktur. Bidang ini selalu diperlukan.
Daftar pesan yang dikembalikan Amazon Lex V2 ke pelanggan untuk giliran percakapan berikutnya. Jika yang contentType
Anda berikan adalah PlainText
CustomPayload
,, atauSSML
, tulis pesan yang ingin Anda kembalikan ke pelanggan di content
lapangan. Jika yang contentType
Anda berikan adalahImageResponseCard
, berikan detail kartu di imageResponseCard
lapangan. Jika Anda tidak menyediakan pesan, Amazon Lex V2 menggunakan pesan yang sesuai yang ditentukan saat bot dibuat.
messages
Bidang diperlukan jika dialogAction.type
adalah ElicitIntent
atauConfirmIntent
.
Setiap item dalam daftar adalah struktur dalam format berikut, berisi informasi tentang pesan untuk kembali ke pengguna. Inilah contohnya:
{ "contentType": "CustomPayload | ImageResponseCard | PlainText | SSML", "content":
string
, "imageResponseCard": { "title":string
, "subtitle":string
, "imageUrl":string
, "buttons": [ { "text":string
, "value":string
}, ... ] } }
Deskripsi untuk setiap bidang disediakan di bawah ini:
-
contentType— Jenis pesan yang akan digunakan.
CustomPayload
— String respons yang dapat Anda sesuaikan untuk menyertakan data atau metadata untuk aplikasi Anda.ImageResponseCard
— Gambar dengan tombol yang dapat dipilih pelanggan. Lihat ImageResponseCarduntuk informasi lebih lanjut.PlainText
— String teks biasa.SSML
— String yang menyertakan Speech Synthesis Markup Language untuk menyesuaikan respons audio. -
konten — Pesan untuk dikirim ke pengguna. Gunakan bidang ini jika jenis pesan adalah
PlainText
,CustomPayload
, atauSSML
. -
imageResponseCard— Berisi definisi kartu respons untuk ditampilkan kepada pengguna. Gunakan bidang ini jika jenis pesannya
ImageResponseCard
. Peta ke struktur yang berisi bidang-bidang berikut:-
Judul — Judul kartu respons.
-
subtitle — Permintaan bagi pengguna untuk memilih tombol.
-
imageUrl— Tautan ke gambar untuk kartu.
-
tombol — Daftar struktur yang berisi informasi tentang tombol. Setiap struktur berisi
text
bidang dengan teks yang akan ditampilkan danvalue
bidang dengan nilai untuk dikirim ke Amazon Lex V2 jika pelanggan memilih tombol itu. Anda dapat menyertakan hingga tiga tombol.
-
Struktur yang berisi atribut permintaan khusus untuk respons terhadap pelanggan. Untuk informasi selengkapnya, lihat Mengatur atribut permintaan untuk bot Lex V2 Anda. Bidang ini bersifat opsional.
Bidang yang diperlukan dalam respons
Minimal, respons Lambda harus menyertakan sessionState
objek. Di dalamnya, berikan dialogAction
objek dan tentukan type
bidangnya. Bergantung pada type
dialogAction
yang Anda berikan, mungkin ada bidang lain yang diperlukan untuk respons Lambda. Persyaratan ini dijelaskan sebagai berikut, di samping contoh kerja minimal:
Delegasi memungkinkan Amazon Lex V2 menentukan langkah selanjutnya. Tidak ada bidang lain yang diperlukan.
{ "sessionState": { "dialogAction": { "type": "Delegate" } }
ElicitIntentmeminta pelanggan untuk menyatakan niat. Anda harus menyertakan setidaknya satu pesan di messages
bidang untuk meminta pemunculan maksud.
{ "sessionState": { "dialogAction": { "type": "ElicitIntent" }, "messages": [ { "contentType": PlainText, "content": "How can I help you?" } ] }
ElicitSlotmeminta pelanggan untuk memberikan nilai slot. Anda harus memasukkan nama slot di slotToElicit
bidang di dialogAction
objek. Anda juga harus memasukkan sessionState
objek intent
dalam. name
{` "sessionState": { "dialogAction": { "slotToElicit":
"OriginCity"
, "type": "ElicitSlot" }, "intent": { "name":"BookFlight"
} } }
ConfirmIntentmengkonfirmasikan nilai slot pelanggan dan apakah maksudnya siap dipenuhi. Anda harus memasukkan name
dari intent
dalam sessionState
objek dan slots
yang akan dikonfirmasi. Anda juga harus menyertakan setidaknya satu pesan di messages
bidang untuk meminta pengguna konfirmasi nilai slot. Pesan Anda harus meminta respons “ya” atau “tidak”. Jika pengguna menjawab “ya”, Amazon Lex V2 menyetel intent ke. confirmationState
Confirmed
Jika pengguna merespons “tidak”, Amazon Lex V2 menyetel intent ke. confirmationState
Denied
{ "sessionState": { "dialogAction": { "type": "ConfirmIntent" }, "intent": { "name":
"BookFlight"
, "slots": {"DepartureDate"
: { "value": { "originalValue": "tomorrow", "interpretedValue": "2023-05-09", "resolvedValues": [ "2023-05-09" ] } },"DestinationCity"
: { "value": { "originalValue": "sf", "interpretedValue": "sf", "resolvedValues": [ "sf" ] } },"OriginCity"
: { "value": { "originalValue": "nyc", "interpretedValue": "nyc", "resolvedValues": [ "nyc" ] } } } } }, "messages": [ { "contentType": PlainText, "content": "Okay, you want to fly from {OriginCity} to \ {DestinationCity} on {DepartureDate}. Is that correct?" } ] }
Tutup mengakhiri proses pemenuhan maksud dan menunjukkan bahwa tidak ada tanggapan lebih lanjut yang diharapkan dari pengguna. Anda harus memasukkan name
dan state
dari intent
dalam sessionState
objek. Status maksud yang kompatibel adalahFailed
,Fulfilled
, danInProgress
.
"sessionState": { "dialogAction": { "type": "Close" }, "intent": { "name":
"BookFlight"
, "state": "Failed | Fulfilled | InProgress" } }