

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

# Memahami percakapan bot Amazon Lex V2
<a name="managing-conversations"></a>

Setelah Anda membangun bot, Anda mengintegrasikan aplikasi klien Anda dengan operasi runtime Amazon Lex V2 untuk mengadakan percakapan dengan bot Anda. Saat pengguna memulai percakapan dengan bot Anda, Amazon Lex V2 membuat *sesi*. Sesi merangkum informasi yang dipertukarkan antara aplikasi Anda dan bot. Untuk informasi selengkapnya, lihat [Memahami sesi bot Amazon Lex V2](managing-sessions.md).

Percakapan tipikal melibatkan arus bolak-balik antara pengguna dan bot. Contoh:

```
User : I'd like to make an appointment
Bot : What type of appointment would you like to schedule?
User : dental
Bot : When should I schedule your dental appointment?
User : Tomorrow
Bot : At what time do you want to schedule the dental appointment on 2021-01-01?
User : 9 am
Bot : 09:00 is available, should I go ahead and book your appointment?
User : Yes
Bot : Thank you. Your appointment has been set successfully.
```

Gunakan operasi [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html)atau [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html)API untuk mengelola percakapan sendiri. Gunakan operasi [StartConversation](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_StartConversation.html)API untuk memungkinkan Amazon Lex V2 mengelola percakapan untuk Anda.

Untuk mengelola percakapan, Anda harus mengirim ucapan pengguna ke bot hingga percakapan mencapai akhir yang logis. Percakapan saat ini ditangkap dalam status sesi. Status sesi diperbarui setelah setiap ucapan pengguna. Status sesi berisi status percakapan saat ini dan dikembalikan oleh bot sebagai respons terhadap setiap ucapan pengguna. 

Percakapan dapat dilakukan di salah satu negara bagian berikut:
+ **ElicitIntent**— Menunjukkan bahwa bot belum menentukan maksud pengguna.
+ **ElicitSlot**— Menunjukkan bahwa bot telah mendeteksi maksud pengguna dan mengumpulkan informasi yang diperlukan untuk memenuhi maksud.
+ **ConfirmIntent**— Menunjukkan bahwa bot sedang menunggu pengguna untuk mengkonfirmasi bahwa informasi yang dikumpulkan sudah benar.
+ **Ditutup** - Menunjukkan bahwa maksud pengguna telah selesai dan bahwa percakapan dengan bot mencapai akhir yang logis.

Pengguna dapat menentukan intent baru setelah intent pertama selesai. Untuk informasi selengkapnya, lihat [Konteks percakapan dengan bot Lex V2 Anda](conversation-contexts.md).

Sebuah maksud dapat memiliki salah satu dari status berikut:
+ **InProgress**— Menunjukkan bahwa bot mengumpulkan informasi yang diperlukan untuk menyelesaikan maksud. Ini dalam hubungannya dengan keadaan `ElicitSlot` percakapan.
+ **Menunggu** — Menunjukkan bahwa pengguna meminta bot untuk menunggu ketika bot meminta informasi untuk slot tertentu. 
+ **Terpenuhi** - Menunjukkan bahwa logika bisnis dalam fungsi Lambda yang terkait dengan maksud berjalan dengan sukses.
+ **ReadyForFulfillment**— Menunjukkan bahwa bot mengumpulkan semua informasi yang diperlukan untuk memenuhi maksud dan bahwa aplikasi klien dapat menjalankan logika bisnis pemenuhan. 
+ **Gagal** - Menunjukkan bahwa maksud telah gagal.

Lihat topik berikut untuk mempelajari cara menggunakan Amazon Lex V2 APIs untuk mengelola konteks percakapan dan sesi antara bot dan pengguna Anda.

**Topics**
+ [Konteks percakapan dengan bot Lex V2 Anda](conversation-contexts.md)
+ [Memahami sesi bot Amazon Lex V2](managing-sessions.md)

# Konteks percakapan dengan bot Lex V2 Anda
<a name="conversation-contexts"></a>

*Konteks percakapan* adalah informasi yang disediakan pengguna, aplikasi klien, atau fungsi Lambda ke bot Amazon Lex V2 untuk memenuhi maksud. Konteks percakapan mencakup data slot yang disediakan pengguna, atribut permintaan yang ditetapkan oleh aplikasi klien, dan atribut sesi yang dibuat oleh aplikasi klien dan fungsi Lambda.

**Topics**
+ [Mengatur konteks maksud untuk bot Lex V2 Anda](context-mgmt-active-context.md)
+ [Menggunakan nilai slot default dalam maksud untuk bot Lex V2 Anda](context-mgmt-default.md)
+ [Mengatur atribut sesi untuk bot Lex V2 Anda](context-mgmt-session-attribs.md)
+ [Mengatur atribut permintaan untuk bot Lex V2 Anda](context-mgmt-request-attribs.md)
+ [Mengatur batas waktu sesi](context-mgmt-session-timeout.md)
+ [Berbagi informasi antar maksud dengan bot Lex V2 Anda](context-mgmt-cross-intent.md)
+ [Mengatur atribut kompleks di bot Lex V2 Anda](context-mgmt-complex-attributes.md)

