Langkah 2a (Opsional): Tinjau Rincian Aliran Informasi Lisan (Konsol) - 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.

Langkah 2a (Opsional): Tinjau Rincian Aliran Informasi Lisan (Konsol)

Bagian ini menjelaskan alur informasi antara klien dan Amazon Lex saat klien menggunakan pidato untuk mengirim permintaan. Untuk informasi selengkapnya, lihat PostContent.

  1. Pengguna mengatakan: Saya ingin memesan beberapa bunga.

    1. Klien (konsol) mengirimkanPostContent permintaan berikut ke Amazon Lex:

      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/content HTTP/1.1 x-amz-lex-session-attributes: "e30=" Content-Type: "audio/x-l16; sample-rate=16000; channel-count=1" Accept: "audio/mpeg" Request body input stream

      URI permintaan dan badan memberikan informasi kepada Amazon Lex:

      • Permintaan URI - Menyediakan nama bot (OrderFlowers), bot alias ($LATEST), dan nama pengguna (string acak yang mengidentifikasi pengguna). contentmenunjukkan bahwa ini adalah permintaanPostContent API (bukanPostText permintaan).

      • Minta header

        • x-amz-lex-session-attributes- Nilai base64 yang dikodekan mewakili “{}”. Ketika klien membuat permintaan pertama, tidak ada atribut sesi.

        • Content-Type- Mencerminkan format audio.

      • Permintaan tubuh - Aliran audio input pengguna (“Saya ingin memesan beberapa bunga.”).

      catatan

      Jika pengguna memilih untuk mengirim teks (“Saya ingin memesan beberapa bunga”) kePostContent API alih-alih berbicara, badan permintaan adalah input pengguna. Content-TypeHeader diatur sesuai:

      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/content HTTP/1.1 x-amz-lex-session-attributes: "e30=" Content-Type: "text/plain; charset=utf-8" Accept: accept Request body input stream
    2. Dari input stream, Amazon Lex mendeteksi intent (OrderFlowers). Kemudian memilih salah satu slot intent (dalam hal ini,FlowerType) dan salah satu petunjuk elikitasi nilainya, dan kemudian mengirimkan respons dengan header berikut:

      x-amz-lex-dialog-state:ElicitSlot x-amz-lex-input-transcript:I would like to order some flowers. x-amz-lex-intent-name:OrderFlowers x-amz-lex-message:What type of flowers would you like to order? x-amz-lex-session-attributes:e30= x-amz-lex-slot-to-elicit:FlowerType x-amz-lex-slots:eyJQaWNrdXBUaW1lIjpudWxsLCJGbG93ZXJUeXBlIjpudWxsLCJQaWNrdXBEYXRlIjpudWxsfQ==

      Nilai header memberikan informasi berikut:

      • x-amz-lex-input-transcript- Menyediakan transkrip audio (input pengguna) dari permintaan

      • x-amz-lex-message- Menyediakan transkrip audio Amazon Lex yang dikembalikan dalam respons

      • x-amz-lex-slots- Versi slot dan nilai yang dikodekan base64:

        {"PickupTime":null,"FlowerType":null,"PickupDate":null}
      • x-amz-lex-session-attributes- Versi berkode base64 dari atribut sesi ({})

      Klien memutar audio di bodi respons.

  2. Pengguna mengatakan: mawar

    1. Klien (konsol) mengirimkanPostContent permintaan berikut ke Amazon Lex:

      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/content HTTP/1.1 x-amz-lex-session-attributes: "e30=" Content-Type: "audio/x-l16; sample-rate=16000; channel-count=1" Accept: "audio/mpeg" Request body input stream ("roses")

      Badan permintaan adalah input pengguna aliran audio (mawar). sessionAttributesSisa-sisa kosong.

    2. Amazon Lex menafsirkan aliran input dalam konteks maksud saat ini (ia ingat bahwa ia telah meminta pengguna ini untuk informasi yang berkaitan denganFlowerType slot). Amazon Lex pertama-tama memperbarui nilai slot untuk maksud saat ini. Kemudian memilih slot lain (PickupDate), bersama dengan salah satu pesan prompt (Kapan Anda ingin mengambil mawar?) , dan mengembalikan respon dengan header berikut:

      x-amz-lex-dialog-state:ElicitSlot x-amz-lex-input-transcript:roses x-amz-lex-intent-name:OrderFlowers x-amz-lex-message:When do you want to pick up the roses? x-amz-lex-session-attributes:e30= x-amz-lex-slot-to-elicit:PickupDate x-amz-lex-slots:eyJQaWNrdXBUaW1lIjpudWxsLCJGbG93ZXJUeXBlIjoicm9zaSdzIiwiUGlja3VwRGF0ZSI6bnVsbH0=

      Nilai header memberikan informasi berikut:

      • x-amz-lex-slots- Versi berkode base64 dari slot dan nilai:

        {"PickupTime":null,"FlowerType":"roses","PickupDate":null}
      • x-amz-lex-session-attributes- Versi berkode base64 dari atribut sesi ({})

      Klien memutar audio di bodi respons.

  3. Pengguna mengatakan: besok

    1. Klien (konsol) mengirimkanPostContent permintaan berikut ke Amazon Lex:

      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/content HTTP/1.1 x-amz-lex-session-attributes: "e30=" Content-Type: "audio/x-l16; sample-rate=16000; channel-count=1" Accept: "audio/mpeg" Request body input stream ("tomorrow")

      Permintaan tubuh adalah input pengguna aliran audio (“besok”).sessionAttributes Sisa-sisa kosong.

    2. Amazon Lex menafsirkan aliran input dalam konteks maksud saat ini (ia ingat bahwa ia telah meminta pengguna ini untuk informasi yang berkaitan denganPickupDate slot). Amazon Lex memperbarui nilai slot (PickupDate) untuk maksud saat ini. Kemudian memilih slot lain untuk mendapatkan nilai untuk (PickupTime) dan salah satu petunjuk nilai elicitation (Kapan Anda ingin mengambil mawar pada 2017-03-18?) , dan mengembalikan respon dengan header berikut:

      x-amz-lex-dialog-state:ElicitSlot x-amz-lex-input-transcript:tomorrow x-amz-lex-intent-name:OrderFlowers x-amz-lex-message:When do you want to pick up the roses on 2017-03-18? x-amz-lex-session-attributes:e30= x-amz-lex-slot-to-elicit:PickupTime x-amz-lex-slots:eyJQaWNrdXBUaW1lIjpudWxsLCJGbG93ZXJUeXBlIjoicm9zaSdzIiwiUGlja3VwRGF0ZSI6IjIwMTctMDMtMTgifQ== x-amzn-RequestId:3a205b70-0b69-11e7-b447-eb69face3e6f

      Nilai header memberikan informasi berikut:

      • x-amz-lex-slots- Versi berkode base64 dari slot dan nilai:

        {"PickupTime":null,"FlowerType":"roses","PickupDate":"2017-03-18"}
      • x-amz-lex-session-attributes- Versi berkode base64 dari atribut sesi ({})

      Klien memutar audio di bodi respons.

  4. Pengguna mengatakan: 6 sore

    1. Klien (konsol) mengirimkanPostContent permintaan berikut ke Amazon Lex:

      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/content HTTP/1.1 x-amz-lex-session-attributes: "e30=" Content-Type: "text/plain; charset=utf-8" Accept: "audio/mpeg" Request body input stream ("6 pm")

      Badan permintaan adalah aliran audio input pengguna (“6 sore”). sessionAttributesSisa-sisa kosong.

    2. Amazon Lex menafsirkan aliran input dalam konteks maksud saat ini (ia ingat bahwa ia telah meminta pengguna ini untuk informasi yang berkaitan denganPickupTime slot). Ini pertama kali memperbarui nilai slot untuk maksud saat ini.

      Sekarang Amazon Lex mendeteksi bahwa ia memiliki informasi untuk semua slot. Namun,OrderFlowers maksud dikonfigurasi dengan pesan konfirmasi. Oleh karena itu, Amazon Lex memerlukan konfirmasi eksplisit dari pengguna sebelum dapat melanjutkan untuk memenuhi maksud. Ini mengirimkan respons dengan header berikut meminta konfirmasi sebelum memesan bunga:

      x-amz-lex-dialog-state:ConfirmIntent x-amz-lex-input-transcript:six p. m. x-amz-lex-intent-name:OrderFlowers x-amz-lex-message:Okay, your roses will be ready for pickup by 18:00 on 2017-03-18. Does this sound okay? x-amz-lex-session-attributes:e30= x-amz-lex-slots:eyJQaWNrdXBUaW1lIjoiMTg6MDAiLCJGbG93ZXJUeXBlIjoicm9zaSdzIiwiUGlja3VwRGF0ZSI6IjIwMTctMDMtMTgifQ== x-amzn-RequestId:083ca360-0b6a-11e7-b447-eb69face3e6f

      Nilai header memberikan informasi berikut:

      • x-amz-lex-slots- Versi berkode base64 dari slot dan nilai:

        {"PickupTime":"18:00","FlowerType":"roses","PickupDate":"2017-03-18"}
      • x-amz-lex-session-attributes- Versi berkode base64 dari atribut sesi ({})

      Klien memutar audio di bodi respons.

  5. Pengguna mengatakan: Ya

    1. Klien (konsol) mengirimkanPostContent permintaan berikut ke Amazon Lex:

      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/content HTTP/1.1 x-amz-lex-session-attributes: "e30=" Content-Type: "audio/x-l16; sample-rate=16000; channel-count=1" Accept: "audio/mpeg" Request body input stream ("Yes")

      Badan permintaan adalah aliran audio input pengguna (“Ya”). sessionAttributesSisa-sisa kosong.

    2. Amazon Lex menafsirkan aliran input dan memahami bahwa pengguna ingin melanjutkan pesanan. OrderFlowersMaksud dikonfigurasiReturnIntent sebagai aktivitas pemenuhan. Ini mengarahkan Amazon Lex untuk mengembalikan semua data maksud ke klien. Amazon Lex mengembalikan respons dengan mengikuti:

      x-amz-lex-dialog-state:ReadyForFulfillment x-amz-lex-input-transcript:yes x-amz-lex-intent-name:OrderFlowers x-amz-lex-session-attributes:e30= x-amz-lex-slots:eyJQaWNrdXBUaW1lIjoiMTg6MDAiLCJGbG93ZXJUeXBlIjoicm9zaSdzIiwiUGlja3VwRGF0ZSI6IjIwMTctMDMtMTgifQ==

      Headerx-amz-lex-dialog-state respon diatur keReadyForFulfillment. Klien kemudian dapat memenuhi maksud.

  6. Sekarang, uji ulang botnya. Untuk membuat konteks (pengguna) baru, pilih tautan Hapus di konsol. Berikan data untukOrderFlowers maksud, dan sertakan beberapa data yang tidak valid. Misalnya:

    • Melati sebagai jenis bunga (bukan salah satu jenis bunga yang didukung)

    • Kemarin sebagai hari ketika Anda ingin mengambil bunga

    Perhatikan bahwa bot menerima nilai-nilai ini karena Anda tidak memiliki kode untuk menginisialisasi dan memvalidasi data pengguna. Di bagian selanjutnya, Anda menambahkan fungsi Lambda untuk melakukan ini. Perhatikan hal berikut tentang fungsi Lambda:

    • Ini memvalidasi data slot setelah setiap input pengguna. Ini memenuhi maksud di akhir. Artinya, bot memproses urutan bunga dan mengembalikan pesan kepada pengguna alih-alih hanya mengembalikan data slot ke klien. Untuk informasi selengkapnya, lihat Menggunakan Fungsi Lambda.

    • Hal ini juga menetapkan atribut sesi. Untuk informasi selengkapnya tentang atribut sesi, lihatPostText.

      Setelah Anda menyelesaikan bagian Memulai, Anda dapat melakukan latihan tambahan (Contoh Tambahan: Membuat Amazon Lex Bots). Buku Perjalananmenggunakan atribut sesi untuk berbagi informasi lintas-maksud untuk terlibat dalam percakapan dinamis dengan pengguna.

Langkah Selanjutnya

Langkah 3: Buat Fungsi Lambda (Konsol)