

Pemberitahuan akhir dukungan: Pada 15 September 2025, AWS akan menghentikan dukungan untuk Amazon Lex V1. Setelah 15 September 2025, Anda tidak lagi dapat mengakses konsol Amazon Lex V1 atau sumber daya Amazon Lex V1. Jika Anda menggunakan Amazon Lex V2, lihat [panduan Amazon Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html) sebagai gantinya. 

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Latihan 1: Membuat Bot Amazon Lex Menggunakan Blueprint (Konsol)
<a name="gs-bp"></a>

Dalam latihan ini, Anda melakukan hal berikut:
+ Buat bot Amazon Lex pertama Anda, dan uji di konsol Amazon Lex. 

  Untuk latihan ini, Anda menggunakan **OrderFlowers**cetak biru. Untuk informasi tentang cetak biru, lihat. [Amazon Lex dan AWS Lambda Cetak Biru](lex-lambda-blueprints.md) 

   
+ Buat AWS Lambda fungsi dan uji di konsol Lambda. Saat memproses permintaan, bot Anda memanggil fungsi Lambda ini. Untuk latihan ini, Anda menggunakan Lambda blueprint (**lex-order-flowers-python**) yang disediakan di konsol AWS Lambda untuk membuat fungsi Lambda Anda. Kode cetak biru menggambarkan bagaimana Anda dapat menggunakan fungsi Lambda yang sama untuk melakukan inisialisasi dan validasi, dan untuk memenuhi intent. `OrderFlowers` 

   
+ Perbarui bot untuk menambahkan fungsi Lambda sebagai pengait kode untuk memenuhi maksud. Uji end-to-end pengalamannya.

Bagian berikut menjelaskan apa yang dilakukan cetak biru. 

## Amazon Lex Bot: Ikhtisar Cetak Biru
<a name="gs-bp-summary-bot"></a>

Anda menggunakan **OrderFlowers**cetak biru untuk membuat bot Amazon Lex. Untuk informasi lebih lanjut tentang struktur bot, lihat. [Amazon Lex: Cara Kerjanya](how-it-works.md) Bot sudah dikonfigurasi sebelumnya sebagai berikut:
+ **Niat** — OrderFlowers
+ **Jenis slot** — Satu jenis slot khusus yang disebut `FlowerTypes` dengan nilai enumerasi:`roses`,, `lilies` dan. `tulips`
+ **Slot** — Maksudnya membutuhkan informasi berikut (yaitu, slot) sebelum bot dapat memenuhi maksud.
  + `PickupTime`(Tipe bawaan AMAZON.TIME)
  + `FlowerType`(tipe FlowerTypes kustom)
  + `PickupDate`(Tipe bawaan AMAZON.DATE)
+ **Ucapan** - Contoh ucapan berikut menunjukkan maksud pengguna:
  + “Aku ingin mengambil bunga.”
  + “Saya ingin memesan beberapa bunga.”
+ **Prompts** — Setelah bot mengidentifikasi intent, bot menggunakan prompt berikut untuk mengisi slot:
  + Prompt untuk `FlowerType` slot — “Jenis bunga apa yang ingin Anda pesan?”
  + Prompt untuk `PickupDate` slot — “Hari apa Anda ingin \$1FlowerType\$1 diambil?”
  + Prompt untuk `PickupTime` slot — “Pada jam berapa Anda ingin \$1FlowerType\$1 diambil?”
  + Pernyataan konfirmasi — “Oke, \$1FlowerType\$1 Anda akan siap untuk diambil oleh \$1PickupTime\$1 di \$1PickupDate\$1. Apakah ini terdengar baik-baik saja?” 



## AWS Lambda Fungsi: Ringkasan Cetak Biru
<a name="gs-bp-summary-lambda"></a>

Fungsi Lambda dalam latihan ini melakukan tugas inisialisasi dan validasi dan pemenuhan. Oleh karena itu, setelah membuat fungsi Lambda, Anda memperbarui konfigurasi intent dengan menentukan fungsi Lambda yang sama sebagai hook kode untuk menangani tugas inisialisasi dan validasi dan pemenuhan. 
+ Sebagai pengait kode inisialisasi dan validasi, fungsi Lambda melakukan validasi dasar. Misalnya, jika pengguna menyediakan waktu untuk pengambilan yang berada di luar jam kerja normal, fungsi Lambda mengarahkan Amazon Lex untuk meminta ulang pengguna untuk waktu tersebut.
+ Sebagai bagian dari hook kode pemenuhan, fungsi Lambda mengembalikan pesan ringkasan yang menunjukkan bahwa urutan bunga telah ditempatkan (yaitu, maksud terpenuhi).

**Langkah Selanjutnya**  
[Langkah 1: Buat Amazon Lex Bot (Konsol)](gs-bp-create-bot.md)

# Langkah 1: Buat Amazon Lex Bot (Konsol)
<a name="gs-bp-create-bot"></a>

Untuk latihan ini, buat bot untuk memesan bunga, yang disebut OrderFlowersBot.

Untuk membuat bot Amazon Lex (konsol)

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon Lex di [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/).

1. Jika ini adalah bot pertama Anda, pilih **Memulai**; jika tidak, pada halaman **Bots**, pilih **Buat**. 

1. Pada halaman **Create your Lex bot**, berikan informasi berikut, lalu pilih **Create**.
   + Pilih **OrderFlowers**cetak biru.
   + Tinggalkan nama bot default (OrderFlowers).
   + Untuk **COPPA**, pilih**No**.
   + Untuk **penyimpanan ucapan Pengguna**, pilih respons yang sesuai.

1. Pilih **Buat**. Konsol membuat permintaan yang diperlukan ke Amazon Lex untuk menyimpan konfigurasi. Konsol kemudian menampilkan jendela editor bot.

1. Tunggu konfirmasi bahwa bot Anda dibangun.

1. Uji botnya.
**catatan**  
Anda dapat menguji bot dengan mengetik teks ke jendela pengujian, atau, untuk browser yang kompatibel, dengan memilih tombol mikrofon di jendela uji dan berbicara. 

   Gunakan contoh teks berikut untuk terlibat dalam percakapan dengan bot untuk memesan bunga:  
