PostText - 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.

PostText

Mengirim masukan pengguna ke Amazon Lex. Aplikasi klien dapat menggunakan API ini untuk mengirim permintaan ke Amazon Lex saat runtime. Amazon Lex kemudian menafsirkan input pengguna menggunakan model pembelajaran mesin yang dibuatnya untuk bot.

Sebagai tanggapan, Amazon Lex mengembalikan yang berikutnya message untuk menyampaikan kepada pengguna opsional responseCard untuk ditampilkan. Perhatikan contoh pesan berikut:

  • Untuk masukan pengguna “Saya ingin pizza”, Amazon Lex mungkin mengembalikan respons dengan pesan yang memunculkan data slot (misalnya, PizzaSize): “Pizza ukuran apa yang Anda inginkan?”

  • Setelah pengguna memberikan semua informasi pesanan pizza, Amazon Lex mungkin mengembalikan tanggapan dengan pesan untuk mendapatkan konfirmasi pengguna “Lanjutkan dengan pesanan pizza?”.

  • Setelah pengguna membalas prompt konfirmasi dengan “ya”, Amazon Lex mungkin mengembalikan pernyataan kesimpulan: “Terima kasih, pizza keju Anda telah dipesan.”

Tidak semua pesan Amazon Lex memerlukan respons pengguna. Misalnya, pernyataan kesimpulan tidak memerlukan tanggapan. Beberapa pesan hanya memerlukan respons pengguna “ya” atau “tidak”. Selain itumessage, Amazon Lex menyediakan konteks tambahan tentang pesan dalam respons yang mungkin Anda gunakan untuk meningkatkan perilaku klien, misalnya, untuk menampilkan antarmuka pengguna klien yang sesuai. Ini adalahslotToElicit,dialogState,intentName, dan slots bidang dalam tanggapan. Pertimbangkan contoh berikut:

  • Jika pesannya adalah untuk mendapatkan data slot, Amazon Lex mengembalikan informasi konteks berikut:

    • dialogStatedisetel ke ElicitSlot

    • intentNamedisetel ke nama maksud dalam konteks saat ini

    • slotToElicitatur ke nama slot message yang mendapatkan informasi

    • slotsdisetel ke peta slot, dikonfigurasi untuk maksud, dengan nilai yang diketahui saat ini

  • Jika pesan adalah prompt konfirmasi, dialogState diatur ke ConfirmIntent dan SlotToElicit diatur ke null.

  • Jika pesan adalah prompt klarifikasi (dikonfigurasi untuk maksud) yang menunjukkan bahwa maksud pengguna tidak dipahami, maka akan disetel ke ElicitIntent dan dialogState slotToElicit disetel ke null.

Selain itu, Amazon Lex juga mengembalikan aplikasi khusus sessionAttributes Anda. Untuk informasi selengkapnya, lihat Mengelola Konteks Percakapan.

Minta Sintaks

POST /bot/botName/alias/botAlias/user/userId/text HTTP/1.1 Content-type: application/json { "activeContexts": [ { "name": "string", "parameters": { "string" : "string" }, "timeToLive": { "timeToLiveInSeconds": number, "turnsToLive": number } } ], "inputText": "string", "requestAttributes": { "string" : "string" }, "sessionAttributes": { "string" : "string" } }

Parameter Permintaan URI

Permintaan menggunakan parameter URI berikut.

botAlias

Alias bot Amazon Lex.

Diperlukan: Ya

botName

Nama bot Amazon Lex.

Diperlukan: Ya

userId

ID pengguna aplikasi klien. Amazon Lex menggunakan ini untuk mengidentifikasi percakapan pengguna dengan bot Anda. Saat runtime, setiap permintaan harus berisi userID bidang.

Untuk memutuskan ID pengguna yang akan digunakan untuk aplikasi Anda, pertimbangkan faktor-faktor berikut.

  • userIDBidang tidak boleh berisi informasi pribadi pengguna, misalnya, nama, nomor identifikasi pribadi, atau informasi pribadi pengguna akhir lainnya.

  • Jika Anda ingin pengguna memulai percakapan di satu perangkat dan melanjutkan di perangkat lain, gunakan pengenal khusus pengguna.

  • Jika Anda ingin pengguna yang sama dapat melakukan dua percakapan independen di dua perangkat yang berbeda, pilih pengenal khusus perangkat.

  • Pengguna tidak dapat melakukan dua percakapan independen dengan dua versi berbeda dari bot yang sama. Misalnya, pengguna tidak dapat melakukan percakapan dengan versi PROD dan BETA dari bot yang sama. Jika Anda mengantisipasi bahwa pengguna perlu melakukan percakapan dengan dua versi yang berbeda, misalnya, saat menguji, sertakan alias bot di ID pengguna untuk memisahkan dua percakapan.

