

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

# Amazon Connect 流数据块：设置路由标准
<a name="set-routing-criteria"></a>

本主题定义了用于将任何渠道中的联系人路由到相应队列的流数据块。

## 说明
<a name="set-routing-criteria-description"></a>

为联系设置路由标准。
+ 可对语音、聊天、任务和电子邮件等任何通道的联系人设置路由标准，以定义联系人在其队列中的路由方式。路由标准是一个或多个路由步骤的序列。
+ 路由步骤是一项或多项要求的组合，必须满足这些要求才能将此联系人路由到座席。您可以为每个路由步骤设置可选的过期持续时间。例如，您可以创建一个路由步骤，要求根据用户 ID 在一定的有效期内只将此联系人提供给特定的座席。再举个例子，您可以创建一个非过期路由步骤，要求如下：**Language:English >= 4 ** AND **Technology:AWS Kinesis >= 2**。
+ 要求是使用预定义的属性名称、其值、比较运算符和熟练度创建的条件。例如，**Technology:AWS Kinesis >= 2**。
+ 将**设置路由标准**数据块与**转接队列**数据块一起使用，因为后者会将联系人转接到 Amazon Connect 队列并激活对此联系人指定的路由标准。
+ 如果联系人被转移到座席队列，则对联系人设置的路由标准将不会生效。有关更多信息，请参阅 [根据座席熟练程度在 Amazon Connect 中设置路由](proficiency-routing.md)。
+ 如果过期时间 (DurationInSeconds) 设置得太短，则可能会阻止 Amazon Connect 在第一个代理错过电话时将联系人正确路由到下一个最熟练的代理。默认的基于队列的路由可能与基于熟练程度的路由竞争，从而导致这两种方法之间的路由行为不一致。

## 支持的渠道
<a name="set-routing-criteria-channels"></a>

下表列出了此数据块如何路由正在使用指定渠道的联系人。


| 频道 | 是否支持？ | 
| --- | --- | 
| 语音 | 是 | 
| Chat | 是 | 
| 任务 | 是 | 
| 电子邮件 | 是 | 

## 流类型
<a name="set-routing-criteria-types"></a>

