

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

# AWS Lambda 関数へのアクセスを Amazon Connect に許可する
<a name="connect-lambda-functions"></a>

Amazon Connect は独自のシステムと連携して、フロー内のさまざまなパスを動的に使用することができます。これを実現するには、フローで AWS Lambda 関数を呼び出し、結果を取得し、独自のサービスを呼び出すか、他の AWS データストアやサービスとやり取りします。詳細については、[AWS Lambda デベロッパーガイド](https://docs.aws.amazon.com/lambda/latest/dg/)を参照してください。

フローから Lambda 関数を呼び出すには、以下のタスクを実行します。

**Topics**
+ [Lambda 関数を作成する](#create-lambda-function)
+ [Amazon Connect インスタンスに Lambda 関数を追加する](#add-lambda-function)
+ [フローからの Lambda 関数の呼び出し](#function-contact-flow)
+ [複数の Lambda 関数を呼び出すためのベストプラクティス](#invoke-multiple-functions)
+ [イベントを解析するよう Lambda 関数を設定する](#function-parsing)
+ [関数のレスポンスを検証する](#verify-function)
+ [Lambda 関数のレスポンスを使用する](#process-function-response)
+ [チュートリアル: Lambda 関数を作成してフローで呼び出す](#tutorial-invokelambda)

## Lambda 関数を作成する
<a name="create-lambda-function"></a>

任意のランタイムを使用して Lambda 関数を作成し、設定します。詳細については「*AWS Lambda デベロッパーガイド*」の「[Lambda の開始方法](https://docs.aws.amazon.com/lambda/latest/dg/get-started.html)」を参照してください。

コンタクトセンターと同じリージョンに Lambda 関数を作成した場合は、次のタスク [Amazon Connect インスタンスに Lambda 関数を追加する](#add-lambda-function) で説明するように、Amazon Connect コンソールを使用して Lambda 関数をインスタンスに追加できます。これにより、Amazon Connect が Lambda 関数を呼び出すことを許可するリソースのアクセス許可が自動的に追加されます。それ以外の場合、Lambda 関数が別のリージョンにある場合は、フローデザイナーを使用してフローに追加し、[add-permission](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html) コマンドを使用して、`connect.amazonaws.com` のプリンシパルと Amazon Connect インスタンスの ARN を使用してリソースのアクセス許可を追加できます。詳細については、*AWS Lambda デベロッパーガイド*の「[AWS Lambdaのリソースベースのポリシーを使用する](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html)」を参照してください。

## Amazon Connect インスタンスに Lambda 関数を追加する
<a name="add-lambda-function"></a>

Lambda 関数をフローで使用するには、Amazon Connect インスタンスに追加する必要があります。

**Lambda 関数をインスタンスに追加する**

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

1. [インスタンス] ページで、[**インスタンスエイリアス**] 列からインスタンス名を選択します。このインスタンス名は、Amazon Connect へのアクセスに使用する URL に表示されます。  
![\[[Amazon Connect 仮想コンタクトセンターインスタンス] ページ、インスタンスのエイリアス。\]](http://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/images/instance.png)

1. ナビゲーションペインで、**[フロー]** を選択します。

1. [**AWS Lambda**] セクションの [**関数**] ドロップダウンボックスを使用して、インスタンスに追加する関数を選択します。
**ヒント**  
このドロップダウンには、インスタンスと同じリージョンにある関数のみが表示されます。関数が表示されない場合は、 AWS Lambda コンソールを開く**新しい Lambda 関数を作成する**を選択します。  
別のリージョンまたはアカウントで Lambda を使用するには、[AWS Lambda 関数](invoke-lambda-function-block.md) の [**関数の選択**] の下で、Lambda の ARN を入力します。次に、その Lambda に対応するリソースベースのポリシーを設定し、フローがそれを呼び出すことを許可します。  
`lambda:AddPermission` を呼び出すには、以下のことが必要です。  
プリンシパルを [**connect.amazonaws.com**] に設定します。
ソースアカウントを、インスタンスが置かれているアカウントに設定します。
ソース ARN をインスタンスの ARN に設定します。
詳細については、「[他のアカウントへのアクセス権を関数に付与する](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html#permissions-resource-xaccountinvoke)」を参照してください。

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

これで、フローでその Lambda 関数を参照できるようになります。

## フローからの Lambda 関数の呼び出し
<a name="function-contact-flow"></a>

1. フローを開くか、作成します。

1. (**統合**グループの中の) [AWS Lambda 関数](invoke-lambda-function-block.md) ブロックをグリッドに追加します。ブロックと分岐を結合します。

1. [[AWS Lambda 関数](invoke-lambda-function-block.md)] ブロックのタイトルを選択して、プロパティページを開きます。

1. [**関数の選択**] で、関数のリストからインスタンスに追加した関数を選択します。

1. (任意) [**関数入力パラメータ**] で、[**パラメータを追加する**] を選択します。Lambda 関数を呼び出すときにその関数に渡すキーと値のペアを指定できます。関数の [**タイムアウト**] の値を指定することもできます。

1. [**タイムアウト (最大 8 秒**)] で、Lambda がタイムアウトするまで待機する時間を指定します。この後、問い合わせはエラーブランチにルーティングされます。

フローからの Lambda 関数の呼び出しごとに、進行中の問い合わせに関連する一連のデフォルト情報と、**[Function input parameters]** (関数入力パラメータ) セクションに定義されている追加の属性を、追加した **[Invoke AWS Lambda function]** (関数を呼び出す) ブロックに渡します。

Lambda 関数への JSON リクエストの例を次に示します。

```
{
    "Details": {
        "ContactData": {
            "Attributes": {
               "exampleAttributeKey1": "exampleAttributeValue1"
              },
            "Channel": "VOICE",
            "ContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
            "CustomerEndpoint": {
                "Address": "+1234567890",
                "Type": "TELEPHONE_NUMBER"
            },
            "CustomerId": "someCustomerId",
            "Description": "someDescription",
            "InitialContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
            "InitiationMethod": "INBOUND | OUTBOUND | TRANSFER | CALLBACK",
            "InstanceARN": "arn:aws:connect:aws-region:1234567890:instance/c8c0e68d-2200-4265-82c0-XXXXXXXXXX",
            "LanguageCode": "en-US",
            "MediaStreams": {
                "Customer": {
                    "Audio": {
                        "StreamARN": "arn:aws:kinesisvideo::eu-west-2:111111111111:stream/instance-alias-contact-ddddddd-bbbb-dddd-eeee-ffffffffffff/9999999999999",
                        "StartTimestamp": "1571360125131", // Epoch time value
                        "StopTimestamp": "1571360126131",
                        "StartFragmentNumber": "100" // Numberic value for fragment number 
                    }
                }
            },
            "Name": "ContactFlowEvent",
            "PreviousContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
            "Queue": {
                   "ARN": "arn:aws:connect:eu-west-2:111111111111:instance/cccccccc-bbbb-dddd-eeee-ffffffffffff/queue/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
                 "Name": "PasswordReset"
                "OutboundCallerId": {
                    "Address": "+12345678903",
                    "Type": "TELEPHONE_NUMBER"
                }
            },
            "References": {
                "key1": {
                    "Type": "url",
                    "Value": "urlvalue"
                }
            },
            "SystemEndpoint": {
                "Address": "+1234567890",
                "Type": "TELEPHONE_NUMBER"
            }
        },
        "Parameters": {"exampleParameterKey1": "exampleParameterValue1",
               "exampleParameterKey2": "exampleParameterValue2"
        }
    },
    "Name": "ContactFlowEvent"
}
```

このリクエストは次の 2 つのパートに分かれています。
+ 問い合わせデータ – 問い合わせのたびに、Amazon Connect によって必ず渡されます。一部のパラメータは省略可能です。

  このセクションには、フローの **[Set contact attributes]** (問い合わせ属性の設定) ブロックの使用時など、以前に問い合わせに関連付けられていた属性が含まれることがあります。このマップは、保存されている属性が何もない場合は空の場合もあります。

  次の図は、これらの属性が、[**問い合わせ属性の設定**] のプロパティページに表示される場所を示しています。  
![\[[コンタクト属性の設定] ブロックの [プロパティ] ページ。\]](http://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/images/lambda-setAttribute.png)
+ パラメータ – これらは Lambda 関数を作成したときに定義されたこの呼び出しに固有のパラメータです。次の図は、これらのパラメータが、[** AWS Lambda 関数の呼び出し**] ブロックのプロパティページに表示される場所を示しています。  
![\[AWS Lambda 関数の呼び出しブロックの関数入力パラメータ。\]](http://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/images/lambda-setParameter.png)

[AWS Lambda 関数](invoke-lambda-function-block.md)ブロックは、プリミティブデータ型とネストされた JSON の両方に対応する JSON 形式の入力パラメータを受け取ることができます。[AWS Lambda 関数](invoke-lambda-function-block.md)ブロックで活用できる JSON 入力の例は、次のとおりです。

```
{ 
  "Name": "Jane", 
  "Age":10, 
  "isEnrolledInSchool": true, 
  "hobbies": {
    "books":["book1", "book2"], 
    "art":["art1", "art2"]
  } 
}
```

### 呼び出しの再試行ポリシー
<a name="retry"></a>

フロー内の Lambda 呼び出しがスロットリングされた場合、リクエストは再試行されます。一般的なサービス障害 (500 エラー) が発生した場合も再試行されます。

同期呼び出しがエラーを返す場合、Amazon Connect は最大 8 秒間にわたり最大 3 回再試行します。この時点で、フローは Error ブランチを下に進みます。

Lambda の再試行方法の詳細については、[AWS 「Lambda でのエラー処理と自動再試行](https://docs.aws.amazon.com/lambda/latest/dg/retries-on-errors.html)」を参照してください。

## 複数の Lambda 関数を呼び出すためのベストプラクティス
<a name="invoke-multiple-functions"></a>

Amazon Connect は、Lambda 関数のシーケンスの持続期間を 20 秒に制限します。合計実行時間がこのしきい値を超えると、エラーメッセージでタイムアウトします。Lambda 関数の実行中は無音になるため、その実行時間が長くなる場合に顧客が関心を失わないよう、関数間に [**プロンプトの再生**] ブロックを追加することをお勧めします。

Lambda 関数の連結を [**プロンプトの再生**] ブロックで分割すると、20 秒のしきい値を超えて実行を継続する複数の関数を呼び出すことができます。

## イベントを解析するよう Lambda 関数を設定する
<a name="function-parsing"></a>

Lambda 関数と Amazon Connect の間で属性とパラメータを正常に渡すには、**Invoke 関数ブロックまたは Set contact attributes から送信された JSON リクエストを正しく解析するように AWS Lambda 関数**を設定し、適用すべきビジネスロジックを定義します。 ****JSON がどのように解析されるかは、関数に使用するランタイムによって異なります。

たとえば、次のコードは、Node.JS を使用して Invoke `exampleParameterKey1` 関数ブロックと **Set contact attributes** ブロック`exampleAttributeKey1`から にアクセスする方法を示しています。 ** AWS Lambda **

```
exports.handler = function(event, context, callback) {
// Example: access value from parameter (Invoke AWS Lambda function)
let parameter1 = event['Details']['Parameters']['exampleParameterKey1'];
  		  
// Example: access value from attribute (Set contact attributes block)
let attribute1 = event['Details']['ContactData']['Attributes']['exampleAttributeKey1'];
  		  
// Example: access customer's phone number from default data
let phone = event['Details']['ContactData']['CustomerEndpoint']['Address'];
  		  
// Apply your business logic with the values
// ...
}
```

## 関数のレスポンスを検証する
<a name="verify-function"></a>

**ヒント**  
配列の参照はフローではサポートされていません。配列は別の Lambda 関数でのみ使用できます。

Lambda 関数のレスポンスは STRING\$1MAP または JSON のいずれかであり、フローで ** AWS Lambda 関数の呼び出し**ブロックを設定するときに設定する必要があります。レスポンスの検証が STRING\$1MAP に設定されている場合、Lambda 関数は文字列型のキーバリューのペアのフラットオブジェクトを返す必要があります。それ以外の場合、レスポンスの検証が JSON に設定されている場合、Lambda 関数はネストされた JSON を含む任意の有効な JSON を返すことができます。

![\[文字列マップまたは JSON の使用を強調表示する AWS Lambda 関数フローブロックを呼び出します。\]](http://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/images/verify-function-lambda-response-validation.png)


Lambda のレスポンスは最大 32kb となる場合があります。Lambda にアクセスできない場合、関数が例外を出力した場合、レスポンスが理解不能な場合、または Lambda 関数が制限時間を超えた場合、フローは `Error` ラベルへジャンプします。

Lambda 関数から返された出力をテストして、Amazon Connect に返されたときに正常に使用されることを確認します。次の例は、Node.JS でのサンプルのレスポンスを示します。

```
exports.handler = function(event, context, callback) {
// Extract data from the event object	     
let phone = event['Details']['ContactData']['CustomerEndpoint']['Address'];    
	   
// Get information from your APIs

let customerAccountId = getAccountIdByPhone(phone);
let customerBalance = getBalanceByAccountId(customerAccountId);
  		  
    let resultMap = {
        AccountId: customerAccountId,
        Balance: '$' + customerBalance,
}

callback(null, resultMap);
}
```

この例は、Python を使用したサンプルのレスポンスを示します。

```
def lambda_handler(event, context):
// Extract data from the event object
  phone = event['Details']['ContactData']['CustomerEndpoint']['Address']
  		  
// Get information from your APIs
  customerAccountId = getAccountIdByPhone(phone)
  customerBalance = getBalanceByAccountId(customerAccountId)
  		  
  	resultMap = {
  		"AccountId": customerAccountId,
  		"Balance": '$%s' % customerBalance
  		}
        
 return resultMap
```

関数から返される出力は、英数字、ダッシュ、アンダースコアのみが含まれる値を持つ、キーと値のペアのフラットオブジェクトである必要があります。返されるデータのサイズは、32 KB 未満の UTF-8 データである必要があります。

次の例は、これらの Lambda 関数からの JSON 出力を示します。

```
{
"AccountId": "a12345689",
"Balance": "$1000"
}
```

レスポンスの検証が JSON に設定されている場合、Lambda 関数はネストされた JSON を含む任意の有効な JSON を返すこともできます。例は次のとおりです。

```
{
  "Name": {
      "First": "John",
      "Last": "Doe"
  },
  "AccountId": "a12345689",
  "OrderIds": ["x123", "y123"]
}
```

単純なキーと値のペアであれば、任意の結果を返すことができます。

## Lambda 関数のレスポンスを使用する
<a name="process-function-response"></a>

フローで関数のレスポンスを使用するには 2 つの方法があります。Lambda から返される変数を直接参照するか、問い合わせ属性として関数から返される値を保存してから、保存された属性を参照することができます。Lambda 関数からのレスポンスへの外部参照を使用する場合は、その参照は常に、直近に呼び出された関数からのレスポンスを受け取ります。後続の関数が呼び出される前に関数からのレスポンスを使用するには、レスポンスを問い合わせ属性として保存するか、次の関数にパラメータとして渡す必要があります。

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

 変数に直接アクセスする場合、それらはフローブロックで使用できますが、問い合わせレコードには含まれません。これらの変数にフローブロックで直接アクセスするには、**Invoke AWS Lambda 関数**ブロックの後に ブロックを追加し、次の例に示すように属性を参照します。

```
Name - $.External.Name
Address - $.External.Address
CallerType - $.External.CallerType
```

次の画像は、**[プロンプトのループ]** ブロックの [プロパティ] ページを示しています。変数は、[テキスト読み上げ] ブロックで指定されます。

![\[[プロンプトの再生] ブロックの [プロパティ] ページ。\]](http://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/images/lambda-useExternal.png)


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

### 2. 変数を問い合わせ属性として保存する
<a name="store-variables"></a>

変数を問い合わせ属性として保存すると、フロー全体で使用でき、問い合わせレコードに含まれるようになります。

問い合わせ属性として返された値を保存して参照するには、**関数の呼び出しブロックの後に、フローで AWS Lambda ****問い合わせ属性の設定**ブロックを使用します。[**タイプ**] で、[**属性の使用**]、[**外部**] の順に選択します。使用している例に従って、[**送信先属性**] を `MyAccountId` に設定し、[**属性**] を `AccountId` に設定します。その後、`MyBalance` と [**Balance**] (残高) で同じ操作を繰り返します。この設定は、次の画像に示されています。

![\[[コンタクト属性の設定] ブロックの [プロパティ] ページ。\]](http://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/images/lambda-useInSetAttributes.png)


[**ソース属性**] としてアドレスを追加し、[**送信先のキー**] として `returnedContactAddress` を使用します。次に、**[ソース属性]** として `CallerType` を追加し、**[送信先のキー]** として `returnedContactType` を使用します。

![\[[プロンプトの再生] ブロックの [プロパティ] ページ。\]](http://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/images/lambda-useAttributeInPlayPrompt.png)


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

## チュートリアル: Lambda 関数を作成してフローで呼び出す
<a name="tutorial-invokelambda"></a>

### ステップ 1: Lambda の例を作成する
<a name="tutorial-invokelambda-step1"></a>

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/) で AWS Lambda コンソールを開きます。

1. で AWS Lambda、**関数の作成** を選択します。

1. まだ選択されていない場合は、[**一から作成**] を選択します。[**基本的な情報**] の [**関数名**] に「**MyFirstConnectLambda**」と入力します。その他すべてのオプションについては、デフォルト値を受け入れます。これらのオプションは、次の AWS Lambda コンソールの画像に示されています。  
![\[AWS Lambda コンソール。\]](http://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/images/lambdafunctions-tutorial-create-function-name.png)

1. [**関数の作成**] を選択してください。

1. [**コードソース**] ボックスの [**index.js**] タブで、コードエディタからテンプレートコードを削除します。

1. 次の図に示すように、次のコードをコピーしてコードエディタに貼り付けます。  
![\[[コードソース] セクション、[デプロイ] ボタン。\]](http://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/images/lambdafunctions-tutorial-code-source.png)

   ```
   exports.handler = async (event, context, callback) => {
   // Extract information
           const customerNumber = event.Details.ContactData.CustomerEndpoint.Address;
           const companyName = event.Details.Parameters.companyName;
   // Fetch data
           const balance = await fetchBalance(customerNumber, companyName);
           const support = await fetchSupportUrl(companyName);
   // Prepare result
           const resultMap = {
           customerBalance: balance,
           websiteUrl: support
           }
           callback(null, resultMap);
           }
           
           async function fetchBalance(customerPhoneNumber, companyName) {
   // Get data from your API Gateway or Database like DynamoDB
           return Math.floor(Math.random() * 1000);
           }
           
           async function fetchSupportUrl(companyName) {
   // Get data from your API Gateway or Database like DynamoDB
           return 'www.GGG.com/support';
           }
   ```

   このコードは、customerBalance に対してランダムな結果を生成します。

1. **[デプロイ]** をクリックします。

1. [**デプロイ**] を選択した後、[**テスト**] を選択してテストエディタを起動します。

1. [**テストイベントの設定**] ダイアログボックスで、[**Create new event**] (新しいイベントの作成) を選択します。[**イベント名**] で、テスト名として「**ConnectMock**」と入力します。

1. [**イベント JSON**] ボックスでサンプルコードを削除し、代わりに次のコードを入力します。

   ```
   {
   "Details": {
   "ContactData": {
       "Attributes": {},
       "Channel": "VOICE",
       "ContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
       "CustomerEndpoint": {
       "Address": "+1234567890",
       "Type": "TELEPHONE_NUMBER"
       },
   "InitialContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
   "InitiationMethod": "INBOUND | OUTBOUND | TRANSFER | CALLBACK",
   "InstanceARN": "arn:aws:connect:aws-region:1234567890:instance/c8c0e68d-2200-4265-82c0-XXXXXXXXXX",
   "PreviousContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX",
   "Queue": {
       "ARN": "arn:aws:connect:eu-west-2:111111111111:instance/cccccccc-bbbb-dddd-eeee-ffffffffffff/queue/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
       "Name": "PasswordReset"
     },
   "SystemEndpoint": {
       "Address": "+1234567890",
       "Type": "TELEPHONE_NUMBER"
       } 
   },
   "Parameters": {
       "companyName": "GGG"
       }
   },
   "Name": "ContactFlowEvent"
   }
   ```

1. **[保存]** を選択します。

1. [**Test**] を選択します。次の画像のような結果が表示されます。  
![\[[コードソース] セクション、[テスト] ボタン。\]](http://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/images/lambdafunctions-tutorial-code-source-response.png)

   お客様の実際の残高は異なります。コードにより、乱数が生成されます

### ステップ 2: Amazon Connect に Lambda を追加する
<a name="tutorial-invokelambda-step2"></a>

1. Amazon Connect コンソール ([https://console.aws.amazon.com/connect/](https://console.aws.amazon.com/connect/)) に移動します。

1. Amazon Connect インスタンスエイリアスを選択します。  
![\[[Amazon Connect 仮想コンタクトセンターインスタンス] ページ、インスタンスのエイリアス。\]](http://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/images/instance.png)

1. ナビゲーションメニューで、**[Flows]** (フロー) を選択します。

1.  AWS Lambda セクションで、**Lambda Functions** ドロップダウンボックスを使用して **MyFirstConnectLambda** を選択します。  
![\[フローページ、 AWS Lambda セクション。\]](http://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/images/lambda-add-myfirstconnectlambda.png)

1. [**Lambda 関数の追加**] を選択します。

### ステップ 3: 問い合わせフローを作成する
<a name="tutorial-invokelambda-step3"></a>

次の図は、この手順のステップを使用して構築するフローの例です。以下のブロックが含まれています。**[コンタクト属性の設定]**、**[プロンプトの再生]**、**[ AWS Lambda 関数の呼び出し]**、もう 1 つの **[コンタクト属性の設定]** ブロック、もう 1 つの **[プロンプトの再生]** ブロック、そして最後に **[切断]** ブロックです。

![\[AWS Lambda 関数の呼び出しブロックを呼び出すフロー。\]](http://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/images/lambda-exampleFlow.png)


1. https://*instance name*.my.connect.aws/ で Amazon Connect 管理者ウェブサイトにログインします。

1. ナビゲーションメニューで、**[Routing]** (ルーティング)、**[Flows]** (フロー)、**[Create a contact flow]** (問い合わせフローを作成) の順に移動します。

1. [コンタクト属性の設定](set-contact-attributes.md) ブロックをグリッド上にドラッグし、次の図に示すようにプロパティページを設定します。  
![\[[コンタクト属性の設定] ブロック。\]](http://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/images/lambda-exampleFlow-set-contact-attribute-1.png)

   1. **名前空間** = **ユーザー定義**。

   1. **属性** = **companyName**。

   1. **[Set manually]** (手動で設定) を選択します。**値** = **GGG**。

   1. **[保存]** を選択します。

1. [プロンプトの再生](play.md) ブロックをグリッド上にブロックし、次の図に示すように、プロパティページを設定します。  
![\[[プロンプトの再生] ブロック。\]](http://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/images/lambda-exampleFlow-play-prompt-1.png)

   1. [**テキスト読み上げまたはチャットテキスト**]、[**Set manually**] (手動設定) の順に選択し、[**解釈する**] を [**SSML**] に設定します。読み上げるテキストのボックスに、次のテキストを入力します。

      `Hello, thank you for calling $.Attributes.companyName inc.`

   1. **[保存]** を選択します。

1. 別の [プロンプトの再生](play.md) ブロックをグリッド上にブロックし、次の図に示すように、プロパティページを設定します。  
![\[[プロンプトの再生] ブロック。\]](http://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/images/lambda-exampleFlow-play-prompt-2.png)

   1. [**テキスト読み上げまたはチャットテキスト**]、[**Set manually**] (手動設定) の順に選択し、[**解釈する**] を [**テキスト**] に設定します。読み上げるテキストのボックスに、次のテキストを入力します。

      `Please try again later.`

   1. **[保存]** を選択します。

1. [AWS Lambda 関数](invoke-lambda-function-block.md) ブロックをグリッド上にブロックし、次の図に示すように、プロパティページを設定します。  
![\[AWS Lambda 関数の呼び出しブロック。\]](http://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/images/lambda-exampleFlow-invoke-lambda.png)

   1. **[Select manually]** (手動で選択) を選択し、ドロップダウンから **[MyFirstConnectLambda]** を選択します。

   1. **[Destination Key]** (宛先キー) ボックスに、「**companyName**」と入力します。(これは Lambda に送信されます)。

   1. **[Set dynamically]** (動的に設定) ボックスを選択します。

   1. [**Namespace**] (名前空間) で、**[User-defined]** (ユーザー定義) を選択します。

   1. [**属性**] に、「**companyName**」と入力します。

   1. **[保存]** を選択します。

1. [コンタクト属性の設定](set-contact-attributes.md) ブロックをグリッド上にドラッグし、**[Add another attribute]** (別の属性を追加) を選択して、次の図に示すように、プロパティページを設定します。  
![\[[コンタクト属性の設定] ブロック。\]](http://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/images/lambda-exampleFlow-set-contact-attribute-2.png)

   1. **名前空間** = **ユーザー定義**。**属性** = **MyBalance**。

   1. **[Set dynamically]** (動的に設定) を選択します。

   1. **名前空間** = **外部**。

   1. **属性** = **customerBalance**。これは Lambda からの結果です。

   1. [**Add another attribute (他の属性を追加)**] を選択します。

   1. **名前空間** = **ユーザー定義**。

   1. **属性** = **MyURL**。

   1. **[Set dynamically]** (動的に設定) を選択します。**名前空間** = **外部**。

   1. **属性** = **websiteUrl**。これは Lambda からの結果です。

   1. **[保存]** を選択します。

1. [プロンプトの再生](play.md) ブロックをグリッド上にブロックし、次の図に示すように、プロパティページを設定します。  
![\[[プロンプトの再生] ブロック。\]](http://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/images/lambda-exampleFlow-play-prompt-3.png)

   1. [**テキスト読み上げまたはチャットテキスト**] を選択し、[**解釈する**] を [**SSML**] に設定します。ボックスに次のテキストを入力します。

      `Your remaining balance is <say-as interpret-as="characters">$.Attributes.MyBalance</say-as>.`

      `Thank you for calling $.Attributes.companyName.`

      `Visit $.Attributes.MyURL for more information.`

   1. **[保存]** を選択します。

1. [切断/ハングアップ](disconnect-hang-up.md) ブロックをグリッドにドラッグします。

1. すべてのブロックを接続して、フローが、この手順の最上部に表示されている画像のようになるようにします。

1. 名前として「**MyFirstConnectFlow**」と入力し、[**公開**] を選択します。

1. ナビゲーションメニューで、**[Channels]** (チャネル)、**[Phone Numbers]** (電話番号) の順に移動します。

1. 電話番号を選択します。

1. [**MyFirstConnectFlow**]、[**保存**] の順に選択します。

ここで、動作を試してみます。番号を呼び出します。あいさつのメッセージ、残高、アクセスするウェブサイトが聞こえるはずです。