

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 授予 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 函数，您可以使用 Amazon Connect 控制台将 Lambda 函数添加到您的实例中，如下一个任务（[将 Lambda 函数添加到 Amazon Connect 实例](#add-lambda-function)）中所述。这会自动添加允许 Amazon Connect 调用 Lambda 函数资源的权限。否则，如果 Lambda 函数位于不同的区域中，您可以使用流设计器将其添加到流中，并使用主体为 `connect.amazonaws.com` 的 [add-permission](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html) 命令和 Amazon Connect 实例 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. 打开 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/zh_cn/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 函数**。确认在 **Lambda 函数**下添加了函数的 ARN。

现在，您可以在流中引用该 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_cn/connect/latest/adminguide/images/lambda-setAttribute.png)
+ 参数 - 即在创建 Lambda 函数时专为此次呼叫定义的参数。下图显示了这些参数在**调用 AWS Lambda 函数**数据块的属性页面中的显示位置。  
![\[调用 AWS Lambda 函数块中的函数输入参数。\]](http://docs.aws.amazon.com/zh_cn/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 如何重试的更多信息，请参阅 Lambda 中的[错误处理和自动重试](https://docs.aws.amazon.com/lambda/latest/dg/retries-on-errors.html)。 AWS 

## 调用多个 Lambda 函数的最佳实践
<a name="invoke-multiple-functions"></a>

Amazon Connect 将 Lambda 函数序列的持续时间限制为 20 秒。当总执行时间超过此阈值时，它将超时并显示错误消息。由于在 Lambda 函数运行时客户听不到声音，建议在函数之间添加**播放提示**数据块以在长时间交互期间保持客户的参与。

通过使用**播放提示**数据块分解 Lambda 函数链，您可以调用持续时间超过 20 秒阈值的多个函数。

## 配置 Lambda 函数以解析事件
<a name="function-parsing"></a>

要在您的 Lambda 函数和 Amazon Connect 之间成功传递属性和参数，请将您的函数配置为正确解析从 **Invoke AWS Lambda 函数**块或**设置联系人属性**发送的 JSON 请求，并定义应应用的任何业务逻辑。JSON 的解析方式取决于函数所使用的运行时系统。

例如，以下代码显示了如何使用 Node.JS `exampleParameterKey1` 从 **Invoke 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，并且必须在流程中配置 Invoke **Lambda AWS ** 函数块时进行设置。如果将响应验证设置为 STRING\$1MAP，则 Lambda 函数应返回一个由字符串类型 key/value 对组成的平面对象。如果将响应验证设置为 JSON，则 Lambda 函数可以返回任何有效的 JSON，包括嵌套的 JSON。

![\[调用 AWS Lambda 函数流程块，重点介绍字符串映射或 json 的用法。\]](http://docs.aws.amazon.com/zh_cn/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
```

函数返回的输出必须是 key/value 成对的平面对象，其值仅包含字母数字、破折号和下划线字符。返回数据的大小必须小于 UTF-8 数据的 32 KB。

以下示例显示了 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>

 如果直接访问变量，那么可以在流数据块中使用这些变量，但这些变量不会包含在联系记录中。要直接在流程块中访问这些变量，请在 Invo **ke AWS Lambda 函数**块之后添加该模块，然后引用这些属性，如以下示例所示：

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

下图显示了**播放提示**数据块的属性页面。变量是在 text-to-speech方块中指定的。

![\[“播放提示”数据块的属性页面。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/lambda-useExternal.png)


请确保为源属性指定的名称与从 Lambda 返回的键名称匹配。

### 2. 将变量存储为联系属性
<a name="store-variables"></a>

如果将变量存储为联系属性，那么可以通过流来使用这些变量，并且这些变量将包含在联系记录中。

要将返回的值存储为联系人属性并引用它们，请在流程中使用 **Invoke AWS Lambda 函数**块之后的 “**设置联系人属性”** 块。选择**使用属性**，**类型**为**外部**。遵循我们正在使用的示例，将**目标属性**设置为 `MyAccountId`，将**属性**设置为 `AccountId`，对 `MyBalance` 和**平衡**执行同样的操作。此配置如下图所示。

![\[“设置联系属性”数据块的属性页面。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/lambda-useInSetAttributes.png)


添加“地址”作为**源属性**，并使用 `returnedContactAddress` 作为**目标键**。然后，添加 `CallerType` 作为**源属性**，并使用 `returnedContactType` 作为**目标键**，如下图所示。

![\[“播放提示”数据块的属性页面。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/lambda-useAttributeInPlayPrompt.png)


请确保为源外部属性指定的名称与从 Lambda 返回的键名称匹配。

## 教程：创建 Lambda 函数并在流中调用
<a name="tutorial-invokelambda"></a>

### 第 1 步：创建 Lambda 示例
<a name="tutorial-invokelambda-step1"></a>

1. 登录 AWS 管理控制台 并打开 AWS Lambda 控制台，网址为[https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)。

1. 在中 AWS Lambda，选择**创建函数**。

1. 如果尚未选择，请选择**从头开始创建**。在**基本信息** 下，对于**函数名称**，输入 **MyFirstConnectLambda**。对于所有其他选项，接受默认设置。这些选项如以下 AWS Lambda 控制台的图像所示。  
![\[AWS Lambda 控制台。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/lambdafunctions-tutorial-create-function-name.png)

1. 选择**创建函数**。

1. 在**代码源**框的 **index.js** 选项卡中，从代码编辑器中删除模板代码。

1. 复制以下代码并粘贴到代码编辑器中，如下图所示：  
![\[“代码源”部分，“部署”按钮。\]](http://docs.aws.amazon.com/zh_cn/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_cn/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_cn/connect/latest/adminguide/images/instance.png)

1. 在导航菜单上，选择**流**。

1. 在该 AWS Lambda 部分中，使用 **Lambda 函数**下拉框进行选择。**MyFirstConnectLambda**  
![\[流程页面， AWS Lambda 部分。\]](http://docs.aws.amazon.com/zh_cn/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_cn/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_cn/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_cn/connect/latest/adminguide/images/lambda-exampleFlow-play-prompt-1.png)

   1. 选择**Text-to-speech 或聊天文本**，**手动设置**，然后将 “**解释为” 设置为** **SSML**。在要朗读的文本框中输入以下文本：

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

   1. 选择**保存**。

1. 将另一个[播放提示](play.md)数据块拖到网格上，然后配置其属性页面，如下图所示：  
![\[“播放提示”数据块。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/lambda-exampleFlow-play-prompt-2.png)

   1. 选择**Text-to-speech 或聊天文本**，**手动设置**，然后将 “**解释为” 设置为** “**文本**”。在要朗读的文本框中输入以下文本：

      `Please try again later.`

   1. 选择**保存**。

1. 将一个[AWS Lambda 函数](invoke-lambda-function-block.md)数据块拖到网格上，然后配置其属性页面，如下图所示：  
![\[一个 Invoke AWS Lambda 函数块。\]](http://docs.aws.amazon.com/zh_cn/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_cn/connect/latest/adminguide/images/lambda-exampleFlow-set-contact-attribute-2.png)

   1. **命名空间** = **用户定义**。**属性** = **MyBalance**。

   1. 选择**动态设置**。

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

   1. **属性** = **customerBalance**。这是来自 Lambda 的结果。

   1. 选择**添加其他属性**。

   1. **命名空间** = **用户定义**。

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

   1. 选择**动态设置**。**命名空间** = **外部**。

   1. **属性** = **websiteUrl**。这是来自 Lambda 的结果。

   1. 选择**保存**。

1. 将一个[播放提示](play.md)数据块拖到网格上，然后配置其属性页面，如下图所示：  
![\[“播放提示”数据块。\]](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/lambda-exampleFlow-play-prompt-3.png)

   1. 选择**Text-to-speech 或聊天文本**，然后将 “**解释为” 设置为** **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**并选择 “**保存**”。

现在试试吧。拨打号码。您应该会听到问候消息、您的余额和要访问的网站。