# Mengatur konteks maksud untuk bot Lex V2 Anda
<a name="context-mgmt-active-context"></a>

Anda dapat memiliki maksud pemicu Amazon Lex V2 berdasarkan *konteks*. *Konteks* adalah variabel status yang dapat dikaitkan dengan maksud saat Anda mendefinisikan bot. Anda mengonfigurasi konteks untuk maksud saat membuat maksud menggunakan konsol atau menggunakan operasi. [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) Anda hanya dapat menggunakan konteks dalam bahasa Inggris (AS) (en-US) lokal.

Ada dua jenis hubungan untuk konteks, konteks keluaran dan konteks input. *Konteks keluaran* menjadi aktif ketika maksud terkait terpenuhi. Konteks keluaran dikembalikan ke aplikasi Anda dalam respons dari [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html)operasi [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html)atau, dan diatur untuk sesi saat ini. Setelah konteks diaktifkan, konteks tetap aktif untuk jumlah putaran atau batas waktu yang dikonfigurasi saat konteks ditentukan. 

*Konteks masukan* menentukan kondisi di mana maksud dapat dikenali. Maksud hanya dapat dikenali selama percakapan ketika semua konteks inputnya aktif. Maksud tanpa konteks input selalu memenuhi syarat untuk pengakuan. 

Amazon Lex V2 secara otomatis mengelola siklus hidup konteks yang diaktifkan dengan memenuhi maksud dengan konteks keluaran. Anda juga dapat mengatur konteks aktif dalam panggilan ke `RecognizeText` atau `RecognizeUtterance` operasi.

Anda juga dapat mengatur konteks percakapan menggunakan fungsi Lambda untuk intent. Konteks keluaran dari Amazon Lex V2 dikirim ke peristiwa input fungsi Lambda. Fungsi Lambda dapat mengirim konteks dalam responsnya. Untuk informasi selengkapnya, lihat [Mengintegrasikan AWS Lambda fungsi ke bot Amazon Lex V2 Anda](lambda.md).

Misalnya, Anda memiliki maksud untuk memesan mobil sewaan yang dikonfigurasi untuk mengembalikan konteks keluaran yang disebut “book\$1car\$1filled”. Ketika intent terpenuhi, Amazon Lex V2 menyetel variabel konteks keluaran “book\$1car\$1fulfilled”. Karena “book\$1car\$1fulfilled” adalah konteks aktif, maksud dengan konteks “book\$1car\$1fulfilled” yang ditetapkan sebagai konteks input sekarang dipertimbangkan untuk dikenali, selama ucapan pengguna diakui sebagai upaya untuk memperoleh maksud tersebut. Anda dapat menggunakan ini untuk maksud yang hanya masuk akal setelah memesan mobil, seperti mengirim email tanda terima atau memodifikasi reservasi.

## Konteks keluaran maksud untuk bot Lex V2 Anda
<a name="context-output"></a>

Amazon Lex V2 membuat konteks keluaran intent aktif saat intent terpenuhi. Anda dapat menggunakan konteks keluaran untuk mengontrol maksud yang memenuhi syarat untuk menindaklanjuti maksud saat ini.

Setiap konteks memiliki daftar parameter yang dipertahankan dalam sesi. Parameter adalah nilai slot untuk maksud yang terpenuhi. Anda dapat menggunakan parameter ini untuk mengisi nilai slot terlebih dahulu untuk maksud lain. Untuk informasi selengkapnya, lihat [Menggunakan nilai slot default dalam maksud untuk bot Lex V2 Anda](context-mgmt-default.md).

Anda mengonfigurasi konteks keluaran saat membuat intent dengan konsol atau dengan [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html)operasi. Anda dapat mengonfigurasi intent dengan lebih dari satu konteks keluaran. Ketika maksud terpenuhi, semua konteks output diaktifkan dan dikembalikan dalam respons atau. [RecognizeText[RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html)](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html)

Saat Anda menentukan konteks keluaran, Anda juga menentukan *waktunya untuk hidup*, lamanya waktu atau jumlah putaran yang konteksnya disertakan dalam tanggapan dari Amazon Lex V2. *Giliran* adalah satu permintaan dari aplikasi Anda ke Amazon Lex V2. Setelah jumlah putaran atau waktu kedaluwarsa, konteksnya tidak lagi aktif. 