Kendala Panjang: Panjang minimum 2. Panjang maksimum 100.

Pola: [0-9a-zA-Z._:-]+

Wajib: Ya

Isi Permintaan

Permintaan menerima data berikut dalam format JSON.

activeContexts

Daftar konteks yang aktif untuk permintaan. Konteks dapat diaktifkan ketika maksud sebelumnya terpenuhi, atau dengan memasukkan konteks dalam permintaan,

Jika Anda tidak menentukan daftar konteks, Amazon Lex akan menggunakan daftar konteks saat ini untuk sesi tersebut. Jika Anda menentukan daftar kosong, semua konteks untuk sesi akan dihapus.

Tipe: Array objek ActiveContext

Anggota Array: Jumlah minimum 0 item. Jumlah maksimum 20 item.

Diperlukan: Tidak

inputText

Teks yang dimasukkan pengguna (Amazon Lex menafsirkan teks ini).

Saat Anda menggunakan AWS CLI, Anda tidak dapat meneruskan URL dalam parameter. --input-text Lulus URL menggunakan --cli-input-json parameter sebagai gantinya.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 1024.

Diperlukan: Ya

requestAttributes

Informasi khusus permintaan diteruskan antara Amazon Lex dan aplikasi klien.

Namespace dicadangkan x-amz-lex: untuk atribut khusus. Jangan membuat atribut permintaan apa pun dengan awalanx-amz-lex:.

Untuk informasi selengkapnya, lihat Menyetel Atribut Permintaan.

Tipe: Peta antar string

Diperlukan: Tidak

sessionAttributes

Informasi khusus aplikasi diteruskan antara Amazon Lex dan aplikasi klien.

Untuk informasi selengkapnya, lihat Menyetel Atribut Sesi.

Tipe: Peta antar string

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200 Content-type: application/json { "activeContexts": [ { "name": "string", "parameters": { "string" : "string" }, "timeToLive": { "timeToLiveInSeconds": number, "turnsToLive": number } } ], "alternativeIntents": [ { "intentName": "string", "nluIntentConfidence": { "score": number }, "slots": { "string" : "string" } } ], "botVersion": "string", "dialogState": "string", "intentName": "string", "message": "string", "messageFormat": "string", "nluIntentConfidence": { "score": number }, "responseCard": { "contentType": "string", "genericAttachments": [ { "attachmentLinkUrl": "string", "buttons": [ { "text": "string", "value": "string" } ], "imageUrl": "string", "subTitle": "string", "title": "string" } ], "version": "string" }, "sentimentResponse": { "sentimentLabel": "string", "sentimentScore": "string" }, "sessionAttributes": { "string" : "string" }, "sessionId": "string", "slots": { "string" : "string" }, "slotToElicit": "string" }

Elemen Respons

Jika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Layanan mengembalikan data berikut dalam format JSON.

activeContexts

Daftar konteks aktif untuk sesi tersebut. Konteks dapat diatur ketika maksud terpenuhi atau dengan memanggilPostContent,PostText, atau PutSession operasi.

Anda dapat menggunakan konteks untuk mengontrol maksud yang dapat menindaklanjuti intent, atau untuk memodifikasi operasi aplikasi Anda.

Tipe: Array objek ActiveContext

Anggota Array: Jumlah minimum 0 item. Jumlah maksimum 20 item.

alternativeIntents

Satu hingga empat maksud alternatif yang mungkin berlaku untuk maksud pengguna.

Setiap alternatif menyertakan skor yang menunjukkan seberapa yakin Amazon Lex bahwa maksud tersebut cocok dengan maksud pengguna. Maksudnya diurutkan berdasarkan skor kepercayaan.

Tipe: Array objek PredictedIntent

Anggota Array: Jumlah maksimum 4 item.

botVersion