![\[\]](http://docs.aws.amazon.com/id_id/lex/latest/dg/images/OrderFlowers-NoLambda.png)

   Dari input ini, bot menyimpulkan `OrderFlowers` maksud dan meminta data slot. Saat Anda memberikan semua data slot yang diperlukan, bot memenuhi intent (`OrderFlowers`) dengan mengembalikan semua informasi ke aplikasi klien (dalam hal ini, konsol). Konsol menampilkan informasi di jendela pengujian.

   Secara khusus:
   + Dalam pernyataan “Hari apa Anda ingin mawar diambil? , "istilah “mawar” muncul karena prompt untuk `pickupDate` slot dikonfigurasi menggunakan substitusi,. `{FlowerType}` Verifikasi ini di konsol.
   + Pernyataan “Oke, mawar Anda akan siap...” adalah prompt konfirmasi yang Anda konfigurasikan. 
   + Pernyataan terakhir (” `FlowerType:roses...` “) hanyalah data slot yang dikembalikan ke klien, dalam hal ini, di jendela pengujian. Pada latihan berikutnya, Anda menggunakan fungsi Lambda untuk memenuhi maksud, dalam hal ini Anda mendapatkan pesan yang menunjukkan bahwa pesanan terpenuhi.

**Langkah Selanjutnya**  
[Langkah 2 (Opsional): Tinjau Detail Alur Informasi (Konsol)](gs-bp-details-two-runtime-apis.md)

# Langkah 2 (Opsional): Tinjau Detail Alur Informasi (Konsol)
<a name="gs-bp-details-two-runtime-apis"></a>

Bagian ini menjelaskan aliran informasi antara klien dan Amazon Lex untuk setiap masukan pengguna dalam percakapan contoh kami. 

Contoh menggunakan jendela pengujian konsol untuk percakapan dengan bot.

**Untuk membuka jendela uji Amazon Lex**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon Lex di [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/).

1. Pilih bot untuk diuji.

1. Dari sisi kanan konsol, pilih **Uji chatbot**.

Untuk melihat aliran informasi untuk konten yang diucapkan atau diketik, pilih topik yang sesuai. 

**Topics**
+ [

# Langkah 2a (Opsional): Tinjau Detail Alur Informasi Lisan (Konsol)
](gs-bp-details-postcontent-flow.md)
+ [

# Langkah 2b (Opsional): Tinjau Detail Alur Informasi yang Diketik (Konsol)
](gs-bp-details-part1.md)

# Langkah 2a (Opsional): Tinjau Detail Alur Informasi Lisan (Konsol)
<a name="gs-bp-details-postcontent-flow"></a>

Bagian ini menjelaskan aliran informasi antara klien dan Amazon Lex ketika klien menggunakan pidato untuk mengirim permintaan. Untuk informasi selengkapnya, lihat [PostContent](API_runtime_PostContent.md). 

1. Pengguna berkata: Saya ingin memesan beberapa bunga.

   1. Klien (konsol) mengirimkan [PostContent](API_runtime_PostContent.md) 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 ke Amazon Lex:
      + Request URI — Menyediakan nama bot (`OrderFlowers`), bot alias (`$LATEST`), dan nama pengguna (string acak yang mengidentifikasi pengguna). `content`menunjukkan bahwa ini adalah permintaan `PostContent` API (bukan `PostText` permintaan).
      + Minta header
        + `x-amz-lex-session-attributes`— Nilai yang dikodekan base64 mewakili “\$1\$1”. Ketika klien membuat permintaan pertama, tidak ada atribut sesi. 
        + `Content-Type`— Mencerminkan format audio.
      + Badan permintaan - Aliran audio input pengguna (“Saya ingin memesan beberapa bunga.”).
**catatan**  
Jika pengguna memilih untuk mengirim teks (“Saya ingin memesan beberapa bunga”) ke `PostContent` API alih-alih berbicara, badan permintaan adalah input pengguna. `Content-Type`Header 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
      ```

   1. Dari aliran input, Amazon Lex mendeteksi intent ()`OrderFlowers`. Kemudian memilih salah satu slot maksud (dalam hal ini,`FlowerType`) dan salah satu permintaan elisitasi 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 dikembalikan sebagai tanggapan
      + `x-amz-lex-slots`— Versi slot dan nilai yang dikodekan base64:

        ```
        {"PickupTime":null,"FlowerType":null,"PickupDate":null}
        ```
      + `x-amz-lex-session-attributes`— Versi atribut sesi yang dikodekan base64 (\$1\$1)

      Klien memutar audio di badan respons.

1. Pengguna mengatakan: mawar

   1. Klien (konsol) mengirimkan [PostContent](API_runtime_PostContent.md) 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 aliran audio input pengguna (mawar). `sessionAttributes`Sisa-sisa kosong.

   1. Amazon Lex menafsirkan aliran input dalam konteks maksud saat ini (ingat bahwa ia telah meminta pengguna ini untuk informasi yang berkaitan dengan slot). `FlowerType` Amazon Lex pertama kali 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 respons 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 slot dan nilai yang dikodekan base64:

        ```
        {"PickupTime":null,"FlowerType":"roses","PickupDate":null}
        ```
      + `x-amz-lex-session-attributes`— Versi atribut sesi yang dikodekan base64 (\$1\$1)

      Klien memutar audio di badan respons.

1. Pengguna mengatakan: besok

   1. Klien (konsol) mengirimkan [PostContent](API_runtime_PostContent.md) 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")
      ```

      Badan permintaan adalah aliran audio input pengguna (“besok”) `sessionAttributes` .Tetap kosong.

   1. Amazon Lex menafsirkan aliran input dalam konteks maksud saat ini (ingat bahwa ia telah meminta pengguna ini untuk informasi yang berkaitan dengan slot). `PickupDate` Amazon Lex memperbarui nilai slot (`PickupDate`) untuk maksud saat ini. Kemudian memilih slot lain untuk mendapatkan nilai untuk (`PickupTime`) dan salah satu permintaan elisitasi nilai (Kapan Anda ingin mengambil mawar pada 2017-03-18?) , dan mengembalikan respons 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 slot dan nilai yang dikodekan base64:

        ```
        {"PickupTime":null,"FlowerType":"roses","PickupDate":"2017-03-18"}
        ```
      + `x-amz-lex-session-attributes`— Versi atribut sesi yang dikodekan base64 (\$1\$1)

      Klien memutar audio di badan respons.

1. Pengguna mengatakan: 6 sore

   1. Klien (konsol) mengirimkan [PostContent](API_runtime_PostContent.md) 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 pm”). `sessionAttributes`Sisa-sisa kosong.

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

      Sekarang Amazon Lex mendeteksi bahwa ia memiliki informasi untuk semua slot. Namun, `OrderFlowers` intent 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 yang 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 slot dan nilai yang dikodekan base64:

        ```
        {"PickupTime":"18:00","FlowerType":"roses","PickupDate":"2017-03-18"}
        ```
      + `x-amz-lex-session-attributes`— Versi atribut sesi yang dikodekan base64 (\$1\$1)

      Klien memutar audio di badan respons.

1. Pengguna mengatakan: Ya

   1. Klien (konsol) mengirimkan [PostContent](API_runtime_PostContent.md) 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”). `sessionAttributes`Sisa-sisa kosong.

   1. Amazon Lex menafsirkan aliran input dan memahami bahwa pengguna ingin melanjutkan pesanan. `OrderFlowers`Maksud dikonfigurasi dengan `ReturnIntent` sebagai aktivitas pemenuhan. Ini mengarahkan Amazon Lex untuk mengembalikan semua data maksud ke klien. Amazon Lex mengembalikan respons dengan berikut: 

      

      ```
      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==
      ```

      Header `x-amz-lex-dialog-state` respons diatur ke`ReadyForFulfillment`. Klien kemudian dapat memenuhi niat tersebut.