Aplikasi Anda dapat menggunakan konteks output sesuai kebutuhan. Misalnya, aplikasi Anda dapat menggunakan konteks output untuk:
+ Ubah perilaku aplikasi berdasarkan konteksnya. Misalnya, aplikasi perjalanan dapat memiliki tindakan yang berbeda untuk konteks “book\$1car\$1fulfilled” daripada “rental\$1hotel\$1fulfilled.”
+ Kembalikan konteks output ke Amazon Lex V2 sebagai konteks masukan untuk ucapan berikutnya. Jika Amazon Lex V2 mengenali ucapan sebagai upaya untuk mendapatkan maksud, Amazon Lex V2 menggunakan konteks untuk membatasi maksud yang dapat dikembalikan ke maksud dengan konteks yang ditentukan.

## Masukan konteks maksud untuk bot Lex V2 Anda
<a name="context-input"></a>

Anda menetapkan konteks masukan untuk membatasi titik dalam percakapan tempat maksud dikenali. Maksud tanpa konteks input selalu memenuhi syarat untuk dikenali.

Anda menyetel konteks input yang ditanggapi intent menggunakan konsol atau operasi. `CreateIntent` Sebuah intent dapat memiliki lebih dari satu konteks masukan.

Untuk maksud dengan lebih dari satu konteks masukan, semua konteks harus aktif untuk memicu maksud. Anda dapat mengatur konteks input saat Anda memanggil [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html), [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html), atau [PutSession](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_PutSession.html)operasi. 

Anda dapat mengonfigurasi slot dalam maksud untuk mengambil nilai default dari konteks aktif saat ini. Nilai default digunakan saat Amazon Lex V2 mengenali maksud baru tetapi tidak menerima nilai slot. Anda menentukan nama konteks dan nama slot dalam formulir `#context-name.parameter-name` saat Anda menentukan slot. Untuk informasi selengkapnya, lihat [Menggunakan nilai slot default dalam maksud untuk bot Lex V2 Anda](context-mgmt-default.md).

# Menggunakan nilai slot default dalam maksud untuk bot Lex V2 Anda
<a name="context-mgmt-default"></a>

Saat Anda menggunakan nilai default, Anda menentukan sumber untuk nilai slot yang akan diisi untuk maksud baru ketika tidak ada slot yang disediakan oleh input pengguna. Sumber ini dapat berupa dialog sebelumnya, atribut permintaan atau sesi, atau nilai tetap yang Anda tetapkan pada waktu pembuatan. 

Anda dapat menggunakan berikut ini sebagai sumber untuk nilai default Anda.
+ Dialog sebelumnya (konteks) - \$1context -name.parameter-name
+ Atribut sesi - [atribut-nama]
+ Atribut permintaan — <attribute-name>
+ Nilai tetap - Nilai apa pun yang tidak cocok dengan sebelumnya

Saat Anda menggunakan [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html)operasi untuk menambahkan slot ke intent, Anda dapat menambahkan daftar nilai default. Nilai default digunakan dalam urutan yang terdaftar. Misalnya, Anda memiliki maksud dengan slot dengan definisi berikut:

```
"slots": [
    {
        "botId": "string",
        "defaultValueSpec": {
            "defaultValueList": [
                {
                    "defaultValue": "#book-car-fulfilled.startDate"
                },
                {
                    "defaultValue": "[reservationStartDate]"
                }
            ]
        },
        Other slot configuration settings
    }
]
```

Ketika intent dikenali, slot bernama "reservation-start-date" memiliki nilai yang disetel ke salah satu dari berikut ini.

1. Jika konteks book-car-fulfilled "" aktif, nilai parameter “startDate” digunakan sebagai nilai default.

1. Jika konteks book-car-fulfilled "" tidak aktif, atau jika parameter “startDate” tidak disetel, nilai atribut sesi reservationStartDate "" digunakan sebagai nilai default.

1. Jika tidak satu pun dari dua nilai default pertama yang digunakan, maka slot tidak memiliki nilai default dan Amazon Lex V2 akan memperoleh nilai seperti biasa.

Jika nilai default digunakan untuk slot, slot tidak ditimbulkan bahkan jika diperlukan.

# Mengatur atribut sesi untuk bot Lex V2 Anda
<a name="context-mgmt-session-attribs"></a>

*Atribut sesi* berisi informasi khusus aplikasi yang diteruskan antara bot dan aplikasi klien selama sesi. Amazon Lex V2 meneruskan atribut sesi ke semua fungsi Lambda yang dikonfigurasi untuk bot. Jika fungsi Lambda menambahkan atau memperbarui atribut sesi, Amazon Lex V2 meneruskan informasi baru kembali ke aplikasi klien. 