Versi bot yang menanggapi percakapan. Anda dapat menggunakan informasi ini untuk membantu menentukan apakah satu versi bot berkinerja lebih baik daripada versi lain.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum adalah 64.

Pola: [0-9]+|\$LATEST

dialogState

Mengidentifikasi keadaan interaksi pengguna saat ini. Amazon Lex mengembalikan salah satu nilai berikut sebagaidialogState. Klien secara opsional dapat menggunakan informasi ini untuk menyesuaikan antarmuka pengguna.

  • ElicitIntent- Amazon Lex ingin mendapatkan niat pengguna.

    Misalnya, pengguna mungkin mengucapkan maksud (“Saya ingin memesan pizza”). Jika Amazon Lex tidak dapat menyimpulkan maksud pengguna dari ucapan ini, Amazon Lex akan mengembalikan DialogState ini.

  • ConfirmIntent- Amazon Lex mengharapkan respons “ya” atau “tidak”.

    Misalnya, Amazon Lex menginginkan konfirmasi pengguna sebelum memenuhi maksud.

    Alih-alih “ya” atau “tidak” sederhana, pengguna mungkin merespons dengan informasi tambahan. Misalnya, “ya, tapi buatlah pizza kerak kental” atau “tidak, saya ingin memesan minuman”. Amazon Lex dapat memproses informasi tambahan tersebut (dalam contoh ini, memperbarui nilai slot tipe kerak, atau mengubah maksud dari OrderPizza ke OrderDrink).

  • ElicitSlot- Amazon Lex mengharapkan nilai slot untuk maksud saat ini.

    Misalnya, anggaplah dalam tanggapannya Amazon Lex mengirim pesan ini: “Berapa ukuran pizza yang Anda inginkan?”. Seorang pengguna mungkin membalas dengan nilai slot (misalnya, “medium”). Pengguna mungkin juga memberikan informasi tambahan dalam tanggapan (misalnya, “pizza kerak tebal sedang”). Amazon Lex dapat memproses informasi tambahan tersebut dengan tepat.

  • Fulfilled- Menyampaikan bahwa fungsi Lambda yang dikonfigurasi untuk maksud telah berhasil memenuhi intent.

  • ReadyForFulfillment- Menyampaikan bahwa klien harus memenuhi niat.

  • Failed- Menyampaikan bahwa percakapan dengan pengguna gagal.

    Hal ini dapat terjadi karena berbagai alasan termasuk bahwa pengguna tidak memberikan respons yang sesuai terhadap permintaan dari layanan (Anda dapat mengonfigurasi berapa kali Amazon Lex dapat meminta pengguna untuk informasi tertentu), atau fungsi Lambda gagal memenuhi intent.

Jenis: String

Nilai yang Valid: ElicitIntent | ConfirmIntent | ElicitSlot | Fulfilled | ReadyForFulfillment | Failed

intentName

Maksud pengguna saat ini yang diketahui Amazon Lex.

Jenis: String

message

Pesan untuk disampaikan kepada pengguna. Pesan dapat berasal dari konfigurasi bot atau dari fungsi Lambda.

Jika intent tidak dikonfigurasi dengan fungsi Lambda, atau jika fungsi Lambda Delegate ditampilkan sebagai dialogAction.type responsnya, Amazon Lex memutuskan tindakan berikutnya dan memilih pesan yang sesuai dari konfigurasi bot berdasarkan konteks interaksi saat ini. Misalnya, jika Amazon Lex tidak dapat memahami masukan pengguna, Amazon Lex menggunakan pesan prompt klarifikasi.

Saat membuat intent, Anda dapat menetapkan pesan ke grup. Ketika pesan ditetapkan ke grup Amazon Lex mengembalikan satu pesan dari setiap grup dalam respons. Bidang pesan adalah string JSON yang lolos yang berisi pesan. Untuk informasi lebih lanjut tentang struktur string JSON yang dikembalikan, lihatFormat Pesan yang Didukung.

Jika fungsi Lambda mengembalikan pesan, Amazon Lex meneruskannya ke klien dalam responsnya.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 1024.

messageFormat

