

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

# 讓客戶能夠在 Amazon Connect 中繼續聊天對話
<a name="chat-persistence"></a>

客戶通常會開始聊天，然後離開對話，稍後再返回以繼續聊天。這可能會在幾天，幾個月甚至幾年內發生很多次。若要支援長時間執行的聊天，請啟用持續性聊天功能。

使用持續性聊天功能，客戶可以使用前後關聯、中繼資料和文字記錄繼續先前的對話。當他們返回聊天時不需要重複自己的話，且客服人員可以存取整個對話歷史記錄。

## 聊天補水
<a name="rehydration"></a>

持續性聊天須透過所謂的聊天補水程序來達成。此程序可從先前的聊天聯絡擷取聊天文字記錄，並加以顯示。它可讓客戶和客服人員輕鬆地從他們先前中斷之處繼續對話。

**重要**  
只有已結束的聊天工作階段才能補充到新的聊天工作階段，因為文字記錄的產生是非同步的。  
使用者應等待 30-60 秒，再嘗試從先前結束的聊天進行補水。

Amazon Connect 支援兩種類型的再水合作用：
+ `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. 稍後，客戶返回並希望恢復過去的聊天會話。

此時，客戶可能有兩種不同的使用案例。以下是客戶可以擁有的持續性聊天使用案例，以及您如何設定 Amazon Connect 來提供這些案例。

### 使用案例 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"
   }
}
```

#### Configuration
<a name="usecase1-configuration"></a>
+ SourceContactId = 2222222-aaaa-bbbb-2222-222222222222222 (C2 的 contactId)
+ 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-2222-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"
   }
}
```

#### Configuration
<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-3333333333333 (C3) 作為「ContinuedFromContactId」。
+ 這個持續性聊天工作階段的 `RelatedContactId` 是 33333333-aaaa-bbbb-3333-3333333333333 (C3)

**注意**  
聊天連線為累積連線。聊天工作階段連結後，它們會繼續進行。  
例如，如果屬於過去聊天會話的聯絡人 (`contactId` C2) 連結到來自不同過去聊天會話的聯絡人 (`contactId` C1)，則通過鏈接 C2 建立的新持續性聊天工作階段也會導致 C1 的隱式鏈接。新的持續性聊天會話將具有以下鏈接：C3 → C2 → C1  
持續聊天工作階段從其繼續的過往 contactId 會顯示在 [StartChatContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartChatContact.html) API 回應的 `ContinuedFromContactId` 欄位中。它也位於該聯絡人之[聯絡人記錄](ctr-data-model.md#ctr-ContactTraceRecord)的 RelatedContactId 欄位中

## 如何存取持續性聊天的過去聊天聯絡人文字記錄
<a name="access-past-chat-transcript"></a>

存取持續性聊天的過去聊天記錄會使用現有的 `NextToken` 分頁模型。在新啟動的持續性聊天工作階段中，對 [GetTranscript](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_GetTranscript.html) 的初始呼叫會在回應中包含一個 `NextToken` (如果過去的聊天訊息存在)。`NextToken` 必須用於存取過去的聊天文字記錄，並在後續的 [GetTranscript](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_GetTranscript.html) 呼叫中，將 `ScanDirection` 設定為 `BACKWARD`，以擷取過去的聊天訊息。

如果過去有多個聊天訊息，[GetTranscript](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_GetTranscript.html) 會傳回新的 `NextToken`，並可重複相同的程序以擷取更多過去的聊天文字記錄。

## 不支援：使用 `StartPosition` 和 `contactId` 篩選持續性聊天
<a name="startposition"></a>

Amazon Connect 不支援對來自過去聊天的文字記錄項目屬性，在 [GetTranscript](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_GetTranscript.html) 呼叫上使用 `StartPosition`和 `contactId`篩選條件。