

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

# Mengintegrasikan AWS Lambda fungsi ke bot Amazon Lex V2 Anda
<a name="lambda"></a>

Dengan [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)fungsi, Anda dapat memperluas dan mengontrol perilaku bot Amazon Lex V2 Anda dengan lebih baik melalui fungsi khusus yang Anda tentukan. Amazon Lex V2 menggunakan satu fungsi Lambda per alias bot per bahasa, bukan satu fungsi Lambda untuk setiap maksud. Sebelum memulai, tentukan bidang mana dalam [acara input](https://docs.aws.amazon.com/lexv2/latest/dg/lambda-input-format) yang ingin Anda ambil informasi dan bidang mana dalam [respons](https://docs.aws.amazon.com/lexv2/latest/dg/lambda-response-format) yang ingin Anda manipulasi dan kembalikan dari fungsi Lambda Anda

Untuk mengintegrasikan fungsi Lambda dengan bot Amazon Lex V2 Anda, lakukan langkah-langkah berikut:

1. [Buat fungsi](https://docs.aws.amazon.com/lexv2/latest/dg/lambda-attach) dalam AWS Lambda menggunakan bahasa pemrograman pilihan Anda dan tulis skrip Anda.

1. Pastikan bahwa fungsi mengembalikan struktur yang cocok dengan [format respons](https://docs.aws.amazon.com/lexv2/latest/dg/lambda-response-format).

1. Menyebarkan fungsi Lambda.

1. [Kaitkan fungsi Lambda dengan alias bot Amazon Lex V2 dengan operasi [konsol atau API](https://docs.aws.amazon.com/lexv2/latest/dg/lambda-attach-console).](https://docs.aws.amazon.com/lexv2/latest/dg/lambda-attach-api)

1. Pilih tahapan percakapan di mana Anda ingin menjalankan fungsi Lambda Anda dengan konsol [atau](https://docs.aws.amazon.com/lexv2/latest/dg/lambda-attach-api) [operasi](https://docs.aws.amazon.com/lexv2/latest/dg/lambda-attach-console) API.

1. Bangun bot Amazon Lex V2 Anda dan uji apakah fungsi Lambda berfungsi sebagaimana dimaksud. [Debug](https://docs.aws.amazon.com/lexv2/latest/dg/lambda-debug) fungsi Anda dengan bantuan Amazon CloudWatch.

**Topics**
+ [AWS Lambdaformat acara masukan untuk Lex V2](lambda-input-format.md)
+ [AWS Lambdaformat respons untuk Lex V2](lambda-response-format.md)
+ [Struktur umum dalam AWS Lambda fungsi untuk Amazon Lex V2](lambda-common-structures.md)
+ [Membuat AWS Lambda fungsi untuk bot Amazon Lex V2 Anda](lambda-attach.md)
+ [Mendebug fungsi CloudWatch Lambda menggunakan log Log](lambda-debug.md)

# AWS Lambdaformat acara masukan untuk Lex V2
<a name="lambda-input-format"></a>

Langkah pertama dalam mengintegrasikan fungsi Lambda ke dalam bot Amazon Lex V2 Anda adalah memahami bidang dalam acara Amazon Lex V2 dan untuk menentukan informasi dari bidang ini yang ingin Anda gunakan saat menulis skrip Anda. Objek JSON berikut menunjukkan format umum peristiwa Amazon Lex V2 yang diteruskan ke fungsi Lambda:

**catatan**  
Format input dapat berubah tanpa perubahan yang sesuai dengan format`messageVersion`. Kode Anda seharusnya tidak menimbulkan kesalahan jika ada bidang baru.

```
{
    "messageVersion": "1.0",
    "invocationSource": "DialogCodeHook | FulfillmentCodeHook",
    "inputMode": "DTMF | Speech | Text",
    "responseContentType": "audio/mpeg | audio/ogg | audio/pcm | text/plain; charset=utf-8",
    "sessionId": string,
    "inputTranscript": string,
    "invocationLabel": string,
    "bot": {
        "id": string,
        "name": string,
        "localeId": string,
        "version": string,
        "aliasId": string,
        "aliasName": string
    },
    "interpretations": [
        {
            "interpretationSource": "Bedrock | Lex",
            "intent": {
                // see Niat for details about the structure
            },
            "nluConfidence": number,
            "sentimentResponse": {
                "sentiment": "MIXED | NEGATIVE | NEUTRAL | POSITIVE",
                "sentimentScore": {
                    "mixed": number,
                    "negative": number,
                    "neutral": number,
                    "positive": number
                }
            }
        },
        ...
    ],
    "proposedNextState": {
        "dialogAction": {
            "slotToElicit": string,
            "type": "Close | ConfirmIntent | Delegate | ElicitIntent | ElicitSlot"
        },
        "intent": {
            // see Niat for details about the structure
        },
        "prompt": {
            "attempt": string 
        }
    },
    "requestAttributes": {
        string: string,
        ...
    },
    "sessionState": {
        // see Status sesi for details about the structure
    },
    "transcriptions": [
        {
            "transcription": string,
            "transcriptionConfidence": number,
            "resolvedContext": {
                "intent": string
            },
            "resolvedSlots": {
                slot name: {
                    // see Slot for details about the structure
                },
                ...
            }
        },
        ...
    ]
}
```

Setiap bidang dalam acara input dijelaskan di bawah ini:

## messageVersion
<a name="lambda-input-messageversion"></a>

Versi pesan yang mengidentifikasi format data peristiwa yang masuk ke fungsi Lambda dan format respons yang diharapkan dari fungsi Lambda.

**catatan**  
Anda mengonfigurasi nilai ini saat menentukan maksud. Dalam implementasi saat ini, Amazon Lex V2 hanya mendukung pesan versi 1.0. Oleh karena itu, konsol mengasumsikan nilai default 1.0 dan tidak menampilkan versi pesan.

## invocationSource
<a name="lambda-input-invocationsource"></a>

Hook kode yang disebut fungsi Lambda. Nilai-nilai berikut dimungkinkan:

`DialogCodeHook`- Amazon Lex V2 menyebut fungsi Lambda setelah input dari pengguna.

`FulfillmentCodeHook`— Amazon Lex V2 menyebut fungsi Lambda setelah mengisi semua slot yang diperlukan dan maksudnya siap untuk dipenuhi.

## InputMode
<a name="lambda-input-inputmode"></a>

Mode ucapan pengguna. Kemungkinan nilainya adalah sebagai berikut:

`DTMF`— Pengguna memasukkan ucapan menggunakan keypad touch-tone (Dual Tone Multi-Frequency).

`Speech`— Pengguna mengucapkan ucapannya.

`Text`— Pengguna mengetik ucapan.

## responseContentType
<a name="lambda-input-responsecontenttype"></a>

Mode respons bot terhadap pengguna. `text/plain; charset=utf-8`menunjukkan bahwa ucapan terakhir ditulis, sedangkan nilai yang dimulai dengan `audio` menunjukkan bahwa ucapan terakhir diucapkan.

## sessionId
<a name="lambda-input-sessionid"></a>

Pengidentifikasi sesi alfanumerik yang digunakan untuk percakapan.

## inputTranscript
<a name="lambda-input-inputtranscript"></a>

Transkripsi input dari pengguna.
+ Untuk input teks, ini adalah teks yang diketik pengguna. Untuk input DTMF, ini adalah kunci yang dimasukkan pengguna.
+ Untuk input ucapan, ini adalah teks yang digunakan Amazon Lex V2 untuk mengonversi ucapan pengguna untuk memanggil maksud atau mengisi slot.

## InvocationLabel
<a name="lambda-input-invocationlabel"></a>

Nilai yang menunjukkan respons yang memanggil fungsi Lambda. Anda dapat mengatur label pemanggilan untuk respons awal, slot, dan respons konfirmasi.

## bot
<a name="lambda-input-bot"></a>

Informasi tentang bot yang memproses permintaan, yang terdiri dari bidang-bidang berikut:
+ **id** — Pengenal yang ditetapkan ke bot saat Anda membuatnya. Anda dapat melihat ID bot di konsol Amazon Lex V2 di halaman **Pengaturan** bot.
+ **Nama** — Nama yang Anda berikan pada bot saat Anda membuatnya.
+ **LocaleID** — Pengenal lokal yang Anda gunakan untuk bot Anda. Untuk daftar lokal, lihat[Bahasa dan lokal yang didukung oleh Amazon Lex V2](how-languages.md).
+ **versi** — Versi bot yang memproses permintaan.
+ **AliaSid** — Pengidentifikasi yang ditetapkan ke alias bot saat Anda membuatnya. Anda dapat melihat ID alias bot di konsol Amazon Lex V2 di halaman **Alias**. Jika Anda tidak dapat melihat ID alias dalam daftar, pilih ikon roda gigi di kanan atas dan nyalakan ID **Alias**.
+ **AliasName** — Nama yang Anda berikan alias bot.

## interpretasi
<a name="lambda-input-interpretations"></a>

Daftar informasi tentang maksud yang Amazon Lex V2 anggap mungkin cocok dengan ucapan pengguna. Setiap item adalah struktur yang memberikan informasi tentang kecocokan ucapan dengan maksud, dengan format berikut:

```
{
    "intent": {
        // see Niat for details about the structure
    },
    "interpretationSource": "Bedrock | Lex",
    "nluConfidence": number,
    "sentimentResponse": {
        "sentiment": "MIXED | NEGATIVE | NEUTRAL | POSITIVE",
        "sentimentScore": {
            "mixed": number,
            "negative": number,
            "neutral": number,
            "positive": number
        }
    }
}
```

Bidang dalam struktur adalah sebagai berikut:
+ **intent** — Struktur yang berisi informasi tentang maksud. Lihat [Niat](lambda-common-structures.md#lambda-intent) untuk detail tentang struktur.
+ **NLUConfidence** — Skor yang menunjukkan seberapa yakin Amazon Lex V2 bahwa maksud tersebut cocok dengan maksud pengguna.
+ **SentimentResponse** — Analisis sentimen respons, yang berisi bidang-bidang berikut:
  + **sentimen** — Menunjukkan apakah sentimen ucapan itu`POSITIVE`,,, `NEGATIVE` atau. `NEUTRAL` `MIXED`
  + **SentimentScore** — Struktur yang memetakan setiap sentimen ke angka yang menunjukkan seberapa yakin Amazon Lex V2 bahwa ucapan tersebut menyampaikan sentimen itu.
+ **InterpretationSource** - Menunjukkan apakah slot diselesaikan oleh Amazon Lex V2 atau Amazon Bedrock.

## proposedNextState
<a name="lambda-input-proposednextstate"></a>

Jika fungsi Lambda menyetel `sessionState` to`Delegate`, bidang ini akan muncul dan menampilkan proposal Amazon Lex V2 untuk langkah selanjutnya dalam percakapan. `dialogAction` Jika tidak, status berikutnya tergantung pada pengaturan yang Anda kembalikan dalam respons dari fungsi Lambda Anda. Struktur ini hanya ada jika kedua pernyataan berikut benar:

1. `invocationSource`Nilainya adalah `DialogCodeHook`

1. Yang diprediksi `type` `dialogAction` adalah`ElicitSlot`.

Anda dapat menggunakan informasi ini untuk menambahkan `runtimeHints` pada titik yang tepat dalam percakapan. Lihat [Meningkatkan pengenalan nilai slot dengan petunjuk runtime dalam percakapan](using-hints.md) untuk informasi lebih lanjut. `proposedNextState`adalah struktur yang berisi bidang-bidang berikut:

Struktur `proposedNextState` adalah sebagai berikut:

```
"proposedNextState": {
    "dialogAction": {
        "slotToElicit": string,
        "type": "Close | ConfirmIntent | Delegate | ElicitIntent | ElicitSlot"
    },
    "intent": {
        // see Niat for details about the structure
    },
    "prompt": {
        "attempt": string 
    }
}
```
+ **DialogAction** - Berisi informasi tentang langkah selanjutnya yang diusulkan Amazon Lex V2. Bidang dalam struktur adalah sebagai berikut: 
  + **slotToElicit**— Slot untuk memperoleh berikutnya seperti yang diusulkan oleh Amazon Lex V2. Bidang ini hanya muncul jika `type` ada`ElicitSlot`.
  + **type** — Langkah selanjutnya dalam percakapan seperti yang diusulkan oleh Amazon Lex V2. Nilai-nilai berikut dimungkinkan:

    `Delegate`- Amazon Lex V2 menentukan tindakan selanjutnya.

    `ElicitIntent`— Tindakan selanjutnya adalah untuk mendapatkan maksud dari pengguna.

    `ElicitSlot`— Tindakan selanjutnya adalah mendapatkan nilai slot dari pengguna.

    `Close`— Mengakhiri proses pemenuhan maksud dan menunjukkan bahwa tidak akan ada respons dari pengguna.

    `ConfirmIntent`— Tindakan selanjutnya adalah bertanya kepada pengguna apakah slotnya benar dan niat siap untuk dipenuhi.
+ **maksud** — Maksud bahwa bot telah menentukan bahwa pengguna mencoba untuk memenuhi. Lihat [Niat](lambda-common-structures.md#lambda-intent) untuk detail tentang struktur.
+ **prompt** — Struktur yang berisi bidang`attempt`, yang memetakan ke nilai yang menentukan berapa kali Amazon Lex V2 telah mendorong pengguna untuk slot berikutnya. Nilai yang mungkin adalah `Initial` untuk upaya pertama dan`Retry1`,`Retry2`,`Retry3`,`Retry4`, dan `Retry5` untuk upaya selanjutnya. 

## requestAttributes
<a name="lambda-input-requestattributes"></a>

Struktur yang berisi atribut permintaan khusus yang dikirim klien dalam permintaan. Gunakan atribut permintaan untuk meneruskan informasi yang tidak perlu bertahan selama seluruh sesi. Jika tidak ada atribut permintaan, nilainya akan menjadi null. Untuk informasi selengkapnya, lihat [Mengatur atribut permintaan untuk bot Lex V2 Anda](context-mgmt-request-attribs.md).

## SessionState
<a name="lambda-input-sessionstate"></a>

Keadaan percakapan saat ini antara pengguna dan bot Amazon Lex V2 Anda. Lihat [Status sesi](lambda-common-structures.md#lambda-session-state) untuk detail tentang struktur.

## transkripsi
<a name="lambda-input-transcriptions"></a>

Daftar transkripsi yang Amazon Lex V2 anggap mungkin cocok dengan ucapan pengguna. Untuk informasi selengkapnya, lihat [Menggunakan skor kepercayaan transkripsi suara untuk meningkatkan percakapan dengan bot Lex V2 Anda](using-transcript-confidence-scores.md). Setiap item adalah objek dengan format berikut, berisi informasi tentang satu kemungkinan transkripsi:

```
{
    "transcription": string,
    "transcriptionConfidence": number,
    "resolvedContext": {
        "intent": string
    },
    "resolvedSlots": {
        slot name: {
            // see Slot for details about the structure
        },
        ...
    }
}
```

Bidang dijelaskan di bawah ini:
+ **transkripsi** — Transkripsi yang Amazon Lex V2 anggap mungkin cocok dengan ucapan audio pengguna.
+ **TranscriptionConfidence** — Skor yang menunjukkan seberapa yakin Amazon Lex V2 bahwa intent cocok dengan maksud pengguna.
+ **ResolvedContext** - Struktur yang berisi bidang`intent`, yang memetakan ke maksud yang berkaitan dengan ucapan tersebut.
+ **ResolvedSlots** — Struktur yang kuncinya adalah nama setiap slot yang diselesaikan dengan ucapan. Setiap nama slot memetakan ke struktur yang berisi informasi tentang slot itu. Lihat [Slot](lambda-common-structures.md#lambda-slot) untuk detail tentang struktur.

# AWS Lambdaformat respons untuk Lex V2
<a name="lambda-response-format"></a>

Langkah kedua dalam mengintegrasikan fungsi Lambda ke bot Amazon Lex V2 Anda adalah memahami bidang dalam respons fungsi Lambda dan menentukan parameter mana yang ingin Anda manipulasi. Objek JSON berikut menunjukkan format umum respons Lambda yang dikembalikan ke Amazon Lex V2:

```
{
    "sessionState": {
        // see Status sesi for details about the structure
    },
    "messages": [
        {
            "contentType": "CustomPayload | ImageResponseCard | PlainText | SSML",
            "content": string,
            "imageResponseCard": {
                "title": string,
                "subtitle": string,
                "imageUrl": string,
                "buttons": [
                    {
                        "text": string,
                        "value": string
                    },
                    ...
                ]
            }
        },
        ...
    ],
    "requestAttributes": {
        string: string,
        ...
    }
}
```

Setiap bidang dalam tanggapan dijelaskan di bawah ini:

## SessionState
<a name="lambda-response-sessionstate"></a>

Keadaan percakapan antara pengguna dan bot Amazon Lex V2 Anda yang ingin Anda kembalikan. Lihat [Status sesi](lambda-common-structures.md#lambda-session-state) untuk detail tentang struktur. Bidang ini selalu diperlukan.

## pesan
<a name="lambda-response-messages"></a>

Daftar pesan yang dikembalikan Amazon Lex V2 ke pelanggan untuk giliran percakapan berikutnya. Jika yang `contentType` Anda berikan adalah `PlainText``CustomPayload`,, atau`SSML`, tulis pesan yang ingin Anda kembalikan ke pelanggan di `content` lapangan. Jika yang `contentType` Anda berikan adalah`ImageResponseCard`, berikan detail kartu di `imageResponseCard` lapangan. Jika Anda tidak menyediakan pesan, Amazon Lex V2 menggunakan pesan yang sesuai yang ditentukan saat bot dibuat.

`messages`Bidang diperlukan jika `dialogAction.type` adalah `ElicitIntent` atau`ConfirmIntent`.

Setiap item dalam daftar adalah struktur dalam format berikut, berisi informasi tentang pesan untuk kembali ke pengguna. Inilah contohnya:

```
{
    "contentType": "CustomPayload | ImageResponseCard | PlainText | SSML",
    "content": string,
    "imageResponseCard": {
        "title": string,
        "subtitle": string,
        "imageUrl": string,
        "buttons": [
            {
                "text": string,
                "value": string
            },
            ...
        ]
    }
}
```

Deskripsi untuk setiap bidang disediakan di bawah ini:
+ **ContentType** — Jenis pesan yang akan digunakan.

  `CustomPayload`— String respons yang dapat Anda sesuaikan untuk menyertakan data atau metadata untuk aplikasi Anda.

  `ImageResponseCard`— Gambar dengan tombol yang dapat dipilih pelanggan. Untuk informasi selengkapnya, lihat [ImageResponseCard](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_ImageResponseCard.html).

  `PlainText`— String teks biasa.

  `SSML`— String yang menyertakan Speech Synthesis Markup Language untuk menyesuaikan respons audio.
+ **konten** — Pesan untuk dikirim ke pengguna. Gunakan bidang ini jika jenis pesan adalah`PlainText`,`CustomPayload`, atau`SSML`.
+ **imageResponseCard**— Berisi definisi kartu respons untuk ditampilkan kepada pengguna. Gunakan bidang ini jika jenis pesannya`ImageResponseCard`. Peta ke struktur yang berisi bidang-bidang berikut:
  + **judul** — Judul kartu respons.
  + **subtitle** — Permintaan bagi pengguna untuk memilih tombol.
  + **ImageUrl** — Tautan ke gambar untuk kartu.
  + **tombol** — Daftar struktur yang berisi informasi tentang tombol. Setiap struktur berisi `text` bidang dengan teks yang akan ditampilkan dan `value` bidang dengan nilai untuk dikirim ke Amazon Lex V2 jika pelanggan memilih tombol itu. Anda dapat menyertakan hingga tiga tombol.

## requestAttributes
<a name="lambda-response-requestattributes"></a>

Struktur yang berisi atribut permintaan khusus untuk respons terhadap pelanggan. Untuk informasi selengkapnya, lihat [Mengatur atribut permintaan untuk bot Lex V2 Anda](context-mgmt-request-attribs.md). Bidang ini bersifat opsional.

## Bidang yang diperlukan dalam respons
<a name="lambda-response-required"></a>

Minimal, respons Lambda harus menyertakan `sessionState` objek. Di dalamnya, berikan `dialogAction` objek dan tentukan `type` bidangnya. Bergantung pada `type` `dialogAction` yang Anda berikan, mungkin ada bidang lain yang diperlukan untuk respons Lambda. Persyaratan ini dijelaskan sebagai berikut, di samping contoh kerja minimal:

### Mendelegasikan
<a name="lambda-response-delegate"></a>

**Delegasi** memungkinkan Amazon Lex V2 menentukan langkah selanjutnya. Tidak ada bidang lain yang diperlukan.

```
{
    "sessionState": {
        "dialogAction": {
            "type": "Delegate"
    }
}
```

### ElicitIntent
<a name="lambda-response-elicitintent"></a>

**ElicitIntent**meminta pelanggan untuk menyatakan niat. Anda harus menyertakan setidaknya satu pesan di `messages` bidang untuk meminta pemunculan maksud.

```
{
    "sessionState": {
        "dialogAction": {
            "type": "ElicitIntent"
    },
    "messages": [
        {
            "contentType": PlainText,
            "content": "How can I help you?"
        }
    ]
}
```

### ElicitSlot
<a name="lambda-response-elicitslot"></a>

**ElicitSlot**meminta pelanggan untuk memberikan nilai slot. Anda harus memasukkan nama slot di `slotToElicit` bidang di `dialogAction` objek. Anda juga harus memasukkan `sessionState` objek `intent` dalam. `name`

```
{`
    "sessionState": {
        "dialogAction": {
            "slotToElicit": "OriginCity",
            "type": "ElicitSlot"
        },
        "intent": {
            "name": "BookFlight"
        }
    }
}
```

### ConfirmIntent
<a name="lambda-response-confirmintent"></a>

**ConfirmIntent**mengkonfirmasikan nilai slot pelanggan dan apakah maksudnya siap dipenuhi. Anda harus memasukkan `sessionState` objek `intent` dalam dan yang `slots` akan dikonfirmasi. `name` Anda juga harus menyertakan setidaknya satu pesan di `messages` bidang untuk meminta pengguna konfirmasi nilai slot. Pesan Anda harus meminta respons “ya” atau “tidak”. Jika pengguna menjawab “ya”, Amazon Lex V2 menyetel intent ke. `confirmationState` `Confirmed` Jika pengguna merespons “tidak”, Amazon Lex V2 menyetel intent ke. `confirmationState` `Denied`

```
{
    "sessionState": {
        "dialogAction": {
            "type": "ConfirmIntent"
        },
        "intent": {
            "name": "BookFlight",
            "slots": {
                "DepartureDate": {
                    "value": {
                        "originalValue": "tomorrow",
                        "interpretedValue": "2023-05-09",
                        "resolvedValues": [
                            "2023-05-09"
                    ]
                 }
                },
                "DestinationCity": {
                    "value": {
                        "originalValue": "sf",
                        "interpretedValue": "sf",
                        "resolvedValues": [
                            "sf"
                        ]
                    }
                },
                "OriginCity": {
                    "value": {
                        "originalValue": "nyc",
                        "interpretedValue": "nyc",
                        "resolvedValues": [
                            "nyc"
                        ]
                    }
                }
            }
        }
    },
    "messages": [
        {
            "contentType": PlainText,
            "content": "Okay, you want to fly from {OriginCity} to \
            {DestinationCity} on {DepartureDate}. Is that correct?"
        }
    ]
}
```

### Tutup
<a name="lambda-response-close"></a>

**Tutup** mengakhiri proses pemenuhan maksud dan menunjukkan bahwa tidak ada tanggapan lebih lanjut yang diharapkan dari pengguna. Anda harus memasukkan `name` dan `state` dari `intent` dalam `sessionState` objek. Status maksud yang kompatibel adalah`Failed`,`Fulfilled`, dan`InProgress`.

```
"sessionState": {
    "dialogAction": {
        "type": "Close"
    },
    "intent": {
        "name": "BookFlight",
        "state": "Failed | Fulfilled | InProgress"
    }
}
```

# Struktur umum dalam AWS Lambda fungsi untuk Amazon Lex V2
<a name="lambda-common-structures"></a>

Dalam respons Lambda, ada sejumlah struktur yang berulang. Rincian tentang struktur umum ini disediakan di bagian ini.

## Niat
<a name="lambda-intent"></a>

```
"intent": {
    "confirmationState": "Confirmed | Denied | None",
    "name": string,
    "slots": {
        // see Slot for details about the structure
    },
    "state": "Failed | Fulfilled | FulfillmentInProgress | InProgress | ReadyForFulfillment | Waiting",
    "kendraResponse": {
        // Only present when intent is KendraSearchIntent. For details, see
// https://docs.aws.amazon.com/kendra/latest/dg/API_Query.html#API_Query_ResponseSyntax       }
}
```

`intent`Bidang dipetakan ke objek dengan bidang berikut:

### ConfirmationState
<a name="lambda-intent-confirmationstate"></a>

Menunjukkan apakah pengguna telah mengonfirmasi slot untuk maksud tersebut dan maksud siap untuk dipenuhi. Nilai-nilai berikut dimungkinkan:

`Confirmed`— Pengguna mengonfirmasi bahwa nilai slot sudah benar.

`Denied`— Pengguna menunjukkan bahwa nilai slot salah.

`None`— Pengguna belum mencapai tahap konfirmasi.

### name
<a name="lambda-intent-name"></a>

Nama niat.

### slot
<a name="lambda-intent-slots"></a>

Informasi tentang slot yang diperlukan untuk memenuhi maksud. Lihat [Slot](#lambda-slot) untuk detail tentang struktur.

### status
<a name="lambda-intent-state"></a>

Menunjukkan status pemenuhan untuk maksud tersebut. Nilai-nilai berikut dimungkinkan:

`Failed`— Bot gagal memenuhi niat.

`Fulfilled`— Bot telah menyelesaikan pemenuhan niat.

`FulfillmentInProgress`— Bot berada di tengah memenuhi niat.

`InProgress`— Bot berada di tengah memunculkan nilai slot yang diperlukan untuk memenuhi maksud.

`ReadyForFulfillment`— Bot telah memunculkan semua nilai slot untuk maksud tersebut dan siap untuk memenuhi maksud tersebut.

`Waiting`— Bot sedang menunggu respons dari pengguna (terbatas pada percakapan streaming).

### kendraResponse
<a name="lambda-intent-kendraresponse"></a>

Berisi informasi tentang hasil permintaan pencarian Kendra. Bidang ini hanya muncul jika maksudnya adalah a`KendraSearchIntent`. Lihat [sintaks respons dalam panggilan Query API untuk Kendra untuk informasi](https://docs.aws.amazon.com/kendra/latest/dg/API_Query.html#API_Query_ResponseSyntax) selengkapnya.

## Slot
<a name="lambda-slot"></a>

`slots`Bidang ada dalam `intent` struktur dan dipetakan ke struktur yang kuncinya adalah nama slot untuk maksud itu. Jika slot bukan slot multi-nilai (lihat [Menggunakan beberapa nilai dalam slot](multi-valued-slots.md) untuk lebih jelasnya), itu dipetakan ke struktur dengan format berikut. Perhatikan bahwa `shape` adalah`Scalar`.

```
{
    slot name: {
        "shape": "Scalar",
        "value": {
            "originalValue": string,
            "interpretedValue": string,
            "resolvedValues": [
                string,
                ...
            ]
        }
    }
}
```

Jika slot adalah slot multi-nilai, objek yang dipetakan berisi bidang lain yang disebut`values`, yang dipetakan ke daftar struktur, masing-masing berisi informasi tentang slot yang membentuk slot multi-nilai. Format setiap objek dalam daftar cocok dengan objek yang slot reguler dipetakan. Perhatikan bahwa `shape` adalah`List`, tetapi slot `shape` komponen di bawah `values` adalah`Scalar`.

```
{
    slot name: {
    "shape": "List",
    "value": {
        "originalValue": string,
        "interpretedValue": string,
        "resolvedValues": [
            string,
            ...
        ]
    },
    "values": [
        {
            "shape": "Scalar",
            "value": {
                "originalValue": string,
                "interpretedValue": string,
                "resolvedValues": [
                    string,
                    ...
                ]
            }
        },
        {
            "shape": "Scalar",
            "value": {
                "originalValue": string,
                "interpretedValue": string,
                "resolvedValues": [
                    string,
                    ...
                ]
            }
        },
        ...
    ]
}
```

Bidang dalam objek slot dijelaskan di bawah ini:

### bentuk
<a name="lambda-slots-shape"></a>

Bentuk slotnya. Nilai ini adalah `List` jika ada beberapa nilai dalam slot (lihat [Menggunakan beberapa nilai dalam slot](multi-valued-slots.md) untuk lebih jelasnya) dan `Scalar` sebaliknya.

### nilai
<a name="lambda-slots-value"></a>

Objek yang berisi informasi tentang nilai yang diberikan pengguna untuk slot dan interpretasi Amazon Lex V2, dalam format berikut:

```
{
    "originalValue": string,
    "interpretedValue": string,
    "resolvedValues": [
        string,
        ...
    ]
}
```

Bidang dijelaskan di bawah ini:
+ **OriginalValue** — Bagian dari respons pengguna terhadap elisitasi slot yang ditentukan Amazon Lex V2 relevan dengan nilai slot.
+ **InterpretedValue** — Nilai yang ditentukan Amazon Lex V2 untuk slot, mengingat input pengguna.
+ **ResolvedValues — Daftar nilai** yang ditentukan Amazon Lex V2 adalah kemungkinan resolusi untuk input pengguna.

### values
<a name="lambda-slots-values"></a>

Daftar objek yang berisi informasi tentang slot yang membentuk slot multi-nilai. Format setiap objek cocok dengan slot normal, dengan `shape` dan `value` bidang yang dijelaskan di atas. `values`hanya muncul jika slot terdiri dari beberapa nilai (lihat [Menggunakan beberapa nilai dalam slot](multi-valued-slots.md) untuk lebih jelasnya). Objek JSON berikut menunjukkan dua slot komponen:

```
"values": [
    {
        "shape": "Scalar",
        "value": {
            "originalValue": string,
            "interpretedValue": string,
            "resolvedValues": [
                string,
                ...
            ]
        }
    },
    {
        "shape": "Scalar",
        "value": {
            "originalValue": string,
            "interpretedValue": string,
            "resolvedValues": [
                string,
                ...
            ]
        }
    },
    ...
]
```

## Status sesi
<a name="lambda-session-state"></a>

`sessionState`Bidang dipetakan ke objek yang berisi informasi tentang keadaan percakapan dengan pengguna. Bidang aktual yang muncul di objek bergantung pada jenis tindakan dialog. Lihat [Bidang yang diperlukan dalam respons](lambda-response-format.md#lambda-response-required) kolom wajib dalam respons Lambda. Format `sessionState` objek adalah sebagai berikut:

```
"sessionState": {
    "activeContexts": [
        {
            "name": string,
            "contextAttributes": {
                string: string
            },
            "timeToLive": {
                "timeToLiveInSeconds": number,
                "turnsToLive": number
            }
        },
        ...
    ],
    "sessionAttributes": {
        string: string,
        ...
    },
    "runtimeHints": {
        "slotHints": {
            intent name: {
                slot name: {
                    "runtimeHintValues": [
                        {
                            "phrase": string
                        },
                        ...
                    ]
                },
                ...
            },
            ...
        }
    },
    "dialogAction": {
        "slotElicitationStyle": "Default | SpellByLetter | SpellByWord",
        "slotToElicit": string,
        "type": "Close | ConfirmIntent | Delegate | ElicitIntent | ElicitSlot"
    },
    "intent": {
        // see Niat for details about the structure
    },
    "originatingRequestId": string
}
```

Bidang dijelaskan di bawah ini:

### ActiveContext
<a name="lambda-active-contexts"></a>

Daftar objek yang berisi informasi tentang konteks yang digunakan pengguna dalam sesi. Gunakan konteks untuk memfasilitasi dan mengontrol pengenalan niat. Untuk informasi lebih lanjut tentang konteks, lihat. [Mengatur konteks maksud untuk bot Lex V2 Anda](context-mgmt-active-context.md) Setiap objek diformat sebagai berikut:

```
{
    "name": string,
    "contextAttributes": {
        string: string
    },
    "timeToLive": {
        "timeToLiveInSeconds": number,
        "turnsToLive": number
    }
}
```

Bidang dijelaskan di bawah ini:
+ **nama** — Nama konteksnya.
+ **ContextAttributes** — Objek yang berisi nama-nama atribut untuk konteks dan nilai-nilai yang dipetakan.
+ **timeToLive**Objek yang menentukan berapa lama konteksnya tetap aktif. Objek ini dapat berisi salah satu atau kedua bidang berikut:
  + **timeToLiveInSeconds**— Jumlah detik yang konteksnya tetap aktif.
  + **turnsToLive**— Jumlah putaran yang konteksnya tetap aktif.

### sessionAttributes
<a name="lambda-session-attributes"></a>

Peta key/value pasangan yang mewakili informasi konteks khusus sesi. Untuk informasi selengkapnya, lihat [Mengatur atribut sesi untuk bot Lex V2 Anda](context-mgmt-session-attribs.md). Objek diformat sebagai berikut:

```
{
    string: string,
    ...
}
```

### RuntimeHints
<a name="lambda-runtime-hints"></a>

Memberikan petunjuk untuk frasa yang akan digunakan pelanggan untuk slot untuk meningkatkan pengenalan audio. Nilai-nilai yang Anda berikan dalam petunjuk meningkatkan pengenalan audio dari nilai-nilai tersebut di atas kata-kata yang terdengar serupa. Format `runtimeHints` objek adalah sebagai berikut:

```
{
    "slotHints": {
        intent name: {
            slot name: {
                "runtimeHintValues": [
                    {
                        "phrase": string
                    },
                    ...
                ]
            },
            ...
        },
        ...
    }
}
```

`slotHints`Bidang memetakan ke objek yang bidangnya adalah nama maksud di bot. Setiap nama maksud memetakan ke objek yang bidangnya adalah nama slot untuk maksud itu. Setiap nama slot memetakan ke struktur dengan satu bidang`runtimeHintValues`, yang merupakan daftar objek. Setiap objek berisi `phrase` bidang yang memetakan ke petunjuk.

### dialogAction
<a name="lambda-dialog-action"></a>

Menentukan tindakan selanjutnya untuk Amazon Lex V2 untuk mengambil. Format objek adalah sebagai berikut:

```
{
    "slotElicitationStyle": "Default | SpellByLetter | SpellByWord",
    "slotToElicit": string,
    "type": "Close | ConfirmIntent | Delegate | ElicitIntent | ElicitSlot"
}
```

Bidang dijelaskan di bawah ini:
+  **slotElicitationStyle**— Menentukan bagaimana Amazon Lex V2 menafsirkan input audio dari pengguna jika `type` dari `dialogAction` adalah`ElicitSlot`. Untuk informasi selengkapnya, lihat [Menangkap nilai slot dengan gaya ejaan selama percakapan](spelling-styles.md). Nilai-nilai berikut dimungkinkan:

  `Default`— Amazon Lex V2 menafsirkan input audio secara default untuk memenuhi slot.

  `SpellByLetter`— Amazon Lex V2 mendengarkan ejaan pengguna dari nilai slot.

  `SpellByWord`— Amazon Lex V2 mendengarkan ejaan pengguna dari nilai slot menggunakan kata-kata yang terkait dengan setiap huruf (misalnya, “a as in apple”).
+  **slotToElicit**— Mendefinisikan slot yang akan diperoleh dari pengguna jika dari adalah`type`. `dialogAction` `ElicitSlot` 
+ **type** — Mendefinisikan tindakan yang harus dijalankan bot. Nilai-nilai berikut dimungkinkan:

  `Delegate`— Memungkinkan Amazon Lex V2 menentukan langkah selanjutnya.

  `ElicitIntent`— Meminta pelanggan untuk menyatakan niat.

  `ConfirmIntent`— Mengonfirmasi nilai slot pelanggan dan apakah niat siap untuk dipenuhi.

  `ElicitSlot`— Meminta pelanggan untuk memberikan nilai slot untuk suatu maksud.

  `Close`Mengakhiri proses pemenuhan niat.

### maksud
<a name="lambda-sessionstate-intent"></a>

Lihat [Niat](#lambda-intent) untuk struktur `intent` lapangan.

### originatingRequestId
<a name="lambda-originating-request-id"></a>

Pengidentifikasi unik untuk permintaan tersebut. Bidang ini opsional untuk respons Lambda.

# Membuat AWS Lambda fungsi untuk bot Amazon Lex V2 Anda
<a name="lambda-attach"></a>

Untuk membuat fungsi Lambda untuk bot Amazon Lex V2 Anda, akses AWS Lambda dari AWS Management Console dan buat fungsi baru. Anda dapat merujuk ke [panduan AWS Lambda pengembang](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) untuk detail selengkapnyaAWS Lambda.

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

1. Pilih **Fungsi** di sidebar kiri.

1. Pilih **Buat fungsi**.

1. Anda dapat memilih **Author dari awal** untuk memulai dengan kode minimal, **Gunakan cetak biru** untuk memilih kode sampel untuk kasus penggunaan umum dari daftar, atau Gambar kontainer untuk memilih **gambar kontainer** yang akan digunakan untuk fungsi Anda. Jika Anda memilih **Penulis dari awal**, lanjutkan dengan langkah-langkah berikut:

   1. Berikan fungsi Anda **nama Fungsi** yang bermakna untuk menggambarkan apa yang dilakukannya.

   1. Pilih bahasa dari menu tarik-turun di bawah **Runtime** untuk menulis fungsi Anda.

   1. Pilih set instruksi **Arsitektur** untuk fungsi Anda.

   1. Secara default, Lambda membuat peran dengan izin dasar. Untuk menggunakan peran yang ada atau membuat peran menggunakan templat kebijakan AWS, perluas menu **Ubah peran eksekusi default** dan pilih opsi.

   1. Perluas menu **Pengaturan lanjutan** untuk mengonfigurasi lebih banyak opsi.

1. Pilih **Buat fungsi**.

Gambar berikut menunjukkan apa yang Anda lihat ketika Anda membuat fungsi baru dari awal:

![\[Fungsi Lambda baru.\]](http://docs.aws.amazon.com/id_id/lexv2/latest/dg/images/lambda/lambda-new-function.png)


Fungsi handler Lambda berbeda tergantung pada bahasa yang Anda gunakan. Minimal mengambil objek `event` JSON sebagai argumen. Anda dapat melihat bidang di Amazon Lex V2 `event` yang disediakan di[AWS Lambdaformat acara masukan untuk Lex V2](lambda-input-format.md). Ubah fungsi handler untuk akhirnya mengembalikan objek `response` JSON yang cocok dengan format yang dijelaskan dalam. [AWS Lambdaformat respons untuk Lex V2](lambda-response-format.md)
+ Setelah Anda selesai menulis fungsi Anda, pilih **Deploy** untuk mengizinkan fungsi yang akan digunakan.

Ingatlah bahwa Anda dapat mengaitkan setiap alias bot dengan paling banyak satu fungsi Lambda. Namun, Anda dapat menentukan fungsi sebanyak yang Anda butuhkan untuk bot Anda dalam kode Lambda dan memanggil fungsi-fungsi ini dalam fungsi penangan Lambda. Misalnya, sementara semua intent dalam alias bot yang sama harus memanggil fungsi Lambda yang sama, Anda dapat membuat fungsi router yang mengaktifkan fungsi terpisah untuk setiap intent. Berikut ini adalah contoh fungsi router yang dapat Anda gunakan atau modifikasi untuk aplikasi Anda:

```
import os
import json
import boto3

# reuse client connection as global
client = boto3.client('lambda')

def router(event):
    intent_name = event['sessionState']['intent']['name']
    fn_name = os.environ.get(intent_name)
    print(f"Intent: {intent_name} -> Lambda: {fn_name}")
    if (fn_name):
        # invoke lambda and return result
        invoke_response = client.invoke(FunctionName=fn_name, Payload = json.dumps(event))
        print(invoke_response)
        payload = json.load(invoke_response['Payload'])
        return payload
    raise Exception('No environment variable for intent: ' + intent_name)

def lambda_handler(event, context):
    print(event)
    response = router(event)
    return response
```

**Kapan menggunakan AWS Lambda fungsi dalam percakapan bot Amazon Lex V2**

Anda dapat menggunakan fungsi Lambda pada titik-titik berikut dalam percakapan dengan pengguna:
+ Dalam respons awal setelah maksud dikenali. Misalnya, setelah pengguna mengatakan mereka ingin memesan pizza.
+ Setelah mendapatkan nilai slot dari pengguna. Misalnya, setelah pengguna memberi tahu bot ukuran pizza yang ingin mereka pesan.
+ Antara setiap percobaan lagi untuk mendapatkan slot. Misalnya, jika pelanggan tidak menggunakan ukuran pizza yang diakui.
+ Saat mengonfirmasi niat. Misalnya, saat mengonfirmasi pesanan pizza.
+ Untuk memenuhi niat. Misalnya, untuk memesan pizza.
+ Setelah pemenuhan niat, dan sebelum bot Anda menutup percakapan. Misalnya, untuk beralih ke niat memesan minuman.

**Topics**
+ [Lampirkan AWS Lambda fungsi ke bot Amazon Lex V2 menggunakan konsol](lambda-attach-console.md)
+ [Lampirkan AWS Lambda fungsi ke bot Amazon Lex V2 menggunakan operasi API](lambda-attach-api.md)

# Lampirkan AWS Lambda fungsi ke bot Amazon Lex V2 menggunakan konsol
<a name="lambda-attach-console"></a>

Anda harus terlebih dahulu melampirkan fungsi Lambda ke alias bot Amazon Lex V2 Anda sebelum Anda dapat memanggilnya. Anda hanya dapat melampirkan satu fungsi Lambda dengan setiap alias bot. Lakukan langkah-langkah ini untuk melampirkan fungsi Lambda menggunakan konsol AWS. 

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

1. Pilih **Bot** dari panel sisi kiri dan dari daftar bot, pilih nama bot yang ingin Anda lampirkan fungsi Lambda.

1. Dari panel sisi kiri, pilih **Alias** di bawah menu **Deployment**.

1. Dari daftar alias, pilih nama alias yang ingin Anda lampirkan fungsi Lambda.

1. Di panel **Bahasa**, pilih bahasa yang Anda inginkan untuk fungsi Lambda. Pilih **Kelola bahasa di alias** untuk menambahkan bahasa jika tidak ada di panel.

1. Di menu tarik-turun **Sumber**, pilih nama fungsi Lambda yang ingin Anda lampirkan.

1. Di **versi fungsi Lambda atau menu dropdown alias**, pilih versi atau alias fungsi Lambda yang ingin Anda gunakan. Kemudian pilih **Simpan**. Fungsi Lambda yang sama digunakan untuk semua maksud dalam bahasa yang didukung oleh bot.

**Menyetel intent Amazon Lex V2 untuk menjalankan fungsi Lambda menggunakan konsol**

1. Setelah memilih bot, pilih **Maksud** di menu sebelah kiri di bawah bahasa bot yang ingin Anda gunakan untuk menjalankan fungsi Lambda.

1. Pilih maksud di mana Anda ingin menjalankan fungsi Lambda untuk membuka editor maksud.

1. Ada dua opsi untuk mengatur hook kode Lambda:

   1. Untuk menjalankan fungsi Lambda setelah setiap langkah percakapan, gulir ke bagian Kait **kode** di bagian bawah editor maksud dan pilih kotak centang **Gunakan fungsi Lambda untuk inisialisasi dan** validasi, seperti pada gambar berikut:  
![\[Bagian kait kode dari editor maksud Amazon Lex V2.\]](http://docs.aws.amazon.com/id_id/lexv2/latest/dg/images/lambda/lambda-code-hooks-all.png)

   1. Atau, gunakan bagian **hook kode dialog** di tahapan percakapan untuk menjalankan fungsi Lambda. Bagian **hook kode dialog** muncul sebagai berikut:  
![\[Bagian kait kode dari editor maksud Amazon Lex V2.\]](http://docs.aws.amazon.com/id_id/lexv2/latest/dg/images/lambda/lambda-code-hook-step.png)

      Ada dua cara untuk mengontrol bagaimana Amazon Lex V2 memanggil hook kode untuk respons:
      + *Alihkan tombol **Aktif** untuk menandainya sebagai *aktif atau tidak aktif*.* Ketika hook kode *aktif*, Amazon Lex V2 akan memanggil hook kode. Ketika hook kode *tidak aktif*, Amazon Lex V2 tidak menjalankan hook kode.
      + **Perluas bagian **kait kode dialog Lambda** dan pilih kotak centang fungsi **Invoke Lambda** untuk menandainya sebagai diaktifkan atau dinonaktifkan.** Anda hanya dapat mengaktifkan atau menonaktifkan hook kode ketika ditandai aktif. Ketika ditandai *diaktifkan*, hook kode dijalankan secara normal. Ketika *dinonaktifkan*, hook kode tidak dipanggil dan Amazon Lex V2 bertindak seolah-olah hook kode berhasil dikembalikan. Untuk mengonfigurasi respons setelah hook kode dialog berhasil, gagal, atau habis waktu, pilih Opsi **lanjutan**

      Kait kode Lambda dapat dipanggil pada tahap percakapan berikut:
      + Untuk menjalankan fungsi sebagai **respons awal**, gulir ke bagian **Respons Awal**, perluas panah di sebelah **Respons untuk mengakui permintaan pengguna**, dan pilih Opsi **lanjutan**. Temukan bagian **kait kode dialog** di bagian bawah menu yang muncul.
      + **Untuk menjalankan fungsi setelah **elicitation slot**, gulir ke bagian **Slots**, perluas panah di sebelah **Prompt for slot** yang relevan, dan pilih Opsi lanjutan.** Temukan bagian **kait kode dialog** di dekat bagian bawah menu yang muncul, tepat di atas **nilai Default**.

        Anda juga dapat memanggil fungsi setelah setiap elisitasi. Untuk melakukan ini, **perluas Bot memperoleh informasi** di bagian **Petunjuk Slot**, pilih **Opsi prompt lainnya**, dan pilih kotak centang di samping Memanggil kait kode **Lambda setelah setiap** elicitation.
      + ****Untuk menjalankan fungsi **konfirmasi maksud, gulir ke bagian Konfirmasi**, perluas panah di sebelah **Prompts untuk mengonfirmasi maksud**, dan pilih Opsi lanjutan.**** Temukan bagian **kait kode dialog** di bagian bawah menu yang muncul.
      + **Untuk memanggil fungsi untuk **pemenuhan maksud, gulir ke bagian Pemenuhan**.** *Alihkan tombol **Aktif** untuk mengatur hook kode menjadi aktif.* Perluas panah **di sebelah On successful fulfillment**, dan pilih **Advanced options**. *Pilih kotak centang di samping **Gunakan fungsi Lambda untuk pemenuhan** di bawah bagian **kait kode Lambda Pemenuhan untuk mengatur kait kode** ke diaktifkan.*

1. Setelah Anda mengatur tahapan percakapan untuk menjalankan fungsi Lambda**,** Bangun bot lagi untuk menguji fungsinya.

# Lampirkan AWS Lambda fungsi ke bot Amazon Lex V2 menggunakan operasi API
<a name="lambda-attach-api"></a>

Anda harus terlebih dahulu melampirkan fungsi Lambda ke alias bot Amazon Lex V2 Anda sebelum Anda dapat memanggilnya. Anda hanya dapat mengaitkan satu fungsi Lambda dengan setiap alias bot. Lakukan langkah-langkah ini untuk melampirkan fungsi Lambda menggunakan operasi API. 

Jika Anda membuat alias bot baru, gunakan [CreateBotAlias](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateBotAlias.html)operasi untuk melampirkan fungsi Lambda. Untuk melampirkan fungsi Lambda ke alias bot yang ada, gunakan operasi. [UpdateBotAlias](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateBotAlias.html) Ubah `botAliasLocaleSettings` bidang untuk memuat pengaturan yang benar:

```
{
    "botAliasLocaleSettings" : {
        locale: {
            "codeHookSpecification": {
                "lambdaCodeHook": {
                    "codeHookInterfaceVersion": "1.0",
                    "lambdaARN": "arn:aws:lambda:region:account-id:function:function-name"
                }
            },
            "enabled": true
        },
        ...
    }
}
```

1. `botAliasLocaleSettings`Bidang memetakan ke objek yang kuncinya adalah lokal di mana Anda ingin melampirkan fungsi Lambda. Lihat [Bahasa dan lokal yang didukung](how-languages.md#supported-languages) daftar lokal yang didukung dan kode yang merupakan kunci yang valid.

1. Untuk menemukan fungsi `lambdaARN` for Lambda, buka AWS Lambda konsol di [https://console.aws.amazon.com/lambda/rumah](https://console.aws.amazon.com/lambda/home), pilih **Fungsi** di bilah sisi kiri, dan pilih fungsi yang akan dikaitkan dengan alias bot. Di sisi kanan **ikhtisar Fungsi**, temukan di `lambdaARN` bawah **Fungsi ARN**. Ini harus berisi wilayah, ID akun, dan nama fungsi.

1. Untuk mengizinkan Amazon Lex V2 memanggil fungsi Lambda untuk alias, setel `enabled` bidang ke. `true`

**Menyetel intent Amazon Lex V2 untuk menjalankan fungsi Lambda menggunakan operasi API**

Untuk mengatur pemanggilan fungsi Lambda selama intent, gunakan [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html)operasi jika Anda membuat intent baru, atau [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html)operasi jika Anda menjalankan fungsi dalam intent yang ada. Bidang yang mengontrol pemanggilan fungsi Lambda dalam operasi intent adalah`dialogCodeHook`,, dan. `initialResponseSetting` `intentConfirmationSetting` `fulfillmentCodeHook`

Jika Anda menjalankan fungsi selama elisitasi slot, gunakan [CreateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateSlot.html)operasi jika Anda membuat slot baru, atau [UpdateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateSlot.html)operasi untuk memanggil fungsi di slot yang ada. Bidang yang mengontrol pemanggilan fungsi Lambda dalam operasi slot adalah objek. `slotCaptureSetting` `valueElicitationSetting`

1. Untuk mengatur hook kode dialog Lambda agar berjalan setelah setiap putaran percakapan, setel `enabled` bidang [DialogCodeHookSettings](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogCodeHookSettings.html)objek berikut di `dialogCodeHook` bidang menjadi: `true`

   ```
   "dialogCodeHook": {
       "enabled": boolean
   }
   ```

1. Atau, Anda dapat mengatur hook kode dialog Lambda agar berjalan hanya pada titik-titik tertentu dalam percakapan dengan memodifikasi `codeHook` and/or `elicitationCodeHook` bidang dalam struktur yang sesuai dengan tahapan percakapan di mana Anda ingin menjalankan fungsi tersebut. Untuk menggunakan hook kode dialog Lambda untuk pemenuhan maksud, gunakan `fulfillmentCodeHook` bidang dalam operasi atau. [CreateIntent[UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html)](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) Struktur dan penggunaan ketiga jenis kait kode ini adalah sebagai berikut:

## CodeHook
<a name="lambda-code-hook"></a>

`codeHook`Bidang mendefinisikan pengaturan untuk hook kode untuk dijalankan pada tahap tertentu dalam percakapan. Ini adalah [DialogCodeHookInvocationSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogCodeHookInvocationSetting.html)objek dengan struktur berikut:

```
"codeHook": {
    "active": boolean,
    "enableCodeHookInvocation": boolean,
    "invocationLabel": string,
    "postCodeHookSpecification": [PostDialogCodeHookInvocationSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostDialogCodeHookInvocationSpecification.html),
}
```
+ Ubah `active` bidang menjadi `true` Amazon Lex V2 untuk memanggil kait kode pada saat itu dalam percakapan.
+ Ubah `enableCodeHookInvocation` bidang menjadi `true` Amazon Lex V2 untuk memungkinkan hook kode berjalan normal. Jika Anda menandainya`false`, Amazon Lex V2 bertindak seolah-olah pengait kode berhasil dikembalikan.
+ `invocationLabel`Ini menunjukkan langkah dialog dari mana kode hook dipanggil.
+ Gunakan `postCodeHookSpecification` bidang untuk menentukan tindakan dan pesan yang terjadi setelah hook kode berhasil, gagal, atau habis waktu.

## elicitationCodeHook
<a name="lambda-elicitation-code-hook"></a>

`elicitationCodeHook`Bidang mendefinisikan pengaturan untuk hook kode untuk dijalankan jika slot atau slot perlu ditimbulkan kembali. Skenario ini dapat terjadi jika elisitasi slot gagal atau konfirmasi maksud ditolak. `elicitationCodeHook`Bidang adalah [ElicitationCodeHookInvocationSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ElicitationCodeHookInvocationSetting.html)objek dengan struktur berikut:

```
"elicitationCodeHook": {
    "enableCodeHookInvocation": boolean,
    "invocationLabel": string
}
```
+ Ubah `enableCodeHookInvocation` bidang menjadi `true` Amazon Lex V2 untuk memungkinkan hook kode berjalan normal. Jika Anda menandainya`false`, Amazon Lex V2 bertindak seolah-olah pengait kode berhasil dikembalikan.
+ `invocationLabel`Ini menunjukkan langkah dialog dari mana kode hook dipanggil.

## fulfillmentCodeHook
<a name="lambda-fulfillment-code-hook"></a>

`fulfillmentCodeHook`Bidang mendefinisikan pengaturan untuk hook kode yang akan dijalankan untuk memenuhi maksud. Ini memetakan ke [FulfillmentCodeHookSettings](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentCodeHookSettings.html)objek berikut:

```
"fulfillmentCodeHook": {
    "active": boolean,
    "enabled": boolean,
    "fulfillmentUpdatesSpecification": [FulfillmentUpdatesSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentUpdatesSpecification.html),
    "postFulfillmentStatusSpecification": [PostFulfillmentStatusSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostFulfillmentStatusSpecification.html)
}
```
+ Ubah `active` bidang menjadi `true` Amazon Lex V2 untuk memanggil kait kode pada saat itu dalam percakapan.
+ Ubah `enabled` bidang menjadi `true` Amazon Lex V2 untuk memungkinkan hook kode berjalan normal. Jika Anda menandainya`false`, Amazon Lex V2 bertindak seolah-olah pengait kode berhasil dikembalikan.
+ Gunakan `fulfillmentUpdatesSpecification` bidang untuk menentukan pesan yang muncul untuk memperbarui pengguna selama pemenuhan maksud dan waktu yang terkait dengannya.
+ Gunakan `postFulfillmentStatusSpecification` bidang untuk menentukan pesan dan tindakan yang terjadi setelah hook kode berhasil, gagal, atau habis waktu.

Anda dapat memanggil hook kode Lambda pada titik-titik berikut dalam percakapan dengan menyetel bidang `enableCodeHookInvocation` and`enabled`/`active`ke: `true`

## Selama respon awal
<a name="lambda-hook-initial-response"></a>

Untuk memanggil fungsi Lambda dalam respons awal setelah maksud dikenali, gunakan struktur `codeHook` di `initialResponse` bidang operasi atau. [CreateIntent[UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html)](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) `initialResponse`Bidang memetakan ke [InitialResponseSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_InitialResponseSetting.html)objek berikut:

```
"initialResponse": {
    "codeHook": {
        "active": boolean,
        "enableCodeHookInvocation": boolean,
        "invocationLabel": string,
        "postCodeHookSpecification": [PostDialogCodeHookInvocationSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostDialogCodeHookInvocationSpecification.html),
    },
    "initialResponse": [FulfillmentUpdatesSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentUpdatesSpecification.html),
    "nextStep": [PostFulfillmentStatusSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostFulfillmentStatusSpecification.html),
    "conditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html)
}
```

## Setelah elisitasi slot atau selama elisitasi ulang slot
<a name="lambda-hook-elicit-slot"></a>

Untuk memanggil fungsi Lambda setelah memunculkan nilai slot, gunakan bidang `slotCaptureSetting` dalam bidang operasi `valueElicitation` atau. [CreateSlot[UpdateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateSlot.html)](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateSlot.html) `slotCaptureSetting`Bidang memetakan ke [SlotCaptureSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_SlotCaptureSetting.html)objek berikut:

```
"slotCaptureSetting": {
    "captureConditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html),
    "captureNextStep": [DialogState object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogState.html),
    "captureResponse": [ResponseSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ResponseSpecification.html),
    "codeHook": {
        "active": true,
        "enableCodeHookInvocation": true,
        "invocationLabel": string,
        "postCodeHookSpecification": [PostDialogCodeHookInvocationSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostDialogCodeHookInvocationSpecification.html),
    },
    "elicitationCodeHook": {
        "enableCodeHookInvocation": boolean,
        "invocationLabel": string
    },
    "failureConditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html),
    "failureNextStep": [DialogState object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogState.html),
    "failureResponse": [ResponseSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ResponseSpecification.html)
}
```
+ Untuk menjalankan fungsi Lambda setelah elisitasi slot berhasil, gunakan bidang. `codeHook`
+ Untuk menjalankan fungsi Lambda setelah elisitasi slot gagal dan Amazon Lex V2 mencoba lagi elisitasi slot, gunakan bidang tersebut. `elicitationCodeHook`

## Setelah konfirmasi maksud atau penolakan
<a name="lambda-hook-confirm-intent"></a>

Untuk memanggil fungsi Lambda saat mengonfirmasi maksud, gunakan bidang `intentConfirmationSetting` operasi atau. [CreateIntent[UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html)](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) `intentConfirmation`Bidang memetakan ke [IntentConfirmationSetting](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_IntentConfirmationSetting.html)objek berikut:

```
"intentConfirmationSetting": {
    "active": boolean,
    "codeHook": {
        "active": boolean,
        "enableCodeHookInvocation": boolean,
        "invocationLabel": string,
        "postCodeHookSpecification": [PostDialogCodeHookInvocationSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostDialogCodeHookInvocationSpecification.html),
    },
    "confirmationConditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html),
    "confirmationNextStep": [DialogState object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogState.html),
    "confirmationResponse": [ResponseSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialResponseSpecificationogState.html),
    "declinationConditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html),
    "declinationNextStep": [FulfillmentUpdatesSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentUpdatesSpecification.html),
    "declinationResponse": [PostFulfillmentStatusSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostFulfillmentStatusSpecification.html),
    "elicitationCodeHook": {
        "enableCodeHookInvocation": boolean,
        "invocationLabel": string,
    },
    "failureConditional": [ConditionalSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ConditionalSpecification.html),
    "failureNextStep": [DialogState object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DialogState.html),
    "failureResponse": [ResponseSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ResponseSpecification.html),
    "promptSpecification": [PromptSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PromptSpecification.html)
}
```
+ Untuk menjalankan fungsi Lambda setelah pengguna mengonfirmasi maksud dan slotnya, gunakan bidang tersebut. `codeHook`
+ Untuk menjalankan fungsi Lambda setelah pengguna menolak konfirmasi maksud dan Amazon Lex V2 mencoba lagi elicitation slot, gunakan bidang tersebut. `elicitationCodeHook`

## Selama pemenuhan niat
<a name="lambda-hook-fulfill-intent"></a>

Untuk memanggil fungsi Lambda untuk memenuhi maksud, gunakan bidang dalam `fulfillmentCodeHook` [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html)operasi atau. [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html) `fulfillmentCodeHook`Bidang memetakan ke [FulfillmentCodeHookSettings](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentCodeHookSettings.html)objek berikut:

```
{
    "active": boolean,
    "enabled": boolean,
    "fulfillmentUpdatesSpecification": [FulfillmentUpdatesSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_FulfillmentUpdatesSpecification.html),
    "postFulfillmentStatusSpecification": [PostFulfillmentStatusSpecification object](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_PostFulfillmentStatusSpecification.html)
}
```

3. Setelah Anda mengatur tahapan percakapan untuk menjalankan fungsi Lambda, gunakan `BuildBotLocale` operasi untuk membangun kembali bot untuk menguji fungsi.

# Mendebug fungsi CloudWatch Lambda menggunakan log Log
<a name="lambda-debug"></a>

[Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) adalah alat untuk melacak panggilan API dan metrik yang dapat Anda gunakan untuk membantu men-debug fungsi Lambda Anda. Saat Anda menguji bot Anda di konsol atau dengan panggilan API CloudWatch , catat setiap langkah percakapan. Jika Anda menggunakan fungsi cetak dalam kode Lambda Anda, CloudWatch tampilkan juga.

**Untuk melihat CloudWatch log untuk fungsi Lambda Anda**

1. Masuk ke AWS Management Console dan buka CloudWatch konsol di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Di bawah menu **Log** di bilah sisi kiri, pilih **Grup log**.

1. Pilih grup log fungsi Lambda Anda, yang seharusnya dari format. `/aws/lambda/function-name`

1. Daftar **aliran Log** berisi log untuk setiap sesi dengan bot. Pilih aliran log untuk melihatnya.

1. Dalam daftar **peristiwa Log**, pilih panah kanan di sebelah **Timestamp** untuk memperluas detail acara tersebut. Apa pun yang Anda cetak dari kode Lambda Anda akan muncul sebagai peristiwa log. Gunakan informasi ini untuk men-debug kode Anda.

1. Setelah Anda men-debug kode Anda, ingatlah untuk **Menerapkan** fungsi Lambda dan, jika Anda menggunakan konsol, untuk memuat ulang jendela **Uji sebelum menguji** ulang perilaku bot.