

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

# 藉由整合自訂參與者在 Amazon Connect 中自訂聊天流程體驗
<a name="chat-customize-flow"></a>

您可以將其他解決方案 (例如機器人) 與 Amazon Connect 聊天整合，以建立自訂的聊天流程體驗。

以下是如何自定義聊天流程體驗的概觀。聊天對話開始後，針對每個聊天區段實作這些步驟。我們建議您新增 [AWS Lambda 函數](invoke-lambda-function-block.md) 區塊，以便在聊天流程中呼叫 API。

**重要**  
在 [AWS Lambda 函數](invoke-lambda-function-block.md) 區塊前加入 [播放提示](play.md) 區塊。只有在**調用 AWS Lambda** 區塊是傳入聊天流程中的第一個區塊時，才需要此項目。

1.  [啟用聊天訊息的即時串流](chat-message-streaming.md)。

1. 呼叫 Amazon Connect [CreateParticipant](https://docs.aws.amazon.com/connect/latest/APIReference/API_CreateParticipant.html) API，將自訂參與者 (`ParticipantRole` = `CUSTOM_BOT`) 新增至聊天聯絡人。

   1. 如需有關如何建立 SDK 用戶端以呼叫 Amazon Connect API 的資訊，請參閱下列主題：
      + [Class AmazonConnectClientBuilder](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/connect/AmazonConnectClientBuilder.html)
      + [建立服務用戶端](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/creating-clients.html)

   1. 保留從 [CreateParticipant](https://docs.aws.amazon.com/connect/latest/APIReference/API_CreateParticipant.html) 獲得的 `ParticipantToken` 以呼叫。[CreateParticipantConnection](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html)。`CreateParticipantConnection` 會傳回一個 `ConnectionToken`，您可以用來呼叫其他 Amazon Connect Participant API。

      呼叫 [CreateParticipantConnection](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html) 來建立自訂參與者的連線時：
      + 將 `ConnectParticipant` 設定為 `True`，把自訂參與者標記為已連線以進行訊息串流。
      + 傳遞 `Type` 作為 `CONNECTION_CREDENTIALS`，以呼叫後續的 Amazon Connect Participant Service API。
      + `CreateParticipantConnection` 應在呼叫 `CreateParticipant` 後 15 秒內呼叫。

1. 將參與者新增至連絡人後，他們可以使用 Amazon Connect Participant Service API 與客戶交換訊息。

1. 若要中斷與會者的連線，請呼叫 [DisconnectParticipant](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_DisconnectParticipant.html) API。

**注意**  
如果聯絡案例中已有客服人員或 Amazon Lex 機器人，則無法將自訂參與者新增至聊天中。
當客服人員或 Amazon Lex 機器人加入聯絡人時，自訂參與者將中斷連線。
一個連絡案例中只能有一個自訂參與者。
自訂參與者不允許存取客戶可能上傳的附件。

我們建議您設定自訂參與者可與連絡人聊天的時間長度：
+ 針對 `ParticipantRole` = `CUSTOM_BOT` 設定 [等候](wait.md) 區塊的 **逾時** 屬性。
+ 如果自訂機器人參與者在逾時之前未中斷連線，則會將連絡人轉接到 **時間已到期** 分支。這可讓您決定接下來要執行哪個區塊以解決客戶的查詢。

**注意**  
如果連絡人向下轉接到 **時間已到期** 分支，並不會中斷他們與連絡人的連線。您必須呼叫 [DisconnectParticipant](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_DisconnectParticipant.html) API，才能中斷與會者的連線。

## 為加入自訂參與者的客戶啟用計時器
<a name="integrate-bot-extension-client"></a>

您可以對加入自訂參與者 (例如自訂機器人) 的客戶啟用計時器。如此您即可偵測客戶何時停止回應，繼而能夠終止該機器人對話，並執行流程中的下一個步驟。藉由終止閒置參與者，可以減少有無回應的客戶與自訂參與者互動的開啟聊天數。

執行下列步驟以整合閒置參與者自訂機器人延伸模組，並選擇性地設定自訂計時器值。這些步驟假設您已使用自訂參與者功能進行聊天。

1. 在自訂參與者加入聊天之前，請為客戶調用 [UpdateParticipantRoleConfig](https://docs.aws.amazon.com/connect/latest/APIReference/API_UpdateParticipantRoleConfig.html) API。

   1. 計時器只會為客戶啟用。自訂參與者沒有閒置參與者或自動中斷連線計時器。

   1. 您可以選擇調用 API 的方法。

   1. 在此步驟中設定的計時器值，會在聊天的生命週期內持續保存。如果您希望**客戶和客服人員互動**有不同的計時器值，請參閱步驟 2。

   1. 如果您的用戶端已這樣設定，您就無須採取任何其他動作來整合自訂參與者。

1. (選用) 若要設定在**客戶與客服人員互動**期間和**客戶與自訂參與者互動**期間有所不同的計時器和計時器值：
   + 在客服人員加入聊天之前，請使用您想要的組態再次調用 [UpdateParticipantRoleConfig](https://docs.aws.amazon.com/connect/latest/APIReference/API_UpdateParticipantRoleConfig.html) API。

如需聊天計時器的詳細資訊，請參閱 [設定聊天參與者的聊天逾時](setup-chat-timeouts.md)。

### 啟動計時器
<a name="starting-timers"></a>

自訂參與者使用 [CreateParticipantConnection](https://docs.aws.amazon.com/connect/latest/APIReference/API_connect-participant_CreateParticipantConnection.html) API 建立與客戶的連線後，客戶的計時器就會開始。

### 當不相容的參與者加入自訂參與者的聊天時會發生什麼情況
<a name="non-compatible-participants"></a>

以下是不相容的客服人員或 Lex 機器人參與者加入自訂參與者的聊天時所將發生的情況：

1. 自訂參與者會自動中斷聊天的連線。

1. 先前所有作用中的計時器都會終止，並且為連線的參與者建立新的計時器 (如果已設定計時器)。

1. 此外，每個新計時器都會更新為最新的組態 (如有需要)。這樣可以為聊天中新的一組作用中參與者有效建立新的「閒置工作階段」。

### 與等待區塊計時器的互動
<a name="interaction-wait-block-timer"></a>

閒置計時器不會影響 [等候](wait.md) 區塊的運作情形。

在聊天聯絡進入**等待**區塊時啟動的**等待**區塊計時器會繼續運作。**等待**區塊計時器到期時，無論是否有任何閒置參與者計時器處於作用中狀態，聯絡都會繼續其流程，並轉接至**時間已到期**分支。

## 對秘訣進行故障診斷
<a name="ts-chat-custom-bot"></a>
+ `ResourceNotFoundException`: 

  如果您在呼叫 `CreateParticipantConnection` API 時為自訂參與者取得一個 `ResourceNotFoundException`，請檢查 `CreateParticipantConnection` API 是否在 `CreateParticipant` API 的 15 秒內呼叫。
+ `AccessDeniedException`: 

  如果您收到 `AccessDeniedException` 錯誤，且參與者角色是 CUSTOM\$1BOT，表示機器人正在嘗試存取附件。CUSTOM\$1BOT 的參與者角色不允許存取客戶上傳的附件。