Gunakan atribut sesi dalam fungsi Lambda Anda untuk menginisialisasi bot dan untuk menyesuaikan prompt dan kartu respons. Contoh:
+ Inisialisasi — Dalam bot pemesanan pizza, aplikasi klien melewati lokasi pengguna sebagai atribut sesi dalam panggilan pertama ke [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html)operasi [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html)atau. Misalnya, `"Location": "111 Maple Street"`. Fungsi Lambda menggunakan informasi ini untuk menemukan restoran pizza terdekat untuk melakukan pemesanan.
+ Personalisasi prompt - Konfigurasikan prompt dan kartu respons untuk merujuk ke atribut sesi. Misalnya, “Hei [FirstName], topping apa yang Anda inginkan?” Jika Anda meneruskan nama depan pengguna sebagai atribut session (`{"FirstName": "Vivian"}`), Amazon Lex mengganti nama untuk placeholder. Kemudian mengirimkan prompt yang dipersonalisasi kepada pengguna, “Hai Vivian, topping mana yang Anda inginkan?”

Atribut sesi bertahan selama sesi berlangsung. Amazon Lex V2 menyimpannya di penyimpanan data terenkripsi hingga sesi berakhir. Klien dapat membuat atribut sesi dalam permintaan dengan memanggil [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html)operasi [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html)atau dengan `sessionAttributes` bidang yang disetel ke nilai. Fungsi Lambda dapat membuat atribut sesi dalam respons. Setelah klien atau fungsi Lambda membuat atribut session, nilai atribut yang disimpan digunakan kapan saja aplikasi klien tidak menyertakan `sessionAttribute` bidang dalam permintaan ke Amazon Lex V2.

Misalnya, Anda memiliki dua atribut sesi,`{"x": "1", "y": "2"}`. Jika klien memanggil `RecognizeUtterance` operasi `RecognizeText` atau tanpa menentukan `sessionAttributes` bidang, Amazon Lex V2 memanggil fungsi Lambda dengan atribut `{"x": 1, "y": 2}` sesi tersimpan (). Jika fungsi Lambda tidak menampilkan atribut sesi, Amazon Lex V2 mengembalikan atribut sesi tersimpan ke aplikasi klien.

Jika aplikasi klien atau fungsi Lambda melewati atribut sesi, Amazon Lex V2 memperbarui atribut sesi yang disimpan. Melewati nilai yang ada, seperti` {"x": 2}`, memperbarui nilai yang disimpan. Jika Anda melewatkan satu set atribut sesi baru, seperti`{"z": 3}`, nilai yang ada akan dihapus dan hanya nilai baru yang disimpan. Ketika peta kosong,`{}`, dilewatkan, nilai yang disimpan dihapus.

Untuk mengirim atribut sesi ke Amazon Lex V2, Anda membuat string-to-string peta atribut. Berikut ini menunjukkan cara memetakan atribut sesi: 

```
{
   "attributeName": "attributeValue",
   "attributeName": "attributeValue"
}
```

Untuk `RecognizeText` operasi, Anda memasukkan peta ke dalam badan permintaan menggunakan `sessionAttributes` bidang `sessionState` struktur, sebagai berikut:

```
"sessionState": {
    "sessionAttributes": {
        "attributeName": "attributeValue",
        "attributeName": "attributeValue"
    }
}
```

Untuk `RecognizeUtterance` operasi, Anda base64 menyandikan peta, dan kemudian mengirimkannya sebagai bagian dari header. `x-amz-lex-session-state`

Jika Anda mengirim data biner atau terstruktur dalam atribut sesi, Anda harus terlebih dahulu mengubah data menjadi string sederhana. Untuk informasi selengkapnya, lihat [Mengatur atribut kompleks di bot Lex V2 Anda](context-mgmt-complex-attributes.md).

# Mengatur atribut permintaan untuk bot Lex V2 Anda
<a name="context-mgmt-request-attribs"></a>

*Atribut permintaan* berisi informasi khusus permintaan dan hanya berlaku untuk permintaan saat ini. Aplikasi klien mengirimkan informasi ini ke Amazon Lex V2. Gunakan atribut permintaan untuk meneruskan informasi yang tidak perlu bertahan selama seluruh sesi. Anda dapat membuat atribut permintaan Anda sendiri atau Anda dapat menggunakan atribut yang telah ditentukan sebelumnya. Untuk mengirim atribut permintaan, gunakan `x-amz-lex-request-attributes` header dalam [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html)atau `requestAttributes` bidang dalam [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html)permintaan. Karena atribut permintaan tidak bertahan di seluruh permintaan seperti atribut sesi, atribut tersebut tidak dikembalikan `RecognizeUtterance` atau ditanggapi`RecognizeText`. 

**catatan**  
Untuk mengirim informasi yang tetap ada di seluruh permintaan, gunakan atribut sesi.

## Mengatur atribut permintaan yang ditentukan pengguna untuk setiap permintaan bot Lex V2
<a name="context-mgmt-user"></a>

*Atribut permintaan yang ditentukan pengguna* adalah data yang Anda kirim ke bot Anda di setiap permintaan. Anda mengirim informasi di `amz-lex-request-attributes` header `RecognizeUtterance` permintaan atau di `requestAttributes` bidang `RecognizeText` permintaan. 

Untuk mengirim atribut permintaan ke Amazon Lex V2, Anda membuat string-to-string peta atribut. Berikut ini menunjukkan cara memetakan atribut permintaan: 

