

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

# 在 Amazon Connect 中使用客户优先回拨模式
<a name="customer-first-cb"></a>

设置排队回拨时，您可以额外选择是使用座席优先回拨模式，还是客户优先回拨模式。
+ **座席优先回拨模式**为默认值。会将回拨提供给座席，由其在拨打给客户之前选择接受或拒绝。
+ 仅当您的 Amazon Connect 实例[已启用](enable-nextgeneration-amazonconnect.md)下一代 Amazon Connect 时，**客户优先回拨模式**才可用。在这种模式下，Amazon Connect 会先拨打客户的电话，只有当客户接听了他们所收到的回拨时，才会向座席提供回拨。

**重要**  
客户优先回拨模式在 pay-per-feature定价模式中不可用。
如果您在已激活并开始使用客户优先回拨后禁用下一代 Amazon Connect，则客户优先回拨模式也会被禁用。

**Topics**
+ [客户优先回拨的生命周期](#queued-callback-customer-first-callback-contact-lifecycle)
+ [重试](#customer-first-callback-retries)
+ [客户优先回拨的指标](#customer-first-callback-metrics)
+ [示例联系记录](#customer-first-callback-contact-lifecycle-contact-model)
+ [流示例](#customer-first-callback-contact-lifecycle-sample-flows)

## 客户优先回拨的生命周期
<a name="queued-callback-customer-first-callback-contact-lifecycle"></a>

客户优先回拨的生命周期分布在三种不同的联系中，如下图所示。

![客户优先回拨的生命周期，分布在三种不同的联系中。](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/queued-callback-customer-first-callback-contact-lifecycle-1.png)


以下是对每种联系的描述。

1. **入站客户联系（C1）**为入站语音联系。它类似于所有其他入站客户联系。

1. **排队回拨联系（C2）**为客户优先回拨的排队环节。它有一个新的启动方法，即 CALLBACK\_CUSTOMER\_FIRST\_QUEUED。
   + 如果您在[转接队列](transfer-to-queue.md)数据块中选择了**设置创建流**，则 C2 会触发创建流。如果在[转接队列](transfer-to-queue.md)数据块中指定了**初始延迟**，则它会在工作队列中排队之前和初始延迟之后执行此操作。
   + C2 在[转接队列](transfer-to-queue.md)数据块中不支持**最大重试次数**和**尝试之间的最短时间**设置。该功能仅可用于座席优先回拨。

1. **已拨打回拨联系（C3）**为客户优先回拨的已拨打环节。它有一个新的启动方法，即 CALLBACK\_CUSTOMER\_FIRST\_DIALED。
   + C3 会触发您在[转接队列](transfer-to-queue.md)流数据块中指定的所需出站回拨流。您只能为客户优先回拨模式指定出站回拨流，而不是为座席优先回拨模式指定出站回拨流。
   + 对于客户优先回拨，您可以根据[检查呼叫进度](check-call-progress.md)流数据块的输出，在为 C3 指定的出站流中配置重试和不同尝试之间的时间。这样做的目的是，确定联系人是通过语音邮件回复的，还是通过人声回复的。
   + 在确认客户存在后，C3 的流应该有一个[转接队列](transfer-to-queue.md)流数据块，此数据块配置为将联系置于其队列中，以寻找下一个可用的座席。
   + 您可以通过使用[设置路由标准](set-routing-criteria.md)或[更改路由优先级/龄期](change-routing-priority.md)数据块在流中自定义此联系的路由优先级。

**注意**  
在创建 C2 之前，您必须至少设置一次最终工作队列。  
您可以使用[设置工作队列](set-working-queue.md)在 C1 入站流中执行此操作。或者，在配置 C2 时，可以在[转接队列](transfer-to-queue.md)数据块中指定队列。
您可以通过为 C2 使用**设置创建流**，或者使用您为 C3 指定的出站流来修改最终工作队列。
当您在联系生命周期的任何阶段（步骤 C1、C2 或 C3）为回拨设置最终工作队列时，以下阶段将继承该队列。

## 客户首次回传的重试次数
<a name="customer-first-callback-retries"></a>

客户优先回调的重试行为与座席优先回传的重试行为有很大不同。重试是在已拨的回拨联系人 (C3) 上配置的，而不是在排队的回拨联系人 (C2) 上配置的。

### 重试的工作原理
<a name="customer-first-callback-retries-how-they-work"></a>
+ C2 不支持重试。[转接队列](transfer-to-queue.md)区块中的 “**最大重试次数**” 和 “**最短尝试间隔时间**” 设置仅适用于代理首次回调。
+ 对于客户首次回调，将在为 C3 指定的出站回拨流中配置重试。
+ 当需要重试时（例如，检测到语音信箱），就会创建一个新的被叫回拨联系人 C4。C4 继承在 C3 上设置的用户定义属性。

### 使用 “检查呼叫进度” 配置重试次数
<a name="customer-first-callback-retries-check-call-progress"></a>

使用 C3 出站流中的[检查呼叫进度](check-call-progress.md)区块来检测是否有人或语音信箱接听了呼叫。根据输出，按如下方式配置流程：
+ **检测到语音邮件** (`VOICEMAIL_BEEP`,`VOICEMAIL_NO_BEEP`)-在 C3 上设置一个`retry`属性，然后重新创建回拨联系人 (C4)。
+ **人为检测到** (`HUMAN_ANSWERED`)-转接到队列，以便代理可以加入呼叫。
+ **其他或未解决的状态**-根据需要配置回退处理。

C3 联系人记录上的`AnsweringMachineDetectionStatus`字段会捕获答录机的完整检测结果。可能的值包括：

`HUMAN_ANSWERED` \| `VOICEMAIL_BEEP` \| `VOICEMAIL_NO_BEEP` \| `AMD_UNANSWERED` \| `AMD_UNRESOLVED` \| `AMD_NOT_APPLICABLE` \| `SIT_TONE_BUSY` \| `SIT_TONE_INVALID_NUMBER` \| `SIT_TONE_DETECTED` \| `FAX_MACHINE_DETECTED` \| `AMD_ERROR`

### 调整重试联系人的优先级
<a name="customer-first-callback-retries-adjust-priority"></a>

为确保正确路由重试联系人，请使用创建 C4 联系人时运行的回拨创建流程。推荐的方法是：

1. **在 C3 上设置重试属性** — 在重新创建回拨联系人之前，请使用 C3 出站流程中的 “**设置联系人属性**” 块添加用户定义的属性（例如）。`retry = true`

1. **C4 继承 C3 的用户定义属性** — 创建 C4 联系人时，它会自动从 C3 继承所有用户定义的属性，包括该属性。`retry`

1. **在 C4 的回传创建流程中检查重试属性** — 在为 C4 配置的回调创建流程中，使用**检查联系人属性**块来评估该`retry`属性是否存在。

1. **如果重试，请调整路由优先级**-如果该`retry`属性存在，则在联系人进入工作队列之前，使用[设置路由标准](set-routing-criteria.md)或[更改路由优先级/龄期](change-routing-priority.md)块将优先级调整后的联系人排入队列。

这种方法允许您将首次尝试回调与重试区分开来，并在不依赖外部状态的情况下应用自定义优先级逻辑。

**注意**  
重试联系人 (C4) 位于队列的后面，它们不会保留其原始位置。如上所述，您可以通过在 C4 的回拨创建流程中调整路由优先级或路由期限来弥补这一点。

**注意**  
该[设置路由标准](set-routing-criteria.md)区块可以在出站流中用于动态提高重试尝试的优先级（例如，使用重试计数器属性将优先级 5 提高到 3 比 1）。优先级更改在联系人重新进入队列时生效。

### 控制重试时间
<a name="customer-first-callback-retries-timing"></a>

默认情况下，客户首次回调的重试时间不受系统控制，您可以完全控制何时启动重试。

要在重试尝试之间引入延迟，请在转移到队列之前在 C4 创建流程中添加一个 Wai **t** 块。这允许您定义特定的间隔（例如，等待 5 分钟后再排队），防止立即尝试 back-to-back拨号。

带有计时控制的典型重试流程如下所示：

1. [检查呼叫进度](check-call-progress.md)— 检测到语音信箱。

1. **设置联系人属性** — 设置`retry = true`（也可以选择增加重试计数器）。

1. **创建回调** — 将联系人重新创建为 C4。

1. **等待**区块 — 在排队之前等待所需的间隔。

## 客户优先回拨的指标
<a name="customer-first-callback-metrics"></a>

您可以在队列性能控制面板中或使用 [GetMetricDataV2](https://docs.aws.amazon.com/connect/latest/APIReference/API_GetMetricDataV2.html) API 访问以下指标。
+ [平均队列放弃时间 - 客户首次回拨](metrics-definitions.md#average-queue-abandon-time-customer-first-callback)
+ [平均队列应答时间 - 客户首次回拨](metrics-definitions.md#average-queue-answer-time-customer-first-callback)
+ [平均应答速度 - 已拨打客户首次回拨](metrics-definitions.md#average-speed-of-answer-customer-first-callback-dialed)
+ [客户连接后的平均等待时间 - 客户首次回拨](metrics-definitions.md#average-wait-time-after-customer-connection-customer-first-callback)
+ [回拨尝试 - 客户首次回拨](metrics-definitions.md#callback-attempts-customer-first-callback)
+ [联系数量 - 座席首次回拨](metrics-definitions.md#contact-volume-agent-first-callback)
+ [联系数量 - 客户首次回拨](metrics-definitions.md#contact-volume-customer-first-callback)
+ [已放弃的联系 - 客户首次回拨](metrics-definitions.md#contacts-abandoned-customer-first-callback)
+ [已处理的联系 - 客户首次回拨](metrics-definitions.md#contacts-handled-customer-first-callback)

## 客户优先回拨的示例联系记录
<a name="customer-first-callback-contact-lifecycle-contact-model"></a>

以下是示例联系记录，用于展示针对客户优先回拨的 C2 和 C3 阶段存储了哪些信息。

### 示例 C2 排队客户优先回拨联系记录
<a name="customer-first-callback-contact-lifecycle-contact-model-c2"></a>

```
InitialContactId : C1 (Inbound contact)
ContactId : C2 (this contact)
PreviousContactId : C1 (Inbound contact)
NextContactId : C3 (Dialed customer first callback contact)
Channel : VOICE,
InitiationMethod : CALLBACK_CUSTOMER_FIRST_QUEUED, 

ConnectedToSystemTimeStamp : time // Timestamp when callback creation flow got started

CustomerEndpoint : customer phone number endpoint

DisconnectTimestamp : time // Timestamp indicating contact is disconnected and customer will be dialed

DisconnectReason : // Disconnect reason code 

InitiationTimeStamp : time // Timestamp indicating customer first callback has been created in connect systems

QueueInfo : {
    Arn : arn // Queue arn representing customer first callback queue
    EnqueueTimeStamp : time // Timestamp indicating customer first callback has been put in queue and waiting out to dial.
    DequeueTimeStamp : time // Timestamp indicating customer first callback has been taken out from queue to dial out end customer.
    Duration : time // total time it took connect systems to dial out end customer. 
}
```

### 示例 C3 拨打客户优先回拨联系
<a name="customer-first-callback-contact-lifecycle-contact-model-c3"></a>

```
InitialContactId : C1 (Inbound contact)
ContactId : C3 (this contact)
PreviousContactId : C2 (Queued customer first callback contact)
Channel : VOICE,
InitiationMethod : CALLBACK_CUSTOMER_FIRST_DIALED,

ConnectedToSystemTimeStamp : time // Timestamp when the outbound call associated with callback was connected with customer.

CustomerEndpoint : customer phone number endpoint

SystemEndpoint : Outbound caller id assigned to the outbound queue

Agent : {
    // All agent information associated with the outbound call. 
    // Like Agent Arn, ConnectToAgentTimestamp, ACW duration etc. 
}

AgentConnectionAttempts : number

DisconnectTimestamp : time // Timestamp indicating outbound call for the callback is disconnected

DisconnectReason : // Disconnect reason code

SegmentAttributes : { 
    'connect:TrafficType' : 'CUSTOMER_FIRST_CALLBACK'
}, 

AnsweringMachineDetectionStatus : HUMAN_ANSWERED|VOICEMAIL_BEEP|VOICEMAIL_NO_BEEP|AMD_UNANSWERED|AMD_UNRESOLVED|AMD_NOT_APPLICABLE|SIT_TONE_BUSY|SIT_TONE_INVALID_NUMBER|SIT_TONE_DETECTED|FAX_MACHINE_DETECTED|AMD_ERROR|AMD_UNRESOLVED_SILENCE(WIP)

CustomerVoiceActivity : {
    GreetingStartTimestamp : timestamp
    GreetingEndTimestamp : timestamp
}

InitiationTimeStamp : time // Timestamp indicating start of outbound call to customer
 
QueueInfo : {
    Arn : arn // Queue arn representing customer first callback queue
    EnqueueTimeStamp : time // Timestamp indicating customer first callback has been put in queue to join with agent.
    DequeueTimeStamp : time // Timestamp indicating customer first callback has been taken out from queue to join with agent.
    Duration : time // total time it took connect systems to join dialed end customer with agent.
    CallbackTotalQueueDuration : time // total time the customer first callback spent in queue (Includes the total queued time for C2 and C3.)
}
```

## 客户优先回拨的示例流
<a name="customer-first-callback-contact-lifecycle-sample-flows"></a>

以下示例流显示了如何能够为客户优先回拨配置流。

### 示例入站呼叫流
<a name="customer-first-callback-contact-lifecycle-sample-flows-inbound"></a>

下图显示了流中的[转接队列](transfer-to-queue.md)数据块。

![客户优先回拨流中的“转接队列”数据块。](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/customer-first-callback-contact-lifecycle-sample-flows-inbound-1.png)


在此流中，[转接队列](transfer-to-queue.md)已配置**设置创建流**，并指定了出站拨号流。

![“转接队列”数据块，其中配置了“设置创建流”并指定了出站拨号流。](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/customer-first-callback-contact-lifecycle-sample-flows-inbound-2.png)


### 示例回拨创建流配置
<a name="customer-first-callback-contact-lifecycle-sample-flows-creation"></a>

下图显示了示例回拨创建流。已配置[设置客户队列流](set-customer-queue-flow.md)块，因此当回拨联系人在队列中等待座席有空向客户拨出号码时，客户队列流会运行。

![带有“设置客户队列”数据块的示例回拨创建流。](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/customer-first-callback-contact-lifecycle-sample-flows-creation-1.png)


### 回拨的示例出站拨号流
<a name="customer-first-callback-contact-lifecycle-sample-flows-outbound"></a>

在下图所示的出站拨号流中，Amazon Connect 使用[检查呼叫进度](check-call-progress.md)数据块来评估客户的存在情况。如果检测到语音邮件，则会重新创建回拨联系。如果在呼叫的另一端检测到客户，则该呼叫将转接到队列中，以便座席可加入该客户。

![带有“检查通话进度”数据块的出站拨号流](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/customer-first-callback-contact-lifecycle-sample-flows-outbound-1.png)
