

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 授予 Amazon Connect 存取函數的權限 AWS Lambda
<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)
+ [新增 Lambda 函數至 Amazon Connect 執行個體](#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 函數作為聯絡中心，可以如下個任務 [新增 Lambda 函數至 Amazon Connect 執行個體](#add-lambda-function) 所述，使用 Amazon Connect 主控台，新增 Lambda 函數到您的執行個體。這會自動新增資源許可，讓 Amazon Connect 調用 Lambda 函數。否則，如果 Lambda 函數位於不同的區域，您可以使用流程設計工具將其新增到流程中，並使用 [add-permission](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html) 命令新增資源許可，其中包含 Amazon Connect 執行個體的主體 `connect.amazonaws.com` 和 ARN。詳情請參閱 *AWS Lambda 使用者指南*中的[為 AWS Lambda使用資源型政策](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html)。

## 新增 Lambda 函數至 Amazon Connect 執行個體
<a name="add-lambda-function"></a>

您必須先將 Lambda 函數新增至 Amazon Connect 執行個體，然後才可在流程中使用該函數。

**將 Lambda 函數新增到您的執行個體**

1. 在 [https://console.aws.amazon.com/connect/](https://console.aws.amazon.com/connect/) 開啟 Amazon Connect 主控台。

1. 在執行個體頁面的**執行個體別名**資料欄中選擇您的執行個體名稱。此執行個體名稱會出現在您用來存取 Amazon Connect 的 URL 中。  
![\[Amazon Connect 虛擬聯絡中心執行個體頁面、執行個體別名。\]](http://docs.aws.amazon.com/zh_tw/connect/latest/adminguide/images/instance.png)

1. 在導覽窗格中，選擇**流程**。

1. 在 **AWS Lambda** 區段中，使用 **函數** 下拉式清單，選擇要新增到執行個體的函數。
**提示**  
下拉式清單僅列出與您執行個體相同區域中的函數。如果未列出任何函數，請選擇**建立新的 Lambda 函數**，這會開啟 AWS 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 函數**。

現在，您可以在您的流程中參考 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 函數，您都會傳遞一組與進行中聯絡人相關的預設資訊，以及針對新增的**調用 AWS Lambda 函數**區塊在**函數輸入參數**區段中定義的任何其他屬性。

​以下是對​ 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"
}
```

​該請求分為兩個部分：
+ 聯絡資料 – 這是每個聯絡都會由 Amazon Connect 傳遞。部分參數是選用的。

  此區段可能包括之前與聯絡人關聯的屬性，例如在流程中使用**設定聯絡人屬性**區塊時。​如果沒有任何已儲存的屬性，此對應可能是空的。

  下圖顯示這些屬性在**設定連絡人屬性**的屬性頁面中的顯示位置。  
![\[設定聯絡屬性區塊的屬性頁面。\]](http://docs.aws.amazon.com/zh_tw/connect/latest/adminguide/images/lambda-setAttribute.png)
+ 參數 – 這些參數專屬於此呼叫，在您建立 Lambda 函數時​即已定義。下圖顯示這些參數在**調用 AWS Lambda 函數**區塊屬性頁面中的顯示位置。  
![\[調用 AWS Lambda 函數區塊中的函數輸入參數。\]](http://docs.aws.amazon.com/zh_tw/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 最多會重試 3 次，最長 8 秒。此時，流程會進入錯誤分支。

若要進一步了解 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 之間成功傳遞屬性和參數，請設定函數以正確剖析從**叫用 AWS Lambda 函數**區塊或**設定聯絡屬性**傳送的 JSON 請求，並定義應套用的任何業務邏輯。JSON 如何剖析，取決於您函數使用的執行時間。

例如，下列程式碼示範如何使用 Node.JS `exampleParameterKey1` 從**叫用 AWS Lambda 函數**區塊和`exampleAttributeKey1`**設定聯絡屬性**區塊存取 ：

```
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。

![\[調用 AWS Lambda 函數流程區塊，強調使用字串映射或 json。\]](http://docs.aws.amazon.com/zh_tw/connect/latest/adminguide/images/verify-function-lambda-response-validation.png)


Lambda 回應可以高達 32 KB。如果您無法連接 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
```

從函數傳回的輸出必須為一般物件 (flat object) 的鍵值對​，其中的值僅能包含英數字元、破折號及底線。傳回資料的大小必須為小於​ 32 KB 的 UTF-8 資料。

​以下範例為這些 Lambda 函數的 JSON 輸出：

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

如果回應驗證設為 JSON，那麼 Lambda 函數甚至可以傳回巢狀 JSON，例如：

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

只要它們是簡單的鍵值對，您可以傳回任何結果。

## 使用 Lambda 函數回應
<a name="process-function-response"></a>

有兩種方式可在您的流程中使用函數回應。​ 您可以直接參考 Lambda 傳回的變數，或將函數傳回的數值存放為聯絡屬性，然後參考存放的屬性。​ 對 Lambda 函數的回應使用外部參考​時，參考會一律從最新調用的函數接收回應。若要在後續函數叫用前使用函數的回應，回應必須儲存為聯絡屬性，或以參數形式傳遞至下一個函數。​

### 1. 直接存取變數
<a name="access-variables"></a>

 ​如果您直接存取變數，可以在流程區塊中使用它們，但它們不會包含在聯絡記錄中。若要直接在流程區塊中存取這些變數，請在**叫用 AWS Lambda 函數**區塊之後新增 區塊，然後參考下列範例所示的屬性：

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

下圖顯示**播放提示**區塊的屬性頁面。這些變數會在文字轉語音區塊中指定。

![\[播放提示區塊的屬性頁面。\]](http://docs.aws.amazon.com/zh_tw/connect/latest/adminguide/images/lambda-useExternal.png)


​確認在來源屬性中指定的名稱與 Lambda 回傳的金鑰名稱相同。

### 2. 將變數存為聯絡屬性​
<a name="store-variables"></a>

如果您將變數存放為聯絡屬性，則可以在流程任何地方使用這些屬性，而且它們會包含在聯絡紀錄中​。

若要將傳回的值儲存為聯絡屬性，然後參考它們，請在**叫用 AWS Lambda 函數**區塊之後，在流程中使用**設定聯絡屬性**區塊。針對**類型**選擇**使用屬性**、**外部**。按照我們使用的範例，將**目標屬性**設為 `MyAccountId`，並將**屬性**設為 `AccountId`，並為 `MyBalance` 和**平衡**執行相同的操作。此組態顯示於下圖中。

![\[設定聯絡屬性區塊的屬性頁面。\]](http://docs.aws.amazon.com/zh_tw/connect/latest/adminguide/images/lambda-useInSetAttributes.png)


將地址新增為**來源屬性**，並用 `returnedContactAddress` 作為**目標金鑰**。然後新增 `CallerType` 作為**來源屬性**，並將 `returnedContactType` 用於**目標鍵**，如下圖所示。

![\[播放提示區塊的屬性頁面。\]](http://docs.aws.amazon.com/zh_tw/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：//[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/zh_tw/connect/latest/adminguide/images/lambdafunctions-tutorial-create-function-name.png)

1. 選擇**建立函數**。

1. 在**程式碼原始碼**方塊的 **index.js** 索引標籤中，刪除程式碼編輯器中的範本程式碼。

1. 複製下列程式碼並貼至程式碼編輯器，如下圖所示：  
![\[程式碼原始碼區段的部署按鈕。\]](http://docs.aws.amazon.com/zh_tw/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. 在**設定測試事件**對話方塊中，選擇**建立新事件**。在**事件名稱**中，輸入 **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. 選擇 **測試**。您應該會看到類似下列影像的內容：  
![\[程式碼原始碼區段的測試按鈕。\]](http://docs.aws.amazon.com/zh_tw/connect/latest/adminguide/images/lambdafunctions-tutorial-code-source-response.png)

   您的餘額將不同。產生亂數的原始碼。

### 步驟 2：將 Lambda 新增到 Amazon Connect
<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/zh_tw/connect/latest/adminguide/images/instance.png)

1. 在導覽功能表中，選擇**流程**。

1. 在 AWS Lambda 區段中，使用 **Lambda Functions** 下拉式方塊選取 **MyFirstConnectLambda**。  
![\[流程頁面、 AWS Lambda 區段。\]](http://docs.aws.amazon.com/zh_tw/connect/latest/adminguide/images/lambda-add-myfirstconnectlambda.png)

1. 選擇**新增 Lambda 函數**。

### 步驟 3：建立聯絡流程
<a name="tutorial-invokelambda-step3"></a>

以下影像是您要使用此程序中的步驟建置的流程範例。它包含以下區塊：**設定聯絡屬性**、**播放提示**、**調用 AWS Lambda 函式**，另一個**設定聯絡屬性**區塊、另一個**播放提示**區塊，最後是**中斷連線**區塊。

![\[呼叫叫用 AWS Lambda 函數區塊的流程。\]](http://docs.aws.amazon.com/zh_tw/connect/latest/adminguide/images/lambda-exampleFlow.png)


1. 登入 Amazon Connect 管理網站，網址為 https：//*instance name*.my.connect.aws/。

1. 在導覽功能表中，移至**路由**、**流程**、**建立連絡流程**。

1. 將 [設定聯絡屬性](set-contact-attributes.md) 區塊拖曳到網格上，並設定其屬性頁面，如下圖所示：  
![\[​設定聯絡屬性區塊。\]](http://docs.aws.amazon.com/zh_tw/connect/latest/adminguide/images/lambda-exampleFlow-set-contact-attribute-1.png)

   1. **命名空間** = **使用者定義**。

   1. **屬性** = **companyName**。

   1. 選擇**手動設定**。**值** = **GGG**。

   1. 選擇**儲存**。

1. 將 [播放提示](play.md) 區塊拖曳到網格上，並設定其屬性頁面，如下圖所示：  
![\[播放提示區塊。\]](http://docs.aws.amazon.com/zh_tw/connect/latest/adminguide/images/lambda-exampleFlow-play-prompt-1.png)

   1. 選擇**文字轉語音或聊天文字**、**手動設定**，並將**解譯為**設為 **SSML**。在要朗讀文字的方塊中輸入下列文字：

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

   1. 選擇**儲存**。

1. 將另一個 [播放提示](play.md) 區塊拖曳到網格上，並設定其屬性頁面，如下圖所示：  
![\[播放提示區塊。\]](http://docs.aws.amazon.com/zh_tw/connect/latest/adminguide/images/lambda-exampleFlow-play-prompt-2.png)

   1. 選擇**文字轉語音或聊天文字**、**手動設定**，並將**解譯為**設為**文字**。在要朗讀文字的方塊中輸入下列文字：

      `Please try again later.`

   1. 選擇**儲存**。

1. 將 [AWS Lambda 函數](invoke-lambda-function-block.md) 區塊拖曳到網格上，並設定其屬性頁面，如下圖所示：  
![\[調用 AWS Lambda 函數區塊。\]](http://docs.aws.amazon.com/zh_tw/connect/latest/adminguide/images/lambda-exampleFlow-invoke-lambda.png)

   1. 選擇**手動選擇**，然後從下拉式清單中選擇 **MyFirstConnectLambda**。

   1. 在**目的地金鑰**方塊中，輸入 **companyName**。(這會被傳送到 Lambda。)

   1. 選擇**動態設定**方塊

   1. 對於**命名空間**，選擇**使用者定義**。

   1. 對於**屬性**，輸入 **companyName**。

   1. 選擇**儲存**。

1. 將 [設定聯絡屬性](set-contact-attributes.md) 區塊拖曳到網格上，並選擇**新增另一屬性**，然後設定其屬性頁面，如下圖所示：  
![\[​設定聯絡屬性區塊。\]](http://docs.aws.amazon.com/zh_tw/connect/latest/adminguide/images/lambda-exampleFlow-set-contact-attribute-2.png)

   1. **命名空間** = **使用者定義**。**屬性** = **MyBalance**。

   1. 選擇**動態設定**。

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

   1. **屬性** = **customerBalance**。這是來自 Lambda 的結果。

   1. 選擇 **新增其他屬性**。

   1. **命名空間** = **User-defined**。

   1. **屬性** = **MyURL**。

   1. 選擇**動態設定**。**命名空間** = **外部**。

   1. **屬性** = **websiteUrl**。這是來自 Lambda 的結果。

   1. 選擇**儲存**。

1. 將 [播放提示](play.md) 區塊拖曳到網格上，並設定其屬性頁面，如下圖所示：  
![\[播放提示區塊。\]](http://docs.aws.amazon.com/zh_tw/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. 在導覽功能表中，請前往**頻道**、**電話號碼**。

1. 請選擇您的電話號碼。

1. 選擇 **MyFirstConnectFlow**，然後選擇**儲存**。

現在嘗試一下。撥打該電話號碼。您應該聽到一條問候訊息，您的餘額，以及要造訪的網站。