您可以在以下[流类型](create-contact-flow.md#contact-flow-types)中使用此数据块：
+ 入站流
+ 客户队列流
+ 转接座席流
+ 转接队列流

## 使用预定义属性设置路由标准的先决条件
<a name="set-routing-criteria-prerequisites"></a>

在对联系人设置路由标准之前，您必须先完成以下步骤：

1.  创建[创建用于将联系人路由到座席的预定义属性](predefined-attributes.md)。

1.  [在 Amazon Connect 实例中为座席分配熟练度](assign-proficiencies-to-agents.md)使用先前创建的预定义的属性 

## 何时使用“设置路由标准”数据块
<a name="set-routing-criteria-when"></a>

有两种方法可以将联系直接路由到座席：
+ **选项 1：使用**设置路由标准**数据块来指定首选座席的路由标准**。在以下情况下，此选项更好：
  + 您希望能够同时指向多个座席。例如，主要为一位客户提供支持的一支四人支持团队。
  + 如果首选座席不可用，您希望能够选择回退到队列中更广泛的座席池。
  + 您希望在标准队列的指标中报告该联系。

  选择此选项的一个优点是，它使用座席的 userID（例如 janedoe），因此它比使用 ARN 的选项 2 更易于配置。

  路由标准的主要缺点是它会影响队列指标（SLA、队列时间等）。如果 QueueA 中的联系正在专门等待 Agent12，则该联系不会被其他可用的座席接听。它可能会违反您的定义 SLAs。您可以通过查看实时指标报告来看到这种情况的发生；请参阅[使用一键式向下钻取](one-click-drill-downs.md)。
**注意**  
在设置路由和指定超时配置时，请记住这种情况以适应这些影响。
+ **选项 2：使用座席的队列**。在以下情况下，此选项通常更好：
  + 联系**仅**面向该特定座席，而不面向其他座席。
  + 您不希望在标准队列下报告该联系。有关标准队列和座席队列的信息，请参阅[队列：标准和座席](concepts-queues-standard-and-agent.md)。

  有关设置此设置的说明，请参阅[将联系人转接到座席队列](transfer-to-agent.md)。

## 路由标准是如何运作的
<a name="set-routing-criteria-how-it-works"></a>

当联系人转接到标准队列时，Amazon Connect 会激活在联系的路由标准中指定的第一步。

1. 只有当座席满足联系的活动路由步骤中指定的要求时，该座席才会加入该联系。

1. 如果在该步骤到期之前仍未找到此类座席，Amazon Connect 会移至在路由标准中指定的下一个步骤，直到满足其中一个标准。

1.  当所有步骤都到期后，会将联系转接到其路由配置文件中排队时间最长的可用座席。

**注意**  
如果未在路由步骤中指定到期时间，则该路由步骤从不会过期。

**您可以在路由标准中使用以下项目：**
+ 请从以下内容中选择：
  + 一个或多个基于用户 ID 或用户名的首选座席。
  + 使用 `AND` 条件的最多八个属性。
  + 一个路由步骤中最多三个 OR 条件。每个以 OR 分隔的要求最多可以有八个属性。
    + 只能在动态设置属性时使用 OR。有关更多信息，请参阅 [如何设置路由标准](#set-routing-criteria-using-the-flow-block)。
  + 根据所选等级排除熟练程度的 NOT 运算符。只能在动态设置属性时使用 NOT。有关更多信息，请参阅 [如何设置路由标准](#set-routing-criteria-using-the-flow-block)。

**注意**  
支持嵌套表达式，但 OR 表达式必须位于顶层。可以在 OR 内放置一个 AND，但反之则不行。

此外，属性和路由标准必须具备以下条件；
+ 每个属性都必须有相关的熟练度。
+  每个熟练程度等级都必须使用“>=”比较运算符或从 1 到 5 的熟练程度等级范围。
+ 标准的每个步骤都必须有一个定时过期计时器。
+ 标准的最后一步可以有一个定时或不定时的过期计时器。

## 如何设置路由标准
<a name="set-routing-criteria-using-the-flow-block"></a>

您可以在流数据块用户界面中手动设置所需的路由标准，也可以根据来自 [AWS Lambda 函数](invoke-lambda-function-block.md)数据块的输出动态设置所需的路由标准。

![“设置路由标准”属性页面。](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/set-routing-criteria-using-the-flow-block.png)


### 手动设置路由标准
<a name="set-routing-criteria-set-manually"></a>

使用此选项，您可以按照在**设置路由标准**数据块中指定的方式，手动设置联系的路由标准。参见下面的流程示例，在该流程中，通过从下拉列表中选择属性和值，将预定义的属性手动添加到路由步骤中。

![手动设置路由标准流数据块。](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/set-routing-criteria-set-manually.png)


 根据需要，即使在此选项中，您也可以使用 JSONPath 参考动态配置预定义的属性值。例如，您可以指定``$.External.language`` JSONPath 参考，而不是根据所有联系人的``Technology``要求对`AWS DynamoDB`值进行硬编码。有关 JSONPath 参考的更多信息，请参阅[Amazon Connect 中可用的联系人属性列表及其 JSONPath 参考文献](connect-attrib-list.md)。

### 动态设置路由标准
<a name="set-routing-criteria-set-dynamically"></a>

您可以根据**调用 AWS Lambda 函数**数据块的输出动态设置联系人路由标准。
+ 在 [AWS Lambda 函数](invoke-lambda-function-block.md)数据块中，配置 Lambda 函数以 JSON 格式返回路由标准，并将响应验证设置为 JSON。有关使用**调用 AWS Lambda 函数**的更多信息，请参阅[授予 Amazon Connect 访问您的 AWS Lambda 功能的权限](connect-lambda-functions.md)文档。
+  在 `Set routing criteria` 数据块中，选择具有上述 Lambda 属性的**动态设置**选项：**命名空间**为 `External`，而**键**如上述 Lambda 响应中所述。例如，键是 `MyRoutingCriteria`，它指向下一节示例 Lambda 响应中的路由标准。

### 用于设置路由标准的 Lambda 函数示例
<a name="set-routing-criteria-sample-lambda-function"></a>

 以下 Lambda 示例使用 `AndExpression` 返回路由标准：

```
export const handler = async(event) => {
  return {
   "MyRoutingCriteria": {
    "Steps": [
      {
        "Expression": {
          "AndExpression": [
            {
              "AttributeCondition": {
                "Name": "Language",
                "Value": "English",
                "ProficiencyLevel": 4,
                "ComparisonOperator": "NumberGreaterOrEqualTo"
              }
            },
            {
              "AttributeCondition": {
                "Name": "Technology",
                "Value": "AWS Kinesis",
                "ProficiencyLevel": 2,
                "ComparisonOperator": "NumberGreaterOrEqualTo"
              }
            }
          ]
        },
        "Expiry": {
          "DurationInSeconds": 30
        }
      },
      {
        "Expression": {
          "AttributeCondition": {
            "Name": "Language",
            "Value": "English",
            "ProficiencyLevel": 1,
            "ComparisonOperator": "NumberGreaterOrEqualTo"
          }
        }
      }
    ]
  }
}
};
```

以下 Lambda 示例使用 `OrExpression` 返回路由标准：

```
export const handler = async(event) => {
  return {
   "MyRoutingCriteria": {
    "Steps": [
      {
        "Expression": {
          "OrExpression": [
            {
              "AttributeCondition": {
                "Name": "Technology",
                "Value": "AWS Kinesis Firehose",
                "ProficiencyLevel": 2,
                "ComparisonOperator": "NumberGreaterOrEqualTo"
              }
            },
            {
              "AttributeCondition": {
                "Name": "Technology",
                "Value": "AWS Kinesis",
                "ProficiencyLevel": 2,
                "ComparisonOperator": "NumberGreaterOrEqualTo"
              }
            }
          ]
        },
        "Expiry": {
          "DurationInSeconds": 30
        }
      }
    ]
  }
}
};
```

以下 Lambda 示例使用 `NOTAttributeCondidtion` 和一系列熟练程度等级来返回路由标准：

```
export const handler = async(event) => {
  const response = {
    "MyRoutingCriteria": {
        "Steps": [
            {
                "Expression": {
                    "NotAttributeCondition": {
                        "Name" : "Language",
                        "Value" : "English",
                        "ComparisonOperator": "Range",
                        "Range" : {
                            "MinProficiencyLevel": 4.0,
                            "MaxProficiencyLevel": 5.0
                        }
                    }
                },
                "Expiry" : {
                    "DurationInSeconds": 30
                }
            }
        ]
    }
}    
    return response;
};
```

## 路由步骤的状态是什么？为什么需要它们？
<a name="set-routing-criteria-why-status-routing-step"></a>

1.  **非活动：**激活路由标准后，第一步立即变为“非活动”。路由引擎会根据到期计时器逐一执行标准。

   1.  每个步骤都以*非活动*开头，直到上一步到期。

1.  **活动：**当一个步骤正在执行来获取匹配项时，状态将设置为“活动”。

1.  **已过期：**当 Amazon Connect 在步骤期间未找到座席并且计时器到期时，路由引擎会继续执行下一步。上一步被视为*已过期*。

1.  **已加入：**每当座席成功地与特定步骤的联系匹配时，该步骤的状态都将设置为*已加入*。

1.  **已中断：**如果联系人等待时间过长，或者运营主管可能会决定中断流并更改路由标准。这可以在特定步骤处于活动状态时完成，例如，某项任务已等待 24 小时，而经理想要更改标准。然后，步骤状态将设置为*已中断。*

1.  **已停用：**当客户掉线或连接中断时，路由将停止。

## 使用路由标准，选择特定的首选座席
<a name="set-routing-criteria-specific-preferred-agent"></a>

 您还可以根据用户 ID 而不是预定义属性，使用路由标准将队列中的联系人限制为特定的首选座席或一组首选座席。

例如，如果您发现某个特定客户最近就同一主题联系了您的联络中心，则您可能会尝试将此客户路由到上次处理其问题的同一个座席。为此，您可以将路由步骤设置为在路由步骤过期之前的一段时间内以此特定座席为目标。

以下是有关此功能如何运作的常见问题。

 **我能否将此功能与 Customer Profiles 最后一位座席标识符一起使用，将客户路由到最后一位处理其问题的座席？** 

Amazon Connect 客户档案根据联系记录提供了七个 out-of-the框默认属性，包括最后一个代理标识符属性，用于标识客户最后联系的代理。您可以使用这些数据将特定客户的新联系人路由到之前处理过其联系人的同一座席。为此，请先使用 Customer Profiles 流数据块，使用至少一个搜索标识符检索 Customer Profiles，例如 `Phone = $.CustomerEndpoint.Address`。有关更多信息，请参阅 [属性：获取配置文件](customer-profiles-block.md#customer-profiles-block-properties-get-profile)。

然后，您可以使用 “****设置路由标准**” 块中的 “手动**设置” 选项来指定应将每个联系人路由到`$.Customer.CalculatedAttributes._last_agent_id`（ JSONPath参考），而不是对特定的用户 ID 进行硬编码，并设置过期计时器以限制每位联系人路由到最后一个座席的时长。有关 JSONPath 参考的更多信息，请参阅[Amazon Connect 中可用的联系人属性列表及其 JSONPath 参考文献](connect-attrib-list.md)。有关 Amazon Connect Customer Profiles 提供的默认属性的更多信息，请参阅 [Amazon Connect Customer Profiles 中的默认计算的属性](customerprofiles-default-calculated-attributes.md)。

 **如果首选座席不在，会发生什么？** 

 如果您设置了针对特定首选座席的路由步骤，则联系人将仅限于此座席，直到路由步骤过期为止。这与以下情况无关：

1.  座席是否在线

1.  座席在线，但忙于处理其他联系人，现在无法再路由其他联系人 

1.  座席在线，但处于自定义非生产状态  

1.  座席已从实例中删除（他们的 userID 仍然被认为是有效的）  

 例如，假设您将特定联系人限制为目标座席 Jane Doe，有效期为 30 秒，但 Jane Doe 目前处于离线状态。尽管如此，联系人仍将在 30 秒内限制给 Jane Doe，之后路由步骤将过期，并且可以将联系人提供给队列中的其他空闲座席。  

 **在单个首选座席步骤中，我最多可以锁定多少位座席？** 

 您最多可以锁定 10 位座席。  

 **我能否创建既包括基于首选座席的路由步骤，也包括基于预定义属性的路由步骤的路由标准？** 

 可以。例如，您可以创建两步路由标准，其中步骤 1 根据您的自定义匹配学习模型预测为给定有效期的最合适座席的座席，通过用户 ID 将联系人定向给特定的首选座席，然后步骤 2 根据预定义的属性（例如要求最低西班牙语熟练度）锁定联系人。

## 场景
<a name="set-routing-criteria-scenarios"></a>

 有关使用此数据块的场景，请参阅以下主题：
+  [如何在 Amazon Connect 中引用联系属性](how-to-reference-attributes.md) 