```
{
   "attributeName": "attributeValue",
   "attributeName": "attributeValue"
}
```

Untuk `PostText` operasi, Anda memasukkan peta ke dalam badan permintaan menggunakan `requestAttributes` bidang, sebagai berikut:

```
"requestAttributes": {
   "attributeName": "attributeValue",
   "attributeName": "attributeValue"
}
```

Untuk `PostContent` operasi, Anda base64 menyandikan peta, dan kemudian mengirimkannya sebagai header. `x-amz-lex-request-attributes`

Jika Anda mengirim data biner atau terstruktur dalam atribut permintaan, Anda harus terlebih dahulu mengubah data menjadi string sederhana. Untuk informasi selengkapnya, lihat [Mengatur atribut kompleks di bot Lex V2 Anda](context-mgmt-complex-attributes.md).

Amazon Lex V2 menyediakan atribut permintaan yang telah ditentukan untuk mengelola cara memproses informasi yang dikirim ke bot Anda. Atribut tidak bertahan untuk seluruh sesi, jadi Anda harus mengirim atribut yang telah ditentukan di setiap permintaan. Semua atribut yang telah ditentukan ada di `x-amz-lex:` namespace.

Selain atribut yang telah ditentukan berikut, Amazon Lex menyediakan atribut yang telah ditentukan untuk platform perpesanan. Untuk daftar atribut tersebut, lihat Menerapkan Bot Amazon Lex di Platform Perpesanan.

## Mengatur Jenis Respons
<a name="response-type-context"></a>



Jika Anda memiliki dua aplikasi klien yang memiliki kemampuan berbeda, Anda mungkin perlu membatasi format pesan dalam respons. Misalnya, Anda mungkin ingin membatasi pesan yang dikirim ke klien Web ke teks biasa, tetapi memungkinkan klien seluler untuk menggunakan teks biasa dan Speech Synthesis Markup Language (SSML). Untuk mengatur format pesan yang dikembalikan oleh `PostContent` dan `PostText` operasi, gunakan atribut permintaan x-amz-lex: accept-content-types ". 

Anda dapat mengatur atribut ke kombinasi jenis pesan berikut: 
+ `PlainText`— Pesan berisi teks UTF-8 biasa.
+ `SSML`— Pesan berisi teks yang diformat untuk output suara.
+ `CustomPayload`— Pesan berisi format khusus yang telah Anda buat untuk klien Anda. Anda dapat menentukan payload untuk memenuhi kebutuhan aplikasi Anda.

Amazon Lex V2 hanya mengembalikan pesan dengan jenis yang ditentukan di bidang Pesan respons. Anda dapat mengatur lebih dari satu nilai dengan memisahkan nilai dengan koma. Jika Anda menggunakan grup pesan, setiap grup pesan harus berisi setidaknya satu pesan dari jenis yang ditentukan. Jika tidak, Anda mendapatkan `NoUsableMessageException` kesalahan. Untuk informasi selengkapnya, lihat Grup Pesan. 

## Menyetel atribut permintaan yang telah ditentukan di bot Lex V2 Anda
<a name="setting-predefined-request-attributes"></a>

Amazon Lex V2 menyediakan atribut permintaan yang telah ditentukan untuk mengelola cara memproses informasi yang dikirim ke bot Anda. Atribut tidak bertahan untuk seluruh sesi, jadi Anda harus mengirim atribut yang telah ditentukan di setiap permintaan. Semua atribut yang telah ditentukan ada di `x-amz-lex:` namespace.

## Menonaktifkan sakelar maksud di bot Lex V2 Anda
<a name="disabling-intent-switches-attributes"></a>

Untuk mengontrol apakah pengguna dapat beralih antar intent selama konfirmasi maksud atau elisitasi slot, gunakan atribut request. `x-amz-lex:intent-switch` Saat disetel ke`DISABLE`, atribut ini mencegah pengguna memicu maksud yang berbeda saat mereka berada di tengah menyelesaikan alur intent saat ini.

Misalnya, jika pengguna sedang dalam proses pemesanan penerbangan dan sedang diminta untuk rincian penerbangan, maka ucapan seperti “periksa cuaca” atau “pesan hotel” - yang biasanya dapat memicu maksud lain - akan diabaikan, memastikan percakapan tetap terfokus pada proses pemesanan saat ini.

# Mengatur batas waktu sesi
<a name="context-mgmt-session-timeout"></a>

Amazon Lex menyimpan informasi konteks—data slot dan atribut sesi—hingga sesi percakapan berakhir. Untuk mengontrol berapa lama sesi berlangsung untuk bot, atur batas waktu sesi. Secara default, durasi sesi adalah 5 menit, tetapi Anda dapat menentukan durasi antara 0 dan 1.440 menit (24 jam). 

