Peristiwa Input Fungsi Lambda dan Format Respons - Amazon Lex V1

Pemberitahuan akhir dukungan: Pada 15 September 2025, AWS akan menghentikan dukungan untuk Amazon Lex V1. Setelah 15 September 2025, Anda tidak lagi dapat mengakses konsol Amazon Lex V1 atau sumber daya Amazon Lex V1. Jika Anda menggunakan Amazon Lex V2, lihat panduan Amazon Lex V2 sebagai gantinya.

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

Peristiwa Input Fungsi Lambda dan Format Respons

Bagian ini menjelaskan struktur data peristiwa yang disediakan Amazon Lex ke fungsi Lambda. Gunakan informasi ini untuk mengurai masukan dalam kode Lambda Anda. Ini juga menjelaskan format respons yang Amazon Lex harapkan fungsi Lambda Anda kembali.

Format Peristiwa Masukan

Berikut ini menunjukkan format umum acara Amazon Lex yang diteruskan ke fungsi Lambda. Gunakan informasi ini saat Anda menulis fungsi Lambda Anda.

catatan

Format input dapat berubah tanpa perubahan yang sesuai dalam formatmessageVersion. Kode Anda seharusnya tidak menimbulkan kesalahan jika ada bidang baru.

{ "currentIntent": { "name": "intent-name", "nluIntentConfidenceScore": score, "slots": { "slot name": "value", "slot name": "value" }, "slotDetails": { "slot name": { "resolutions" : [ { "value": "resolved value" }, { "value": "resolved value" } ], "originalValue": "original text" }, "slot name": { "resolutions" : [ { "value": "resolved value" }, { "value": "resolved value" } ], "originalValue": "original text" } }, "confirmationStatus": "None, Confirmed, or Denied (intent confirmation, if configured)" }, "alternativeIntents": [ { "name": "intent-name", "nluIntentConfidenceScore": score, "slots": { "slot name": "value", "slot name": "value" }, "slotDetails": { "slot name": { "resolutions" : [ { "value": "resolved value" }, { "value": "resolved value" } ], "originalValue": "original text" }, "slot name": { "resolutions" : [ { "value": "resolved value" }, { "value": "resolved value" } ], "originalValue": "original text" } }, "confirmationStatus": "None, Confirmed, or Denied (intent confirmation, if configured)" } ], "bot": { "name": "bot name", "alias": "bot alias", "version": "bot version" }, "userId": "User ID specified in the POST request to Amazon Lex.", "inputTranscript": "Text used to process the request", "invocationSource": "FulfillmentCodeHook or DialogCodeHook", "outputDialogMode": "Text or Voice, based on ContentType request header in runtime API request", "messageVersion": "1.0", "sessionAttributes": { "key": "value", "key": "value" }, "requestAttributes": { "key": "value", "key": "value" }, "recentIntentSummaryView": [ { "intentName": "Name", "checkpointLabel": Label, "slots": { "slot name": "value", "slot name": "value" }, "confirmationStatus": "None, Confirmed, or Denied (intent confirmation, if configured)", "dialogActionType": "ElicitIntent, ElicitSlot, ConfirmIntent, Delegate, or Close", "fulfillmentState": "Fulfilled or Failed", "slotToElicit": "Next slot to elicit" } ], "sentimentResponse": { "sentimentLabel": "sentiment", "sentimentScore": "score" }, "kendraResponse": { Complete query response from Amazon Kendra }, "activeContexts": [ { "timeToLive": { "timeToLiveInSeconds": seconds, "turnsToLive": turns }, "name": "name", "parameters": { "key name": "value" } } ] }

