

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 kumpulan profil dan mengharapkan respons yang berisi hasil untuk masing-masing.

### Minta Payload
<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**: Pengidentifikasi unik untuk kampanye
+ **RunId**: Pengidentifikasi unik untuk kampanye tertentu yang dijalankan
+ **ActionId**: Pengidentifikasi tindakan alur yang dieksekusi oleh kampanye keluar
+ **CampaignName**: Human-readable Nama Kampanye

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

#### Contoh Muatan Permintaan
<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 `ProfileId` dengan dari permintaan
+ **ResultData**: Objek JSON khusus yang berisi hasil pemrosesan Anda (opsional)

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

### Persyaratan Respon
<a name="lambda-response-requirements"></a>
+ Anda harus memberikan tanggapan untuk setiap yang `ProfileId` termasuk dalam permintaan
+ Tanggapan yang hilang akan diperlakukan sebagai kesalahan
+ Bid `Id` ang dalam respons harus persis sama `ProfileId` dengan 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 Panggilan
<a name="lambda-invocation-type"></a>
+ **Jenis Panggilan**: `REQUEST_RESPONSE` (sinkron)
+ Fungsi Anda harus mengembalikan hasil dalam 30 detik daripada memproses secara asinkron. Tanggapan yang memakan waktu lebih dari 30 detik akan mengakibatkan kegagalan tindakan

## Langkah 2: Berikan akses Outbound Campaigns 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 instans 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 Kampan ** ** ye keluar.

1. Di bawah ** bagian Si ** apkan 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.

**penting**  
Prosedur konsol sebelumnya secara otomatis menambahkan kebijakan berbasis sumber daya yang diperlukan ke fungsi Lambda. Jika Anda menggunakan AWS CLI atau SDK, Anda dapat memanggil [ PutConnectInstanceIntegration ](https://docs.aws.amazon.com/connect/latest/APIReference/API_connect-outbound-campaigns-v2_PutConnectInstanceIntegration.html) API dengan konfigurasi `lambda` integrasi. API ini secara otomatis menambahkan kebijakan berbasis sumber daya yang diperlukan ke fungsi Lambda Anda, seperti halnya konsol.  
Jika Anda perlu menambahkan kebijakan berbasis sumber daya secara manual (misalnya, untuk pemanggilan lintas akun), tambahkan pernyataan kebijakan yang memberikan izin utama `connect-campaigns.amazonaws.com` layanan untuk memanggil fungsi Anda. Anda dapat menambahkan `Condition` elemen secara opsional dengan `AWS:SourceAccount` dan `AWS:SourceArn` untuk membatasi akses ke akun Anda dan instance Connect Customer. Kami merekomendasikan untuk memasukkan kedua kondisi tersebut. Contoh berikut menunjukkan pernyataan kebijakan yang diperlukan.  

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "connect-campaigns.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:{{region}}:{{account-id}}:function:{{function-name}}",
      "Condition": {
        "StringEquals": {
          "AWS:SourceAccount": "{{account-id}}"
        },
        "ArnLike": {
          "AWS:SourceArn": "arn:aws:connect:{{region}}:{{account-id}}:instance/{{instance-id}}"
        }
      }
    }
  ]
}
```
Untuk informasi selengkapnya tentang kebijakan berbasis sumber daya, lihat [ Menggunakan kebijakan berbasis sumber daya untuk Lambda ](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html) di Panduan Pengembang Lambda. * *

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

1. Buka atau buat al ** ur ** Perjalanan.

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

1. Pilih judul ** blok tindakan ku ** stom 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 dalam blok aliran, tambahkan blok setelah ** blok tindakan ** kustom, dan kemudian referensi atribut seperti yang ditunjukkan dalam 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.