Mempersiapkan format respons - Amazon Lex

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

Mempersiapkan format respons

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. Objek JSON 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 PlainTextCustomPayload,, 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.

messagesBidang diperlukan jika dialogAction.type adalah ElicitIntent atauConfirmIntent.

Setiap item dalam daftar adalah struktur dalam format berikut, berisi informasi tentang pesan untuk kembali ke pengguna. Berikut ini 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 adalahPlainText,CustomPayload, atauSSML.

  • imageResponseCard— Berisi definisi kartu respons untuk ditampilkan kepada pengguna. Gunakan bidang ini jika jenis pesannyaImageResponseCard. 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 dan value 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. Lihat Mengatur atribut permintaan untuk informasi selengkapnya. 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" } } }

ConfirmIntentmengkonfirmasi nilai slot pelanggan dan apakah niat siap dipenuhi. Anda harus memasukkan sessionState objek intent dalam dan yang slots akan dikonfirmasi. name 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" } }