

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# エージェントセルフサービスを使用する
<a name="agentic-self-service"></a>

**ヒント**  
 AWS 「ワークショップ: [Connect AI エージェントによる高度な生成 AI の構築](https://catalog.us-east-1.prod.workshops.aws/workshops/f77f49a2-1eae-4223-a9da-7044d6da51f8/en-US/01-introduction)」を参照してください。

エージェントセルフサービスを使用すると、Connect AI エージェントは音声チャネルとチャットチャネル全体で顧客の問題を自律的に解決できます。カスタムツールを選択したときに AI エージェントが問い合わせフローに制御を返す[従来のセルフサービス](generative-ai-powered-self-service.md)とは異なり、エージェントセルフサービスはオーケストレーター AI エージェントを使用します。オーケストレーター AI エージェントは、複数のステップで理由を説明することができ、MCP ツールを呼び出して顧客に代わってアクションを実行し、問題が解決されるかエスカレーションが必要になるまで継続的な会話を維持します。

たとえば、お客様がホテル予約について電話をかけると、オーケストレーター AI エージェントは、名前で挨拶し、明確な質問をし、予約を検索して、変更を処理できます。これらはすべて 1 回の会話で実行でき、各ステップ間の問い合わせフローを制御できません。

**Topics**
+ [主な機能](#agentic-self-service-key-capabilities)
+ [オーケストレーター AI エージェント用のツール](#agentic-self-service-default-tools)
+ [エージェントセルフサービスを設定する](#agentic-self-service-setup)
+ [カスタム Return to Control ツール](#agentic-self-service-custom-escalate)
+ [フローでコントロールに戻るツールを処理する](#agentic-self-service-escalation-flow)
+ [定数ツール](#agentic-self-service-constant-tools)
+ [エージェントセルフサービスチャットをエンドツーエンドでセットアップする](setup-agentic-selfservice-end-to-end.md)

## 主な機能
<a name="agentic-self-service-key-capabilities"></a>

エージェントセルフサービスには次の機能があります。
+ **自律型マルチステップ推論** – AI エージェントは、1 回の会話ターンで複数のツール呼び出しと推論ステップを連鎖させて、複雑なリクエストを解決できます。
+ **MCP ツールの統合** – Model Context Protocol (MCP) ツールを使用してバックエンドシステムに接続し、注文ステータスの検索、返金の処理、レコードの更新などのアクションを実行します。詳細については、「[AI エージェント MCP ツール](ai-agent-mcp-tools.md)」を参照してください。
+ **セキュリティプロファイル** – AI エージェントは人間のエージェントと同じセキュリティプロファイルフレームワークを使用して、AI エージェントがアクセスできるツールを制御します。詳細については、「[AI エージェントにセキュリティプロファイルのアクセス許可を割り当てる](ai-agent-security-profile-permissions.md)」を参照してください。

## オーケストレーター AI エージェント用のツール
<a name="agentic-self-service-default-tools"></a>

以下のツールタイプを使用して、オーケストレーター AI エージェントをセルフサービス用に設定できます。
+ **[MCP ツール](ai-agent-mcp-tools.md)** – Model Context Protocol を使用して AI エージェント機能を拡張します。MCP ツールはバックエンドシステムに接続して、注文ステータスの検索、返金の処理、レコードの更新などのアクションを実行します。AI エージェントは、問い合わせフローに制御を戻すことなく、会話中に MCP ツールを呼び出します。
+ **Return to Control** – AI エージェントに停止を指示し、問い合わせフローに制御を返します。デフォルトでは、`SelfServiceOrchestrator`AI エージェントには `Complete` (インタラクションを終了するため) と `Escalate` (ヒューマンエージェントに転送するため) が含まれます。これらのデフォルトを削除したり、独自のものを作成したりできます。詳細については、「[カスタム Return to Control ツール](#agentic-self-service-custom-escalate)」を参照してください。
+ **定数** – 設定された静的文字列値を AI エージェントに返します。開発中のテストや迅速な反復に役立ちます。詳細については、「[定数ツール](#agentic-self-service-constant-tools)」を参照してください。

## エージェントセルフサービスを設定する
<a name="agentic-self-service-setup"></a>

エージェントセルフサービスを設定するには、以下の大まかなステップに従います。

1. オーケストレーター AI エージェントを作成します。Amazon Connect 管理ウェブサイトで、**AI エージェントデザイナー**に移動し、**AI エージェント**を選択し、**AI エージェントの作成**を選択します。AI エージェントタイプとして**オーケストレーション**を選択します。**既存の からコピー** で、セルフサービスのシステム AI エージェントを開始設定として使用する **SelfServiceOrchestrator** を選択します。

1. AI エージェントのセキュリティプロファイルを作成します。**ユーザー**に移動し、**セキュリティプロファイル**を選択し、AI エージェントが必要とするツールへのアクセスを許可するプロファイルを作成します。次に、AI エージェント設定で、**セキュリティプロファイル**セクションにスクロールし、**セキュリティプロファイルの選択ドロップダウンからプロファイル**を選択します。詳細については、「[AI エージェントにセキュリティプロファイルのアクセス許可を割り当てる](ai-agent-security-profile-permissions.md)」を参照してください。

1. ツールを使用して AI エージェントを設定します。接続された名前空間から MCP ツールを追加し、デフォルトの Return to Control ツール (`Complete` および ) を設定します`Escalate`。MCP ツールの詳細については、「」を参照してください[AI エージェント MCP ツール](ai-agent-mcp-tools.md)。

1. オーケストレーションプロンプトを作成してアタッチします。`SelfServiceOrchestrator` には、AI エージェントのパーソナリティ、動作、ツールの使用手順を定義するために、そのまま使用することも、新しい`SelfServiceOrchestration`プロンプトを作成することもできます。プロンプトの詳細については、「」を参照してください[Connect AI エージェントをカスタマイズする](customize-connect-ai-agents.md)。
**重要**  
オーケストレーター AI エージェントは、レスポンスを`<message>`タグでラップする必要があります。この形式がないと、AI エージェントからのメッセージは表示されません。詳細については、「[メッセージ解析](use-orchestration-ai-agent.md#message-parsing)」を参照してください。

1. AI エージェントをデフォルトのセルフサービスエージェントとして設定します。**AI エージェント**ページで、**デフォルトの AI エージェント設定**にスクロールし、**セルフサービス**行でエージェントを選択します。

1. 対話型 AI ボットを作成します。**ルーティング**、**フロー**、**会話 AI** に移動し、Amazon Connect AI エージェントインテントを有効にしてボットを作成します。詳細については、「[Connect AI エージェントのインテントを作成する](create-qic-intent-connect.md)」を参照してください。

1. AI エージェントに問い合わせをルーティングする問い合わせフローを構築します。対話型 AI ボットを呼び出す[顧客の入力を取得する](get-customer-input.md)ブロックと、AI エージェントによって選択された制御に戻るツールに基づいてルーティングする[コンタクト属性を確認する](check-contact-attributes.md)ブロックを追加します。詳細については、「[フローを作成して会話型 AI ボットを追加する](create-bot-flow.md)」を参照してください。

   次の図は、エージェントセルフサービスの問い合わせフローの例を示しています。  
![\[「ログ記録動作の設定」、「音声の設定」、「Lex ボットによる顧客入力の取得」、「完了」、「エスカレーション」、「一致しない」ブランチによるツール選択の問い合わせ属性の確認「作業キューの設定」、「キューへの転送」、「ブロックの切断」によるエージェントセルフサービス問い合わせフローの例。\]](http://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/images/agentic-self-service-contact-flow.png)

**ヒント**  
エージェントセルフサービスのチャットストリーミングを有効にする場合は、「」を参照してください[AI を活用したチャットのメッセージストリーミングを有効にする](message-streaming-ai-chat.md)。ストリーミングを使用したend-to-endのチャットチュートリアルについては、「」を参照してください[エージェントセルフサービスチャットをエンドツーエンドでセットアップする](setup-agentic-selfservice-end-to-end.md)。

## カスタム Return to Control ツールを作成する
<a name="agentic-self-service-custom-escalate"></a>

Return to Control ツールは、AI エージェントに処理を停止し、問い合わせフローに制御を返すよう通知します。Return to Control ツールが呼び出されると、ツール名とその入力パラメータは Amazon Lex セッション属性として保存され、問い合わせフローは [コンタクト属性を確認する](check-contact-attributes.md)ブロックを使用して読み取り、次のアクションを決定できます。

`SelfServiceOrchestrator` AI エージェントにはデフォルトツール`Complete`と `Escalate` Return to Control ツールが含まれていますが、問い合わせフローが実行する追加のコンテキストをキャプチャする入力スキーマを使用して、カスタム Return to Control ツールを作成できます。

カスタム Return to Control ツールを作成するには:

1. AI エージェント設定で、**ツールの追加**を選択し、**新しい AI ツールの作成**を選択します。

1. ツール名を入力し、ツールタイプとして **Return to Control** を選択します。

1. ツールを呼び出すときに AI エージェントがキャプチャするコンテキストを指定する入力スキーマを定義します。

1. (オプション) **Instructions** フィールドで、AI エージェントがいつこのツールを使用するかを記述します。

1. (オプション) ツールを呼び出すときに AI エージェントの動作をガイドする例を追加します。

1. **Create** を選択し、**Publish** を選択して AI エージェントを保存します。

### 例: コンテキストを使用したカスタムエスカレーションツール
<a name="agentic-self-service-custom-escalate-schema"></a>

次の例は、デフォルトの Escalate ツールを、エスカレーションの理由、概要、顧客の意図、感情をキャプチャするカスタムバージョンに置き換える方法を示しています。この追加のコンテキストにより、人間のエージェントは会話を拾い始めることができます。

まず、AI エージェントからデフォルトの Escalate ツールを削除します。次に、次の入力スキーマ**Escalate**を使用して、 という名前の新しい Return to Control ツールを作成します。

```
{
    "type": "object",
    "properties": {
        "customerIntent": {
            "type": "string",
            "description": "A brief phrase describing what the customer wants to accomplish"
        },
        "sentiment": {
            "type": "string",
            "description": "Customer's emotional state during the conversation",
            "enum": ["positive", "neutral", "frustrated"]
        },
        "escalationSummary": {
            "type": "string",
            "description": "Summary for the human agent including what the customer asked for, what was attempted, and why escalation is needed",
            "maxLength": 500
        },
        "escalationReason": {
            "type": "string",
            "description": "Category for the escalation reason",
            "enum": [
                "complex_request",
                "technical_issue",
                "customer_frustration",
                "policy_exception",
                "out_of_scope",
                "other"
            ]
        }
    },
    "required": [
        "escalationReason",
        "escalationSummary",
        "customerIntent",
        "sentiment"
    ]
}
```

**Instructions** フィールドで、AI エージェントがエスカレーションするタイミングを記述します。例えば、次のようになります。

```
Escalate to a human agent when:
1. The customer's request requires specialized expertise
2. Multiple tools fail or return errors repeatedly
3. The customer expresses frustration or explicitly requests a human
4. The request involves complex coordination across multiple services
5. You cannot provide adequate assistance with available tools
```

(オプション) エスカレーション中の AI エージェントのトーンをガイドする例を追加します。例えば、次のようになります。

```
<message>
I understand this requires some specialized attention. Let me connect you
with a team member who can help coordinate all the details. I'll share
everything we've discussed so they can pick up right where we left off.
</message>
```

## 問い合わせフローで Return to Control ツールを処理する
<a name="agentic-self-service-escalation-flow"></a>

AI エージェントが Return to Control ツールを呼び出すと、コントロールは問い合わせフローに戻ります。呼び出されたツールを検出し、それに応じて問い合わせをルーティングするようにフローを設定する必要があります。

### Return to Control 検出の仕組み
<a name="agentic-self-service-escalation-detection"></a>

AI エージェントが Return to Control ツールを呼び出す場合:

1. AI 会話は終了します。

1. コントロールは問い合わせフローに戻ります。

1. ツール名と入力パラメータは Amazon Lex セッション属性として保存されます。

1. フローは、これらの属性をチェックし、それに応じてルーティングします。

### Return to Control ツールに基づいてルーティングを設定する
<a name="agentic-self-service-escalation-flow-steps"></a>

Return to Control ルーティングを問い合わせフローに追加するには、次の手順に従います。

1. **Get customer input** [コンタクト属性を確認する](check-contact-attributes.md)ブロックの**デフォルト**出力の後にブロックを追加します。

1. ツール名をチェックするように ブロックを設定します。
   + **名前空間**: **Lex**
   + **キー**: **セッション属性**
   + **セッション属性キー**: **Tool**

   処理する Return to Control ツールごとに条件を追加します。たとえば、 値が **Complete**、**Escalate**、または作成したカスタム Return to Control ツールの名前と等しい条件を追加します。

1. (オプション) [コンタクト属性の設定](set-contact-attributes.md)ブロックを追加して、Amazon Lex セッション属性から問い合わせ属性にツールの入力パラメータをコピーします。これにより、コンテキストをダウンストリームルーティングとエージェント画面のポップで使用できます。

1. 各条件を適切なルーティングロジックに接続します。例えば、次のようになります。
   + **完了** — **切断**ブロックにルーティングしてインタラクションを終了します。
   + **エスカレーション** – **作業キューの設定**と**キューへの転送**ブロックにルーティングして、問い合わせをヒューマンエージェントに転送します。
   + **カスタムツール** – ユースケースに固有の追加のフローロジックにルーティングします。

1. [コンタクト属性を確認する](check-contact-attributes.md) ブロックからの**一致なし**出力を**切断**ブロックまたは追加のルーティングロジックに接続します。

#### 例: コンテキストを使用して Escalate ツールをルーティングする
<a name="agentic-self-service-escalation-example"></a>

コンテキストを使用してカスタム Escalate ツールを作成した場合 (「」を参照[例: コンテキストを使用したカスタムエスカレーションツール](#agentic-self-service-custom-escalate-schema))、 [コンタクト属性の設定](set-contact-attributes.md)ブロックを使用してエスカレーションコンテキストを問い合わせ属性にコピーできます。次の属性を動的に設定します。


| 送信先キー (ユーザー定義) | ソース名前空間 | ソースセッション属性キー | 
| --- | --- | --- | 
| escalationReason | Lex – セッション属性 | escalationReason | 
| escalationSummary | Lex – セッション属性 | escalationSummary | 
| customerIntent | Lex – セッション属性 | customerIntent | 
| 感情 | Lex – セッション属性 | 感情 | 

(オプション) **イベント設定フロー**ブロックを追加して、問い合わせを受け入れるときにエスカレーションコンテキストをヒューマンエージェントに表示します。**エージェント UI のデフォルトフロー**にイベントを設定し、エージェントにエスカレーションの概要、理由、感情を示すフローを選択します。

## テストと開発に Constant ツールを使用する
<a name="agentic-self-service-constant-tools"></a>

定数ツールは、呼び出し時に設定された静的文字列値を AI エージェントに返します。Return to Control ツールとは異なり、定数ツールは AI 会話を終了しません。AI エージェントは文字列を受け取り、会話を続行します。これにより、Constant ツールは開発中のテストや迅速な反復に役立ち、バックエンドシステムに接続せずにツールレスポンスをシミュレートできます。

定数ツールを作成するには:

1. AI エージェント設定で、**ツールの追加**を選択し、**新しい AI ツールの作成**を選択します。

1. ツール名を入力し、ツールタイプとして **Constant** を選択します。

1. **定数値**フィールドに、ツールが AI エージェントに返す静的文字列を入力します。

1. **Create** を選択し、**Publish** を選択して AI エージェントを保存します。

たとえば、サンプルの JSON レスポンスを返**getOrderStatus**す という名前の Constant ツールを作成できます。これにより、AI エージェントが MCP ツールを使用して実際の注文管理システムに接続する前に、注文ステータスリクエストを処理する方法をテストできます。

# エージェントセルフサービスチャットエクスペリエンスをエンドツーエンドで設定する方法
<a name="setup-agentic-selfservice-end-to-end"></a>

**注記**  
オーケストレーション AI エージェントでは、チャットコンタクトに対してチャットストリーミングを有効にする必要があります。チャットストリーミングを有効にしないと、一部のメッセージはレンダリングに失敗します。「[AI を活用したチャットのメッセージストリーミングを有効にする](message-streaming-ai-chat.md)」を参照してください。

## AI メッセージングストリーミングとは
<a name="what-is-ai-message-streaming"></a>

AI メッセージストリーミングは、チャットインタラクション中に **AI エージェントレスポンスをプログレッシブに表示**できるようにする Amazon Connect 機能です。AI が顧客に何も表示する前に完全なレスポンスを生成するのを待つ代わりに、ストリーミングは生成中にテキストを表示し、より自然で会話的なエクスペリエンスを作成します。

### 仕組み
<a name="how-streaming-works"></a>

標準のチャットレスポンスでは、お客様は AI がレスポンス全体を生成するまで待機し、完全なメッセージが一度にすべて表示されます。AI Message Streaming を使用すると、AI が生成するにつれて単語が徐々に出現する**テキストバブルが増え**、リアルタイムで誰かのタイプを見るのと同様に表示されます。

**注記**  
**公式ドキュメント**: 完全な技術リファレンスについては、「」を参照してください[AI を活用したチャットのメッセージストリーミングを有効にする](message-streaming-ai-chat.md)。

### プログレッシブテキスト表示の利点
<a name="benefits-progressive-text"></a>

AI メッセージストリーミングは、カスタマーエクスペリエンスにいくつかの重要な利点をもたらします。
+ **認識される待機時間の短縮** - 顧客はローディングスピナーを見つめるのではなく、すぐにアクティビティを確認できます。
+ **より自然な会話フロー** - プログレッシブテキストは人間のタイピングを模倣し、より魅力的なやり取りを生み出す
+ **エンゲージメントの向上** - 顧客は、まだ生成されている間にレスポンスの読み取りを開始できます。
+ **フルフィルメントメッセージ** - AI エージェントは、処理中に「アカウントを確認する一瞬」などの中間メッセージを提供できます

### 標準チャットとストリーミングチャット
<a name="standard-vs-streaming-chat"></a>

次の表は、標準チャットとストリーミングチャットのカスタマーエクスペリエンスを比較したものです。


| 側面 | 標準チャット | ストリーミングチャット | 
| --- | --- | --- | 
| レスポンスの表示 | 完全なメッセージが一度にすべて表示される | テキストが徐々に表示される (バブルが大きくなる) | 
| カスタマーエクスペリエンス | ロードインジケータ付きのフルレスポンスを待機する | リアルタイムに表示される単語を表示する | 
| 認識された待機時間 | Longer (完全応答待ち) | 短い (視覚的な即時フィードバック) | 
| 会話のフィール | トランザクション | 人とチャットするなど、自然 | 
| フルフィルメントメッセージ | 利用不可 | AI が中間ステータスの更新を送信できる | 
| Lex タイムアウト処理 | Lex タイムアウト制限の対象 | Lex タイムアウトの制限を排除 | 

## 有効化ステータス
<a name="enablement-status"></a>

AI メッセージストリーミングの可用性は、Amazon Connect インスタンスが作成されたタイミングと設定方法によって異なります。

### 新しいインスタンスの自動有効化
<a name="automatic-enablement-new-instances"></a>

**2025 年 12 月以降に**作成された Amazon Connect インスタンスでは、AI メッセージストリーミングがデフォルトで有効になっています。これらの`MESSAGE_STREAMING`インスタンス`true`のインスタンス属性は自動的に に設定されているため、追加の設定は必要ありません。

**重要**  
**2025 年 12 月より前に**作成された Amazon Connect インスタンスで AWS アカウントを使用している場合は、AI メッセージストリーミングを手動で有効にする必要がある場合があります。[AI を活用したチャットのメッセージストリーミングを有効にする](https://docs.aws.amazon.com/connect/latest/adminguide/message-streaming-ai-chat.html)ドキュメントの指示に従って、インスタンスの `MESSAGE_STREAMING` 属性を確認し、必要に応じて有効にします。

### Amazon Lex ボットのアクセス許可
<a name="amazon-lex-bot-permissions"></a>

AI メッセージストリーミングを正しく機能させるには、 アクセス`lex:RecognizeMessageAsync`許可が必要です。このアクセス許可により、Amazon Connect はストリーミングレスポンスを有効にする非同期メッセージ認識 API を呼び出すことができます。

**新しい Lex ボットの関連付け**の場合: 新しい Amazon Lex ボットを Amazon Connect インスタンスに関連付けると、必要な`lex:RecognizeMessageAsync`アクセス許可が自動的に**ボットのリソースベースのポリシーに含まれ**ます。追加の設定は必要ありません。

**重要**  
AI メッセージストリーミングが有効になる**前に** Amazon Connect インスタンスに関連付けられた Amazon Lex ボットがある場合は、ボットのリソースベースのポリシーを更新して アクセス`lex:RecognizeMessageAsync`許可を含める必要がある場合があります。  
既存の Lex ボットポリシーを更新するには:  
Amazon Lex コンソールに移動する
ボットを選択し、**リソースベースのポリシー**に移動する
Amazon Connect アクセスを許可するポリシーステートメントに `lex:RecognizeMessageAsync`アクションを追加する
更新されたポリシーを保存する
詳細な手順については、 AWS ドキュメントの [Lex ボットのアクセス許可](https://docs.aws.amazon.com/connect/latest/adminguide/message-streaming-ai-chat.html#lex-bot-permissions)セクションを参照してください。

## 通信ウィジェットの作成
<a name="create-communications-widget"></a>

Amazon Connect Communications Widget は、任意のウェブサイトに追加できる埋め込み可能なチャットインターフェイスです。このセクションでは、AI メッセージストリーミングをテストするウィジェットを作成して設定します。独自のカスタマーチャットウィジェットを使用する場合は、このセクションをスキップできます。

### ステップ 1: Communications Widget に移動する
<a name="navigate-to-widget"></a>

1. Amazon Connect コンソールで、インスタンスに移動します。

1. 左側のナビゲーションメニューで**チャネル**をクリックします。

1. **コミュニケーションウィジェット**をクリックします。

1. Communications Widget 管理ページが表示されます。

**注記**  
**Communications Widget とは** Communications Widget は、Amazon Connect out-of-the-boxチャットソリューションです。シンプルな JavaScript スニペットを使用してウェブサイトに埋め込むことができる、完全に機能するチャットインターフェイスを提供します。ウィジェットは、接続の確立、セッションの管理、メッセージの表示の複雑さをすべて処理します。

### ステップ 2: 新しいウィジェットを作成する
<a name="create-new-widget"></a>

1. **ウィジェットの追加**をクリックして、新しいコミュニケーションウィジェットを作成します。

1. 次の詳細情報を入力します。
   + **名前:** **AI-Streaming-Demo-Widget**
   + **説明:** **Widget for testing AI Message Streaming**

1. **コミュニケーションオプション**で**チャットの追加**が選択されていることを確認します

1. チャット問い合わせ**フローとしてセルフサービステスト**フローを選択する

1. **保存**をクリックして設定ページに進みます

**問い合わせフローの選択**  
次の問い合わせフローを選択してください。  
基本設定が設定されている (AI セッション、ログ記録などを作成)
AI エージェント統合を使用して Lex ボットにルーティングする
切断に対する適切なエラー処理がある
問い合わせフローをまだ作成していない場合は、まず[フローの作成](https://catalog.workshops.aws/amazon-q-in-connect/en-US/03-Self-Service-Track/01-ai-agent-configuration/04-creating-flow/)セクションを完了します。

### ステップ 3: ウィジェットの外観をカスタマイズする
<a name="customize-widget-appearance"></a>

ブランドに合わせてチャットウィジェットのルックアンドフィールをカスタマイズし、**保存して続行**を選択します。

### ステップ 4: 許可されたドメインを設定する
<a name="configure-allowed-domains"></a>

Communications Widget は、明示的に許可されているウェブサイトにのみロードされます。このセキュリティ機能は、ウィジェットの不正使用を防止します。

1. **許可されたドメインまで下にスクロールする**

1. **ドメインを追加**をクリックし、localhost テスト用に次のドメインを追加します。
   + **http://localhost**

1. セキュリティで **No** を選択する

1. 後で本番稼働用ウェブサイトにデプロイする場合は、それらのドメインも追加し、セキュリティ (例: **https://www.example.com**) を設定してください。

### ステップ 5: ウィジェットコードを保存して取得する
<a name="save-get-widget-code"></a>

1. 保存をクリックし**、ウィジェット設定の保存を続行**します

1. 作成後、埋め込みコードを含む**ウィジェットの詳細**ページが表示されます。

1. **重要**: 埋め込みコードスニペットから次の値をコピーして保存します。
   + **クライアント URI** - ウィジェット JavaScript ファイルへの URL
   + **ウィジェット ID** - ウィジェットの一意の識別子
   + **スニペット ID** - Base64-encoded設定文字列

### ステップ 6: ローカルテスト環境を設定する
<a name="setup-local-testing"></a>

ウィジェットをローカルでテストするには、コミュニケーションウィジェットをロードするシンプルな HTML ファイルを作成します。

1. テスト用にコンピュータに新しいフォルダを作成する (例: `ai-streaming-test`)

1. デモページの背景イメージをダウンロードし、テストフォルダ`background.jpg`に として保存します。

1. 次の内容で、テストフォルダ`index.html`に という名前の新しいファイルを作成します。

```
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <style>
        body {
            background-image: url("background.jpg");
            background-repeat: no-repeat;
            background-size: cover;
        }
    </style>
    <title>AI Message Streaming Demo</title>
</head>
<body>
    <div id="root"></div>
    <script type="text/javascript">
      (function(w, d, x, id){
        s=d.createElement('script');
        s.src='REPLACE_WITH_CLIENT_URI';
        s.async=1;
        s.id=id;
        d.getElementsByTagName('head')[0].appendChild(s);
        w[x] = w[x] || function() { (w[x].ac = w[x].ac || []).push(arguments) };
      })(window, document, 'amazon_connect', 'REPLACE_WITH_WIDGET_ID');
      amazon_connect('styles', {
        iconType: 'CHAT',
        openChat: { color: '#ffffff', backgroundColor: '#ff9200' },
        closeChat: { color: '#ffffff', backgroundColor: '#ff9200'}
      });
      amazon_connect('snippetId', 'REPLACE_WITH_SNIPPET_ID');
      amazon_connect('supportedMessagingContentTypes', [
        'text/plain',
        'text/markdown',
        'application/vnd.amazonaws.connect.message.interactive',
        'application/vnd.amazonaws.connect.message.interactive.response'
      ]);
      amazon_connect('customStyles', {
        global: { frameWidth: '500px', frameHeight: '900px'}
      });
    </script>
</body>
</html>
```

### ステップ 7: プレースホルダー値を置き換える
<a name="replace-placeholder-values"></a>

HTML ファイルのプレースホルダー値を実際のウィジェット値に置き換えます。


| Placeholder | を に置き換える | 例 | 
| --- | --- | --- | 
| REPLACE\$1WITH\$1CLIENT\$1URI | ステップ 5 のクライアント URI | https://d2s9x5slqf05.cloudfront.net/amazon-connect-chat-interface-client.js | 
| REPLACE\$1WITH\$1WIDGET\$1ID | ステップ 5 のウィジェット ID | amazon\$1connect\$1widget\$1abc123 | 
| REPLACE\$1WITH\$1SNIPPET\$1ID | ステップ 5 のスニペット ID | QVFJREFIaWJYbG... (長い Base64 文字列) | 

### ステップ 8: ローカルウェブサーバーを起動する
<a name="start-local-web-server"></a>

ウィジェットをテストするには、ローカルウェブサーバーから HTML ファイルを提供する必要があります。いくつかのオプションは次のとおりです。

**オプション A: Python (インストールされている場合)**  


```
python -m http.server 8001
```

**オプション B: Node.js (インストールされている場合)**  


```
npx http-server -p 8001
```

**オプション C: VS Code Live Server Extension**  

+ VS Code に「ライブサーバー」拡張機能をインストールする
+ 右クリック`index.html`して「ライブサーバーで開く」を選択します。

サーバーを起動したら、ブラウザを開き、以下に移動します。 `http://localhost:8001`

デモページには、右下隅にオレンジ色のチャットボタンが表示されます。

## ストリーミングエクスペリエンスをテストする
<a name="test-streaming-experience"></a>

ウィジェットがロードされたら、AI メッセージストリーミングをテストし、プログレッシブテキスト表示の動作を確認します。

### 検索対象: ストリーミングと非ストリーミング
<a name="what-to-look-for"></a>

ストリーミングレスポンスと非ストリーミングレスポンスの違いを理解することで、AI メッセージストリーミングが機能していることを確認できます。


| 行動 | 非ストリーミング (標準) | ストリーミング (AI メッセージストリーミング) | 
| --- | --- | --- | 
| 初期表示 | インジケータのロードまたはドットの入力 | テキストがすぐに表示される | 
| テキストの外観 | 完全なメッセージが一度にすべて表示される | 単語が徐々に表示される (バブルが大きくなる) | 
| レスポンスのタイミング | AI の生成が完了するまで待機する | 生成中のレスポンスを確認する | 
| ビジュアル効果 | 全文の「ポップ」 | 誰かのタイプを見るようなスムーズで流れるテキスト | 