Perhatikan informasi tambahan berikut tentang bidang acara:

  • currentIntent — Menyediakan maksud,, dan bidang. name slots slotDetails confirmationStatus

     

    nluIntentConfidenceScoreadalah keyakinan yang dimiliki Amazon Lex bahwa maksud saat ini adalah yang paling cocok dengan maksud pengguna saat ini.

     

    slotsadalah peta nama slot, dikonfigurasi untuk maksud, ke nilai slot yang telah dikenali Amazon Lex dalam percakapan pengguna. Nilai slot tetap nol sampai pengguna memberikan nilai.

     

    Nilai slot dalam acara input mungkin tidak cocok dengan salah satu nilai yang dikonfigurasi untuk slot. Misalnya, jika pengguna menanggapi prompt “Mobil warna apa yang Anda inginkan?” dengan “pizza,” Amazon Lex akan mengembalikan “pizza” sebagai nilai slot. Fungsi Anda harus memvalidasi nilai untuk memastikan bahwa nilai tersebut masuk akal dalam konteks.

     

    slotDetailsmemberikan informasi tambahan tentang nilai slot. resolutionsArray berisi daftar nilai tambahan yang dikenali untuk slot. Setiap slot dapat memiliki maksimal lima nilai.

     

    originalValueBidang berisi nilai yang dimasukkan oleh pengguna untuk slot. Ketika jenis slot dikonfigurasi untuk mengembalikan nilai resolusi teratas sebagai nilai slot, originalValue mungkin berbeda dari nilai di slots bidang.

     

    confirmationStatusmemberikan respons pengguna terhadap prompt konfirmasi, jika ada. Misalnya, jika Amazon Lex bertanya, “Apakah Anda ingin memesan pizza keju besar? ,” tergantung pada respons pengguna, nilai bidang ini bisa Confirmed atauDenied. Jika tidak, nilai bidang ini adalahNone.

     

    Jika pengguna mengonfirmasi maksud, Amazon Lex menyetel bidang ini keConfirmed. Jika pengguna menyangkal maksud tersebut, Amazon Lex menetapkan nilai ini ke. Denied

     

    Dalam tanggapan konfirmasi, ucapan pengguna mungkin memberikan pembaruan slot. Misalnya, pengguna mungkin mengatakan “ya, ubah ukuran menjadi sedang.” Dalam hal ini, acara Lambda berikutnya memiliki nilai slot yang diperbarui, PizzaSize disetel ke. medium Amazon Lex menetapkan confirmationStatus keNone, karena pengguna memodifikasi beberapa data slot, memerlukan fungsi Lambda untuk melakukan validasi data pengguna.

     

  • AlternativeIntents — Jika Anda mengaktifkan skor kepercayaan, Amazon Lex mengembalikan hingga empat maksud alternatif. Setiap intent menyertakan skor yang menunjukkan tingkat kepercayaan yang dimiliki Amazon Lex bahwa maksud tersebut adalah maksud yang benar berdasarkan ucapan pengguna.

     

    Isi dari maksud alternatif sama dengan isi currentIntent lapangan. Untuk informasi selengkapnya, lihat Menggunakan Skor Keyakinan.

     

  • bot — Informasi tentang bot yang memproses permintaan.

    • name— Nama bot yang memproses permintaan.

    • alias— Alias versi bot yang memproses permintaan.

    • version— Versi bot yang memproses permintaan.

     

  • UserID — Nilai ini disediakan oleh aplikasi klien. Amazon Lex meneruskannya ke fungsi Lambda.

     

  • InputTranscript — Teks yang digunakan untuk memproses permintaan.

    Jika input adalah teks, inputTranscript bidang berisi teks yang dimasukkan oleh pengguna.

     

    Jika input adalah aliran audio, inputTranscript bidang berisi teks yang diekstrak dari aliran audio. Ini adalah teks yang sebenarnya diproses untuk mengenali maksud dan nilai slot.

     

  • InvocationSource - Untuk menunjukkan mengapa Amazon Lex menjalankan fungsi Lambda, ia menetapkan ini ke salah satu nilai berikut:

    • DialogCodeHook— Amazon Lex menetapkan nilai ini untuk mengarahkan fungsi Lambda untuk menginisialisasi fungsi dan untuk memvalidasi input data pengguna.

       

      Ketika intent dikonfigurasi untuk menjalankan fungsi Lambda sebagai pengait kode inisialisasi dan validasi, Amazon Lex memanggil fungsi Lambda yang ditentukan pada setiap input (ucapan) pengguna setelah Amazon Lex memahami maksud tersebut.

      catatan

      Jika maksudnya tidak jelas, Amazon Lex tidak dapat menjalankan fungsi Lambda.

       

    • FulfillmentCodeHook— Amazon Lex menetapkan nilai ini untuk mengarahkan fungsi Lambda untuk memenuhi maksud.

       

      Jika intent dikonfigurasi untuk menjalankan fungsi Lambda sebagai hook kode pemenuhan, Amazon Lex menetapkan nilai ini hanya setelah memiliki semua data slot invocationSource untuk memenuhi intent.

       

    Dalam konfigurasi intent, Anda dapat memiliki dua fungsi Lambda terpisah untuk menginisialisasi dan memvalidasi data pengguna dan memenuhi intent. Anda juga dapat menggunakan satu fungsi Lambda untuk melakukan keduanya. Dalam hal ini, fungsi Lambda Anda dapat menggunakan invocationSource nilai untuk mengikuti jalur kode yang benar.

     

  • outputDialogMode— Untuk setiap input pengguna, klien mengirimkan permintaan ke Amazon Lex menggunakan salah satu operasi API runtime, PostContent atauPostText. Amazon Lex menggunakan parameter permintaan untuk menentukan apakah respons terhadap klien adalah teks atau suara, dan menetapkan bidang ini sesuai.

     

    Fungsi Lambda dapat menggunakan informasi ini untuk menghasilkan pesan yang sesuai. Misalnya, jika klien mengharapkan respons suara, fungsi Lambda Anda dapat menampilkan Speech Synthesis Markup Language (SSML) alih-alih teks.

     

  • MessageVersion — Versi pesan yang mengidentifikasi format data peristiwa yang masuk ke fungsi Lambda dan format respons yang diharapkan dari fungsi Lambda.

    catatan

    Anda mengonfigurasi nilai ini saat menentukan maksud. Dalam implementasi saat ini, hanya pesan versi 1.0 yang didukung. Oleh karena itu, konsol mengasumsikan nilai default 1.0 dan tidak menampilkan versi pesan.

  • SessionAttributes — Atribut sesi khusus aplikasi yang dikirimkan klien dalam permintaan. Jika Anda ingin Amazon Lex memasukkannya ke dalam respons terhadap klien, fungsi Lambda Anda harus mengirimkannya kembali ke Amazon Lex sebagai tanggapan. Untuk informasi selengkapnya, silakan lihat Mengatur Atribut Sesi

     

  • RequestAttributes - Atribut khusus permintaan yang dikirim klien dalam permintaan. Gunakan atribut permintaan untuk meneruskan informasi yang tidak perlu bertahan selama seluruh sesi. Jika tidak ada atribut permintaan, nilainya akan menjadi null. Untuk informasi selengkapnya, silakan lihat Mengatur Atribut Permintaan

     

  • recentIntentSummaryLihat — Informasi tentang keadaan suatu niat. Anda dapat melihat informasi tentang tiga maksud terakhir yang digunakan. Anda dapat menggunakan informasi ini untuk menetapkan nilai dalam intent atau kembali ke intent sebelumnya. Untuk informasi selengkapnya, lihat Mengelola Sesi Dengan Amazon Lex API.

     

  • SentimentResponse — Hasil analisis sentimen Amazon Comprehend dari ucapan terakhir. Anda dapat menggunakan informasi ini untuk mengelola alur percakapan bot Anda tergantung pada sentimen yang diungkapkan oleh pengguna. Untuk informasi selengkapnya, lihat Analisis Sentimen.

     

  • KendrareSponse — Hasil kueri ke indeks Amazon Kendra. Hanya ada dalam input ke hook kode pemenuhan dan hanya ketika intent memperluas intent bawaan. AMAZON.KendraSearchIntent Bidang berisi seluruh respons dari pencarian Amazon Kendra. Untuk informasi selengkapnya, lihat AMAZON.KendraSearchIntent.

     

  • ActiveContext - Satu atau lebih konteks yang aktif selama pergantian percakapan dengan pengguna ini.

    • timeToLive— Lamanya waktu atau jumlah putaran dalam percakapan dengan pengguna yang konteksnya tetap aktif.

    • nama — nama konteksnya.

    • parameter daftar pasangan kunci/nilai berisi nama dan nilai slot dari maksud yang mengaktifkan konteks.

    Untuk informasi selengkapnya, lihat Mengatur Konteks Maksud.