1. Sekarang, uji ulang botnya. Untuk membuat konteks (pengguna) baru, pilih tautan **Hapus** di konsol. Berikan data untuk `OrderFlowers` maksud, dan sertakan beberapa data yang tidak valid. Contoh: 
   + 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. Itu memenuhi niat di akhir. Artinya, bot memproses pesanan bunga dan mengembalikan pesan ke pengguna alih-alih hanya mengembalikan data slot ke klien. Untuk informasi selengkapnya, lihat [Menggunakan Fungsi Lambda](using-lambda.md).
   + Ini juga menetapkan atribut sesi. Untuk informasi selengkapnya tentang atribut sesi, lihat[PostText](API_runtime_PostText.md). 

      Setelah Anda menyelesaikan bagian Memulai, Anda dapat melakukan latihan tambahan ([Contoh Tambahan: Membuat Amazon Lex Bots](additional-exercises.md)). [Pesan Perjalanan](ex-book-trip.md)menggunakan atribut sesi untuk berbagi informasi lintas maksud untuk terlibat dalam percakapan dinamis dengan pengguna.

**Langkah Selanjutnya**  
[Langkah 3: Buat Fungsi Lambda (Konsol)](gs-bp-create-lambda-function.md)

# Langkah 2b (Opsional): Tinjau Detail Alur Informasi yang Diketik (Konsol)
<a name="gs-bp-details-part1"></a>

Bagian ini menjelaskan aliran informasi antara klien dan Amazon Lex di mana klien menggunakan `PostText` API untuk mengirim permintaan. Untuk informasi selengkapnya, lihat [PostText](API_runtime_PostText.md). 

1. Jenis pengguna: Saya ingin memesan beberapa bunga

   1. Klien (konsol) mengirimkan [PostText](API_runtime_PostText.md) permintaan berikut ke Amazon Lex: 

      ```
      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/text
      "Content-Type":"application/json"
      "Content-Encoding":"amz-1.0"
      
      {
          "inputText": "I would like to order some flowers",
          "sessionAttributes": {}
      }
      ```

      URI permintaan dan badan memberikan informasi ke Amazon Lex:
      + Request URI — Menyediakan nama bot (`OrderFlowers`), bot alias (`$LATEST`), dan nama pengguna (string acak yang mengidentifikasi pengguna). Trailing `text` menunjukkan bahwa itu adalah permintaan `PostText` API (dan bukan`PostContent`).

         
      + Request body - Termasuk input pengguna (`inputText`) dan kosong`sessionAttributes`. Ketika klien membuat permintaan pertama, tidak ada atribut sesi. Fungsi Lambda memulai mereka nanti.

   1. Dari`inputText`, Amazon Lex mendeteksi intent ()`OrderFlowers`. Maksud ini tidak memiliki kait kode apa pun (yaitu, fungsi Lambda) untuk inisialisasi dan validasi input atau pemenuhan pengguna. 

      Amazon Lex memilih salah satu slot intent (`FlowerType`) untuk memperoleh nilai. Ini juga memilih salah satu prompt elisitasi nilai untuk slot (semua bagian dari konfigurasi maksud), dan kemudian mengirimkan respons berikut kembali ke klien. Konsol menampilkan pesan dalam respons kepada pengguna.  
