

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

# Menginvokasi fungsi Lambda
<a name="lambda-invoke-functions"></a>

## Langkah 1: Membuat fungsi Lambda
<a name="lambda-create-function"></a>

Selama eksekusi kampanye, kampanye keluar akan memanggil fungsi Lambda Anda dengan sekumpulan profil dan mengharapkan respons yang berisi hasil untuk masing-masing.

### Minta Muatan
<a name="lambda-request-payload"></a>

Ketika fungsi Lambda Anda dipanggil, ia akan menerima muatan JSON dengan struktur berikut:

#### Struktur Muatan
<a name="lambda-payload-structure"></a>

```
{
  "InvocationMetadata": {
    "CampaignContext": {
      "CampaignId": "string",
      "RunId": "string",
      "ActionId": "string",
      "CampaignName": "string"
    }
  },
  "Items": {
    "CustomerProfiles": [
      {
        "ProfileId": "string",
        "CustomerData": "string",
        "IdempotencyToken": "string"
      }
    ]
  }
}
```

#### Deskripsi Bidang
<a name="lambda-field-descriptions"></a>

##### InvocationMetadata
<a name="lambda-invocation-metadata"></a>
+ **CampaignContext**: Berisi metadata tentang eksekusi kampanye
+ **CampaignId**: Pengenal unik untuk kampanye
+ **RunId**: Pengenal unik untuk menjalankan kampanye khusus ini
+ **ActionId**: Pengidentifikasi aksi aliran yang dijalankan oleh kampanye keluar
+ **CampaignName**: Nama kampanye yang dapat dibaca manusia

##### Item
<a name="lambda-items"></a>
+ **CustomerProfiles**: Array profil pelanggan untuk diproses (batch untuk efisiensi)
+ **ProfileId**: Pengidentifikasi unik untuk profil pelanggan
+ **CustomerData**: JSON string dari profil pelanggan
+ **IdempotencyToken**: Token unik untuk pemanggilan khusus ini untuk memastikan pemrosesan idempoten

#### Contoh Permintaan Muatan
<a name="lambda-example-request"></a>

```
{
  "InvocationMetadata": {
    "CampaignContext": {
      "CampaignId": "campaign-12345",
      "RunId": "run-67890",
      "ActionId": "activity-abc123",
      "CampaignName": "Welcome Campaign"
    }
  },
  "Items": {
    "CustomerProfiles": [
      {
        "ProfileId": "customer-001",
        "CustomerData": "{\"firstName\":\"John\",\"lastName\":\"Doe\",\"email\":\"john.doe@example.com\"}",
        "IdempotencyToken": "token-xyz789"
      },
      {
        "ProfileId": "customer-002",
        "CustomerData": "{\"firstName\":\"Jane\",\"lastName\":\"Smith\",\"email\":\"jane.smith@example.com\"}",
        "IdempotencyToken": "token-abc456"
      }
    ]
  }
}
```

### Muatan Respon yang Diharapkan
<a name="lambda-response-payload"></a>

Fungsi Lambda Anda harus mengembalikan respons JSON dengan struktur berikut:

#### Struktur Respon
<a name="lambda-response-structure"></a>

```
{
  "Items": {
    "CustomerProfiles": [
      {
        "Id": "string",
        "ResultData": {}
      }
    ]
  }
}
```

#### Deskripsi Bidang
<a name="lambda-response-field-descriptions"></a>

##### Item
<a name="lambda-response-items"></a>
+ **CustomerProfiles**: Array hasil yang sesuai dengan setiap profil pelanggan dalam permintaan
+ **Id**: Harus cocok dengan permintaan `ProfileId`
+ **ResultData**: Objek JSON kustom yang berisi hasil pemrosesan Anda (opsional)

#### Contoh Respon Payload
<a name="lambda-example-response"></a>

```
{
  "Items": {
    "CustomerProfiles": [
      {
        "Id": "customer-001",
        "ResultData": {
          "recommendedProduct": "Premium Plan",
          "score": 85,
          "nextAction": "send_email"
        }
      },
      {
        "Id": "customer-002",
        "ResultData": {
          "error": "Invalid customer data",
          "errorCode": "VALIDATION_ERROR"
        }
      }
    ]
  }
}
```

## Batasan Penting
<a name="lambda-constraints"></a>

### Batas Ukuran Muatan
<a name="lambda-payload-size-limits"></a>
+ **Ukuran Payload Respon Maksimum**: 32 KB per profil pelanggan
+ Jika Anda `ResultData` melebihi batas ini, pemanggilan akan ditandai sebagai tidak valid

### Persyaratan Respons
<a name="lambda-response-requirements"></a>
+ Anda harus memberikan tanggapan untuk setiap yang `ProfileId` termasuk dalam permintaan
+ Tanggapan yang hilang akan diperlakukan sebagai kesalahan
+ `Id`Bidang dalam respons harus sama persis dengan `ProfileId` dari permintaan

### Penanganan Kesalahan
<a name="lambda-error-handling"></a>
+ Jika fungsi Lambda Anda melempar pengecualian, semua profil dalam batch akan ditandai sebagai gagal
+ Sertakan detail kesalahan `ResultData` untuk tujuan debugging

### Jenis Doa
<a name="lambda-invocation-type"></a>
+ **Jenis Doa**: `REQUEST_RESPONSE` (sinkron)
+ Fungsi Anda harus mengembalikan hasil dalam waktu 30 detik daripada memproses secara asinkron. Respons yang memakan waktu lebih dari 30 detik akan mengakibatkan kegagalan tindakan

## Langkah 2: Berikan akses Kampanye Keluar ke fungsi Lambda Anda
<a name="lambda-grant-access"></a>

1. Buka konsol Amazon Connect di [https://console.aws.amazon.com/connect/](https://console.aws.amazon.com/connect/).

1. Pada halaman instance, pilih nama instance Anda di kolom **Alias Instance**. Nama instance ini muncul di URL yang Anda gunakan untuk mengakses Amazon Connect.

1. Di panel navigasi di bawah **Saluran dan komunikasi**, pilih Kampanye **keluar**.

1. Di bawah bagian **Mengatur tindakan kustom**, gunakan kotak drop-down **fungsi Lambda** untuk memilih fungsi yang akan ditambahkan ke instance kampanye keluar Anda.

1. Pilih **Tambahkan Fungsi Lambda**. **Konfirmasikan bahwa ARN fungsi ditambahkan di bawah Fungsi Lambda.**

## Langkah 3: Memanggil Lambda dari Kampanye
<a name="lambda-invoke-from-journey"></a>

1. Buka atau buat alur **Perjalanan**.

1. Tambahkan blok **tindakan kustom** (dalam grup **Integrate**) ke grid. Hubungkan cabang ke dan dari blok.

1. Pilih judul blok **tindakan kustom** untuk membuka halaman propertinya.

1. Di bawah **Fungsi ARN**, pilih dari daftar fungsi yang telah Anda tambahkan ke instance kampanye keluar.

## Langkah 4: Konsumsi respons fungsi Lambda
<a name="lambda-consume-response"></a>

### Akses variabel secara langsung
<a name="lambda-access-variables"></a>

Untuk mengakses variabel-variabel ini secara langsung di blok aliran, tambahkan blok setelah blok **tindakan kustom**, lalu rujuk atribut seperti yang ditunjukkan pada contoh berikut:

```
RecommendedProduct - $.LambdaInvocation.ResultData.recommendedProduct
Score - $.LambdaInvocation.ResultData.score
```

Pastikan bahwa nama yang ditentukan untuk atribut sumber cocok dengan nama kunci yang `ResultData` dikembalikan dari Lambda.