

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Lambda 関数を呼び出す
<a name="lambda-invoke-functions"></a>

## ステップ 1: Lambda 関数を作成する
<a name="lambda-create-function"></a>

キャンペーンの実行中、アウトバウンドキャンペーンはプロファイルのバッチを使用して Lambda 関数を呼び出し、それぞれの結果を含むレスポンスを期待します。

### リクエストペイロード
<a name="lambda-request-payload"></a>

Lambda 関数が呼び出されると、次の構造を持つ JSON ペイロードを受け取ります。

#### ペイロード構造
<a name="lambda-payload-structure"></a>

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

#### フィールドの説明
<a name="lambda-field-descriptions"></a>

##### InvocationMetadata
<a name="lambda-invocation-metadata"></a>
+ **CampaignContext**: キャンペーン実行に関するメタデータが含まれます
+ **CampaignId**: キャンペーンの一意の識別子
+ **RunId**: この特定のキャンペーン実行の一意の識別子
+ **ActionId**: アウトバウンドキャンペーンによって実行されるフローアクションの識別子
+ **CampaignName**: キャンペーンの人間が読み取れる名前

##### 項目
<a name="lambda-items"></a>
+ **CustomerProfiles**: 処理する顧客プロファイルの配列 (効率のためにバッチ処理)
+ **ProfileId**: 顧客プロファイルの一意の識別子
+ **CustomerData**: 顧客プロファイルの JSON 文字列
+ **IdempotencyToken**: べき等処理を確保するためのこの特定の呼び出しの一意のトークン

#### リクエストペイロードの例
<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"
      }
    ]
  }
}
```

### 予想されるレスポンスペイロード
<a name="lambda-response-payload"></a>

Lambda 関数は、次の構造を持つ JSON レスポンスを返す必要があります。

#### レスポンスの構造
<a name="lambda-response-structure"></a>

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

#### フィールドの説明
<a name="lambda-response-field-descriptions"></a>

##### 項目
<a name="lambda-response-items"></a>
+ **CustomerProfiles**: リクエスト内の各顧客プロファイルに対応する結果の配列
+ **ID**: リクエスト`ProfileId`の と一致する必要があります
+ **ResultData**: 処理結果を含むカスタム JSON オブジェクト (オプション)

#### レスポンスペイロードの例
<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"
        }
      }
    ]
  }
}
```

## 重要な制約
<a name="lambda-constraints"></a>

### ペイロードサイズ制限
<a name="lambda-payload-size-limits"></a>
+ **レスポンスペイロードの最大サイズ**: 顧客プロファイルあたり 32 KB
+ がこの制限`ResultData`を超えると、呼び出しは無効としてマークされます。

### レスポンス要件
<a name="lambda-response-requirements"></a>
+ リクエスト`ProfileId`に含まれるすべての にレスポンスを提供する必要があります
+ 欠落したレスポンスはエラーとして扱われます
+ レスポンスの `Id`フィールドは、リクエスト`ProfileId`の と完全に一致する必要があります。

### エラー処理
<a name="lambda-error-handling"></a>
+ Lambda 関数が例外をスローすると、バッチ内のすべてのプロファイルが失敗としてマークされます。
+ デバッグ`ResultData`の目的でエラーの詳細を に含める

### 呼び出しタイプ
<a name="lambda-invocation-type"></a>
+ **呼び出しタイプ**: `REQUEST_RESPONSE` (同期)
+ 関数は、非同期的に処理するのではなく、30 秒以内に結果を返します。応答に 30 秒以上かかると、アクションが失敗します

## ステップ 2: アウトバウンドキャンペーンに Lambda 関数へのアクセスを許可する
<a name="lambda-grant-access"></a>

1. Amazon Connect コンソール ([https://console.aws.amazon.com/connect/](https://console.aws.amazon.com/connect/)) を開きます。

1. [インスタンス] ページで、[**インスタンスエイリアス**] 列からインスタンス名を選択します。このインスタンス名は、Amazon Connect へのアクセスに使用する URL に表示されます。

1. **チャネルと通信の**ナビゲーションペインで、**アウトバウンドキャンペーン**を選択します。

1. **カスタムアクションの設定**セクションで、**Lambda 関数**のドロップダウンボックスを使用して、アウトバウンドキャンペーンインスタンスに追加する関数を選択します。

1.  [**Lambda 関数の追加**] を選択します。関数の ARN が [**Lambda Functions (Lambda 関数)**] の下に追加されていることを確認します。

## ステップ 3: キャンペーンから Lambda を呼び出す
<a name="lambda-invoke-from-journey"></a>

1. **ジャーニー**フローを開くか作成します。

1. **カスタムアクション**ブロック (**統合**グループ内) をグリッドに追加します。ブロックと分岐を結合します。

1. **カスタムアクション**ブロックのタイトルを選択して、プロパティページを開きます。

1. **関数 ARN** で、アウトバウンドキャンペーンインスタンスに追加した関数のリストから を選択します。

## ステップ 4: Lambda 関数のレスポンスを使用する
<a name="lambda-consume-response"></a>

### 変数に直接アクセスする
<a name="lambda-access-variables"></a>

フローブロックでこれらの変数に直接アクセスするには、**カスタムアクション**ブロックの後に ブロックを追加し、次の例に示すように属性を参照します。

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

ソース属性に指定された名前が、Lambda から`ResultData`返された のキー名と一致していることを確認します。