![\[\]](http://docs.aws.amazon.com/id_id/lex/latest/dg/images/gs-1-details-10.png)

      Klien menampilkan pesan dalam respons.

1. Jenis pengguna: mawar

   1. Klien (konsol) mengirimkan [PostText](API_runtime_PostText.md) permintaan berikut ke Amazon Lex: 

      ```
      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/text
      "Content-Type":"application/json"
      "Content-Encoding":"amz-1.0"
      
      {
          "inputText": "roses",
          "sessionAttributes": {}
      }
      ```

      `inputText`Dalam badan permintaan menyediakan masukan pengguna. `sessionAttributes`Sisa-sisa kosong.

   1. Amazon Lex pertama kali menafsirkan `inputText` dalam konteks maksud saat ini—layanan mengingat bahwa ia telah meminta pengguna tertentu untuk informasi tentang slot. `FlowerType` Amazon Lex pertama kali memperbarui nilai slot untuk maksud saat ini dan memilih slot lain (`PickupDate`) bersama dengan salah satu pesan cepatnya — hari apa Anda ingin mawar diambil? — `` untuk slot.

      Kemudian, Amazon Lex mengembalikan respons berikut:  
![\[\]](http://docs.aws.amazon.com/id_id/lex/latest/dg/images/gs-1-details-20.png)

      Klien menampilkan pesan dalam respons.

1. Jenis pengguna: besok

   1. Klien (konsol) mengirimkan [PostText](API_runtime_PostText.md) permintaan berikut ke Amazon Lex: 

      ```
      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/text
      "Content-Type":"application/json"
      "Content-Encoding":"amz-1.0"
      
      {
          "inputText": "tomorrow",
          "sessionAttributes": {}
      }
      ```

      `inputText`Dalam badan permintaan menyediakan masukan pengguna. `sessionAttributes`Sisa-sisa kosong.

   1. Amazon Lex pertama kali menafsirkan `inputText` dalam konteks maksud saat ini—layanan mengingat bahwa ia telah meminta pengguna tertentu untuk informasi tentang slot. `PickupDate` Amazon Lex memperbarui nilai slot (`PickupDate`) untuk maksud saat ini. Ini memilih slot lain untuk memperoleh nilai untuk (). `PickupTime` Ini mengembalikan salah satu petunjuk elisitasi nilai—mengirimkan mawar pada jam berapa pada 2017-01-05? - `` untuk klien.

      Amazon Lex kemudian mengembalikan respons berikut:  
![\[\]](http://docs.aws.amazon.com/id_id/lex/latest/dg/images/gs-1-details-30.png)

      Klien menampilkan pesan dalam respons.

1. Jenis pengguna: 6 sore

   1. Klien (konsol) mengirimkan [PostText](API_runtime_PostText.md) permintaan berikut ke Amazon Lex: 

      ```
      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/text
      "Content-Type":"application/json"
      "Content-Encoding":"amz-1.0"
      
      {
          "inputText": "6 pm",
          "sessionAttributes": {}
      }
      ```

      `inputText`Dalam badan permintaan menyediakan masukan pengguna. `sessionAttributes`Sisa-sisa kosong.

   1. Amazon Lex pertama kali menafsirkan `inputText` dalam konteks maksud saat ini—layanan mengingat bahwa ia telah meminta pengguna tertentu untuk informasi tentang slot. `PickupTime` Amazon Lex pertama kali memperbarui nilai slot untuk maksud saat ini. Sekarang Amazon Lex mendeteksi bahwa ia memiliki informasi untuk semua slot. 

      `OrderFlowers`Maksud dikonfigurasi dengan pesan konfirmasi. Oleh karena itu, Amazon Lex memerlukan konfirmasi eksplisit dari pengguna sebelum dapat melanjutkan untuk memenuhi maksud. Amazon Lex mengirimkan pesan berikut kepada klien yang meminta konfirmasi sebelum memesan bunga:  
![\[\]](http://docs.aws.amazon.com/id_id/lex/latest/dg/images/gs-1-details-40.png)

      Klien menampilkan pesan dalam respons.

1. Jenis pengguna: Ya

   1. Klien (konsol) mengirimkan [PostText](API_runtime_PostText.md) permintaan berikut ke Amazon Lex: 

      ```
      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/text
      "Content-Type":"application/json"
      "Content-Encoding":"amz-1.0"
      
      {
          "inputText": "Yes",
          "sessionAttributes": {}
      }
      ```

      `inputText`Dalam badan permintaan menyediakan masukan pengguna. `sessionAttributes`Sisa-sisa kosong.

   1. Amazon Lex menafsirkan `inputText` dalam konteks mengkonfirmasikan maksud saat ini. Ia memahami bahwa pengguna ingin melanjutkan pesanan. `OrderFlowers`Maksud dikonfigurasi `ReturnIntent` sebagai aktivitas pemenuhan (tidak ada fungsi Lambda untuk memenuhi maksud). Oleh karena itu, Amazon Lex mengembalikan data slot berikut ke klien.   
![\[\]](http://docs.aws.amazon.com/id_id/lex/latest/dg/images/gs-1-details-50.png)

      Amazon Lex mengatur `dialogState` ke`ReadyForFulfillment`. Klien kemudian dapat memenuhi niat tersebut.

1. Sekarang uji bot lagi. Untuk melakukan itu, Anda harus memilih tautan **Hapus** di konsol untuk membuat konteks (pengguna) baru. Sekarang saat Anda memberikan data untuk maksud pesanan bunga, cobalah untuk memberikan data yang tidak valid. Contoh: 
   + 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 apa pun ke data initialize/validate pengguna. Di bagian selanjutnya, Anda menambahkan fungsi Lambda untuk melakukan ini. Perhatikan hal berikut tentang fungsi Lambda:
   + Fungsi Lambda memvalidasi data slot setelah setiap input pengguna. Itu memenuhi niat di akhir. Artinya, bot memproses pesanan bunga dan mengembalikan pesan ke pengguna alih-alih hanya mengembalikan data slot ke klien. Untuk informasi selengkapnya, lihat [Menggunakan Fungsi Lambda](using-lambda.md).
   + Fungsi Lambda juga menetapkan atribut sesi. Untuk informasi selengkapnya tentang atribut sesi, lihat[PostText](API_runtime_PostText.md). 

      Setelah Anda menyelesaikan bagian Memulai, Anda dapat melakukan latihan tambahan ([Contoh Tambahan: Membuat Amazon Lex Bots](additional-exercises.md)). [Pesan Perjalanan](ex-book-trip.md)menggunakan atribut sesi untuk berbagi informasi lintas maksud untuk terlibat dalam percakapan dinamis dengan pengguna.

**Langkah Selanjutnya**  
[Langkah 3: Buat Fungsi Lambda (Konsol)](gs-bp-create-lambda-function.md)

# Langkah 3: Buat Fungsi Lambda (Konsol)
<a name="gs-bp-create-lambda-function"></a>

Buat fungsi Lambda (menggunakan **lex-order-flowers-python**cetak biru) dan lakukan pemanggilan pengujian menggunakan contoh data peristiwa di konsol. AWS Lambda 

Anda kembali ke konsol Amazon Lex dan menambahkan fungsi Lambda sebagai pengait kode untuk memenuhi `OrderFlowers` maksud `OrderFlowersBot` yang Anda buat di bagian sebelumnya.

**Untuk membuat fungsi Lambda (konsol)**

1. Masuk ke Konsol Manajemen AWS dan buka AWS Lambda konsol di [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Pilih **Buat fungsi**.

1. Pada halaman **Buat fungsi**, pilih **Gunakan cetak biru**. Ketik **lex-** kotak teks filter dan kemudian tekan `Enter` untuk menemukan cetak biru, pilih cetak biru. `lex-order-flowers-python` 

   Cetak biru fungsi Lambda disediakan di Node.js dan Python. Untuk latihan ini, gunakan cetak biru berbasis Python.

1. Pada halaman **Informasi dasar**, lakukan hal berikut. 
   + Ketik nama fungsi Lambda ()`OrderFlowersCodeHook`.
   + Untuk peran eksekusi, pilih **Buat peran baru dengan izin Lambda dasar**.
   + Tinggalkan nilai default lainnya.

1. Pilih **Buat fungsi**.

1. Jika Anda menggunakan lokal selain bahasa Inggris (AS) (en-US), perbarui nama maksud seperti yang dijelaskan dalam. [Memperbarui Cetak Biru untuk Lokal Tertentu](lex-lambda-blueprints.md#blueprint-update-locale)

1. Uji fungsi Lambda.

   1. Pilih **Pilih acara pengujian**, **Konfigurasikan peristiwa pengujian**.

   1. Pilih **Amazon Lex Order Flowers** dari daftar **template Acara**. Contoh acara ini cocok dengan request/response model Amazon Lex (lihat[Menggunakan Fungsi Lambda](using-lambda.md)). Beri nama acara pengujian (`LexOrderFlowersTest`).

   1. Pilih **Buat**.

   1. Pilih **Uji** untuk menguji kait kode.

   1. Verifikasi bahwa fungsi Lambda berhasil berjalan. Respons dalam hal ini cocok dengan model respons Amazon Lex.

**Langkah Selanjutnya**  
[Langkah 4: Tambahkan Fungsi Lambda sebagai Code Hook (Console)](gs-bp-create-integrate.md)

# Langkah 4: Tambahkan Fungsi Lambda sebagai Code Hook (Console)
<a name="gs-bp-create-integrate"></a>

Di bagian ini, Anda memperbarui konfigurasi OrderFlowers intent untuk menggunakan fungsi Lambda sebagai berikut:
+ Pertama gunakan fungsi Lambda sebagai hook kode untuk melakukan pemenuhan maksud. `OrderFlowers` Anda menguji bot dan memverifikasi bahwa Anda menerima pesan pemenuhan dari fungsi Lambda. Amazon Lex memanggil fungsi Lambda hanya setelah Anda memberikan data untuk semua slot yang diperlukan untuk memesan bunga.
+ Konfigurasikan fungsi Lambda yang sama sebagai hook kode untuk melakukan inisialisasi dan validasi. Anda menguji dan memverifikasi bahwa fungsi Lambda melakukan validasi (saat Anda memberikan data slot).

**Untuk menambahkan fungsi Lambda sebagai hook kode (konsol)**

1. Di konsol Amazon Lex, pilih **OrderFlowers**bot. Konsol menunjukkan **OrderFlowers**maksud. Pastikan versi intent disetel ke `$LATEST` karena ini adalah satu-satunya versi yang dapat kita modifikasi.

1. Tambahkan fungsi Lambda sebagai hook kode pemenuhan dan ujilah.

   

   1. Di Editor, pilih **AWS Lambda fungsi** sebagai **Pemenuhan**, dan pilih fungsi Lambda yang Anda buat di langkah sebelumnya (). `OrderFlowersCodeHook` Pilih **OK** untuk memberikan izin Amazon Lex untuk menjalankan fungsi Lambda.

      Anda mengonfigurasi fungsi Lambda ini sebagai pengait kode untuk memenuhi maksud. Amazon Lex memanggil fungsi ini hanya setelah memiliki semua data slot yang diperlukan dari pengguna untuk memenuhi maksud.

   1. Tentukan **pesan Selamat Tinggal**.

   1. Pilih **Build**.

   1. Uji bot menggunakan percakapan sebelumnya.

   Pernyataan terakhir “Terima kasih, pesanan Anda untuk mawar...” adalah respons dari fungsi Lambda yang Anda konfigurasikan sebagai pengait kode. Di bagian sebelumnya, tidak ada fungsi Lambda. Sekarang Anda menggunakan fungsi Lambda untuk benar-benar memenuhi maksud. `OrderFlowers`

1. Tambahkan fungsi Lambda sebagai pengait kode inisialisasi dan validasi, dan uji.

   Contoh kode fungsi Lambda yang Anda gunakan dapat melakukan validasi dan pemenuhan input pengguna. Peristiwa masukan yang diterima fungsi Lambda memiliki field (`invocationSource`) yang digunakan kode untuk menentukan bagian kode mana yang akan dijalankan. Untuk informasi selengkapnya, lihat [Peristiwa Input Fungsi Lambda dan Format Respons](lambda-input-response-format.md).

   1. Pilih versi \$1LATEST dari `OrderFlowers` intent. Itu adalah satu-satunya versi yang dapat Anda perbarui. 

   1. **Di Editor, pilih **Inisialisasi dan validasi di Opsi**.** 

   1. Sekali lagi, pilih fungsi Lambda yang sama. 

   1. Pilih **Build**.

   1. Uji botnya. 

      Anda sekarang siap untuk berkomunikasi dengan Amazon Lex seperti pada gambar berikut. Untuk menguji bagian validasi, pilih waktu 6 sore, dan fungsi Lambda Anda mengembalikan respons (“Jam kerja kami adalah dari jam 10 pagi sampai jam 5 sore.”), dan meminta Anda lagi. Setelah Anda memberikan semua data slot yang valid, fungsi Lambda memenuhi pesanan.   
![\[\]](http://docs.aws.amazon.com/id_id/lex/latest/dg/images/OrderFlowers-FullLambda.png)

**Langkah Selanjutnya**  
[Langkah 5 (Opsional): Tinjau Detail Alur Informasi (Konsol)](gs-bp-details-after-lambda.md)

# Langkah 5 (Opsional): Tinjau Detail Alur Informasi (Konsol)
<a name="gs-bp-details-after-lambda"></a>

Bagian ini menjelaskan aliran informasi antara klien dan Amazon Lex untuk setiap input pengguna, termasuk integrasi fungsi Lambda.

**catatan**  
Bagian ini mengasumsikan bahwa klien mengirimkan permintaan ke Amazon Lex menggunakan API `PostText` runtime dan menampilkan detail permintaan dan respons yang sesuai. Untuk contoh aliran informasi antara klien dan Amazon Lex di mana klien menggunakan `PostContent` API, lihat[Langkah 2a (Opsional): Tinjau Detail Alur Informasi Lisan (Konsol)](gs-bp-details-postcontent-flow.md).

Untuk informasi selengkapnya tentang API `PostText` runtime dan detail tambahan tentang permintaan dan tanggapan yang ditampilkan dalam langkah-langkah berikut, lihat[PostText](API_runtime_PostText.md). 

1. Pengguna: Saya ingin memesan beberapa bunga.

   1. Klien (konsol) mengirimkan [PostText](API_runtime_PostText.md) permintaan berikut ke Amazon Lex: 

      ```
      POST /bot/OrderFlowers/alias/$LATEST/user/ignw84y6seypre4xly5rimopuri2xwnd/text
      "Content-Type":"application/json"
      "Content-Encoding":"amz-1.0"
      
      {
          "inputText": "I would like to order some flowers",
          "sessionAttributes": {}
      }
      ```

      URI permintaan dan badan memberikan informasi ke Amazon Lex:
      + Request URI — Menyediakan nama bot (`OrderFlowers`), bot alias (`$LATEST`), dan nama pengguna (string acak yang mengidentifikasi pengguna). Trailing `text` menunjukkan bahwa itu adalah permintaan `PostText` API (dan bukan`PostContent`).
      + Request body - Termasuk input pengguna (`inputText`) dan kosong`sessionAttributes`. Ketika klien membuat permintaan pertama, tidak ada atribut sesi. Fungsi Lambda memulai mereka nanti.

   1. Dari`inputText`, Amazon Lex mendeteksi intent ()`OrderFlowers`. Maksud ini dikonfigurasi dengan fungsi Lambda sebagai hook kode untuk inisialisasi dan validasi data pengguna. Oleh karena itu, Amazon Lex memanggil fungsi Lambda itu dengan meneruskan informasi berikut sebagai data peristiwa:

      ```
      {
          "messageVersion": "1.0",
          "invocationSource": "DialogCodeHook",
          "userId": "ignw84y6seypre4xly5rimopuri2xwnd",
          "sessionAttributes": {},
          "bot": {
              "name": "OrderFlowers",
              "alias": null,
              "version": "$LATEST"
          },
          "outputDialogMode": "Text",
          "currentIntent": {
              "name": "OrderFlowers",
              "slots": {
                  "PickupTime": null,
                  "FlowerType": null,
                  "PickupDate": null
              },
              "confirmationStatus": "None"
          }
      }
      ```

      Untuk informasi selengkapnya, lihat [Format Peristiwa Masukan](lambda-input-response-format.md#using-lambda-input-event-format).

      Selain informasi yang dikirim klien, Amazon Lex juga menyertakan data tambahan berikut:
      + `messageVersion`- Saat ini Amazon Lex hanya mendukung versi 1.0.
      + `invocationSource`— Menunjukkan tujuan pemanggilan fungsi Lambda. Dalam hal ini, itu adalah untuk melakukan inisialisasi dan validasi data pengguna. Saat ini, Amazon Lex tahu bahwa pengguna belum menyediakan semua data slot untuk memenuhi maksud tersebut.
      + `currentIntent`informasi dengan semua nilai slot diatur ke null.

   1. Pada saat ini, semua nilai slot adalah nol. Tidak ada fungsi Lambda untuk memvalidasi. Fungsi Lambda mengembalikan respons berikut ke Amazon Lex:

      ```
      {
          "sessionAttributes": {},
          "dialogAction": {
              "type": "Delegate",
              "slots": {
                  "PickupTime": null,
                  "FlowerType": null,
                  "PickupDate": null
              }
          }
      }
      ```

      Untuk informasi tentang format respons, lihat[Format Respons](lambda-input-response-format.md#using-lambda-response-format).

      Perhatikan hal-hal berikut:
      + `dialogAction.type`— Dengan menetapkan nilai ini`Delegate`, fungsi Lambda mendelegasikan tanggung jawab untuk memutuskan tindakan selanjutnya ke Amazon Lex. 
**catatan**  
Jika fungsi Lambda mendeteksi apa pun dalam validasi data pengguna, fungsi ini menginstruksikan Amazon Lex apa yang harus dilakukan selanjutnya, seperti yang ditunjukkan pada beberapa langkah berikutnya.

   1. Menurut`dialogAction.type`, Amazon Lex memutuskan tindakan selanjutnya. Karena tidak ada slot yang diisi, ia memutuskan untuk memperoleh nilai untuk slot. `FlowerType` Ini memilih salah satu petunjuk elisitasi nilai (“Jenis bunga apa yang ingin Anda pesan?”) untuk slot ini dan mengirimkan respons berikut kembali ke klien:  
![\[\]](http://docs.aws.amazon.com/id_id/lex/latest/dg/images/gs-1-details-10.png)

      Klien menampilkan pesan dalam respons.

1. Pengguna: mawar

   1. Klien mengirimkan [PostText](API_runtime_PostText.md) permintaan berikut ke Amazon Lex: 

      ```
      POST /bot/OrderFlowers/alias/$LATEST/user/ignw84y6seypre4xly5rimopuri2xwnd/text
      "Content-Type":"application/json"
      "Content-Encoding":"amz-1.0"
      
      {
          "inputText": "roses",
          "sessionAttributes": {}
      }
      ```

      Di badan permintaan, `inputText` menyediakan input pengguna. `sessionAttributes`Sisa-sisa kosong.

   1. Amazon Lex pertama kali menafsirkan `inputText` dalam konteks maksud saat ini. Layanan ingat bahwa mereka telah meminta pengguna tertentu untuk informasi tentang `FlowerType` slot. Ini memperbarui nilai slot dalam maksud saat ini dan memanggil fungsi Lambda dengan data peristiwa berikut:

      ```
      {
          "messageVersion": "1.0",
          "invocationSource": "DialogCodeHook",
          "userId": "ignw84y6seypre4xly5rimopuri2xwnd",
          "sessionAttributes": {},
          "bot": {
              "name": "OrderFlowers",
              "alias": null,
              "version": "$LATEST"
          },
          "outputDialogMode": "Text",
          "currentIntent": {
              "name": "OrderFlowers",
              "slots": {
                  "PickupTime": null,
                  "FlowerType": "roses",
                  "PickupDate": null
              },
              "confirmationStatus": "None"
          }
      }
      ```

      Perhatikan hal-hal berikut:
      + `invocationSource`— terus menjadi `DialogCodeHook` (kami hanya memvalidasi data pengguna). 
      + `currentIntent.slots`— Amazon Lex telah memperbarui `FlowerType` slot ke mawar.

   1. Menurut `invocationSource` nilai`DialogCodeHook`, fungsi Lambda melakukan validasi data pengguna. Ini mengenali `roses` sebagai nilai slot yang valid (dan ditetapkan `Price` sebagai atribut sesi) dan mengembalikan respons berikut ke Amazon Lex. 

      ```
      {
          "sessionAttributes": {
              "Price": 25
          },
          "dialogAction": {
              "type": "Delegate",
              "slots": {
                  "PickupTime": null,
                  "FlowerType": "roses",
                  "PickupDate": null
              }
          }
      }
      ```

      Perhatikan hal-hal berikut:
      + `sessionAttributes`— Fungsi Lambda telah menambahkan `Price` (mawar) sebagai atribut sesi.
      + `dialogAction.type`- diatur ke`Delegate`. Data pengguna valid sehingga fungsi Lambda mengarahkan Amazon Lex untuk memilih tindakan berikutnya.

       

   1. Menurut`dialogAction.type`, Amazon Lex memilih tindakan berikutnya. Amazon Lex tahu itu membutuhkan lebih banyak data slot sehingga memilih slot yang tidak terisi berikutnya (`PickupDate`) dengan prioritas tertinggi sesuai dengan konfigurasi maksud. Amazon Lex memilih salah satu pesan prompt elisitasi nilai — “Hari apa Anda ingin mawar diambil?” —untuk slot ini sesuai dengan konfigurasi maksud, dan kemudian mengirimkan respons berikut kembali ke klien:   
![\[\]](http://docs.aws.amazon.com/id_id/lex/latest/dg/images/gs-1-details-20.png)

      Klien hanya menampilkan pesan dalam tanggapan - “Hari apa Anda ingin mawar diambil?.”

1. Pengguna: besok

   1. Klien mengirimkan [PostText](API_runtime_PostText.md) permintaan berikut ke Amazon Lex: 

      ```
      POST /bot/OrderFlowers/alias/$LATEST/user/ignw84y6seypre4xly5rimopuri2xwnd/text
      "Content-Type":"application/json"
      "Content-Encoding":"amz-1.0"
      
      {
          "inputText": "tomorrow",
          "sessionAttributes": {
              "Price": "25"
          }
      }
      ```

      Di badan permintaan, `inputText` berikan input pengguna dan klien meneruskan atribut sesi kembali ke layanan.

   1. Amazon Lex ingat konteksnya — bahwa itu memunculkan data untuk slot. `PickupDate` Dalam konteks ini, ia tahu `inputText` nilainya untuk `PickupDate` slot. Amazon Lex kemudian memanggil fungsi Lambda dengan mengirimkan acara berikut: 

      ```
      {
          "messageVersion": "1.0",
          "invocationSource": "DialogCodeHook",
          "userId": "ignw84y6seypre4xly5rimopuri2xwnd",
          "sessionAttributes": {
              "Price": "25"
          },
          "bot": {
              "name": "OrderFlowersCustomWithRespCard",
              "alias": null,
              "version": "$LATEST"
          },
          "outputDialogMode": "Text",
          "currentIntent": {
              "name": "OrderFlowers",
              "slots": {
                  "PickupTime": null,
                  "FlowerType": "roses",
                  "PickupDate": "2017-01-05"
              },
              "confirmationStatus": "None"
          }
      }
      ```

      Amazon Lex telah memperbarui `currentIntent.slots` dengan menetapkan `PickupDate` nilai. Perhatikan juga bahwa layanan melewati apa `sessionAttributes` adanya ke fungsi Lambda.

   1. Sesuai `invocationSource` nilai`DialogCodeHook`, fungsi Lambda melakukan validasi data pengguna. Ini mengakui nilai `PickupDate` slot valid dan mengembalikan respons berikut ke Amazon Lex: 

      ```
      {
          "sessionAttributes": {
              "Price": 25
          },
          "dialogAction": {
              "type": "Delegate",
              "slots": {
                  "PickupTime": null,
                  "FlowerType": "roses",
                  "PickupDate": "2017-01-05"
              }
          }
      }
      ```

      Perhatikan hal-hal berikut:
      + `sessionAttributes`- Tidak ada perubahan.
      + `dialogAction.type`- diatur ke`Delegate`. Data pengguna valid, dan fungsi Lambda mengarahkan Amazon Lex untuk memilih tindakan berikutnya.

   1. Menurut`dialogAction.type`, Amazon Lex memilih tindakan berikutnya. Amazon Lex tahu itu membutuhkan lebih banyak data slot sehingga memilih slot yang tidak terisi berikutnya (`PickupTime`) dengan prioritas tertinggi sesuai dengan konfigurasi maksud. Amazon Lex memilih salah satu pesan prompt (“Kirim mawar kapan pada 2017-01-05?”) untuk slot ini sesuai dengan konfigurasi maksud dan mengirimkan respons berikut kembali ke klien:   
![\[\]](http://docs.aws.amazon.com/id_id/lex/latest/dg/images/gs-1-details-30.png)

      Klien menampilkan pesan dalam tanggapan - “Kirimkan mawar pada jam berapa pada 2017-01-05?”

1. Pengguna: 4 sore

   1. Klien mengirimkan [PostText](API_runtime_PostText.md) permintaan berikut ke Amazon Lex: 

      ```
      POST /bot/OrderFlowers/alias/$LATEST/user/ignw84y6seypre4xly5rimopuri2xwnd/text
      "Content-Type":"application/json"
      "Content-Encoding":"amz-1.0"
      
      {
          "inputText": "4 pm",
          "sessionAttributes": {
              "Price": "25"
          }
      }
      ```

      Di badan permintaan, `inputText` berikan masukan pengguna. Klien melewati `sessionAttributes` permintaan.

   1. Amazon Lex memahami konteksnya. Ia mengerti bahwa itu memunculkan data untuk slot. `PickupTime` Dalam konteks ini, ia tahu bahwa `inputText` nilainya adalah untuk `PickupTime` slot. Amazon Lex kemudian memanggil fungsi Lambda dengan mengirimkan acara berikut: 

      ```
      {
          "messageVersion": "1.0",
          "invocationSource": "DialogCodeHook",
          "userId": "ignw84y6seypre4xly5rimopuri2xwnd",
          "sessionAttributes": {
              "Price": "25"
          },
          "bot": {
              "name": "OrderFlowersCustomWithRespCard",
              "alias": null,
              "version": "$LATEST"
          },
          "outputDialogMode": "Text",
          "currentIntent": {
              "name": "OrderFlowers",
              "slots": {
                  "PickupTime": "16:00",
                  "FlowerType": "roses",
                  "PickupDate": "2017-01-05"
              },
              "confirmationStatus": "None"
          }
      }
      ```

      Amazon Lex telah memperbarui `currentIntent.slots` dengan menetapkan `PickupTime` nilai.

   1. Menurut `invocationSource` nilai`DialogCodeHook`, fungsi Lambda melakukan validasi data pengguna. Ini mengakui nilai `PickupDate` slot valid dan mengembalikan respons berikut ke Amazon Lex. 

      ```
      {
          "sessionAttributes": {
              "Price": 25
          },
          "dialogAction": {
              "type": "Delegate",
              "slots": {
                  "PickupTime": "16:00",
                  "FlowerType": "roses",
                  "PickupDate": "2017-01-05"
              }
          }
      }
      ```

      Perhatikan hal-hal berikut:
      + `sessionAttributes`— Tidak ada perubahan atribut sesi.
      + `dialogAction.type`- diatur ke`Delegate`. Data pengguna valid sehingga fungsi Lambda mengarahkan Amazon Lex untuk memilih tindakan berikutnya.

   1. Saat ini Amazon Lex tahu ia memiliki semua data slot. Maksud ini dikonfigurasi dengan prompt konfirmasi. Oleh karena itu, Amazon Lex mengirimkan respons berikut kepada pengguna yang meminta konfirmasi sebelum memenuhi maksud:   
![\[\]](http://docs.aws.amazon.com/id_id/lex/latest/dg/images/gs-1-details-45.png)

      Klien hanya menampilkan pesan dalam respons dan menunggu respons pengguna.

1. Pengguna: Ya

   1. Klien mengirimkan [PostText](API_runtime_PostText.md) permintaan berikut ke Amazon Lex: 

      ```
      POST /bot/OrderFlowers/alias/$LATEST/user/ignw84y6seypre4xly5rimopuri2xwnd/text
      "Content-Type":"application/json"
      "Content-Encoding":"amz-1.0"
      
      {
          "inputText": "yes",
          "sessionAttributes": {
              "Price": "25"
          }
      }
      ```

   1. Amazon Lex menafsirkan `inputText` dalam konteks mengkonfirmasikan maksud saat ini. Amazon Lex memahami bahwa pengguna ingin melanjutkan pesanan. Kali ini Amazon Lex memanggil fungsi Lambda untuk memenuhi maksud dengan mengirimkan peristiwa berikut, yang menyetel ke jika `invocationSource` dikirimkan `FulfillmentCodeHook` ke fungsi Lambda. Amazon Lex juga menetapkan `confirmationStatus` untuk`Confirmed`.

      ```
      {
          "messageVersion": "1.0",
          "invocationSource": "FulfillmentCodeHook",
          "userId": "ignw84y6seypre4xly5rimopuri2xwnd",
          "sessionAttributes": {
              "Price": "25"
          },
          "bot": {
              "name": "OrderFlowersCustomWithRespCard",
              "alias": null,
              "version": "$LATEST"
          },
          "outputDialogMode": "Text",
          "currentIntent": {
              "name": "OrderFlowers",
              "slots": {
                  "PickupTime": "16:00",
                  "FlowerType": "roses",
                  "PickupDate": "2017-01-05"
              },
              "confirmationStatus": "Confirmed"
          }
      }
      ```

      Perhatikan hal-hal berikut:
      + `invocationSource`— Kali ini Amazon Lex menetapkan nilai ini`FulfillmentCodeHook`, mengarahkan fungsi Lambda untuk memenuhi maksud.
      + `confirmationStatus`- diatur ke`Confirmed`.

   1. Kali ini, fungsi Lambda memenuhi `OrderFlowers` intent, dan mengembalikan respons berikut:

      ```
      {
          "sessionAttributes": {
              "Price": "25"
          },
          "dialogAction": {
              "type": "Close",
              "fulfillmentState": "Fulfilled",
              "message": {
                  "contentType": "PlainText",
                  "content": "Thanks, your order for roses has been placed and will be ready for pickup by 16:00 on 2017-01-05"
              }
          }
      }
      ```

      Perhatikan hal-hal berikut: 
      + Menetapkan `dialogAction.type` — Fungsi Lambda menetapkan nilai ini`Close`, mengarahkan Amazon Lex agar tidak mengharapkan respons pengguna. 
      + `dialogAction.fulfillmentState`— diatur ke Fulled dan termasuk yang sesuai `message` untuk disampaikan kepada pengguna.

   1. Amazon Lex mengulas `fulfillmentState` dan mengirimkan tanggapan berikut kembali ke klien. 

      Amazon Lex kemudian mengembalikan yang berikut ini ke klien:  
![\[\]](http://docs.aws.amazon.com/id_id/lex/latest/dg/images/gs-1-details-48.png)

      Perhatikan bahwa:
      + `dialogState`— Amazon Lex menetapkan nilai ini ke`fulfilled`.
      + `message`— adalah pesan yang sama dengan fungsi Lambda yang disediakan.

      Klien menampilkan pesan.

1. Sekarang uji bot lagi. Untuk membuat konteks (pengguna) baru, pilih tautan **Hapus** di jendela pengujian. Sekarang berikan data slot yang tidak valid untuk maksud tersebut. `OrderFlowers` Kali ini fungsi Lambda melakukan validasi data, mengatur ulang nilai data slot yang tidak valid ke null, dan meminta Amazon Lex untuk meminta pengguna untuk data yang valid. Misalnya, coba yang berikut ini:
   + Melati sebagai jenis bunga (bukan salah satu jenis bunga yang didukung).
   + Kemarin sebagai hari ketika Anda ingin mengambil bunga.
   + Setelah melakukan pemesanan, masukkan jenis bunga lain alih-alih menjawab “ya” untuk mengonfirmasi pesanan. Sebagai tanggapan, fungsi Lambda memperbarui atribut `Price` dalam sesi, menjaga total pesanan bunga berjalan.

   Fungsi Lambda juga melakukan aktivitas pemenuhan. 

**Langkah Selanjutnya**  
[Langkah 6: Perbarui Konfigurasi Intent untuk Menambahkan Ucapan (Konsol)](gs-bp-utterance.md)

# Langkah 6: Perbarui Konfigurasi Intent untuk Menambahkan Ucapan (Konsol)
<a name="gs-bp-utterance"></a>

 `OrderFlowers`Bot dikonfigurasi hanya dengan dua ucapan. Ini memberikan informasi terbatas bagi Amazon Lex untuk membuat model pembelajaran mesin yang mengenali dan merespons maksud pengguna. Coba ketik “Saya ingin memesan bunga”, seperti pada jendela pengujian berikut. Amazon Lex tidak mengenali teks, dan menjawab dengan “Saya tidak mengerti Anda, apa yang ingin Anda lakukan?” Anda dapat meningkatkan model pembelajaran mesin dengan menambahkan lebih banyak ucapan.

![\[Jendela uji menunjukkan ucapan yang terlewat.\]](http://docs.aws.amazon.com/id_id/lex/latest/dg/images/gs1-120.png)


Setiap ucapan yang Anda tambahkan memberi Amazon Lex informasi lebih lanjut tentang cara merespons pengguna Anda. Anda tidak perlu menambahkan ucapan yang tepat, Amazon Lex menggeneralisasi dari sampel yang Anda berikan untuk mengenali kecocokan persis dan input serupa.

**Untuk menambahkan ucapan (konsol)**

1. Tambahkan ucapan “Saya ingin bunga” ke maksud dengan mengetikkannya di bagian **Sample ujaran dari editor maksud, seperti pada gambar berikut, lalu mengklik ikon plus di sebelah ucapan** baru.  
![\[Editor maksud dengan ucapan baru.\]](http://docs.aws.amazon.com/id_id/lex/latest/dg/images/gs1-130.png)

1.  Bangun bot Anda untuk mengambil perubahan. Pilih **Build**, lalu pilih **Build** lagi. 

1. Uji bot Anda untuk mengonfirmasi bahwa ia mengenali ucapan baru. Di jendela uji, seperti pada gambar berikut, ketik “Saya ingin memesan bunga.” Amazon Lex mengenali frasa tersebut dan merespons dengan “Jenis bunga apa yang ingin Anda pesan?”.  
![\[Editor maksud mengenali ucapan baru.\]](http://docs.aws.amazon.com/id_id/lex/latest/dg/images/gs1-140.png)

**Langkah Selanjutnya**  
[Langkah 7 (Opsional): Bersihkan (Konsol)](gs-bp-cleaning-up.md)

# Langkah 7 (Opsional): Bersihkan (Konsol)
<a name="gs-bp-cleaning-up"></a>

Sekarang, hapus sumber daya yang Anda buat dan bersihkan akun Anda.

Anda hanya dapat menghapus sumber daya yang tidak digunakan. Secara umum, Anda harus menghapus sumber daya dalam urutan berikut:
+ Hapus bot untuk membebaskan sumber daya maksud.
+ Hapus maksud untuk membebaskan sumber daya jenis slot.
+ Hapus jenis slot terakhir.

**Untuk membersihkan akun Anda (konsol)**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon Lex di [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/).

1. Dari daftar bot, pilih kotak centang di sebelah **OrderFlowers**.

1. Untuk menghapus bot, pilih **Hapus**, lalu pilih **Lanjutkan** di kotak dialog konfirmasi.

1. Di panel kiri, pilih **Maksud**.

1. Dalam daftar maksud, pilih **OrderFlowersIntent**.

1. Untuk menghapus maksud, pilih **Hapus**, lalu pilih **Lanjutkan** di kotak dialog konfirmasi.

1. Di panel kiri, pilih **jenis Slot**.

1. Dalam daftar jenis slot, pilih **Bunga**.

1. Untuk menghapus jenis slot, pilih **Hapus**, lalu pilih **Lanjutkan** di kotak dialog konfirmasi.

Anda telah menghapus semua sumber daya Amazon Lex yang Anda buat dan bersihkan akun Anda. Jika diinginkan, Anda dapat menggunakan [konsol Lambda](https://console.aws.amazon.com/lambda) untuk menghapus fungsi Lambda yang digunakan dalam latihan ini.