Format Respons

Amazon Lex mengharapkan respons dari fungsi Lambda dalam format berikut:

{ "sessionAttributes": { "key1": "value1", "key2": "value2" ... }, "recentIntentSummaryView": [ { "intentName": "Name", "checkpointLabel": "Label", "slots": { "slot name": "value", "slot name": "value" }, "confirmationStatus": "None, Confirmed, or Denied (intent confirmation, if configured)", "dialogActionType": "ElicitIntent, ElicitSlot, ConfirmIntent, Delegate, or Close", "fulfillmentState": "Fulfilled or Failed", "slotToElicit": "Next slot to elicit" } ], "activeContexts": [ { "timeToLive": { "timeToLiveInSeconds": seconds, "turnsToLive": turns }, "name": "name", "parameters": { "key name": "value" } } ], "dialogAction": { "type": "ElicitIntent, ElicitSlot, ConfirmIntent, Delegate, or Close", Full structure based on the type field. See below for details. } }

Responsnya terdiri dari empat bidang. Bidang sessionAttributesrecentIntentSummaryView,, dan activeContexts bidang adalah opsional, dialogAction bidang diperlukan. Isi dialogAction bidang tergantung pada nilai type bidang. Untuk detailnya, lihat dialogAction.

sessionAttributes

Tidak wajib. Jika Anda memasukkan sessionAttributes bidang itu bisa kosong. Jika fungsi Lambda Anda tidak menampilkan atribut sesi, fungsi terakhir yang diketahui sessionAttributes diteruskan melalui API atau fungsi Lambda tetap ada. Untuk informasi lebih lanjut, lihat PostContent dan PostText operasi.

