

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

# 让客户能够在 Amazon Connect 中恢复聊天对话
<a name="chat-persistence"></a>

客户通常会开始聊天，然后离开对话，稍后再回来继续聊天。这种情况可能会在几天、几个月甚至几年的时间里多次发生。为了支持此类长时间的聊天，您可以启用持续聊天功能。

通过持续聊天，客户可以继续之前的对话，同时保留上下文、元数据和转录。客户回到聊天时无需重复之前的话，座席可以访问整个对话历史记录。

## 聊天补充
<a name="rehydration"></a>

持续聊天是通过一种称为聊天补充的过程实现的。此过程允许从以前的聊天联系中检索聊天记录并显示出来。它使客户和座席可以轻松地从他们中断的地方继续对话。

**重要**  
只有已结束的聊天会话才会被允许用于补充新的聊天会话，因为转录生成是异步进行的。  
用户应等待 30-60 秒，然后再尝试从之前结束的聊天中进行补充。

Connect Customer 支持两种类型的补液：
+ `ENTIRE_PAST_SESSION`：开始新的聊天会话，并补充过去聊天会话中的所有聊天片段。
+ `FROM_SEGMENT`：开始新的聊天会话，并补充指定的过去的聊天片段。

有关显示这些不同补充模式的用例示例，请参阅[使用案例示例](#persistentchatscenario)。

## RelatedContactId
<a name="relatedcontactid"></a>

新联系可以通过 `RelatedContactId` 与现有联系建立关联。此新联系人包含相关联系人的[联系属性](connect-attrib-list.md)副本。

有关 `RelatedContactId` 如何在联系记录中建模的更多信息，请参阅 [Amazon Connect 联系记录的数据模型](ctr-data-model.md)。

对于持续聊天，`RelatedContactId` 描述了用于获取聊天补充的 `contactId`。

## 如何启用持续聊天
<a name="enable-persistent-chat"></a>

有两种方法可以启用持续聊天：
+ 创建新聊天时指定以前的联系 ID。有关说明，请参阅[在创建新的聊天联系时启用持续聊天](#enable-persistent-chat-creating-new-chat-contact)。
+ 将[创建持久联系人关联](create-persistent-contact-association-block.md)数据块添加到流中。有关说明，请参阅[在流中启用持续聊天](#enable-persistent-chat-within-contact-flow)。

**注意**  
您可以选择任意一种方法来保留聊天，但不能两者兼而有之。也就是说，您只能在新聊天中根据 `SourceContactID` 启用一次持续聊天。

要提供持续的聊天体验，您需要在开始新聊天或使用[创建持续联系关联](create-persistent-contact-association-block.md)流数据块时提供以前的联系 ID。此操作不会为您自动执行。建议您创建一个存储库来存储联系记录数据。通过存储库，可以检索每位客户的这些数据。

 有两种方法可以在存储库中创建条目：
+ [使用聊天消息流](https://docs.aws.amazon.com/connect/latest/adminguide/chat-message-streaming.html)在聊天结束时创建条目。
+ 检查[联系人事件](https://docs.aws.amazon.com/connect/latest/adminguide/contact-events.html#contact-events-data-model)，并使用 [AWS Lambda 功能](https://docs.aws.amazon.com/connect/latest/adminguide/connect-lambda-functions.html)在存储库中创建条目。

设置存储库后，您可以检索客户以前的联系 ID，并在开始新聊天时或在[创建持续联系关联](create-persistent-contact-association-block.md)流数据块中提供该联系 ID。

此外，确保可以从实例的 Amazon S3 存储桶中检索过去的聊天记录。以下两点会导致 Amazon Connect 无法检索文字记录，也无法让聊天持续进行：
+ 您使用多个聊天文字记录存储桶。
+ 您可以更改 Amazon Connect 生成的聊天文字记录文件名。

### 在创建新的聊天联系时启用持续聊天
<a name="enable-persistent-chat-creating-new-chat-contact"></a>

要在创建新的聊天联系人时设置持续的聊天体验，请在 [StartChatContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartChatContact.html)API 的`SourceContactId`参数`contactId`中提供前面的内容。这样就可以对以前联系人的聊天文字记录进行补充。客户和座席都可以在聊天中看到文字记录。有关示例，请参阅[使用案例示例](#persistentchatscenario)。

### 在流中启用持续聊天
<a name="enable-persistent-chat-within-contact-flow"></a>

要在流中设置持续聊天体验，请执行以下操作：

1. 创建聊天联系后，在流中添加[创建持久联系关联](create-persistent-contact-association-block.md)数据块。

1. 使用用户定义的属性指定源联系 ID。

或者，您可以使用 [CreatePersistentContactAssociation](https://docs.aws.amazon.com/connect/latest/APIReference/API_CreatePersistentContactAssociation.html)API 提供来源联系人 ID，使当前聊天保持不变。

使用流数据块或 API 时，补充会在聊天开始后启动。补充完成后会发出补充事件通知您。

## 使用案例示例
<a name="persistentchatscenario"></a>

例如，客户开始了一个聊天会话：

1. 座席 a1 接受了聊天，客户和座席 a1 开始对话。这是在当前聊天会话中创建的第一个联系人。例如，`contactId` **C1** 可能是 11111111-aaaa-bbbb-1111-1111111111111。

1. 然后，座席 a1 将聊天转给座席 a2。这将创建另一个联系人。例如，`contactId` **C2** 可能是 2222222-aaaa-bbbb-2222-222222222222222。

1. 座席 a2 结束了聊天。

1. 客户会被转至断开连接流，进行聊天后调查，从而创建另一位联系人。例如，`contactId` **C3** 可能是 33333333-aaaa-bbbb-3333-3333333333333。

1. 显示聊天后调查，聊天会话结束。

1. 后来，客户又回来了，想要恢复过去的聊天会话。

目前，客户可能有两种不同的应用场景。以下是客户的持续聊天用例，以及您如何配置 Connect Customer 以提供这些用例。

### 应用场景 1
<a name="persistentchatscenario-usecase1"></a>

客户想继续过去的聊天会话，但他们希望隐藏聊天后调查。您可以使用以下配置来提供这种体验。

**请求:**

```
PUT /contact/chat HTTP/1.1
Content-type: application/json
{
   "Attributes": { 
      "string" : "string" 
   },
   "ContactFlowId": "string",
   "InitialMessage": { 
      "Content": "string",
      "ContentType": "string"
   },
   "InstanceId": "string",
   ... // other chat fields
     
   // NEW Attribute for persistent chat 
   "PersistentChat" : {
       "SourceContactId":"2222222-aaaa-bbbb-2222-222222222222222" 
       "RehydrationType":"FROM_SEGMENT"
   }
}
```

#### 配置
<a name="usecase1-configuration"></a>
+ SourceContactId = 2222222-aaaa-bbbb-222222222222222（C2 的联系人 ID）
+ RehydrationType = "`FROM_SEGMENT`"

#### 预期行为
<a name="usecase1-behavior"></a>
+ 此配置会从指定的过去已结束联系人 C2（例如 2222222-aaaa-bbbb-2222-222222222222222）启动持续聊天会话。

  可以在当前的持续聊天会话中访问过去聊天会话 C2 (2222222-aaaa-bbbb-2222-222222222222222) 和 C1 (11111111-aaaa-bbbb-1111-1111111111111) 的记录。请注意，聊天片段 C3 (33333333-aaaa-bbbb-3333-3333333333333) 已从持续聊天会话中删除。
+ 在本例中，[StartChatContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartChatContact.html)响应将 C2（2222222-aaaa-bbbb-222222222222222）返回为 “”。ContinuedFromContactId
+ 这个持续聊天会话的 `RelatedContactId` 是 2222222-aaaa-bbbb-2222-222222222222222 (C2)。

### 应用场景 2
<a name="persistentchatscenario-usecase2"></a>

客户想继续过去的聊天会话，并查看过去整个参与过程的记录（他们不想隐藏聊天后调查）。您可以使用以下配置来提供这种体验。

**注意**  
 对于 `ENTIRE_PAST_SESSION` 补充类型，请将过去聊天会话的第一个联系人（初始 `contactId`）指定为 `SourceContactId` 属性。

**请求:**

```
PUT /contact/chat HTTP/1.1
Content-type: application/json
{
   "Attributes": { 
      "string" : "string" 
   },
   "ContactFlowId": "string",
   "InitialMessage": { 
      "Content": "string",
      "ContentType": "string"
   },
   "InstanceId": "string",
   ... // other chat fields
     
   // NEW Attribute for persistent chat 
   "PersistentChat":{
        "SourceContactId":"11111111-aaaa-bbbb-1111-1111111111111" // (first contactId C1)
        "RehydrationType":"ENTIRE_PAST_SESSION"
   }
}
```

#### 配置
<a name="usecase2-configuration"></a>
+ SourceContactId = `11111111-aaaa-bbbb-1111-1111111111111` (C1)
+ RehydrationType = “E`NTIRE_PAST_SESSION`”

#### 预期行为
<a name="usecase2-behavior"></a>
+ 这会从最近结束的聊天联系 (C3) 启动持续聊天会话。可以在当前的持续聊天会话中访问过去聊天会话 C3、C2 和 C1 的记录。
+ 在本例中，[StartChatContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartChatContact.html)响应以 “” 的形式返回 33333333-aaaa-bbbb-3333-33333333333 (C3)。ContinuedFromContactId
+ 这个持续聊天会话的 `RelatedContactId` 是 33333333-aaaa-bbbb-3333-3333333333333 (C3)。

**注意**  
聊天联系是可以累积的。聊天会话关联后，它们会继续进行下去。  
例如，如果将属于过去聊天会话的联系人 (`contactId` C2) 链接到过去不同聊天会话的联系人 (`contactId` C1)，那么通过链接 C2 创建的新持续聊天会话也会导致 C1 的隐式链接。新的持续聊天会话将具有以下关联：C3 → C2 → C1  
过去的 ContactID（持续聊天会话从中继续）会显示在 API 响应`ContinuedFromContactId`的字段中[StartChatContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartChatContact.html)。它也在联系人的联系记录[ContactTraceRecord](ctr-data-model.md#ctr-ContactTraceRecord)中的 RelatedContactId 字段中。

## 如何访问持续聊天的过去聊天联系记录
<a name="access-past-chat-transcript"></a>

使用现有的 `NextToken` 分页模型访问持续聊天的过去聊天记录。如果存在过去的聊天消息，则在新启动的持续聊天会话`NextToken`中对的初始呼叫会在响应中包含。[GetTranscript](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_GetTranscript.html) `NextToken`必须用于访问过去的聊天记录，同时`BACKWARD`在后续[GetTranscript](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_GetTranscript.html)通话中`ScanDirection`将其设置为，以获取过去的聊天消息。

如果过去有多条聊天消息，则[GetTranscript](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_GetTranscript.html)返回一条新的聊天记录，`NextToken`并且可以重复相同的过程来获取更多过去的聊天记录。

## 不支持：使用 `StartPosition` 和 `contactId` 筛选器进行持续聊天
<a name="startposition"></a>

Connect Customer 不支持在[GetTranscript](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_GetTranscript.html)呼叫时使用`StartPosition`和`contactId`过滤来自过去聊天的笔录项目属性。