Format pesan respons. Salah satu nilai berikut:

  • PlainText- Pesan berisi teks UTF-8 biasa.

  • CustomPayload- Pesan adalah format khusus yang ditentukan oleh fungsi Lambda.

  • SSML- Pesan berisi teks yang diformat untuk output suara.

  • Composite- Pesan berisi objek JSON yang lolos yang berisi satu atau beberapa pesan dari grup tempat pesan ditetapkan saat maksud dibuat.

Jenis: String

Nilai yang Valid: PlainText | CustomPayload | SSML | Composite

nluIntentConfidence

Memberikan skor yang menunjukkan seberapa yakin Amazon Lex bahwa intent yang dikembalikan adalah yang cocok dengan maksud pengguna. Skornya antara 0,0 dan 1,0. Untuk informasi lebih lanjut, lihat Skor Keyakinan.

Skor adalah skor relatif, bukan skor absolut. Skor dapat berubah berdasarkan peningkatan Amazon Lex.

Tipe: Objek IntentConfidence

responseCard

Merupakan opsi yang harus ditanggapi pengguna terhadap prompt saat ini. Kartu Respons dapat berasal dari konfigurasi bot (di konsol Amazon Lex, pilih tombol pengaturan di sebelah slot) atau dari kait kode (fungsi Lambda).

Tipe: Objek ResponseCard

sentimentResponse

Sentimen yang diungkapkan dan diucapkan.

Ketika bot dikonfigurasi untuk mengirim ucapan ke Amazon Comprehend untuk analisis sentimen, bidang ini berisi hasil analisis.

Tipe: Objek SentimentResponse

sessionAttributes

Peta pasangan nilai kunci yang mewakili informasi konteks khusus sesi.

Tipe: Peta string ke string

sessionId

Pengenal unik untuk sesi tersebut.

Jenis: String

slots

Slot maksud yang dideteksi Amazon Lex dari input pengguna dalam percakapan.

Amazon Lex membuat daftar resolusi yang berisi kemungkinan nilai untuk slot. Nilai yang dikembalikan ditentukan oleh yang valueSelectionStrategy dipilih ketika jenis slot dibuat atau diperbarui. Jika valueSelectionStrategy diatur keORIGINAL_VALUE, nilai yang diberikan oleh pengguna dikembalikan, jika nilai pengguna mirip dengan nilai slot. Jika valueSelectionStrategy diatur ke TOP_RESOLUTION Amazon Lex mengembalikan nilai pertama dalam daftar resolusi atau, jika tidak ada daftar resolusi, null. Jika Anda tidak menentukan avalueSelectionStrategy, defaultnya adalahORIGINAL_VALUE.

Tipe: Peta string ke string

slotToElicit

Jika dialogState nilainyaElicitSlot, mengembalikan nama slot yang Amazon Lex memunculkan nilai.

Jenis: String

Kesalahan

BadGatewayException

Entah bot Amazon Lex masih dibangun, atau salah satu layanan dependen (Amazon Polly, AWS Lambda) gagal dengan kesalahan layanan internal.

Kode Status HTTP: 502

BadRequestException

Validasi permintaan gagal, tidak ada pesan yang dapat digunakan dalam konteksnya, atau pembuatan bot gagal, masih dalam proses, atau berisi perubahan yang belum dibangun.

Kode Status HTTP: 400

ConflictException

Dua klien menggunakan akun AWS yang sama, bot Amazon Lex, dan ID pengguna.

Kode Status HTTP: 409

DependencyFailedException

Salah satu dependensi, seperti AWS Lambda atau Amazon Polly, memberikan pengecualian. Misalnya,

  • Jika Amazon Lex tidak memiliki izin yang cukup untuk memanggil fungsi Lambda.

  • Jika fungsi Lambda membutuhkan waktu lebih dari 30 detik untuk dijalankan.

  • Jika fungsi Lambda pemenuhan mengembalikan Delegate tindakan dialog tanpa menghapus nilai slot apa pun.

Kode Status HTTP: 424

InternalFailureException

Kesalahan layanan internal. Coba lagi panggilannya.

Kode Status HTTP: 500

LimitExceededException

Melebihi batas.

Kode Status HTTP: 429

LoopDetectedException

Pengecualian ini tidak digunakan.

Kode Status HTTP: 508

NotFoundException

Sumber daya (seperti bot Amazon Lex atau alias) yang disebut tidak ditemukan.

Kode Status HTTP: 404

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API ini di salah satu AWS SDK khusus bahasa, lihat berikut ini: