Mengelola Pesan - 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.

Mengelola Pesan

Saat Anda membuat bot, Anda dapat mengonfigurasi pesan klarifikasi atau informasi yang ingin Anda kirimkan ke klien. Pertimbangkan contoh berikut:

  • Anda dapat mengonfigurasi bot Anda dengan prompt klarifikasi berikut:

    I don't understand. What would you like to do?

    Amazon Lex mengirimkan pesan ini ke klien jika tidak memahami maksud pengguna.

     

  • Misalkan Anda membuat bot untuk mendukung maksud yang dipanggilOrderPizza. Untuk pesanan pizza, Anda ingin pengguna memberikan informasi seperti ukuran pizza, topping, dan jenis kerak. Anda dapat mengkonfigurasi perintah berikut:

    What size pizza do you want? What toppings do you want? Do you want thick or thin crust?

    Setelah Amazon Lex menentukan maksud pengguna untuk memesan pizza, ia mengirimkan pesan ini ke klien untuk mendapatkan informasi dari pengguna.

Bagian ini menjelaskan merancang interaksi pengguna dalam konfigurasi bot Anda.

Jenis Pesan

Sebuah pesan dapat berupa prompt atau pernyataan.

  • Prompt biasanya merupakan pertanyaan dan mengharapkan respons pengguna.

  • Pernyataan bersifat informasi. Itu tidak mengharapkan respons.

Pesan dapat menyertakan referensi ke slot, atribut sesi, dan atribut permintaan. Pada waktu proses, Amazon Lex mengganti referensi ini dengan nilai aktual.

Untuk merujuk nilai slot yang telah ditetapkan, gunakan sintaksis berikut:

{SlotName}

Untuk merujuk atribut sesi, gunakan sintaksis berikut:

[SessionAttributeName]

Untuk merujuk atribut permintaan, gunakan sintaksis berikut:

((RequestAttributeName))

Pesan dapat mencakup nilai slot, atribut sesi, dan atribut permintaan.

Misalnya, anggap Anda mengkonfigurasi pesan berikut dalam OrderPizza maksud bot Anda:

"Hey [FirstName], your {PizzaTopping} pizza will arrive in [DeliveryTime] minutes."

Pesan ini mengacu pada kedua slot (PizzaTopping) dan atribut sesi (FirstNamedanDeliveryTime). Pada waktu proses, Amazon Lex menggantikan placeholder ini dengan nilai dan mengembalikan pesan berikut ke klien:

"Hey John, your cheese pizza will arrive in 30 minutes."

Untuk menyertakan tanda kurung ([]) atau tanda kurung ({}) dalam pesan, gunakan karakter escape garis miring terbalik (\). Misalnya, pesan berikut menyertakan kurung kurawal dan tanda kurung persegi:

\{Text\} \[Text\]

Teks yang dikembalikan ke aplikasi klien terlihat seperti ini:

{Text} [Text]

Untuk informasi tentang atribut sesi, lihat operasi API runtimePostText danPostContent. Sebagai contoh, lihat Buku Perjalanan.

Fungsi Lambda juga dapat menghasilkan pesan dan mengembalikannya ke Amazon Lex untuk dikirim ke pengguna. Jika Anda menambahkan fungsi Lambda saat mengonfigurasi maksud, Anda dapat membuat pesan secara dinamis. Dengan memberikan pesan saat mengonfigurasi bot Anda, Anda dapat menghilangkan kebutuhan untuk membuat prompt dalam fungsi Lambda Anda.

Konteks untuk Mengkonfigurasi Pesan

Saat Anda membuat bot, Anda dapat membuat pesan dalam konteks yang berbeda, seperti petunjuk klarifikasi dalam bot, petunjuk untuk nilai slot, dan pesan dari maksud. Amazon Lex memilih pesan yang sesuai dalam setiap konteks untuk kembali ke pengguna Anda. Anda dapat menyediakan grup pesan untuk setiap konteks. Jika Anda melakukannya, Amazon Lex secara acak memilih satu pesan dari grup. Anda juga dapat menentukan format pesan atau mengelompokkan pesan secara bersamaan. Untuk informasi selengkapnya, lihat Format Pesan yang Didukung.

Jika Anda memiliki fungsi Lambda yang terkait dengan maksud, Anda dapat mengganti pesan apa pun yang Anda konfigurasikan pada waktu pembuatan. Namun, fungsi Lambda tidak diperlukan untuk menggunakan pesan ini.

Pesan Bot

Anda dapat mengonfigurasi bot Anda dengan petunjuk klarifikasi dan pesan akhir sesi. Saat runtime, Amazon Lex menggunakan prompt klarifikasi jika tidak memahami maksud pengguna. Anda dapat mengonfigurasi berapa kali Amazon Lex meminta klarifikasi sebelum mengirim pesan akhir sesi. Anda mengonfigurasi pesan tingkat bot di bagian Penanganan Kesalahan pada konsol Amazon Lex, seperti pada gambar berikut:

Bagian penanganan kesalahan di tab editor konsol. Prompt klarifikasi dan frase hang-up dapat ditentukan.

Dengan API, Anda mengkonfigurasi pesan dengan mengaturclarificationPrompt danabortStatement bidang dalamPutBot operasi.

Jika Anda menggunakan fungsi Lambda dengan maksud, fungsi Lambda mungkin mengembalikan respons yang mengarahkan Amazon Lex untuk menanyakan maksud pengguna. Jika fungsi Lambda tidak menyediakan pesan seperti itu, Amazon Lex menggunakan prompt klarifikasi.

Perintah Slot Perintah slot

Anda harus menentukan setidaknya satu pesan prompt untuk setiap slot yang diperlukan dalam intent. Pada saat runtime, Amazon Lex menggunakan salah satu pesan ini untuk meminta pengguna memberikan nilai untuk slot. Misalnya, untukcityName slot, berikut ini adalah prompt yang valid:

Which city would you like to fly to?

Anda dapat mengatur satu atau lebih petunjuk untuk setiap slot menggunakan konsol. Anda juga dapat membuat grup petunjuk menggunakanPutIntent operasi. Untuk informasi selengkapnya, lihat Grup Pesan.

Respons

Di konsol, gunakan bagian Respons untuk membangun percakapan yang dinamis dan menarik untuk bot Anda. Anda dapat membuat satu atau beberapa grup pesan untuk respons. Pada waktu proses, Amazon Lex membuat respons dengan memilih satu pesan dari setiap grup pesan. Untuk informasi selengkapnya tentang grup pesan, lihatGrup Pesan.

Misalnya, grup pesan pertama Anda dapat berisi salam yang berbeda: “Halo,” “Hai,” dan “Salam.” Grup pesan kedua dapat berisi berbagai bentuk pengenalan: “Saya bot reservasi” dan “Ini adalah bot reservasi.” Kelompok pesan ketiga dapat mengkomunikasikan kemampuan bot: “Saya dapat membantu dengan penyewaan mobil dan pemesanan hotel,” “Anda dapat membuat penyewaan mobil dan pemesanan hotel,” dan “Saya dapat membantu Anda menyewa mobil dan memesan hotel.”

Lex menggunakan pesan dari masing-masing kelompok pesan untuk secara dinamis membangun tanggapan dalam percakapan. Misalnya, satu interaksi bisa menjadi berikut:

Satu kemungkinan percakapan dengan bot.

Satu lagi bisa sebagai berikut:

Percakapan lain yang mungkin dengan bot.

Dalam kedua kasus tersebut, pengguna dapat merespons dengan maksud baru, sepertiBookHotel intentBookCar atau.

Anda dapat mengatur bot untuk mengajukan pertanyaan tindak lanjut dalam respons. Misalnya, untuk interaksi sebelumnya, Anda dapat membuat grup pesan keempat dengan pertanyaan-pertanyaan berikut: “Dapatkah saya membantu dengan mobil atau hotel?” , “Apakah Anda ingin membuat reservasi sekarang?” , dan “Apakah ada sesuatu yang bisa saya lakukan untuk Anda?”. Untuk pesan yang menyertakan “Tidak” sebagai respons, Anda dapat membuat prompt tindak lanjut. Gambar berikut memberikan contoh:

Tindak lanjut prompt dalam percakapan dengan bot.

Untuk membuat perintah tindak lanjut, pilih Tunggu balasan pengguna. Kemudian ketik pesan atau pesan yang ingin Anda kirim ketika pengguna mengatakan “Tidak.” Saat Anda membuat respons untuk digunakan sebagai prompt tindak lanjut, Anda juga harus menentukan pernyataan yang sesuai ketika jawaban atas pernyataan tersebut adalah “Tidak.” Lihat gambar berikut untuk contoh:

Konfigurasi pesan ketika pengguna mengatakan “tidak”.

Untuk menambahkan respons ke intent dengan API, gunakanPutIntent operasi. Untuk menentukan respons, aturconclusionStatement bidang dalamPutIntent permintaan. Untuk mengatur prompt tindak lanjut, mengaturfollowUpPrompt bidang dan termasuk pernyataan untuk mengirim ketika pengguna mengatakan “Tidak.” Anda tidak dapat mengaturconclusionStatement bidang danfollowUpPrompt bidang pada maksud yang sama.

Format Pesan yang Didukung

Saat Anda menggunakanPostText operasi, atau saat Anda menggunakanPostContent operasi denganAccept header yang disetel ketext/plain;charset=utf8, Amazon Lex mendukung pesan dalam format berikut:

  • PlainText—Pesan berisi teks UTF-8 biasa.

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

  • CustomPayload—Pesan berisi format kustom yang telah Anda buat untuk klien Anda. Anda dapat menetapkan payload untuk memenuhi kebutuhan aplikasi Anda.

  • Composite—Pesan adalah kumpulan pesan, satu dari setiap grup pesan. Untuk informasi selengkapnya tentang grup pesan, lihatGrup Pesan.

Secara default, Amazon Lex mengembalikan salah satu pesan yang ditentukan untuk prompt tertentu. Misalnya, jika Anda menentukan lima pesan untuk mendapatkan nilai slot, Amazon Lex memilih salah satu pesan secara acak dan mengembalikannya ke klien.

Jika Anda ingin Amazon Lex mengembalikan jenis pesan tertentu ke klien dalam permintaan run-time, tetapkan parameterx-amzn-lex:accept-content-types permintaan. Respons terbatas pada jenis atau jenis yang diminta. Jika ada lebih dari satu pesan dari jenis yang ditentukan, Amazon Lex mengembalikan satu pesan secara acak. Untuk informasi selengkapnya tentangx-amz-lex:accept-content-types header, lihatMengatur Jenis Respons.

Grup Pesan

Grup pesan adalah sekumpulan respons yang sesuai untuk prompt tertentu. Gunakan grup pesan ketika Anda ingin bot Anda membangun respons secara dinamis dalam percakapan. Ketika Amazon Lex mengembalikan respons ke aplikasi klien, Amazon Lex akan memilih satu pesan secara acak dari setiap grup. Anda dapat membuat maksimal lima grup pesan untuk setiap respons. Setiap grup dapat berisi maksimal lima pesan. Untuk contoh membuat grup pesan di konsol, lihatRespons.

Untuk membuat grup pesan, Anda dapat menggunakan konsol atau Anda dapat menggunakanPutBot,PutIntent, atauPutSlotType operasi untuk menetapkan nomor grup ke pesan. Jika Anda tidak membuat grup pesan, atau jika Anda hanya membuat satu grup pesan, Amazon Lex mengirimkan satu pesan diMessage bidang tersebut. Aplikasi klien mendapatkan beberapa pesan dalam respons hanya jika Anda telah membuat lebih dari satu grup pesan di konsol, atau ketika Anda membuat lebih dari satu grup pesan saat Anda membuat atau memperbarui maksud denganPutIntent operasi.

Saat Amazon Lex mengirim pesan dari grup,Message kolom respons berisi objek JSON yang diloloskan yang berisi pesan. Contoh berikut ini menunjukkan kontenMessage bidang ketika berisi beberapa pesan.

catatan

Contoh ini diformat agar dapat dibaca. Respons tidak mengandung carriage returns (CR).

