

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

# ステップ 2: 開始方法 (コンソール)
<a name="gs-console"></a>

## コンソールの概要
<a name="console-overview"></a>

Amazon Lex V2 の使用開始方法を学ぶ最も簡単な方法は、コンソールを使用することです。ロールとエクスペリエンスレベルに最も適したラーニングパスを選択します。

## 学習パスを選択する
<a name="learning-paths"></a>

ロールとエクスペリエンスレベルに最も適したラーニングパスを選択します。
+ **No-Code Path (ビジネスユーザー)** – コンソールインターフェイスのみを使用してボットを構築するビジネスアナリスト、製品マネージャー、非技術ユーザーに最適です。
  + 以下から開始します。 [クイックスタート: 5 分でチャットボットを作成する](quick-start.md)
  + 次に、以下を試してください。 [演習 1: テンプレートからチャットボットを作成する](exercise-1.md)
  + 以下について説明します。 [開始方法のベストプラクティス](getting-started-best-practices.md)
+ **開発者パス** – Amazon Lex V2 をアプリケーションと統合し、APIs を使用し、カスタムビジネスロジックを実装したいソフトウェア開発者に最適です。
  + 以下から開始します。 [演習 1: テンプレートからチャットボットを作成する](exercise-1.md)
  + アドバンスト: [演習 3: 高度なカスタマーサービスチャットボットを構築する](exercise-3.md)
  + 次に、以下について調べます。 [AWS Lambda関数を Amazon Lex V2 ボットに統合する](lambda.md)
  + 確認: [ボットの例](examples.md)
  + アドバンスト: API 統合と SDK の使用
+ **エンタープライズパス** – セキュリティ、コンプライアンス、スケーラビリティの要件を備えた大規模なデプロイを計画するアーキテクトやエンジニア向けに設計されています。
  + 以下から開始します。 [演習 1: テンプレートからチャットボットを作成する](exercise-1.md)
  + エンタープライズの例: [演習 3: 高度なカスタマーサービスチャットボットを構築する](exercise-3.md)
  + レビュー: セキュリティと IAM のベストプラクティス
  + 以下について調べます。 [グローバルレジリエンシーを使用した他のリージョンへのボットのデプロイ](global-resiliency.md)
  + 計画: モニタリング、ログ記録、コスト最適化

## 基本的な演習
<a name="foundational-exercises"></a>

選択したパスに関係なく、以下の基本的な演習から始めることをお勧めします。
+ 演習 1 — テンプレートを使用して Amazon Lex V2 ボットを作成します。これは、必要なすべてのボット設定を提供する事前定義されたボットです。最低限の作業を行うだけでエンドツーエンドのセットアップをテストできます。
+ 演習 2 — クライアントアプリケーションと Amazon Lex V2 ボットの間で送信される JSON 構造を確認します。
+ 演習 3 — 注文管理、インテリジェントなアップセリング、リード生成、パーソナライズされたカスタマーエクスペリエンスのための AI を活用した機能など、エンタープライズレベルの機能を示す高度なカスタマーサービスチャットボットを構築します。

**Topics**

# クイックスタート: 5 分でチャットボットを作成する
<a name="quick-start"></a>

このクイックスタートガイドは、構築済みのテンプレートを使用して、わずか 5 分で作業中の Amazon Lex V2 チャットボットを作成するのに役立ちます。すぐにテストしてニーズに合わせてカスタマイズできる機能的なチャットボットがあります。

## ステップ 1: テンプレートを選択する
<a name="choose-template"></a>

Amazon Lex V2 には、一般的なユースケース用に構築済みのテンプレートがいくつか用意されています。
+ **カスタマーサポートに関するよくある質問** – カスタマーサービスに関する一般的な問い合わせへの対応
+ **予約予約** – 予約のスケジュールと管理
+ **注文ステータス** – 注文情報と配送ステータスを確認する
+ **IT ヘルプデスク** – テクニカルサポートとトラブルシューティングを提供する

**テンプレートを選択するには**

1. [https://console.aws.amazon.com/lexv2/](https://console.aws.amazon.com/lexv2/) で Amazon Lex V2 コンソールを開きます。

1. [**ボットの作成**] を選択します。

1. **テンプレートで開始**を選択します。

1. このクイックスタートの**カスタマーサポートに関するよくある質問**テンプレートを選択します。

1. などのボット名を入力します**MyFirstChatbot**。

1. **[作成]** を選択します。

## ステップ 2: クイックカスタマイズ (オプション)
<a name="customize-template"></a>

テンプレートは事前設定されていますが、特定のニーズに合わせてすばやくカスタマイズできます。

**チャットボットをカスタマイズするには**

1. ボットの概要で、事前設定されたインテントを確認します。

1. **GetAccountInfo** など、変更するインテントを選択します。

1. 顧客がリクエストをフレーズする方法に一致する独自のサンプル発話を追加します。

1. ブランドの音声に合わせてレスポンスメッセージを更新します。

1. [**インテントの保存**] を選択します。

## ステップ 3: ボットをテストする
<a name="test-bot"></a>

組み込みのテストコンソールを使用して、チャットボットをすぐにテストします。

**チャットボットをテストするには**

1. **ビルド** を選択してボットをコンパイルします。

1. ビルドが完了するまで待ちます (通常は 1～2 分）。

1. 右側のテストコンソールで、次のように入力します。 **I need help with my account**

1. Enter キーを押し、ボットのレスポンスを確認します。

1. 他のフレーズを試して、ボットの理解度をテストします。

## ステップ 4: ボットをデプロイする
<a name="deploy-bot"></a>

チャットボットのレスポンスに満足したら、使用できるようにデプロイします。

**チャットボットをデプロイするには**

1. ボットアクションメニューから**発行**を選択します。

1. バージョンの作成を選択して新しい**バージョン**を作成します。

1. バージョンを指すエイリアス (「Production」など) を作成します。

1. 統合方法を選択します。

## 次のステップ
<a name="next-steps-quick"></a>

お疲れ様でした。これで、Amazon Lex V2 チャットボットが動作するようになりました。この後は、以下の内容を実行できます。
+ **アシスト付き NLU を有効にする** – AI を活用した自然言語処理による理解を向上させます。
+ **目的の追加** – 追加のユースケースでチャットボットの機能を拡張します。
+ **Lambda との統合** – ビジネスロジックと外部システム統合を追加します。「[AWS Lambda関数を Amazon Lex V2 ボットに統合する](lambda.md)」を参照してください。
+ **モニタリングのセットアップ** – 使用状況とパフォーマンスを追跡します。「[Amazon CloudWatch によるオペレーションメトリクスの測定](monitoring-cloudwatch.md)」を参照してください。
+ **Learn Advanced Features** – 会話フロー管理、マルチターンダイアログ、コンテキスト切り替えについて説明します。

詳細なチュートリアルについては、「」に進みます[演習 1: テンプレートからチャットボットを作成する](exercise-1.md)。

# 演習 1: テンプレートからチャットボットを作成する
<a name="exercise-1"></a>

この演習では、最初の Amazon Lex V2 チャットボットを作成し、Amazon Lex V2 コンソールでテストします。 V2 この演習では、E コマースの実用的で実際のユースケースを示す **OrderFlowers** テンプレートを使用します。

## OrderFlowers ボットの例
<a name="example-overview"></a>

**OrderFlowers** テンプレートを使用して、花の注文リクエストを処理できる Amazon Lex V2 チャットボットを作成します。この例では、企業がインテリジェントなチャットボットを使用して注文を自動化する方法を示します。ボットの構造の詳細については、[Amazon Lex V2 のコア概念](how-it-works.md) を参照してください。
+ **インテント** – ボットには 1 つの主要なインテントが含まれています。
  + `OrderFlowers` - 花のタイプ、集荷日、集荷時間を収集して、花の注文リクエストを処理します
+ **スロットタイプ** – ボットは、一般的なデータ形式を自動的に認識して処理する組み込みスロットタイプを使用します。
  + [AMAZON.Date](built-in-slot-date.md) - 「明日」、「次の金曜日」、「3 月 15 日」などの日付を認識します
  + [AMAZON.Time](built-in-slot-time.md) - 「午後 2 時」、「正午」、「3 か月を過ぎた四半期」などの時間を認識します
  + `FlowerTypes` (カスタム) - 「バラ」、「チューリップ」、「ライリー」などの特定の花の種類
+ **スロット** – OrderFlowers インテントでは、ボットが花の注文を満たす前に次の情報が必要です。
  + `FlowerType` (FlowerTypes カスタムタイプ) - 注文する花のタイプ
  + `PickupDate` ([AMAZON.Date](built-in-slot-date.md) タイプ) - 花を拾うタイミング
  + `PickupTime` ([AMAZON.Time](built-in-slot-time.md) 型) - 花を拾う時間
+ **サンプル発話** – 次のサンプル発話は、ユーザーが花の注文をリクエストする自然な方法を示しています。
  + 「花をピックアップしたい」
  + 「花を注文したい」
  + 「花を集荷できますか？」
  + 「花を購入する必要があります」
+ **プロンプト** – ボットは、インテントを識別した後で、以下のプロンプトを使用してスロットを満たします。
  + `FlowerType` スロットのプロンプト – 「どの花を注文なさいますか?」
  + `PickupDate` スロットのプロンプト – 「何日に \$1FlowerType\$1 をピックアップなさいますか?」
  + `PickupTime` スロットのプロンプト – 「何時に \$1FlowerType\$1 をピックアップなさいますか?」
  + 確認ステートメント – 「了解いたしました。お客様の \$1FlowerType\$1 は \$1PickupDate\$1 の \$1PickupTime\$1 までにご用意させていただきます。それでよろしいでしょうか?」 

## ボットを作成する
<a name="create-bot-procedure"></a>

**Amazon Lex V2 ボット (コンソール) を作成するには**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/) で Amazon Lex コンソールを開きます。

1. [**ボットの作成**] を選択します。

1. **作成方法** で、**例から始める** を選択します。

1. **ボットの例** セクションで、リストから **OrderFlowers** を選択します。

1. **[ボットの設定]** セクションで、ボットに名前とオプションの説明を与えます。新しい名前は アカウント内で一意である必要があります。

1. **アクセス許可** セクションで、**基本的な Amazon Lex アクセス許可で新しいロールを作成する** を選択します。これにより、Amazon Lex V2 がボットを実行するために必要なアクセス許可を持つ AWS Identity and Access Management (IAM) ロールが作成されます。

1. **児童オンラインプライバシー保護法 (COPPA)** セクションで、適切な選択を行います。

1. **セッションタイムアウト** および **アドバンスト設定** セクションで、デフォルトのままにします。

1. [**次へ**] を選択します。Amazon Lex V2 がボットを作成します。

## ボットに言語を追加する
<a name="add-language-procedure"></a>

ボットを作成したら、ボットがサポートする言語を 1 つ以上追加する必要があります。言語には、ボットがユーザーとの会話に使用するインテント、スロットタイプ、スロットが含まれます。

**ボットに言語を追加するには**

1. **言語** セクションで、サポートされている言語を選択し、説明を追加します。

1. デフォルトが設定されている **音声インタラクション** および **インテント分類信頼スコアのしきい値** フィールドを離れます。

1. **[完了]** を選択して、ボットに言語を追加します。

## ボットをテストする
<a name="test-bot-procedure"></a>

**完了** を選択した後、コンソールがインテントエディタを開きます。インテントエディタを使用して、ボットが使用するインテントを調べることができます。ボットの確認が終わったら、ボットをテストできます。

**OrderFlowers ボットをテストするには**

1. ページの上部で、**[構築]** を選択します。ボットが構築されるまで待ってください。

1. ビルドが完了したら、[**テスト**] を選択してテストウィンドウを開きます。

1. ボットをテストします。例えば、「花をピックアップしたい」などのサンプル発話で会話を始めます。

## NLU を有効にして理解を高める
<a name="enable-assisted-nlu"></a>

作業中のチャットボットができたので、アシスト付き NLU で強化して、インテント認識とスロット解決を改善しましょう。アシスト NLU は、大規模言語モデル (LLMs) を使用して、トレーニング例とは異なるフレーズを使用している場合でも、ユーザーのリクエストをよりよく理解します。

**アシスト NLU を有効にするには**

1. Amazon Lex V2 コンソールで、ボットの設定に移動します。

1. 左側のナビゲーションペインで、**ボット設定**を選択します。

1. **アシスト NLU** で、**有効化** を選択します。

1. **保存**を選択して変更を適用します。

1. ボットを再度構築して、アシスト付き NLU の機能強化を適用します。

**改善をテストする:** テストコンソールでこれらのバリエーションを試して、アシスト NLU がさまざまなフレーズをどのように処理するかを確認してください。
+ 「バラを購入したい」(OrderFlowers インテントをトリガーして FlowerType をキャプチャする必要があります)
+ 「明日花を配達できますか？」 (OrderFlowers インテントをトリガーし、PickupDate をキャプチャする必要があります)
+ 「午後 3 時の集荷にチューリップが必要です」(OrderFlowers インテントをトリガーし、FlowerType と PickupTime をキャプチャする必要があります)

チャットボットが、明示的なサンプル発話として追加することなく、これらの自然なバリエーションをどのように理解できるかに注目してください。これは、AI を使用して自然言語の理解を向上させる Assisted NLU を利用しています。

## 次の手順
<a name="getting-started-next-steps"></a>

テンプレートを使用して最初のボットを作成したので、コンソールを使用して独自のボットを作成できます。カスタムボットの作成手順、およびボットの作成の詳細については、[Amazon Lex V2 ボットの使用](building-bots.md) を参照してください。

# 演習 2: 会話フローを確認する
<a name="exercise-2"></a>

 この演習では、クライアントアプリケーションと、[演習 1: テンプレートからチャットボットを作成する](exercise-1.md) で作成した Amazon Lex V2 ボットの間で送信される JSON 構造を確認します。会話では、[RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html) オペレーションを使用して JSON 構造を生成します。[RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html) は、レスポンスの中の HTTP ヘッダーと同じ情報を返します。

JSON 構造は、会話のターンごとに分割されます。ある *ターン* はクライアントアプリケーションからのリクエストで、ボットからの応答です。

## ターン 1
<a name="exercise-2-turn-1"></a>

会話の最初のターンでは、クライアントアプリケーションはボットとの会話を開始します。リクエストの URI と本文の両方でリクエストに関する情報が提供されています。

```
POST /bots/botId/botAliases/botAliasId/botLocales/localeId/sessions/sessionId/text HTTP/1.1
Content-type: application/json

{
    "text": "I would like to order flowers"
}
```
+ URI は、クライアントアプリケーションが通信しているボットを識別します。また、ユーザーとボットの間の特定の会話を識別するクライアントアプリケーションによって生成されたセッション識別子も含まれます。
+ リクエストの本文には、ユーザーがクライアントアプリケーションに入力したテキストが含まれます。この場合、テキストのみが送信されますが、アプリケーションはリクエスト属性やセッション状態などの追加情報を送信できます。詳細については、[RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html) オペレーションを参照してください。

送信元`text`では、Amazon Lex V2 はフラワーを注文するユーザーの意図を検出します。Amazon Lex V2 は、インテントのスロットの１つ (`FlowerType`) とそのスロットのプロンプトの１つを選択し、以下のレスポンスをクライアントアプリケーションに送信します。クライアントはユーザーへのレスポンスを表示しています。

```
{
    "interpretations": [
        {
            "intent": {
                "confirmationState": "None",
                "name": "OrderFlowers",
                "slots": {
                    "FlowerType": null,
                    "PickupDate": null,
                    "PickupTime": null
                },
                "state": "InProgress"
            },
            "nluConfidence": {
                "score": 0.95
            }
        },
        {
            "intent": {
                "name": "FallbackIntent",
                "slots": {}
            }
        }
    ],
    "messages": [
        {
            "content": "What type of flowers would you like to order?",
            "contentType": "PlainText"
        }
    ],
    "sessionId": "bf445a49-7165-4fcd-9a9c-a782493fba5c",
    "sessionState": {
        "dialogAction": {
            "slotToElicit": "FlowerType",
            "type": "ElicitSlot"
        },
        "intent": {
            "confirmationState": "None",
            "name": "OrderFlowers",
            "slots": {
                "FlowerType": null,
                "PickupDate": null,
                "PickupTime": null
            },
            "state": "InProgress"
        },
        "originatingRequestId": "9e8add70-4106-4a10-93f5-2ce2cb959e5f"
    }
}
```

## ターン 2
<a name="exercise-2-turn-2"></a>

ターン 2 では、ユーザーは、`FlowerType` スロットを満たす値を持つ、ターン 1 の Amazon Lex V2 ボットからのプロンプトに応答します。

```
{
    "text": "1 dozen roses"
}
```

ターン 2 の応答は、`FlowerType` スロットがいっぱいになり、次のスロット値を引き出すプロンプトが表示されます。

```
{
    "interpretations": [
        {
            "intent": {
                "confirmationState": "None",
                "name": "OrderFlowers",
                "slots": {
                    "FlowerType": {
                        "value": {
                            "interpretedValue": "dozen roses",
                            "originalValue": "dozen roses",
                            "resolvedValues": []
                        }
                    },
                    "PickupDate": null,
                    "PickupTime": null
                },
                "state": "InProgress"
            },
            "nluConfidence": {
                "score": 0.98
            }
        },
        {
            "intent": {
                "name": "FallbackIntent",
                "slots": {}
            }
        }
    ],
    "messages": [
        {
            "content": "What day do you want the dozen roses to be picked up?",
            "contentType": "PlainText"
        }
    ],
    "sessionId": "bf445a49-7165-4fcd-9a9c-a782493fba5c",
    "sessionState": {
        "dialogAction": {
            "slotToElicit": "PickupDate",
            "type": "ElicitSlot"
        },
        "intent": {
            "confirmationState": "None",
            "name": "OrderFlowers",
            "slots": {
                "FlowerType": {
                    "value": {
                        "interpretedValue": "dozen roses",
                        "originalValue": "dozen roses",
                        "resolvedValues": []
                    }
                },
                "PickupDate": null,
                "PickupTime": null
            },
            "state": "InProgress"
        },
        "originatingRequestId": "9e8add70-4106-4a10-93f5-2ce2cb959e5f"
    }
}
```

## ターン 3
<a name="exercise-2-turn-3"></a>

ターン 3 では、ユーザーは、`PickupDate` スロットを満たす値を持つ、ターン 2 の Amazon Lex V2 ボットからのプロンプトに応答します。

```
{
    "text": "next monday"
}
```

ターン 3 の応答で `FlowerType` と `PickupDate` スロット両方が入力され、次のスロット値を誘発するプロンプトが表示されます。

```
{
    "interpretations": [
        {
            "intent": {
                "confirmationState": "None",
                "name": "OrderFlowers",
                "slots": {
                    "FlowerType": {
                        "value": {
                            "interpretedValue": "dozen roses",
                            "originalValue": "dozen roses",
                            "resolvedValues": []
                        }
                    },
                    "PickupDate": {
                        "value": {
                            "interpretedValue": "2022-12-28",
                            "originalValue": "next monday",
                            "resolvedValues": [
                                "2021-01-04"
                            ]
                        }
                    },
                    "PickupTime": null
                },
                "state": "InProgress"
            },
            "nluConfidence": {
                "score": 1.0
            }
        },
        {
            "intent": {
                "name": "FallbackIntent",
                "slots": {}
            }
        }
    ],
    "messages": [
        {
            "content": "At what time do you want the 1 dozen roses to be picked up?",
            "contentType": "PlainText"
        }
    ],
    "sessionId": "bf445a49-7165-4fcd-9a9c-a782493fba5c",
    "sessionState": {
        "dialogAction": {
            "slotToElicit": "PickupTime",
            "type": "ElicitSlot"
        },
        "intent": {
            "confirmationState": "None",
            "name": "OrderFlowers",
            "slots": {
                "FlowerType": {
                    "value": {
                        "interpretedValue": "dozen roses",
                        "originalValue": "dozen roses",
                        "resolvedValues": []
                    }
                },
                "PickupDate": {
                    "value": {
                        "interpretedValue": "2021-01-04",
                        "originalValue": "next monday",
                        "resolvedValues": [
                            "2021-01-04"
                        ]
                    }
                },
                "PickupTime": null
            },
            "state": "InProgress"
        },
        "originatingRequestId": "9e8add70-4106-4a10-93f5-2ce2cb959e5f",
        "sessionAttributes": {}
    }
}
```

## ターン 4
<a name="exercise-2-turn-4"></a>

ターン 4 では、ユーザーはインテントの最終スロット値、つまり花が拾われる時間を提供します。

```
{
    "text": "5 in the evening"
}
```

レスポンスでは、Amazon Lex V2 はオーダーが正しいことを確認する確認プロンプトをユーザーに送信します。`dialogAction` は `ConfirmIntent` に設定され、`confirmationState` は `None` です。

```
{
    "interpretations": [
        {
            "intent": {
                "confirmationState": "None",
                "name": "OrderFlowers",
                "slots": {
                    "FlowerType": {
                        "value": {
                            "interpretedValue": "dozen roses",
                            "originalValue": "dozen roses",
                            "resolvedValues": []
                        }
                    },
                    "PickupDate": {
                        "value": {
                            "interpretedValue": "2021-01-04",
                            "originalValue": "next monday",
                            "resolvedValues": [
                                "2021-01-04"
                            ]
                        }
                    },
                    "PickupTime": {
                        "value": {
                            "interpretedValue": "17:00",
                            "originalValue": "5 evening",
                            "resolvedValues": [
                                "17:00"
                            ]
                        }
                    }
                },
                "state": "InProgress"
            },
            "nluConfidence": {
                "score": 1.0
            }
        },
        {
            "intent": {
                "name": "FallbackIntent",
                "slots": {}
            }
        }
    ],
    "messages": [
        {
            "content": "Okay, your dozen roses will be ready for pickup by 17:00 on 2021-01-04.  Does this sound okay?",
            "contentType": "PlainText"
        }
    ],
    "sessionId": "bf445a49-7165-4fcd-9a9c-a782493fba5c",
    "sessionState": {
        "dialogAction": {
            "type": "ConfirmIntent"
        },
        "intent": {
            "confirmationState": "None",
            "name": "OrderFlowers",
            "slots": {
                "FlowerType": {
                    "value": {
                        "interpretedValue": "dozen roses",
                        "originalValue": "dozen roses",
                        "resolvedValues": []
                    }
                },
                "PickupDate": {
                    "value": {
                        "interpretedValue": "2021-01-04",
                        "originalValue": "next monday",
                        "resolvedValues": [
                            "2021-01-04"
                        ]
                    }
                },
                "PickupTime": {
                    "value": {
                        "interpretedValue": "17:00",
                        "originalValue": "5 evening",
                        "resolvedValues": [
                            "17:00"
                        ]
                    }
                }
            },
            "state": "InProgress"
        },
        "originatingRequestId": "9e8add70-4106-4a10-93f5-2ce2cb959e5f"
    }
}
```

## ターン 5
<a name="exercise-2-turn-5"></a>

最終ターンでは、ユーザーは確認プロンプトに応答します。

```
{
    "text": "yes"
}
```

レスポンスで、Amazon Lex V2 の送信は、`confirmationState` の設定によりインテントが満たされたことを示します。`Confirmed` と `dialogAction` を閉じてください。すべてのスロット値は、クライアントアプリケーションで使用できます。

```
{
    "interpretations": [
        {
            "intent": {
                "confirmationState": "Confirmed",
                "name": "OrderFlowers",
                "slots": {
                    "FlowerType": {
                        "value": {
                            "interpretedValue": "dozen roses",
                            "originalValue": "dozen roses",
                            "resolvedValues": []
                        }
                    },
                    "PickupDate": {
                        "value": {
                            "interpretedValue": "2021-01-04",
                            "originalValue": "next monday",
                            "resolvedValues": [
                                "2021-01-04"
                            ]
                        }
                    },
                    "PickupTime": {
                        "value": {
                            "interpretedValue": "17:00",
                            "originalValue": "5 evening",
                            "resolvedValues": [
                                "17:00"
                            ]
                        }
                    }
                },
                "state": "Fulfilled"
            },
            "nluConfidence": {
                "score": 1.0
            }
        },
        {
            "intent": {
                "name": "FallbackIntent",
                "slots": {}
            }
        }
    ],
    "messages": [
        {
            "content": "Thanks. ",
            "contentType": "PlainText"
        }
    ],
    "sessionId": "bf445a49-7165-4fcd-9a9c-a782493fba5c",
    "sessionState": {
        "dialogAction": {
            "type": "Close"
        },
        "intent": {
            "confirmationState": "Confirmed",
            "name": "OrderFlowers",
            "slots": {
                "FlowerType": {
                    "value": {
                        "interpretedValue": "dozen roses",
                        "originalValue": "dozen roses",
                        "resolvedValues": []
                    }
                },
                "PickupDate": {
                    "value": {
                        "interpretedValue": "2021-01-04",
                        "originalValue": "next monday",
                        "resolvedValues": [
                            "2021-01-04"
                        ]
                    }
                },
                "PickupTime": {
                    "value": {
                        "interpretedValue": "17:00",
                        "originalValue": "5 evening",
                        "resolvedValues": [
                            "17:00"
                        ]
                    }
                }
            },
            "state": "Fulfilled"
        },
        "originatingRequestId": "9e8add70-4106-4a10-93f5-2ce2cb959e5f"
    }
}
```

# 演習 3: 高度なカスタマーサービスチャットボットを構築する
<a name="exercise-3"></a>

この高度な演習では、e コマース会社向けの高度なカスタマーサービスチャットボットを構築します。このボットは、注文管理、インテリジェントアップセリング、リード生成、収益最適化などのエンタープライズレベルの機能を示しています。チャットボットは AI を活用した機能を使用して、パーソナライズされたカスタマーエクスペリエンスを提供し、ビジネスの成長を促進します。

## SmartCommerce カスタマーサービスボットの概要
<a name="exercise-3-overview"></a>

**SmartCommerce カスタマーサービスボット**は、収益機会を最大化しながら、複雑な顧客とのやりとりを処理するように設計されています。この例では、インテリジェントな会話管理を通じて販売拡大を推進しながら、企業がカスタマーサービスを自動化する方法を示します。
+ **カスタムインテント** – ボットには、包括的なカスタマーサービスのための複数のカスタムインテントが含まれています。
  + `CheckOrderStatus` - 注文ステータス情報を検証して提供します
  + `ProcessReturn` - 戻りリクエストと交換を処理します
  + `UpsellProducts` - 追加の製品やサービスを推奨します
  + `CaptureLeadInfo` - リード生成の顧客情報を収集します
  + `ScheduleCallback` - カスタマーサービスのコールバックを予約します
+ **組み込みインテント** – 一般的なやり取りに Amazon Lex V2 組み込みインテントを活用します。
  + [AMAZON.HelpIntent](built-in-intent-help.md) - ヘルプとガイダンスを提供します
  + [AMAZON.CancelIntent](built-in-intent-cancel.md) - キャンセルリクエストを処理します
  + [AMAZON.StopIntent](built-in-intent-stop.md) - 会話を正常に終了します
+ **カスタムスロットタイプ** – ビジネス固有のデータ専用のスロットタイプ:
  + `ProductCategories` - 電子製品、衣類、ホーム、書籍、スポーツ
  + `ReturnReasons` - 欠陥、サイズが間違っている、考え方が変わった、説明どおりではない
  + `ContactPreferences` - E メール、SMS、電話、アプリ内通知
  + `CustomerTiers` - 青銅、シルバー、ゴールド、プラチナ
+ **組み込みスロットタイプ** – 一般的なデータ形式に Amazon Lex V2 組み込みスロットを使用します。
  + [AMAZON.Date](built-in-slot-date.md) - 配信日とコールバックスケジューリングの場合
  + [AMAZON.Time](built-in-slot-time.md) - コールバック時間と配信ウィンドウの場合
  + [AMAZON.EmailAddress](built-in-slot-email.md) - お客様の E メール収集用
  + [AMAZON.PhoneNumber](built-in-slot-phone.md) - お客様の電話番号の場合
  + [AMAZON.Number](built-in-slot-number.md) - 注文番号と数量の場合

## 詳細なインテント設定
<a name="exercise-3-intents-detail"></a>

### CheckOrderStatus のインテント
<a name="check-order-status-intent"></a>

このインテントは、注文の検証とステータスの問い合わせを処理し、アップセリングの機会を特定しながら、顧客にリアルタイムの注文情報を提供します。
+ **必要なスロット:**
  + `OrderNumber` ([AMAZON.Number](built-in-slot-number.md)) - お客様の注文番号
  + `CustomerEmail` ([AMAZON.EmailAddress](built-in-slot-email.md)) - 検証用の E メール
+ **サンプル発話:**
  + 「注文 \$1OrderNumber\$1 のステータスは何ですか」
  + 「注文番号 \$1OrderNumber\$1 を確認する必要があります」
  + 「パッケージの場所」
  + 「注文の追跡 \$1OrderNumber\$1」
  + 「注文はまだ配送済みです」
+ **AI を活用した機能:**
  + アシスト NLU を使用して、「パッケージ」、「モノ」、「配信」などのバリエーションを理解します
  + 自然な音声パターンから注文番号を自動的に抽出します

### UpsellProducts のインテント
<a name="upsell-products-intent"></a>

このインテントは、顧客履歴と現在のインタラクションコンテキストに基づいて補完的な製品とプレミアムサービスをレコメンデーションすることで、収益機会を積極的に特定します。
+ **必要なスロット:**
  + `ProductCategory` (ProductCategories) - 目的のカテゴリ
  + `CustomerTier` (CustomerTiers) - 顧客ロイヤルティレベル
  + `Budget` ([AMAZON.Number](built-in-slot-number.md)) - 顧客の予算範囲
+ **サンプル発話:**
  + 「関連製品を表示する」
  + 「これで他に何が起こるか」
  + 「何か取引はありますか」
  + 「\$1ProductCategory\$1 アイテムに興味がある」
  + 「What's on sale today」
+ **収益最適化機能:**
  + 顧客層に基づく動的料金
  + 購入履歴を使用してパーソナライズされたレコメンデーション
  + 即時購入を促進する期間限定オファーの作成

### CaptureLeadInfo インテント
<a name="capture-lead-info-intent"></a>

このインテントは、リード生成のために顧客情報を体系的に収集し、アグリゲータに販売したり、ターゲットを絞ったマーケティングキャンペーンに使用したりできる貴重なデータを作成します。
+ **必要なスロット:**
  + `CustomerFirstName` ([AMAZON.FirstNameA](built-in-slot-first-name.md)) - パーソナライゼーションのためのお客様の名
  + `CustomerLastName` ([AMAZON.LastName](built-in-slot-last-name.md)) - 販売履歴検索のお客様の姓
  + `CustomerEmail` ([AMAZON.EmailAddress](built-in-slot-email.md)) - E メールアドレス
  + `CustomerPhone` ([AMAZON.PhoneNumber](built-in-slot-phone.md)) - 電話番号
  + `InterestCategory` (ProductCategories) - 製品の関心
  + `ContactPreference` (ContactPreferences) - 希望する問い合わせ方法
+ **サンプル発話:**
  + 「新製品について知りたい」
  + 「更新にサインアップする」
  + 「\$1InterestCategory\$1 に興味がある」
  + 「売上について知らせてください」
  + 「メーリングリストに参加したい」
  + 「私の名前は \$1CustomerFirstName\$1 \$1CustomerLastName\$1」
  + 「私は \$1CustomerFirstName\$1 \$1CustomerLastName\$1 で、パーソナライズされたレコメンデーションが必要です」
+ **リード生成機能:**
  + CRM 統合用の構造化データ収集
  + インタラクション品質に基づくリードスコアリング
  + 自動リード認定とルーティング
  + アグリゲータ販売のデータ形式
+ **販売履歴の統合:**
  + S3-stored購入履歴テーブルでの顧客名検索
  + パーソナライズされたレコメンデーションの購入パターン分析
  + クロスカテゴリ購入動作の識別
  + ターゲットオファーの季節的な購入傾向分析
  + 階層ベースの料金の顧客有効期間値の計算

## マルチターン会話フロー
<a name="exercise-3-multiturn-flow"></a>

SmartCommerce ボットは、複数のインテントにまたがる複雑な複数ターンの会話を処理し、インタラクション全体でコンテキストを維持するように設計されています。これにより、収益機会を最大化しながら、自然で人間のようなエクスペリエンスが生まれます。

### 会話フローの例
<a name="conversation-flow-example"></a>

**ターン 1-3: 注文ステータスチェック**

```
Customer: "Hi, I need to check on my order"
Bot: "I'd be happy to help you check your order status. Can you provide your order number?"
Customer: "It's order 12345"
Bot: "Thank you. To verify your identity, can you provide the email address associated with this order?"
Customer: "john.doe@email.com"
Bot: "Perfect! Order #12345 is currently being prepared for shipment. You should receive it by tomorrow. 
     Since you're a Gold tier customer, would you like to hear about some exclusive deals on related items?"
```

**ターン 4～6: アップセリングの機会**

```
Customer: "Sure, what do you have?"
Bot: "Based on your Electronics purchase, I can offer you a 20% discount on premium accessories. 
     What's your budget range for additional items?"
Customer: "Maybe around $50"
Bot: "Excellent! I have a wireless charging pad normally $60, now $48 with your Gold discount. 
     Plus, if you add it to your current order, shipping is free. Should I add this to your cart?"
```

**Turn 7-11: 販売履歴ルックアップによるリード生成**

```
Customer: "Not right now, but I'd like to hear about future deals"
Bot: "Absolutely! I can set you up to receive personalized offers. What's your first name?"
Customer: "John"
Bot: "Thanks John! And your last name so I can look up your purchase history for better recommendations?"
Customer: "Smith"
Bot: "Perfect! Let me check your purchase history... I see you've bought electronics and home items before. 
     Based on your past purchases, I can offer you exclusive deals on smart home accessories. 
     How would you prefer to be contacted?"
Customer: "Email is fine"
Bot: "Great! I'll make sure john.doe@email.com gets personalized deals based on your purchase history. 
     You're all set for our premium recommendations program!"
```

### コンテキスト管理機能
<a name="context-management"></a>
+ **セッションの永続性:** 複数のインテントにわたって顧客情報を維持します
+ **インテントチェイニング: **注文チェック、アップセリング、リードキャプチャ間のシームレスな移行
+ **動的パーソナライゼーション:** 顧客層と購入履歴に基づいてオファーを調整します
+ **収益追跡:** アップセルの成功率とリード品質スコアをモニタリングします

## AI を活用した機能
<a name="exercise-3-ai-features"></a>

このチャットボットは、複数の AI 機能を活用して、ビジネスの成長を推進しながら、インテリジェントでパーソナライズされたカスタマーサービスを提供します。

### アシスト付き NLU 実装
<a name="assisted-nlu-implementation"></a>

アシスト NLU は、大規模言語モデルを使用して、非標準フレーズを使用したり、複数のリクエストを 1 回の発話で組み合わせたりしても、顧客の意図を理解します。
+ **自然言語の理解:**
  + 「私のモノはまだ到着していません」 → CheckOrderStatus インテント
  + 「このジャンクを返したい」 → ProcessReturn インテント
  + 「Show me what else you got」 → UpsellProducts インテント
+ **マルチインテント認識:**
  + 「注文 12345 を確認して契約にサインアップする」 → CheckOrderStatus \$1 CaptureLeadInfo

### 生成スロットの解像度
<a name="generative-slot-resolution"></a>

AI を使用して、トレーニングデータに完全に一致することなく、複雑な自然言語入力からスロット値を抽出します。
+ **スマート抽出:**
  + 「先週、いくつかの電子機器を購入しました。注文番号は 12345 のようなものだった」 → OrderNumber: 12345、ProductCategory: Electronics
  + 「携帯電話で電話 555-123-4567 または E メール john@company.com」 → 電話: 555-123-4567、E メール: john@company.com

### 感情分析の統合
<a name="sentiment-analysis"></a>

会話を通じて顧客の感情をモニタリングし、アプローチを調整し、必要に応じてエスカレーションします。
+ **感情ベースのルーティング:**
  + ポジティブセンチメント → 積極的なアップセリングアプローチ
  + 中立的なセンチメント → 穏やかにアップセリングする標準サービス
  + 否定的な感情 → 問題解決に集中し、アップセリングを最小限に抑える

## 注文の検証および確認システム
<a name="exercise-3-confirmation-system"></a>

ボットには、顧客 ID の検証、注文の詳細の確認、複数のチャネルを介した確認の送信を行う包括的な確認システムが含まれています。

### 多要素検証プロセス
<a name="verification-process"></a>
+ **プライマリ検証:**
  + 注文番号の検証
  + E メールアドレスの確認
  + 支払い方法の最後の 4 桁 (機密性の高いオペレーションの場合)
+ **セカンダリ検証:**
  + 配送先住所の確認
  + 購入日の検証
  + 製品詳細の検証

### マルチチャネル確認システム
<a name="confirmation-channels"></a>

ボットは、顧客の好みとアクションタイプに基づいて、複数のチャネルを通じて確認を自動的に送信します。
+ **E メールの確認:**
  + 追跡情報を含む注文ステータスの更新
  + 前払い配送ラベルを使用した返品承認
  + 配信の詳細を含む購入確認のアップセル
  + ウェルカムオファーによるリードキャプチャの確認
+ **SMS 確認:**
  + 即時注文ステータスの更新
  + 時間枠を含む配信通知
  + 関心のある顧客向けのフラッシュセールアラート
+ **アプリ内通知:**
  + 注文のリアルタイム更新
  + パーソナライズされた製品のレコメンデーション
  + ロイヤルティプログラムの更新

## POS (POS) 統合
<a name="exercise-3-pos-integration"></a>

チャットボットは POS システムと直接統合して、トランザクションを処理し、割引を適用し、インベントリをリアルタイムで更新します。

### リアルタイムトランザクション処理
<a name="transaction-processing"></a>
+ **アップセルトランザクションフロー:**

  ```
  1. Customer accepts upsell offer
  2. Bot validates inventory availability
  3. Bot applies customer-tier discount
  4. Bot processes payment using stored payment method
  5. Bot updates order with additional items
  6. Bot sends confirmation via preferred channel
  7. Bot updates customer profile with purchase data
  ```
+ **収益の追跡:**
  + 顧客層別のアップセル変換率
  + インタラクションあたりの平均注文値の増加
  + チャットボットインタラクションへの収益属性
  + お客様のライフタイム価値への影響

### 動的料金エンジン
<a name="dynamic-pricing"></a>
+ **階層ベースの料金:**
  + 青銅: 標準料金
  + シルバー: アップセルの 5% 割引
  + ゴールド: アップセルの 10～20% 割引
  + Platinum: 25% 割引 \$1 送料無料
+ **コンテキスト料金:**
  + 問題解決シナリオ: 満足度を維持するための追加の割引
  + 価値の高い顧客: 排他的な料金階層
  + 在庫クリアランス: 動きの遅い商品の積極的な割引

## 高度なリード生成システム
<a name="exercise-3-lead-generation"></a>

チャットボットには、複数の収益ストリームを通じて顧客データをキャプチャ、認定、収益化する高度なリード生成システムが含まれています。

### マルチタッチリードキャプチャ戦略
<a name="lead-capture-strategy"></a>
+ **オポチュニスティックキャプチャ:**
  + 注文ステータスチェック中：「類似製品の更新を希望しますか？」
  + 問題解決後：「製品の改善について通知できますか？」
  + アップセルのやり取り中：「このカテゴリの今後の取引について警告すべきでしょうか？」
+ **付加価値キャプチャ:**
  + 排他的なメンバー料金アクセス
  + 新製品の発売への早期アクセス
  + パーソナライズされた製品のレコメンデーション
  + 誕生日および記念日の特別オファー

### 自動リード認定
<a name="lead-qualification"></a>
+ **スコアリング基準:**
  + 購入履歴値: 0～25 ポイント
  + エンゲージメントレベル: 0～20 ポイント
  + 連絡先情報の完全性: 0～15 ポイント
  + 製品カテゴリの対象範囲: 0～15 ポイント
  + アップセルの試行に対するレスポンス: 0～25 ポイント
+ **リードカテゴリ:**
  + ホットリード (80～100 ポイント): セールスチームの即時連絡先
  + ウォームリード (60～79 ポイント): 自動ナーチャシーケンス
  + Cold Leads (40～59 ポイント): 毎月のニュースレター
  + 見込み (0～39 ポイント): 四半期ごとのプロモーション E メール

### アグリゲータのリードデータ収益化
<a name="aggregator-sales"></a>

システム形式とパッケージは、サードパーティーのアグリゲータに販売されるデータをリードし、追加の収益ストリームを作成します。
+ **データパッケージ:**
  + *プレミアムパッケージ:* 完全な連絡先情報、購入履歴、設定、エンゲージメントスコア
  + *スタンダードパッケージ:* 連絡先情報、基本設定、カテゴリの関心
  + *ベーシックパッケージ:* E メールアドレス、主な関心カテゴリ
+ **コンプライアンス機能:**
  + 明示的な同意追跡による GDPR コンプライアンス
  + オプトアウトメカニズムへの CCPA コンプライアンス
  + E メールマーケティングの CAN-SPAM コンプライアンス
  + データ保持および削除ポリシー
+ **収益の最適化:**
  + リード品質スコアに基づく動的料金
  + プレミアムアグリゲータとの排他的データパートナーシップ
  + 高価値リードのリアルタイム入札

## 収益最適化戦略
<a name="exercise-3-revenue-optimization"></a>

すべてのインタラクションは、インテリジェントなアップセリング、クロスセリング、カスタマーライフタイム価値の最適化を通じて収益を最大化するように設計されています。

### インテリジェントアップセリング戦略
<a name="upselling-strategies"></a>
+ **コンテキストアップセリング:**
  + 注文ステータスチェック → "注文の準備ができました\$1 5 USD の速達配送を追加しますか？」
  + 返送リクエスト → 「返送する代わりに、アップグレードされたモデルと交換しますか？」
  + 製品のお問い合わせ → 「このアイテムは [補完製品] と完全にペアリング - バンドルして 15% を節約」
+ **緊急ベースの販売:**
  + 「このオファーは 24 時間後に期限切れになります」
  + 「この価格での在庫は 3 つだけです」
  + 「フラッシュセールは午前 0 時に終了します」

### クロスセリングの機会
<a name="cross-selling-opportunities"></a>
+ **製品エコシステムの販売:**
  + 電子 → アクセサリ、保証、インストールサービス
  + 服 → アイテムのマッチング、ケア製品、スタイルサービス
  + ホーム商品 → 補完アイテム、メンテナンス製品、設計相談
+ **サービスアップセリング:**
  + 延長保証と保護プラン
  + プレミアムカスタマーサポート階層
  + サブスクリプションサービスと自動配信
  + プロフェッショナルによるインストールとセットアップ

### カスタマーライフタイムバリューの最適化
<a name="lifetime-value-optimization"></a>
+ **ロイヤルティプログラムの統合:**
  + チャットボットインタラクションに基づく自動階層アップグレード
  + アップセルオファーを利用するためのボーナスポイント
  + チャットボットのみの限定報酬と割引
+ **保持戦略:**
  + チャーンを防ぐためのプロアクティブ問題解決
  + 非アクティブなお客様向けのパーソナライズされたウィンバックオファー
  + 記念日とマイルストーンの祝賀オファー

## 実装手順
<a name="exercise-3-implementation"></a>

以下のstep-by-stepの手順に従って、収益最適化機能をすべて備えた高度なカスタマーサービスチャットボットを構築します。

### 前提条件とセットアップ要件
<a name="exercise-3-prerequisites"></a>

SmartCommerce ボットを構築する前に、必要な AWS アカウントのセットアップとアクセス許可があることを確認し、サービスに関する考慮事項を理解してください。

#### AWS アカウントとアクセス要件
<a name="aws-account-setup"></a>
+ **AWS アカウント:** 請求が有効になっているアクティブな AWS アカウントが必要です。お持ちでない場合は、[aws.amazon.com](https://aws.amazon.com/) でサインアップしてください。
+ **IAM アクセス許可:** AWS ユーザーまたはロールには、次のアクセス許可が必要です。
  + `lex:*` - ボットの作成と管理のための完全な Amazon Lex V2 アクセス許可
  + `iam:CreateRole` - ボットのサービスロールを作成するには
  + `iam:AttachRolePolicy` - サービスロールにポリシーをアタッチするには
  + `lambda:CreateFunction` - Lambda 統合の場合 (オプション)
  + `logs:CreateLogGroup` - Amazon CloudWatch Logs ログ記録用
+ **リージョンの選択:** Amazon Lex V2 とターゲットオーディエンスをサポートする AWS リージョンを選択します。 V2 推奨されるリージョンは次のとおりです。
  + 米国東部 (バージニア北部) - us-east-1
  + 米国東部 (オレゴン) - us-west-2
  + ヨーロッパ (アイルランド) eu-west-1
  + アジアパシフィック (シドニー) - ap-southeast-2

#### サービスの制限とクォータ
<a name="service-limits-quotas"></a>

Amazon Lex V2 には、ボットの開発とデプロイに影響する可能性のあるいくつかのサービス制限があります。
+ **ボットの制限:**
  + アカウントあたり、リージョンあたり最大 100 個のボット
  + ボットあたり最大 100 インテント
  + ボットあたり最大 100 個のスロットタイプ
  + インテントあたり最大 200 スロット
+ **ランタイムの制限:**
  + 最大 15 分のセッションタイムアウト
  + 1 秒あたり最大 1,000 リクエスト (引き上げ可能)
  + テキスト入力あたり最大 1,500 文字
+ **トレーニングデータの制限:**
  + インテントあたり最大 1,500 サンプル発話
  + 最大 10,000 個のスロットタイプ値
  + サンプル発話あたり最大 140 文字

**注記**  
本番稼働用により高い制限が必要な場合は、AWS サポートセンターを通じてクォータの引き上げをリクエストできます。

#### コストについて
<a name="cost-considerations"></a>

Amazon Lex V2 の料金を理解すると、チャットボットデプロイの計画と予算に役立ちます。 V2 
+ **リクエストベースの料金:**
  + テキストリクエスト: 1 か月あたり最初の 10,000 件のリクエストの後、リクエストごとに 0.00075 USD
  + スピーチリクエスト: 1 か月あたり最初の 1,000 件のリクエストの後、リクエストごとに 0.004 USD
+ **無料利用枠:**
  + 最初の 1 年間、1 か月あたり 10,000 件のテキストリクエスト
  + 最初の 1 年間、1 か月あたり 1,000 件の音声リクエスト
+ **追加コスト:**
  + Lambda 関数 (使用する場合): 100 1Mリクエストあたり 0.20 USD \$1 コンピューティング時間
  + Amazon CloudWatch Logs ログ: 取り込まれた GB あたり 0.50 USD
  + 外部統合のデータ転送コスト
+ **コスト最適化のヒント:**
  + セッション属性を使用して冗長な API コールを減らす
  + 効率的な会話フローを実装してターンを最小限に抑える
  + CloudWatch Logs を使用して使用状況をモニタリングし、最適化の機会を特定する

**重要**  
現在の料金情報については、料金が変わる可能性があるため、[Amazon Lex の料金ページ](https://aws.amazon.com/lex/pricing/)にアクセスしてください。

#### Lambda 統合の概要
<a name="lambda-integration-basics"></a>

この演習では Lex ボット設定に焦点を当てますが、説明されている高度な機能 (POS 統合、リード生成、収益最適化) では、通常、バックエンド処理に Lambda 関数が必要です。
+ **Lambda が必要な場合:**
  + 外部データベースに対する注文ステータスの検証
  + アップセルのリアルタイムのインベントリチェック
  + 顧客データのストレージと取得
  + 顧客の姓名を使用した S3 テーブルの販売履歴検索
  + パーソナライズされたレコメンデーションの購入パターン分析
  + 支払い処理の統合
  + E メールと SMS の確認の送信
+ **S3 販売履歴の統合:**
  + CustomerFirstName スロットと CustomerLastName スロットを使用して S3 テーブルをクエリする
  + 購入履歴を分析して購入パターンと設定を特定する
  + 過去の購入に基づいてパーソナライズされた製品のレコメンデーションを生成する
  + 動的料金戦略の顧客存続期間価値を計算する
  + 購入相関分析からクロスセルの機会を特定する
+ **基本的な Lambda セットアップ要件:**
  + 適切なアクセス許可を持つ Lambda 実行ロール
  + プライベートリソースにアクセスする場合の VPC 設定
  + 設定の環境変数
  + エラー処理とログ記録の実装
+ **統合ポイント:**
  + インテントフルフィルメント - 完了したインテントを処理する
  + スロット検証 - ユーザー入力をリアルタイムで検証する
  + ダイアログ管理 - 会話フローを制御する

**注記**  
この演習では、Lex ボット設定に焦点を当てます。Lambda 統合は、要件の進化に応じて後で追加できます。ボットはテストとデモンストレーションの目的で静的レスポンスを使用します。

#### 実装前チェックリスト
<a name="getting-started-checklist"></a>

ボットの作成に進む前に、以下を確認してください。
+ ✓ 請求が有効になっているアクティブな AWS アカウント
+ ✓ Lex および関連サービスの適切な IAM アクセス許可
+ ✓ 選択したターゲット AWS リージョン
+ ✓ サービスの制限とクォータの確認
+ ✓ コストへの影響を理解している
+ ✓ 計画された Lambda 統合アプローチ (必要な場合)
+ ✓ AWS マネジメントコンソールへのアクセス

### SmartCommerce ボットを作成する
<a name="create-advanced-bot-procedure"></a>

**SmartCommerce カスタマーサービスボットを作成するには**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/) で Amazon Lex コンソールを開きます。

1. [**ボットの作成**] を選択します。

1. **作成方法**について、「**空白のボットを作成**」を選択します。

1. Bot **Configuration** セクションで、次の操作を行います。
   + ボット名: **SmartCommerceBot**
   + 説明: **Advanced customer service chatbot with upselling, lead generation, and revenue optimization**

1. **アクセス許可** セクションで、**基本的な Amazon Lex アクセス許可で新しいロールを作成する** を選択します。

1. **[Children's Online Privacy Protection Act (COPPA)]** セクションで、**[いいえ]** を選択します。

1. **セッションタイムアウト**セクションで、複雑なマルチターン会話を許可する**15 minutes**ように を に設定します。

1. [**次へ**] を選択します。

1. 言語として英語 (米国) を追加し、**完了 **を選択します。

### カスタムスロットタイプを作成する
<a name="create-custom-slot-types-procedure"></a>

**カスタムスロットタイプを作成するには**

1. 左側のナビゲーションペインで、**スロットタイプ**を選択します。

1. **スロットタイプを追加** を選択し、次のスロットタイプを作成します。

   1. **ProductCategories:**
      + 電化製品
      + 服
      + ホーム
      + 書籍
      + スポーツ
      + ビューティ
      + 自動車

   1. **ReturnReasons:**
      + 欠陥
      + サイズが正しくない
      + 変更されたマインド
      + 説明どおりではない
      + 配送時に破損
      + より安い料金が見つかりました

   1. **ContactPreferences:**
      + E メール
      + SMS
      + 通話
      + アプリ内通知
      + Mail

   1. **CustomerTiers:**
      + 青銅
      + シルバー
      + ゴールド
      + プラチナ

### カスタムインテントの作成
<a name="create-intents-procedure"></a>

**CheckOrderStatus インテントを作成するには**

1. 左側のナビゲーションペインで、**インテント**を選択します。

1. **インテントを追加** を選択し、 という名前を付けます**CheckOrderStatus**。

1. 次のサンプル発話を追加します。
   + 「注文 \$1OrderNumber\$1 のステータスは何ですか」
   + 「注文番号 \$1OrderNumber\$1 を確認する必要があります」
   + 「パッケージの場所」
   + 「注文の追跡 \$1OrderNumber\$1」
   + 「注文はまだ配送済みです」
   + 「注文が届くのはいつですか」
   + 「配信について知りたい」

1. 次のスロットを追加します。
   + `OrderNumber` ([AMAZON.Number](built-in-slot-number.md)) - 必須

     プロンプト：「注文番号を入力できますか？」
   + `CustomerEmail` ([AMAZON.EmailAddress](built-in-slot-email.md)) - 必須

     プロンプト：「ID を確認するには、この注文に関連付けられた E メールアドレスを指定してください。」

1. \$1CustomerEmail\$1 の「Let me check order \$1\$1OrderNumber\$1」という確認プロンプトを設定します。正しいですか？

1. フルフィルメントメッセージを設定します。「注文を見つけました\$1 注文 \$1\$1OrderNumber\$1 は \$1OrderStatus\$1 です。\$1UpsellMessage\$1"

**UpsellProducts インテントを作成するには**

1. という名前の新しいインテントを作成します**UpsellProducts**。

1. サンプル発話を追加します。
   + 「関連製品を表示する」
   + 「これで他に何が起こるか」
   + 「何か取引はありますか」
   + 「\$1ProductCategory\$1 アイテムに興味がある」
   + 「What's on sale today」
   + 「他のオプションを表示する」

1. スロットの追加:
   + `ProductCategory` (ProductCategories) - 必須

     プロンプト：「関心のある製品の種類」
   + `Budget` ([AMAZON.Number](built-in-slot-number.md)) - オプション

     プロンプト：「追加アイテムの予算範囲は何ですか？」

**CaptureLeadInfo インテントを作成するには**

1. という名前の新しいインテントを作成します**CaptureLeadInfo**。

1. サンプル発話を追加します。
   + 「新製品について知りたい」
   + 「更新にサインアップする」
   + 「\$1InterestCategory\$1 に興味がある」
   + 「売上について知らせてください」
   + 「メーリングリストに参加したい」
   + 「Send me deals and offers」
   + 「私の名前は \$1CustomerFirstName\$1 \$1CustomerLastName\$1」
   + 「私は \$1CustomerFirstName\$1 \$1CustomerLastName\$1 で、パーソナライズされたレコメンデーションが必要です」

1. スロットの追加:
   + `CustomerFirstName` ([AMAZON.FirstNameA](built-in-slot-first-name.md)) - 必須

     プロンプト: 「パーソナライズされたサービスの名は何ですか？」
   + `CustomerLastName` ([AMAZON.LastName](built-in-slot-last-name.md)) - 必須

     プロンプト：「購入履歴を検索できるように姓を入力しますか？」
   + `CustomerEmail` ([AMAZON.EmailAddress](built-in-slot-email.md)) - 必須
   + `CustomerPhone` ([AMAZON.PhoneNumber](built-in-slot-phone.md)) - オプション
   + `InterestCategory` (ProductCategories) - 必須
   + `ContactPreference` (ContactPreferences) - 必須

### AI を活用した機能を有効にする
<a name="enable-ai-features-procedure"></a>

**アシスト NLU およびその他の AI 機能を有効にするには**

1. 左側のナビゲーションペインで、**ボット設定**を選択します。

1. **アシスト NLU** で、**有効化** を選択します。

1. **Generative AI** で、以下を有効にします。
   + アシスト付きスロット解決
   + 記述ボットの構築

1. **「感情分析**」で、**「有効化**」を選択します。

1. **[保存]** を選択します。

### ボットのテストとデプロイ
<a name="test-and-deploy-procedure"></a>

**SmartCommerce ボットをテストするには**

1. **ビルド** を選択してボットをコンパイルします。

1. ビルドが完了したら、**テスト**を選択します。

1. 次の会話フローをテストします。

   1. **注文ステータスフロー:**
      + ユーザー：「注文の確認 12345」
      + ボット: E メール検証をリクエストします
      + ユーザー: E メールを提供する
      + ボット: ステータスとアップセルを提供します

   1. **アップセリングフロー:**
      + ユーザー: "Show me deals"
      + ボット: 製品カテゴリを尋ねる
      + ユーザー: "Electronics"
      + ボット: パーソナライズされたオファーを提示します

   1. **リード生成フロー:**
      + ユーザー: 「更新にサインアップする」
      + ボット: 連絡先情報を収集します
      + ユーザー: 詳細を提供します
      + ボット: サブスクリプションを確認し、即時割引を提供します

1. AI 機能が動作していることを確認します。
   + 「私のモノが到着していない」などの自然言語のバリエーションをテストする
   + 感情分析がボットレスポンスを調整することを確認する
   + スロット解決が複雑な入力で動作することを確認する

1. テストが完了したら、**パブリッシュ**を選択してボットをデプロイします。

## パフォーマンス分析と最適化
<a name="exercise-3-analytics"></a>

包括的な分析と収益追跡を使用して、SmartCommerce ボットのパフォーマンスをモニタリングおよび最適化します。

### 主要なパフォーマンスメトリクス
<a name="key-metrics"></a>
+ **収益メトリクス:**
  + 顧客層別のアップセル変換率
  + インタラクションあたりの平均注文値の増加
  + 会話あたりの収益
  + お客様のライフタイム価値への影響
+ **リード生成メトリクス:**
  + インタラクションタイプ別のリードキャプチャレート
  + リード品質スコアと変換率
  + アグリゲータ売上からのデータ収益化収益
  + E メールサブスクリプションの増加率
+ **運用メトリクス:**
  + インテント認識の精度
  + スロットフィルの成功率
  + 会話の完了率
  + 顧客満足度スコア

### 継続的最適化戦略
<a name="optimization-strategies"></a>
+ **A/B テスト:**
  + さまざまなアップセルメッセージングアプローチをテストする
  + 積極的なリードキャプチャ手法と穏やかなリードキャプチャ手法を比較する
  + 最大変換の割引率を最適化する
+ **Machine Learningの最適化:**
  + 成功した会話パターンを分析する
  + アップセルオファーの最適なタイミングを特定する
  + 顧客階層分類アルゴリズムを改良する

## 演習の結論
<a name="exercise-3-conclusion"></a>

お疲れ様でした。収益の最適化とカスタマーエンゲージメントのためのエンタープライズレベルの機能を示す高度なカスタマーサービスチャットボットを正常に構築しました。この SmartCommerce ボットは、企業が Amazon Lex V2 の AI を活用した機能を活用して以下を実現する方法を示しています。 V2
+ **収益を最大化する:** インテリジェントなアップセリング、クロスセリング、動的な料金戦略を通じて
+ **リードの生成:** 複数の収益ストリームの顧客情報を体系的にキャプチャして認定する
+ **カスタマーエクスペリエンスの向上:** AI を使用して自然言語を理解し、パーソナライズされたインタラクションを提供する
+ **オペレーションの最適化:** 品質を維持しながら効率的にスケールする自動化されたカスタマーサービスを通じて

この演習で示す手法は、さまざまな業界やユースケースに合わせて適応および拡張でき、ビジネスの成長を促進する高度な会話型 AI ソリューションを構築するための基盤を提供します。

### 次のステップ
<a name="next-steps"></a>

SmartCommerce ボットをさらに強化するには、次の実装を検討してください。
+ **高度な統合:**
  + 完全な顧客プロファイルのための CRM システム統合
  + リアルタイムの可用性のためのインベントリ管理システム接続
  + シームレスなトランザクションのための支払い処理の統合
+ **マルチチャネルデプロイ:**
  + ウェブサイトチャットウィジェットの統合
  + ソーシャルメディアプラットフォーム接続
  + 音声インターフェイスの実装
+ **高度な分析:**
  + ビジネスメトリクスのカスタムダッシュボード開発
  + 顧客行動の予測分析
  + ROI の追跡と属性モデリング

# 開始方法のベストプラクティス
<a name="getting-started-best-practices"></a>

## 会話設計の原則
<a name="conversation-design-principles"></a>

これらの会話設計原則に最初から従えば、自然なやり取りを提供する、より効果的で保守可能でユーザーフレンドリーな Amazon Lex V2 チャットボットを構築できます。

### コア設計原則
<a name="core-design-principles"></a>
+ **ユーザー目標から始める** - システムができることではなく、ユーザーが達成したいことを中心にボットを設計します。ユーザーのジャーニーと期待される成果に焦点を当てます。
+ **自然言語を使用する** - プロンプトとレスポンスを会話で書き込みます。技術的な専門用語は避け、役に立つ人間として話してください。
+ **明確なオプションを提供する** - ユーザーが行き詰まったら、一般的なヘルプテキストではなく、発言できる内容の具体的な例を提供します。
+ **Keep It Simple** - 基本的な機能から始めて、徐々に複雑さを追加します。ユーザーは一般的なタスクをすばやく完了できるはずです。
+ **エラーを適切に処理する - ボットが理解できない場合は、**「理解できない」と言うのではなく、役に立つガイダンスを提供します。
+ **重要なアクションの確認** - 注文や情報の削除など、簡単に元に戻すことができないアクションを実行する前に、必ず確認してください。
+ **エスケープルートを提供する** - 常にユーザーに、必要に応じて最初からやり直したり、ヘルプを得たり、人間とつながったりする方法を提供します。

### 会話フローのベストプラクティス
<a name="conversation-flow-best-practices"></a>
+ **明確な期待を設定する** - ボットが会話の早い段階でできることとできないことをユーザーに知らせます。
+ **プログレッシブ開示を使用する** - 複数の質問でユーザーを圧倒するのではなく、一度に 1 つずつ情報を求めます。
+ **コンテキストを提供する** - 既に収集した情報と、まだ必要なものをユーザーに再認識させます。
+ **修正を簡単にする** - ユーザーが完全にやり直すことなく情報を修正できるようにします。

## 実際のユースケースと例
<a name="real-world-use-cases"></a>

これらの実用的な例は、新しい Amazon Lex V2 ユーザーが遭遇する一般的なシナリオに会話設計原則を適用する方法を示しています。

### ユースケース 1: 予約予約
<a name="use-case-appointment-booking"></a>

**シナリオ:** メディカルオフィスが予約スケジューリングを自動化したいと考えています。

**課題:** ユーザーは複数の情報 (サービスタイプ、日付、時刻、連絡先情報) を指定する必要があり、詳細を変更したい場合があります。

**ソリューションアプローチ:**
+ **Start Broad:** 「どのような予約をしますか？」 (歯、目の検査、診察)
+ **絞り込み:** 「いつ歯の予約を希望されますか？」 (「次の週」や「金曜日の午後」などの柔軟な入力を受け入れる)
+ **変更の確認とオファー:** 「3 月 15 日金曜日の午後 2 時に歯のクリーニングを予定しました。これはうまくいきますか？」
+ **変更の処理:** ユーザーが「代わりに午後 3 時に実行できますか？」と言った場合は、プロセス全体を再起動せずに時間を更新します。

**主なテクニック:**
+ 日付/時刻の柔軟な入力[AMAZON.Time](built-in-slot-time.md)に [AMAZON.Date](built-in-slot-date.md)と を使用する
+ 予約タイプのカスタムスロットタイプを作成する
+ 準備を確定する前に確認プロンプトを使用する

### ユースケース 2: 注文ステータスの照会
<a name="use-case-order-tracking"></a>

**シナリオ:** e コマース企業は、顧客がサポートを呼び出さずに注文ステータスを確認できるようにしたいと考えています。

**課題:** ユーザーは注文番号が役に立たないか、さまざまな方法で に尋ねる場合があります。

**ソリューションアプローチ:**
+ **複数のエントリポイント:**「注文の場所」、「パッケージの追跡」、または「注文ステータス」を受け入れる
+ **柔軟な識別:** 「注文の追跡に役立ちます。注文番号をお持ちですか、または E メールアドレスを使用しますか？」
+ **役立つガイダンス:**「注文番号は通常確認 E メールにあり、「ORD-」で始まります」
+ **クリア結果:** 「注文 \$1ORD-12345 は昨日発送され、明日午後 8 時までに到着します。詳細を追跡しますか？」

**主なテクニック:**
+ 注文番号に AMAZON.AlphaNumeric などの組み込みスロットタイプを使用する
+ 注文を識別する複数の方法 (E メール、電話番号、注文番号) を提供する
+ レスポンスで明確で実用的な情報を提供する

### ユースケース 3: よくある質問とサポート
<a name="use-case-faq-support"></a>

**シナリオ:** ソフトウェア会社が、一般的なサポートの質問を自動的に処理したいと考えています。

**課題:** ユーザーはさまざまな方法で同じ質問をし、一部の問題には人間の助けが必要です。

**ソリューションアプローチ:**
+ **広範なインテント認識:** 「ログインできない」、「ログインの問題」、「パスワードが機能しない」などのバリエーションを認識するようにインテントをトレーニングする
+ **ガイド付きトラブルシューティング:** 「いくつかの簡単なステップを試してみましょう。まず、パスワードをリセットしようとしましたか？」
+ **エスカレーションパス:**「これらのステップが機能しない場合は、サポートチームに接続できます。これを行いますか？」
+ **フォローアップ:** 「これは問題を解決しましたか? 他のサポートが必要な場合は、いつでも「ヘルプ」と言うことができます。」

**主なテクニック:**
+ 多くのサンプル発話を使用して、ユーザーが問題を表現するさまざまな方法をキャプチャする
+ 長い説明ではなくstep-by-stepガイダンスを提供する
+ 自動ヘルプが不十分な場合は、常にヒューマンサポートへの道を提供する

### 複雑なシナリオの処理
<a name="handling-complex-scenarios"></a>

単純なボットでも複雑な状況に遭遇します。これらを適切に処理する方法は次のとおりです。
+ **ユーザーが考え方を変更する場合:**
  + ユーザー：「実際には、チューリップの代わりにバラが欲しい」
  + ボット: "問題なし\$1 注文をバラに更新しました。バラは金曜日の午後 2 時に集荷できるようになります。これは正しいですか？」
+ **情報が不明確である場合:**
  + ユーザー: 「来週の花が必要」
  + ボット: 「よろしくお願いします。来週のどの曜日が最適ですか? 「月曜日」や「次の火曜日」などと言うことができます。
+ **ボットが理解できない場合:**
  + ユーザー：「長い茎を持つ紫が欲しい」
  + ボット: 「これを正しく取得したい」。紫色の花をお探しですか? 紫色のバラ、紫色のチューリップ、紫色の虹彩が利用可能です。」
+ **ユーザーがやり直す必要がある場合:**
  + ユーザー：「Cancel this, I want to start over」
  + ボット: "Of course\$1 現在の注文をクリアしました。今日はどのような種類の花を注文しますか？」