Lambda Fungsi Input Event dan Response Format - Amazon Lex V1

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.

Lambda Fungsi Input Event dan Response Format

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 respon yang Amazon Lex mengharapkan fungsi Lambda Anda untuk kembali.

Format Peristiwa Masukan

Berikut ini menunjukkan format umum peristiwa 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 dalammessageVersion. Kode Anda tidak boleh membuang kesalahan jika bidang baru ada.

{ "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 ini adalah kolom event:

  • currentIntent— Menyediakan maksudname,slots,slotDetailsdanconfirmationStatusbidang.

     

    nluIntentConfidenceScoreadalah keyakinan bahwa Amazon Lex memiliki bahwa maksud saat ini adalah salah satu yang paling cocok dengan maksud pengguna saat ini.

     

    slotsadalah peta nama slot, dikonfigurasi untuk maksud, untuk slot nilai-nilai yang Amazon Lex telah diakui dalam percakapan pengguna. Nilai slot tetap null sampai pengguna memberikan nilai.

     

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

     

    slotDetailsmemberikan informasi tambahan tentang nilai slot. Parameterresolutionsarray berisi daftar nilai tambahan diakui untuk slot. Setiap slot dapat memiliki maksimum lima nilai.

     

    ParameteroriginalValuebidang berisi nilai yang dimasukkan oleh pengguna untuk slot. Ketika jenis slot dikonfigurasi untuk mengembalikan nilai resolusi atas sebagai nilai slot,originalValuemungkin berbeda dari nilai dislotsBidang.

     

    confirmationStatusmemberikan respon pengguna untuk konfirmasi prompt, jika ada satu. Misalnya, jika Amazon Lex bertanya “Apakah Anda ingin memesan pizza keju besar? ,” tergantung pada respon pengguna, nilai bidang ini dapatConfirmedatauDenied. Jika tidak, nilai bidang ini bersifatNone.

     

    Jika pengguna mengonfirmasi intent, Amazon Lex menetapkan bidang ini keConfirmed. Jika pengguna menolak maksud, Amazon Lex menetapkan nilai ini keDenied.

     

    Dalam tanggapan konfirmasi, ucapan pengguna mungkin memberikan pembaruan slot. Misalnya, pengguna mungkin mengatakan “ya, ubah ukuran menjadi medium.” Dalam hal ini, acara Lambda berikutnya memiliki nilai slot yang diperbarui,PizzaSizediatur kemedium. Amazon Lex menetapkanconfirmationStatuskepadaNone, karena pengguna memodifikasi beberapa data slot, membutuhkan fungsi Lambda untuk melakukan validasi data pengguna.

     

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

     

    Isi dari maksud alternatif adalah sama dengan isi daricurrentIntentBidang. 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,inputTranscriptbidang berisi teks yang masukan oleh pengguna.

     

    Jika input adalah aliran audio,inputTranscriptbidang berisi teks yang diekstrak dari aliran audio. Ini adalah teks yang benar-benar diproses untuk mengenali maksud dan nilai slot.

     

  • invocationSource— Untuk menunjukkan mengapa Amazon Lex menerapkan fungsi Lambda, ia menetapkan ini ke salah satu nilai berikut:

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

       

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

      catatan

      Jika intent tidak jelas, Amazon Lex tidak dapat memanggil fungsi Lambda.

       

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

       

      Jika intent dikonfigurasi untuk memanggil fungsi Lambda sebagai hook kode pemenuhan, Amazon Lex menetapkaninvocationSourceuntuk nilai ini hanya setelah memiliki semua data slot untuk memenuhi maksud.

       

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

     

  • OutputDialogMode— Untuk setiap input pengguna, klien mengirimkan permintaan ke Amazon Lex menggunakan salah satu operasi API runtime,PostContentatauPostText. 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 bisa mengembalikan Speech Synthesis Markup Language (SSIL) alih-alih teks.

     

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

    catatan

    Anda mengonfigurasi nilai ini saat menentukan intent. 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 aplikasi-spesifik yang dikirim 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, lihatMengatur Atribut Sesi

     

  • requestAttributes— Permintaan-spesifik atribut bahwa klien mengirimkan dalam permintaan. Gunakan atribut request untuk meneruskan informasi yang tidak perlu bertahan untuk seluruh sesi. Jika tidak ada atribut request, nilai akan null. Untuk informasi selengkapnya, lihatMengatur Atribut Permintaan

     

  • RecentIntentSummaryView— Informasi tentang keadaan maksud. Anda dapat melihat informasi tentang tiga intent terakhir yang digunakan. Anda dapat menggunakan informasi ini untuk menetapkan nilai dalam maksud 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 hadir dalam input ke hook kode pemenuhan dan hanya ketika intent memperluasAMAZON.KendraSearchIntentniat bawaan. Bidang ini berisi seluruh respon dari pencarian Amazon Kendra. Untuk informasi selengkapnya, lihat AMAZON.KendraSearchIntent.

     

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

    • TimeTolive— Lamanya waktu atau jumlah putaran dalam percakapan dengan pengguna bahwa konteksnya tetap aktif.

    • nama— nama konteksnya.

    • parameterdaftar pasangan kunci/nilai berisi nama dan nilai slot dari intent yang mengaktifkan konteks.

    Untuk informasi selengkapnya, lihat Konteks Maksud Konteks Maksud 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. } }

Tanggapan terdiri dari empat bidang. ParametersessionAttributes,recentIntentSummaryView, danactiveContextskolom bersifat opsional,dialogActionBidang wajib diisi. IsidialogActionbidang tergantung pada nilaitypeBidang. Untuk detailnya, lihat DialogAction.

sessionAttributes

Tidak wajib. Jika Anda menyertakansessionAttributesBidang dapat kosong. Jika fungsi Lambda Anda tidak mengembalikan atribut sesi, yang terakhir diketahuisessionAttributesmelewati fungsi API atau Lambda tetap. Untuk informasi selengkapnya, lihatPostContentdanPostTextoperasi.

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

RecentIntentSummaryView

Tidak wajib. Jika disertakan, tetapkan nilai untuk satu atau lebih intent terbaru. Anda dapat menyertakan informasi hingga tiga maksud. Misalnya, Anda dapat menetapkan nilai untuk maksud sebelumnya berdasarkan informasi yang dikumpulkan oleh maksud saat ini. Informasi dalam ringkasan harus berlaku untuk maksud. Misalnya, nama maksud harus berupa maksud dalam bot. Jika Anda menyertakan nilai slot dalam tampilan ringkasan, slot harus ada dalam maksud. Jika Anda tidak menyertakanrecentIntentSummaryViewdalam tanggapan Anda, semua nilai untuk intent terbaru tetap tidak berubah. Untuk informasi selengkapnya, lihatPutSessionoperasi atauIntentSummarytipe 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 lebih maksud yang memiliki konteks tersebut sebagai masukan yang memenuhi syarat untuk dikenali pada giliran percakapan berikutnya.

Konteks aktif yang tidak termasuk dalam respons memiliki nilai waktu-ke-hidup mereka berkurang dan mungkin masih aktif pada permintaan berikutnya.

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

Untuk informasi selengkapnya, lihat Konteks Maksud Konteks Maksud Maksud.

DialogAction

Diperlukan. ParameterdialogActionbidang mengarahkan Amazon Lex ke kursus berikutnya tindakan, dan menjelaskan apa yang diharapkan dari pengguna setelah Amazon Lex mengembalikan respon kepada klien.

Parametertypebidang menunjukkan tindakan berikutnya. Ini juga menentukan bidang lain yang perlu disediakan oleh fungsi Lambda sebagai bagian daridialogActionnilai.

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

     

    Bidang fulfillmentState wajib diisi. Amazon Lex menggunakan nilai ini untuk mengaturdialogStateBidang di bidangPostContentatauPostTextmenanggapi aplikasi klien. ParametermessagedanresponseCardBidang bersifat opsional. Jika Anda tidak menentukan pesan, Amazon Lex menggunakan pesan selamat tinggal atau pesan tindak lanjut yang dikonfigurasi untuk intent.

    "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 untuk memberikan jawaban ya atau tidak untuk mengkonfirmasi atau menolak maksud saat ini.

     

    Anda harus menyertakanintentNamedanslotsbidang. Parameterslotsbidang harus berisi entri untuk masing-masing slot yang diisi untuk maksud yang ditentukan. Anda tidak perlu menyertakan entri dislotslapangan untuk slot yang tidak diisi. Anda harus menyertakanmessagebidang jika intentconfirmationPromptBidang adalah null. IsimessageBidang yang dikembalikan oleh fungsi Lambda diutamakan atasconfirmationPromptditentukan dalam maksud. ParameterresponseCardBidang bersifat 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 respon tidak termasuk atribut sesi apa pun Amazon Lex mempertahankan atribut yang ada. Jika Anda ingin nilai slot menjadi nol, Anda tidak perlu menyertakan bidang slot dalam permintaan. Anda akan mendapatkanDependencyFailedExceptionpengecualian jika fungsi pemenuhan Anda mengembalikanDelegatetindakan dialog tanpa menghapus slot apapun.

    ParameterkendraQueryRequestPayloaddankendraQueryFilterStringfield bersifat opsional dan hanya digunakan ketika intent berasal dariAMAZON.KendraSearchIntentmaksud bawaan. Untuk informasi selengkapnya, lihatAMAZON.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 menanggapi dengan ucapan yang mencakup maksud. Misalnya, “Saya ingin pizza besar,” yang menunjukkanOrderPizzaIntent. Ucapan “besar,” di sisi lain, tidak cukup bagi Amazon Lex untuk menyimpulkan maksud pengguna.

     

    ParametermessagedanresponseCardBidang bersifat opsional. Jika Anda tidak memberikan pesan, Amazon Lex menggunakan salah satu perintah klarifikasi bot. Jika tidak ada prompt klarifikasi yang ditentukan, Amazon Lex mengembalikan pengecualian 400 Bad Request.

    { "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 untuk memberikan nilai slot dalam respon.

     

    ParameterintentName,slotToElicit, danslotsbidang yang diperlukan. ParametermessagedanresponseCardBidang bersifat opsional. Jika Anda tidak menentukan pesan, Amazon Lex menggunakan salah satu perintah 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" } ] } ] } }