"sessionAttributes": { "key1": "value1", "key2": "value2" }

recentIntentSummaryLihat

Tidak wajib. Jika disertakan, tetapkan nilai untuk satu atau lebih maksud terbaru. Anda dapat memasukkan informasi hingga tiga maksud. Misalnya, Anda dapat menetapkan nilai untuk intent sebelumnya berdasarkan informasi yang dikumpulkan oleh intent saat ini. Informasi dalam ringkasan harus valid untuk maksud tersebut. Misalnya, nama maksud harus berupa intent di bot. Jika Anda menyertakan nilai slot dalam tampilan ringkasan, slot harus ada dalam maksud. Jika Anda tidak menyertakan recentIntentSummaryView dalam respons Anda, semua nilai untuk maksud terbaru tetap tidak berubah. Untuk informasi selengkapnya, lihat PutSession operasi atau tipe IntentSummary data.

"recentIntentSummaryView": [ { "intentName": "Name", "checkpointLabel": "Label", "slots": { "slot name": "value", "slot name": "value" }, "confirmationStatus": "None, Confirmed, or Denied (intent confirmation, if configured)", "dialogActionType": "ElicitIntent, ElicitSlot, ConfirmIntent, Delegate, or Close", "fulfillmentState": "Fulfilled or Failed", "slotToElicit": "Next slot to elicit" } ]

ActiveContext

Tidak wajib. Jika disertakan, tetapkan nilai untuk satu atau lebih konteks. Misalnya, Anda dapat menyertakan konteks untuk membuat satu atau beberapa maksud yang memiliki konteks tersebut sebagai masukan yang memenuhi syarat untuk dikenali di giliran percakapan berikutnya.

Konteks aktif apa pun yang tidak termasuk dalam respons memiliki time-to-live nilainya yang berkurang dan mungkin masih aktif pada permintaan berikutnya.

Jika Anda menentukan 0 untuk konteks yang disertakan dalam peristiwa input, itu akan menjadi tidak aktif pada permintaan berikutnya. time-to-live

Untuk informasi selengkapnya, lihat Mengatur Konteks Maksud.

dialogAction

Wajib. dialogActionBidang mengarahkan Amazon Lex ke tindakan berikutnya, dan menjelaskan apa yang diharapkan dari pengguna setelah Amazon Lex mengembalikan respons ke klien.

typeBidang menunjukkan tindakan berikutnya. Ini juga menentukan bidang lain yang perlu disediakan oleh fungsi Lambda sebagai bagian dari nilaidialogAction.

  • Close— Menginformasikan Amazon Lex untuk tidak mengharapkan tanggapan dari pengguna. Misalnya, “Pesanan pizza Anda telah ditempatkan” tidak memerlukan tanggapan.

     

    Bidang fulfillmentState wajib diisi. Amazon Lex menggunakan nilai ini untuk mengatur dialogState bidang di PostContent atau PostText respons terhadap aplikasi klien. responseCardBidang message dan adalah opsional. Jika Anda tidak menentukan pesan, Amazon Lex menggunakan pesan selamat tinggal atau pesan tindak lanjut yang dikonfigurasi untuk maksud tersebut.

    "dialogAction": { "type": "Close", "fulfillmentState": "Fulfilled or Failed", "message": { "contentType": "PlainText or SSML or CustomPayload", "content": "Message to convey to the user. For example, Thanks, your pizza has been ordered." }, "responseCard": { "version": integer-value, "contentType": "application/vnd.amazonaws.card.generic", "genericAttachments": [ { "title":"card-title", "subTitle":"card-sub-title", "imageUrl":"URL of the image to be shown", "attachmentLinkUrl":"URL of the attachment to be associated with the card", "buttons":[ { "text":"button-text", "value":"Value sent to server on button click" } ] } ] } }
  • ConfirmIntent— Menginformasikan Amazon Lex bahwa pengguna diharapkan memberikan jawaban ya atau tidak untuk mengkonfirmasi atau menolak maksud saat ini.

     

    Anda harus memasukkan intentName dan slots bidang. slotsBidang harus berisi entri untuk setiap slot yang diisi untuk maksud yang ditentukan. Anda tidak perlu memasukkan entri di slots bidang untuk slot yang tidak terisi. Anda harus menyertakan message bidang jika bidang intent adalah confirmationPrompt null. Isi message bidang yang dikembalikan oleh fungsi Lambda lebih diutamakan daripada yang confirmationPrompt ditentukan dalam intent. responseCardBidang ini opsional.

    "dialogAction": { "type": "ConfirmIntent", "message": { "contentType": "PlainText or SSML or CustomPayload", "content": "Message to convey to the user. For example, Are you sure you want a large pizza?" }, "intentName": "intent-name", "slots": { "slot-name": "value", "slot-name": "value", "slot-name": "value" }, "responseCard": { "version": integer-value, "contentType": "application/vnd.amazonaws.card.generic", "genericAttachments": [ { "title":"card-title", "subTitle":"card-sub-title", "imageUrl":"URL of the image to be shown", "attachmentLinkUrl":"URL of the attachment to be associated with the card", "buttons":[ { "text":"button-text", "value":"Value sent to server on button click" } ] } ] } }
  • Delegate— Mengarahkan Amazon Lex untuk memilih tindakan berikutnya berdasarkan konfigurasi bot. Jika respons tidak menyertakan atribut sesi apa pun, Amazon Lex mempertahankan atribut yang ada. Jika Anda ingin nilai slot menjadi nol, Anda tidak perlu memasukkan bidang slot dalam permintaan. Anda akan mendapatkan DependencyFailedException pengecualian jika fungsi pemenuhan Anda mengembalikan tindakan Delegate dialog tanpa menghapus slot apa pun.

    kendraQueryFilterStringBidang kendraQueryRequestPayload dan bersifat opsional dan hanya digunakan ketika maksud berasal dari maksud AMAZON.KendraSearchIntent bawaan. untuk informasi selengkapnya, lihat. AMAZON.KendraSearchIntent

    "dialogAction": { "type": "Delegate", "slots": { "slot-name": "value", "slot-name": "value", "slot-name": "value" }, "kendraQueryRequestPayload": "Amazon Kendra query", "kendraQueryFilterString": "Amazon Kendra attribute filters" }
  • ElicitIntent— Menginformasikan Amazon Lex bahwa pengguna diharapkan untuk merespons dengan ucapan yang menyertakan maksud. Misalnya, “Saya ingin pizza besar,” yang menunjukkanOrderPizzaIntent. Ucapan “besar,” di sisi lain, tidak cukup bagi Amazon Lex untuk menyimpulkan maksud pengguna.

     

    responseCardBidang message dan adalah opsional. Jika Anda tidak memberikan pesan, Amazon Lex menggunakan salah satu permintaan klarifikasi bot. Jika tidak ada prompt klarifikasi yang ditentukan, Amazon Lex mengembalikan pengecualian 400 Permintaan Buruk.

    { "dialogAction": { "type": "ElicitIntent", "message": { "contentType": "PlainText or SSML or CustomPayload", "content": "Message to convey to the user. For example, What can I help you with?" }, "responseCard": { "version": integer-value, "contentType": "application/vnd.amazonaws.card.generic", "genericAttachments": [ { "title":"card-title", "subTitle":"card-sub-title", "imageUrl":"URL of the image to be shown", "attachmentLinkUrl":"URL of the attachment to be associated with the card", "buttons":[ { "text":"button-text", "value":"Value sent to server on button click" } ] } ] } }
  • ElicitSlot— Menginformasikan Amazon Lex bahwa pengguna diharapkan memberikan nilai slot dalam respons.

     

    slotsBidang intentNameslotToElicit,, dan diperlukan. responseCardBidang message dan adalah opsional. Jika Anda tidak menentukan pesan, Amazon Lex menggunakan salah satu permintaan elisitasi slot yang dikonfigurasi untuk slot.

    "dialogAction": { "type": "ElicitSlot", "message": { "contentType": "PlainText or SSML or CustomPayload", "content": "Message to convey to the user. For example, What size pizza would you like?" }, "intentName": "intent-name", "slots": { "slot-name": "value", "slot-name": "value", "slot-name": "value" }, "slotToElicit" : "slot-name", "responseCard": { "version": integer-value, "contentType": "application/vnd.amazonaws.card.generic", "genericAttachments": [ { "title":"card-title", "subTitle":"card-sub-title", "imageUrl":"URL of the image to be shown", "attachmentLinkUrl":"URL of the attachment to be associated with the card", "buttons":[ { "text":"button-text", "value":"Value sent to server on button click" } ] } ] } }