{\"messages\":[ {\"type\":\"PlainText\",\"group\":0,\"value\":\"Plain text\"}, {\"type\":\"SSML\",\"group\":1,\"value\":\"SSML text\"}, {\"type\":\"CustomPayload\",\"group\":2,\"value\":\"Custom payload\"} ]}

Anda dapat mengatur format pesan. Formatnya dapat menjadi salah satu dari yang berikut:

  • PlainText—Pesannya ada dalam teks UTF-8 biasa.

  • SSML—pesannya adalah Speech Synthesis Markup Language (SSKL).

  • CustomPayload—Pesan dalam format kustom yang Anda tentukan.

Untuk mengontrol format pesan yang dikembalikanPostContent danPostText operasi diMessage lapangan, atur atributx-amz-lex:accept-content-types permintaan. Misalnya, jika Anda menyetel header ke yang berikut, Anda hanya menerima pesan teks biasa dan SSMP dalam respons:

x-amz-lex:accept-content-types: PlainText,SSML

Jika Anda meminta format pesan tertentu dan grup pesan tidak berisi pesan dengan format tersebut, Anda akan mendapatkanNoUsableMessageException pengecualian. Bila Anda menggunakan grup pesan untuk mengelompokkan pesan berdasarkan jenis, jangan gunakanx-amz-lex:accept-content-types header.

Untuk informasi selengkapnya tentangx-amz-lex:accept-content-types header, lihatMengatur Jenis Respons.

Kartu Respon

catatan

Kartu respons tidak berfungsi dengan obrolan Amazon Connect. Namun, lihat Menambahkan pesan interaktif ke obrolan untuk fungsionalitas serupa.

Kartu respons berisi serangkaian tanggapan yang sesuai untuk prompt. Gunakan kartu respons untuk menyederhanakan interaksi bagi pengguna Anda dan meningkatkan akurasi bot Anda dengan mengurangi kesalahan ketik dalam interaksi teks. Anda dapat mengirim kartu respons untuk setiap prompt yang dikirim Amazon Lex ke aplikasi klien Anda. Anda dapat menggunakan kartu respons dengan Facebook Messenger, Slack, Twilio, dan aplikasi klien Anda sendiri.

Misalnya, dalam aplikasi taksi, Anda dapat mengkonfigurasi opsi di kartu respons untuk “Home” dan menetapkan nilai ke alamat rumah pengguna. Saat pengguna memilih opsi ini, Amazon Lex menerima seluruh alamat sebagai teks masukan. Lihat citra berikut:

Contoh kartu respons contoh.

Anda dapat menentukan kartu respons untuk petunjuk berikut:

  • Pernyataan kesimpulan kesimpulan

  • Prompt konfirmasi

  • Tindak lanjut prompt

  • Pernyataan penolakan

  • Ucapan jenis slot

Anda hanya dapat menentukan satu kartu respons untuk setiap prompt.

Anda mengonfigurasi kartu respons saat membuat maksud. Anda dapat menentukan kartu respons statis pada waktu pembuatan menggunakan konsol atauPutIntent operasi. Atau Anda dapat menentukan kartu respons dinamis saat runtime dalam fungsi Lambda. Jika Anda menentukan kartu respons statis dan dinamis, kartu respons dinamis akan diutamakan.

Amazon Lex mengirimkan kartu respons dalam format yang dipahami klien. Ini mengubah kartu respons untuk Facebook Messenger, Slack, dan Twilio. Untuk klien lain, Amazon Lex mengirimkan struktur JSON dalamPostText respons. Misalnya, jika klien adalah Facebook Messenger, Amazon Lex mengubah kartu respons menjadi template generik. Untuk informasi lebih lanjut tentang template generik Facebook Messenger, lihat Template Generik di situs web Facebook. Untuk contoh struktur JSON, lihatMenghasilkan Kartu Respon Secara Dinamis.

Anda dapat menggunakan kartu respons hanya denganPostText operasi. Anda tidak dapat menggunakan kartu respons denganPostContent operasi.

Mendefinisikan Kartu Respon Statis

Tentukan kartu respons statis denganPutBot operasi atau konsol Amazon Lex saat Anda membuat maksud. Kartu respons statis didefinisikan bersamaan dengan intent. Gunakan kartu respons statis saat tanggapan diperbaiki. Misalkan Anda membuat bot dengan maksud yang memiliki slot untuk rasa. Saat mendefinisikan slot rasa, Anda menetapkan perintah, seperti yang ditunjukkan pada gambar konsol berikut:

Editor maksud di konsol.

Saat menentukan prompt, Anda dapat mengaitkan kartu respons secara opsional dan menentukan detail denganPutBot operasi, atau, di konsol Amazon Lex, seperti yang ditunjukkan pada contoh berikut:

Konsol menunjukkan editor kartu respon.

Sekarang anggaplah Anda telah mengintegrasikan bot Anda dengan Facebook Messenger. Pengguna dapat mengklik tombol untuk memilih ragam, seperti yang ditunjukkan pada ilustrasi berikut:

Kartu respons di Facebook Messenger.

Untuk menyesuaikan konten kartu respons, Anda dapat merujuk ke atribut sesi. Pada waktu proses, Amazon Lex mengganti referensi ini dengan nilai yang sesuai dari atribut sesi. Untuk informasi selengkapnya, lihat Mengatur Atribut Sesi. Sebagai contoh, lihat Menggunakan Kartu Respons.

Menghasilkan Kartu Respon Secara Dinamis

Untuk menghasilkan kartu respons secara dinamis saat runtime, gunakan fungsi Lambda inisialisasi dan validasi untuk intent tersebut. Gunakan kartu respons dinamis saat respons ditentukan pada waktu proses dalam fungsi Lambda. Menanggapi input pengguna, fungsi Lambda menghasilkan kartu respons dan mengembalikannya didialogAction bagian respons. Untuk informasi selengkapnya, lihat Format Respons.

Berikut ini adalah respons parsi dari fungsi Lambda yang menunjukkanresponseCard elemen. Nama ini menghasilkan pengalaman pengguna yang mirip dengan yang ditunjukkan pada bagian sebelumnya.

responseCard: { "version": 1, "contentType": "application/vnd.amazonaws.card.generic", "genericAttachments": [ { "title": "What Flavor?", "subtitle": "What flavor do you want?", "imageUrl": "Link to image", "attachmentLinkUrl": "Link to attachment", "buttons": [ { "text": "Lemon", "value": "lemon" }, { "text": "Raspberry", "value": "raspberry" }, { "text": "Plain", "value": "plain" } ] } ] }

Sebagai contoh, lihat Jadwalkan Janji.