Misalnya, Anda membuat `ShoeOrdering` bot yang mendukung maksud seperti `OrderShoes` dan`GetOrderStatus`. Ketika Amazon Lex mendeteksi bahwa maksud pengguna adalah memesan sepatu, ia meminta data slot. Misalnya, ia meminta ukuran sepatu, warna, merek, dll. Jika pengguna menyediakan beberapa data slot tetapi tidak menyelesaikan pembelian sepatu, Amazon Lex mengingat semua data slot dan atribut sesi untuk seluruh sesi. Jika pengguna kembali ke sesi sebelum kedaluwarsa, mereka dapat memberikan data slot yang tersisa, dan menyelesaikan pembelian.

Di konsol Amazon Lex V2, Anda mengatur batas waktu sesi saat membuat bot. Dengan antarmuka baris perintah AWS (AWS CLI) atau API, Anda mengatur batas waktu saat membuat bot dengan [CreateBot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateBot.html)operasi dengan menyetel bidang [TTLInIdleSession](https://docs.aws.amazon.com/lexv2/latest/dg/API_PutBot.html#API_CreateBot.html#lexv2-CreateBot-request-idleSessionTTLInSeconds) Seconds.

# Berbagi informasi antar maksud dengan bot Lex V2 Anda
<a name="context-mgmt-cross-intent"></a>

Amazon Lex V2 mendukung berbagi informasi antar maksud. Untuk berbagi antar intent, gunakan konteks keluaran atau atribut sesi. 

Untuk menggunakan konteks keluaran, Anda menentukan konteks keluaran saat membuat atau memperbarui intent. Ketika intent terpenuhi, respons dari Amazon Lex V2 berisi nilai konteks dan slot dari intent sebagai parameter konteks. Anda dapat menggunakan parameter ini sebagai nilai default dalam maksud berikutnya atau dalam kode aplikasi Anda atau fungsi Lambda.

Untuk menggunakan atribut sesi, Anda mengatur atribut di Lambda atau kode aplikasi Anda. Misalnya, pengguna `ShoeOrdering` bot memulai dengan memesan sepatu. Bot terlibat dalam percakapan dengan pengguna, mengumpulkan data slot, seperti ukuran sepatu, warna, dan merek. Saat pengguna melakukan pemesanan, fungsi Lambda yang memenuhi urutan akan menetapkan atribut `orderNumber` sesi, yang berisi nomor urut. Untuk mendapatkan status pesanan, pengguna menggunakan `GetOrderStatus` intent. Bot dapat meminta pengguna untuk data slot, seperti nomor pesanan dan tanggal pesanan. Ketika bot memiliki informasi yang diperlukan, bot mengembalikan status pesanan.

Jika Anda berpikir bahwa pengguna Anda mungkin beralih maksud selama sesi yang sama, Anda dapat mendesain bot Anda untuk mengembalikan status pesanan terbaru. Alih-alih meminta pengguna untuk informasi pesanan lagi, Anda menggunakan atribut `orderNumber` session untuk berbagi informasi di seluruh intent dan memenuhi `GetOrderStatus` intent. Bot melakukan ini dengan mengembalikan status pesanan terakhir yang ditempatkan pengguna.

# Mengatur atribut kompleks di bot Lex V2 Anda
<a name="context-mgmt-complex-attributes"></a>

Atribut sesi dan permintaan adalah string-to-string peta atribut dan nilai. Dalam banyak kasus, Anda dapat menggunakan peta string untuk mentransfer nilai atribut antara aplikasi klien Anda dan bot. Namun, dalam beberapa kasus, Anda mungkin perlu mentransfer data biner atau struktur kompleks yang tidak dapat dengan mudah dikonversi ke peta string. Misalnya, objek JSON berikut mewakili array dari tiga kota terpadat di Amerika Serikat:

```
{
   "cities": [
      {
         "city": {
            "name": "New York",
            "state": "New York",
            "pop": "8537673"
         }
      },
      {
         "city": {
            "name": "Los Angeles",
            "state": "California",
            "pop": "3976322"
         }
      },
      {
         "city": {
            "name": "Chicago",
            "state": "Illinois",
            "pop": "2704958"
         }
      }
   ]
}
```

Array data ini tidak diterjemahkan dengan baik ke string-to-string peta. Dalam kasus seperti itu, Anda dapat mengubah objek menjadi string sederhana sehingga Anda dapat mengirimkannya ke bot Anda dengan [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html)operasi [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html)dan. 

Misalnya, jika Anda menggunakan JavaScript, Anda dapat menggunakan `JSON.stringify` operasi untuk mengonversi objek ke JSON, dan `JSON.parse` operasi untuk mengonversi teks JSON menjadi JavaScript objek:

```
// To convert an object to a string.
var jsonString = JSON.stringify(object, null, 2);
// To convert a string to an object.
var obj = JSON.parse(JSON string);
```

Untuk mengirim atribut dengan `RecognizeUtterance` operasi, Anda harus base64 menyandikan atribut sebelum Anda menambahkannya ke header permintaan, seperti yang ditunjukkan dalam kode berikut: JavaScript

```
var encodedAttributes = new Buffer(attributeString).toString("base64");
```

Anda dapat mengirim data biner ke `RecognizeText` dan `RecognizeUtterance` operasi dengan terlebih dahulu mengonversi data ke string yang dikodekan base64, dan kemudian mengirim string sebagai nilai dalam atribut sesi:

```
"sessionAttributes" : {
   "binaryData": "base64 encoded data"
}
```

# Memahami sesi bot Amazon Lex V2
<a name="managing-sessions"></a>

Saat pengguna memulai percakapan dengan bot Anda, Amazon Lex V2 membuat *sesi*. Informasi yang dipertukarkan antara aplikasi Anda dan Amazon Lex V2 membentuk status sesi untuk percakapan. Saat Anda membuat permintaan, sesi diidentifikasi oleh pengenal yang Anda tentukan. Untuk informasi selengkapnya tentang pengenal sesi, lihat `sessionId` bidang dalam [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html)operasi [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html)atau.

Anda dapat mengubah status sesi yang dikirim antara aplikasi Anda dan bot Anda. Misalnya, Anda dapat membuat dan memodifikasi atribut sesi yang berisi informasi khusus tentang sesi, dan Anda dapat mengubah alur percakapan dengan menyetel konteks dialog untuk menafsirkan ucapan berikutnya.

Ada tiga cara agar Anda dapat memperbarui status sesi. 
+ Lulus informasi sesi sebaris sebagai bagian dari panggilan ke `RecognizeText` atau `RecognizeUtterance` operasi.
+ Gunakan fungsi Lambda dengan `RecognizeText` atau `RecognizeUtterance` operasi yang dipanggil setelah setiap putaran percakapan. Untuk informasi selengkapnya, lihat [Mengintegrasikan AWS Lambda fungsi ke bot Amazon Lex V2 Anda](lambda.md). Yang lainnya adalah menggunakan API runtime Amazon Lex V2 di aplikasi Anda untuk membuat perubahan pada status sesi. 
+ Gunakan operasi yang memungkinkan Anda mengelola informasi sesi untuk percakapan dengan bot Anda. Operasi adalah [PutSession](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_PutSession.html)operasi, [GetSession](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_GetSession.html)operasi, dan [DeleteSession](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_DeleteSession.html)operasi. Anda menggunakan operasi ini untuk mendapatkan informasi tentang status sesi pengguna Anda dengan bot Anda, dan untuk memiliki kontrol halus atas status.

Gunakan `GetSession` operasi saat Anda ingin mendapatkan status sesi saat ini. Operasi mengembalikan status sesi saat ini, termasuk status dialog dengan pengguna Anda, atribut sesi apa pun yang telah ditetapkan, dan nilai slot untuk maksud saat ini, dan maksud lain yang diidentifikasi Amazon Lex V2 sebagai kemungkinan maksud yang cocok dengan ucapan pengguna.

`PutSession`Operasi ini memungkinkan Anda untuk secara langsung memanipulasi status sesi saat ini. Anda dapat mengatur sesi, termasuk jenis tindakan dialog yang akan dilakukan bot selanjutnya dan pesan yang dikirimkan Amazon Lex V2 ke pengguna. Ini memberi Anda kendali atas aliran percakapan dengan bot. Atur `type` bidang tindakan dialog `Delegate` agar Amazon Lex V2 menentukan tindakan selanjutnya untuk bot.

Anda dapat menggunakan `PutSession` operasi untuk membuat sesi baru dengan bot dan mengatur maksud bahwa bot harus memulai. Anda juga dapat menggunakan `PutSession` operasi untuk mengubah dari satu maksud ke maksud lainnya. Saat membuat sesi atau mengubah intent, Anda juga dapat mengatur status sesi, seperti nilai slot dan atribut sesi. Ketika intent baru selesai, Anda memiliki opsi untuk memulai ulang maksud sebelumnya. 

Respons dari `PutSession` operasi berisi informasi yang sama dengan `RecognizeUtterance` operasi. Anda dapat menggunakan informasi ini untuk meminta pengguna untuk informasi berikutnya, seperti yang Anda lakukan dengan respons dari `RecognizeUtterance` operasi.

Gunakan `DeleteSession` operasi untuk menghapus sesi yang ada dan mulai lagi dengan sesi baru. Misalnya, ketika Anda menguji bot Anda, Anda dapat menggunakan `DeleteSession` operasi untuk menghapus sesi pengujian dari bot Anda.

Operasi sesi bekerja dengan fungsi Lambda pemenuhan Anda. Misalnya, jika fungsi Lambda Anda kembali `Failed` sebagai status pemenuhan, Anda dapat menggunakan `PutSession` operasi untuk menyetel jenis tindakan dialog ke `close` dan `fulfillmentState` `ReadyForFulfillment` untuk mencoba lagi langkah pemenuhan.

Berikut adalah beberapa hal yang dapat Anda lakukan dengan operasi sesi:
+ Mintalah bot memulai percakapan alih-alih menunggu pengguna.
+ Beralih maksud selama percakapan.
+ Kembali ke intent sebelumnya.
+ Mulai atau mulai ulang percakapan di tengah interaksi.
+ Validasi nilai slot dan minta bot kembali meminta nilai yang tidak valid.

Masing-masing dijelaskan lebih lanjut di bawah ini.

## Memulai sesi baru
<a name="session-start"></a>

Jika Anda ingin bot memulai percakapan dengan pengguna Anda, Anda dapat menggunakan `PutSession` operasi. 
+ Buat maksud selamat datang tanpa slot dan pesan kesimpulan yang meminta pengguna untuk menyatakan maksud. Misalnya, “Apa yang ingin Anda pesan? Anda bisa mengatakan 'Pesan minuman' atau 'Pesan pizza. '”
+ Panggil `PutSession` operasi. Tetapkan nama maksud ke nama maksud selamat datang Anda dan setel tindakan dialog ke. `Delegate` 
+ Amazon Lex akan merespons dengan permintaan dari niat selamat datang Anda untuk memulai percakapan dengan pengguna Anda.

## Beralih maksud
<a name="session-switch"></a>

Anda dapat menggunakan `PutSession` operasi untuk beralih dari satu maksud ke maksud lainnya. Anda juga dapat menggunakannya untuk beralih kembali ke intent sebelumnya. Anda dapat menggunakan `PutSession` operasi untuk mengatur atribut sesi atau nilai slot untuk maksud baru.
+ Panggil `PutSession` operasi. Tetapkan nama maksud ke nama maksud baru dan setel tindakan dialog ke. `Delegate` Anda juga dapat mengatur nilai slot atau atribut sesi apa pun yang diperlukan untuk maksud baru.
+ Amazon Lex akan memulai percakapan dengan pengguna menggunakan maksud baru.

## Melanjutkan niat sebelumnya
<a name="session-return"></a>

Untuk melanjutkan intent sebelumnya, Anda menggunakan `GetSession` operasi untuk mendapatkan status intent, lakukan interaksi yang diperlukan, lalu gunakan `PutSession` operasi untuk menyetel intent ke status dialog sebelumnya.
+ Panggil `GetSession` operasi. Simpan status niat.
+ Lakukan interaksi lain, seperti memenuhi niat yang berbeda.
+ Menggunakan informasi yang disimpan informasi untuk maksud sebelumnya, panggil `PutSession` operasi. Ini akan mengembalikan pengguna ke intent sebelumnya di tempat yang sama dalam percakapan.

Dalam beberapa kasus mungkin perlu untuk melanjutkan percakapan pengguna Anda dengan bot Anda. Misalnya, katakan bahwa Anda telah membuat bot layanan pelanggan. Aplikasi Anda menentukan bahwa pengguna perlu berbicara dengan perwakilan layanan pelanggan. Setelah berbicara dengan pengguna, perwakilan dapat mengarahkan percakapan kembali ke bot dengan informasi yang mereka kumpulkan.

Untuk melanjutkan sesi, gunakan langkah-langkah yang mirip dengan ini:
+ Aplikasi Anda menentukan bahwa pengguna perlu berbicara dengan perwakilan layanan pelanggan.
+ Gunakan `GetSession` operasi untuk mendapatkan status dialog intent saat ini. 
+ Perwakilan layanan pelanggan berbicara kepada pengguna dan menyelesaikan masalah.
+ Gunakan `PutSession` operasi untuk menyetel status dialog maksud. Ini mungkin termasuk menyetel nilai slot, menyetel atribut sesi, atau mengubah maksud.
+ Bot melanjutkan percakapan dengan pengguna.

## Memvalidasi nilai slot
<a name="session-validation"></a>

Anda dapat memvalidasi tanggapan terhadap bot Anda menggunakan aplikasi klien Anda. Jika respons tidak valid, Anda dapat menggunakan `PutSession` operasi untuk mendapatkan respons baru dari pengguna Anda. Misalnya, bot pemesanan bunga Anda hanya dapat menjual tulip, mawar, dan bunga lili. Jika pengguna memesan anyelir, aplikasi Anda dapat melakukan hal berikut:
+ Periksa nilai slot yang dikembalikan dari `PostContent` respons `PostText` atau.
+ Jika nilai slot tidak valid, hubungi `PutSession` operasi. Aplikasi Anda harus menghapus nilai slot, mengatur `slotToElicit` bidang, dan menetapkan `dialogAction.type` nilainya`elicitSlot`. Secara opsional, Anda dapat mengatur `messageFormat` bidang `message` dan jika Anda ingin mengubah pesan yang digunakan Amazon Lex untuk memperoleh nilai slot.