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 maksud
name
,slots
,slotDetails
danconfirmationStatus
bidang.nluIntentConfidenceScore
adalah keyakinan bahwa Amazon Lex memiliki bahwa maksud saat ini adalah salah satu yang paling cocok dengan maksud pengguna saat ini.slots
adalah 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.
slotDetails
memberikan informasi tambahan tentang nilai slot. Parameterresolutions
array berisi daftar nilai tambahan diakui untuk slot. Setiap slot dapat memiliki maksimum lima nilai.Parameter
originalValue
bidang berisi nilai yang dimasukkan oleh pengguna untuk slot. Ketika jenis slot dikonfigurasi untuk mengembalikan nilai resolusi atas sebagai nilai slot,originalValue
mungkin berbeda dari nilai dislots
Bidang.confirmationStatus
memberikan 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 dapatConfirmed
atauDenied
. Jika tidak, nilai bidang ini bersifatNone
.Jika pengguna mengonfirmasi intent, Amazon Lex menetapkan bidang ini ke
Confirmed
. 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,
PizzaSize
diatur kemedium
. Amazon Lex menetapkanconfirmationStatus
kepadaNone
, 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 dari
currentIntent
Bidang. 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 masukan oleh pengguna.Jika input adalah aliran audio,
inputTranscript
bidang 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 menetapkan
invocationSource
untuk 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 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,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 memperluas
AMAZON.KendraSearchIntent
niat 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
, danactiveContexts
kolom bersifat opsional,dialogAction
Bidang wajib diisi. IsidialogAction
bidang tergantung pada nilaitype
Bidang. Untuk detailnya, lihat DialogAction.
sessionAttributes
Tidak wajib. Jika Anda menyertakansessionAttributes
Bidang dapat kosong. Jika fungsi Lambda Anda tidak mengembalikan atribut sesi, yang terakhir diketahuisessionAttributes
melewati 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 menyertakanrecentIntentSummaryView
dalam 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. ParameterdialogAction
bidang mengarahkan Amazon Lex ke kursus berikutnya tindakan, dan menjelaskan apa yang diharapkan dari pengguna setelah Amazon Lex mengembalikan respon kepada klien.
Parametertype
bidang menunjukkan tindakan berikutnya. Ini juga menentukan bidang lain yang perlu disediakan oleh fungsi Lambda sebagai bagian daridialogAction
nilai.
-
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 mengaturdialogState
Bidang di bidangPostContentatauPostTextmenanggapi aplikasi klien. Parametermessage
danresponseCard
Bidang 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 menyertakan
intentName
danslots
bidang. Parameterslots
bidang harus berisi entri untuk masing-masing slot yang diisi untuk maksud yang ditentukan. Anda tidak perlu menyertakan entri dislots
lapangan untuk slot yang tidak diisi. Anda harus menyertakanmessage
bidang jika intentconfirmationPrompt
Bidang adalah null. Isimessage
Bidang yang dikembalikan oleh fungsi Lambda diutamakan atasconfirmationPrompt
ditentukan dalam maksud. ParameterresponseCard
Bidang 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 mendapatkanDependencyFailedException
pengecualian jika fungsi pemenuhan Anda mengembalikanDelegate
tindakan dialog tanpa menghapus slot apapun.Parameter
kendraQueryRequestPayload
dankendraQueryFilterString
field bersifat opsional dan hanya digunakan ketika intent berasal dariAMAZON.KendraSearchIntent
maksud 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.Parameter
message
danresponseCard
Bidang 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.Parameter
intentName
,slotToElicit
, danslots
bidang yang diperlukan. Parametermessage
danresponseCard
Bidang 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
" } ] } ] } }