

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

# ボットの例
<a name="examples"></a>

このセクションでは、独自のアプリケーションの開始点として使用できる Amazon Lex ボットの例を示します。

**Topics**
+ [

# コールセンターエージェントアシスタント
](example-call-center.md)

# コールセンターエージェントアシスタント
<a name="example-call-center"></a>

このチュートリアルでは、Amazon Kendra で Amazon Lex V2 を使用して、カスタマーサポートエージェントを支援し、ウェブアプリケーションとして公開するエージェントアシストボットを構築します。Amazon Kendra は、機械学習を使用してドキュメントを検索して回答を見つけるエンタープライズ検索サービスです。Amazon Kendra の詳細については、[https://docs.aws.amazon.com/kendra/latest/dg/what-is-kendra.html](https://docs.aws.amazon.com/kendra/latest/dg/what-is-kendra.html)(Amazon Kendra デベロッパーガイド) を参照してください。

Amazon Lex V2 ボットは、お客様の最初の連絡先としてコールセンターで広く使用されています。ボットは、顧客のほとんどの質問を解決できます。ボットが質問に答えられない場合は、カスタマーサポートの従業員に会話を転送します。

このチュートリアルでは、エージェントが顧客のクエリにリアルタイムで回答するために使用する Amazon Lex V2 ボットを作成します。ボットが提供する回答を読むことで、エージェント自身が手動で回答を検索する必要が無くなります。

このチュートリアルで作成するボットとウェブアプリケーションは、適切なリソースを迅速に提供することで、エージェントが顧客に対して効率的かつ正確に対応できるようにします。次の図表は、ウェブアプリケーションの動作を示しています。

![\[alt text not found\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/agent-tutorial.png)






この図表が示すように、ドキュメントの Amazon Kendra インデックスは Amazon Simple Storage Service (Amazon S3) バケットに保存されます。S3 バケットの設定がお済みでない場合は、Amazon Kendra インデックスを作成するときにバケットをセットアップすることができます。Amazon S3 に加えて、このチュートリアルでは Amazon Cognito を使用します。Amazon Cognito は、ボットをウェブアプリケーションとしてデプロイするためのアクセス許可を管理します。

このチュートリアルでは、顧客の質問に対する回答を提供する Amazon Kendra インデックスを作成し、ボットを作成し、顧客との会話に基づいて回答を提案できるようにするインテントを追加し、アクセス権限を管理する Amazon Cognito を設定し、ボットをウェブアプリケーションとしてデプロイします。

**予測時間:** 75 分

**推定コスト: **Amazon Kendra インデックスの場合は 1 時間あたり 2.50 USD、Amazon Lex V2 リクエストの場合は 1000 件あたり 0.75 USD。この演習を終了した後も、Amazon Kendra インデックスは引き続き実行されています。不要なコストを避けるために、必ず削除してください。

**注意:** このチュートリアルで使用するすべてのサービスに対して、同じ AWS リージョンを選択してください。

**Topics**
+ [

# ステップ 1: Amazon Kendra インデックスを作成する
](agent-step-1.md)
+ [

# ステップ 2: Amazon Lex V2 ボットを作成する
](agent-step-2.md)
+ [

# ステップ 3: カスタムインテントと組み込みインテントを追加する
](agent-step-3.md)
+ [

# ステップ 4: Amazon Cognito をセットアップする
](agent-step-4.md)
+ [

# ステップ 5: ボットをウェブアプリケーションとしてデプロイする
](agent-step-5.md)
+ [

# ステップ 6: ボットを使用する
](agent-step-6.md)

# ステップ 1: Amazon Kendra インデックスを作成する
<a name="agent-step-1"></a>

まず、顧客の質問に答えるドキュメントの Amazon Kendra インデックスを作成します。インデックスは、クライアントからの問い合わせに対する検索 API を提供するものです。インデックスは、ソースドキュメントから作成します。Amazon Kendra は、インデックス付きドキュメントで見つかった回答をボットに返し、その回答をエージェントに表示します。

Amazon Kendra が提案する回答の質と正確性は、インデックスを作成するドキュメントによって異なります。ドキュメントには、エージェントが頻繁にアクセスするファイルが含まれて、S3 バケットに保存されている必要があります。非構造化データおよび半構造化データは、.html、Microsoft Office (.doc、.ppt)、PDF、およびテキスト形式でインデックスを作成できます。

Amazon Kendra インデックスを作成するには、*「Amazon Kendra Developer Guide」*(Amazon Kendra デベロッパーガイド) の[「Getting started with an S3 bucket (console)」(S3 バケットの使用を開始する (コンソール))](https://docs.aws.amazon.com/kendra/latest/dg/gs-console.html) を参照してください。

顧客からのお問い合わせにお答えするための質問と回答 (よくある質問) を追加するには、*「Amazon Kendra Developer Guide」*(Amazon Kendra デベロッパーガイド) の[「Adding questions and answers」](https://docs.aws.amazon.com/kendra/latest/dg/in-creating-faq.html)(質問と回答を追加する) を参照してください。このチュートリアルでは、[GitHub の ML\$1FAQ.csv ファイル](https://github.com/awsdocs/amazon-lex-developer-guide/blob/master/example_apps/agent_assistance_bot/ML_FAQ.csv)を使用します。

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

[ステップ 2: Amazon Lex V2 ボットを作成する](agent-step-2.md)

# ステップ 2: Amazon Lex V2 ボットを作成する
<a name="agent-step-2"></a>

Amazon Lex V2 は、コールセンターエージェントと Amazon Kendra インデックス間のインターフェイスを提供します。エージェントと顧客の会話を記録し、顧客の質問に応じて `AMAZON.KendraSearchIntent` のインテントを呼び出します。*インテント*とは、ユーザーが実行を望んでいるアクションです。

Amazon Kendra はインデックス付きドキュメントを検索し、ボットに表示される回答を Amazon Lex V2 に返します。この回答はエージェントにのみ表示されます。

**エージェントアシスタントボットを作成するには**

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

1. ナビゲーションペインで、[**ボット**] を選択します。

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

1. **カスタムボット**を選択して、ボットの設定を行います。

   1. **[ボット名]** - ボットには、**AgentAssistBot** などの目的を示す名前を付けます。

   1. **[Output voice]** (音声出力) - **[None]** (なし) を選択します。

   1. **[Session timeout]** (セッションタイムアウト) -「**5**」と入力します。

   1. **[COPPA**] - **[No]** (いいえ) を選択します。

1. **[作成]** を選択します。ボットを作成すると、Amazon Lex V2 にボットエディタタブが表示されます。

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

[ステップ 3: カスタムインテントと組み込みインテントを追加する](agent-step-3.md)

# ステップ 3: カスタムインテントと組み込みインテントを追加する
<a name="agent-step-3"></a>

*インテント*は、コールセンターエージェントがボットに実行させたいアクションを表します。この場合、エージェントは、顧客との会話中にボットから回答や役立つリソースを提案してもらうことを想定しています。

Amazon Lex V2 には、カスタムインテントと組み込みインテントの 2 種類のインテントがあります。 `AMAZON.KendraSearchIntent`は組み込みインテントです。ボットは `AMAZON.KendraSearchIntent` インデックスをクエリし、Amazon Kendra によって提案されたレスポンスを表示するためのインテントです。

この例のボットはカスタムインテントを必要としません。ボットをビルドするには、1 つ以上のカスタムインテントと 1 つ以上のサンプル発話を作成する必要があります。このインテントは、エージェントアシスタントボットを構築するためにのみ必要です。これは他の機能を実行しません。インテント用の発話は、顧客が質問する可能性のある質問に答えてはいけません。これにより、顧客からの問い合わせには `AMAZON.KendraSearchIntent` が呼ばれます。詳細については、「[AMAZON.KendraSearchIntent](built-in-intent-kendra-search.md)」を参照してください。

**必要なカスタムインテントを作成するには**

1. [**ボットの開始方法**] ページで、[**インテントの作成**] を選択します。

1. [**インテントの追加**] で、[**インテントの作成**] を選択します。

1. **[Create intent]** (インテントの作成) ダイアログボックスで、インテントに「**RequiredIntent**」などの名前を入力します。

1. **サンプルの発話**には、**Required utterance** のような説明的な発話を入力します。

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

**`AMAZON.KendraSearchIntent` インテントとレスポンスメッセージを追加するには**

1. ナビゲーションペインで、**[Intents]** (インテント) の横のプラスサイン (\$1) を選択します。

1. **[Search existing intents]** (既存のインテントを検索する) を選択します。

1. **[Search intents]** (インテントの検索) ボックスに **AMAZON.KendraSearchIntent** と入力し、リストからそのインテントを選択します。

1. イ ン テ ン ト に「**AgentAssistSearchIntent**」など機能を説明する名前を付けて、**[Add]** (追加) を選択します。

1. インテントエディタで、[**Amazon Kendra クエリ**] を選択してクエリオプションを開きます。

1. インテントで検索するインデックスを選択します。

1. **[Response]** (レスポンス) セクションで、以下の 3 つのメッセージを、メッセージグループに追加します。

   ```
   I found an answer for the customer query: ((x-amz-lex:kendra-search-response-question_answer-question-1)) and the answer is ((x-amz-lex:kendra-search-response-question_answer-answer-1)).
   I found an excerpt from a helpful document: ((x-amz-lex:kendra-search-response-document-1)).
   I think this answer will help the customer: ((x-amz-lex:kendra-search-response-answer-1)).
   ```

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

1. ボットを構築するには、**[Build] ** (ビルド) を選択します。

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

[ステップ 4: Amazon Cognito をセットアップする](agent-step-4.md)

# ステップ 4: Amazon Cognito をセットアップする
<a name="agent-step-4"></a>

ウェブアプリケーションのアクセス許可とユーザーを管理するには、Amazon Cognito をセットアップする必要があります。Amazon Cognito は、ウェブアプリケーションが安全で、アクセス制御があることを確認します。Amazon Cognito は ID プールを使用して、ユーザーに他の AWS サービスへのアクセスを許可する AWS 認証情報を提供します。このチュートリアルでは、Amazon Lex V2 へのアクセスを提供します。 V2

ID プールを作成する場合、Amazon Cognito は認証済みおよび未認証ユーザーの AWS Identity and Access Management (IAM) ロールを提供します。Amazon Lex V2 へのアクセスを許可するポリシーを追加して、IAM ロールを変更します。 V2 

**Amazon Cognito をセットアップするには**

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

1. [**アイデンティティプールの管理**] を選択します。

1. [**Create new identity pool**] を選択します。

1. ID プールを設定します。

   1. **ID プール名** — **BotPool** など、プールの目的を示す名前を入力します。

   1. **[Unauthenticated identities]** (認証されていない ID) セクションで、**[Enable access to unauthenticated identities]** (認証されていない ID に対してアクセスを有効にする) を選択します。

1. **[プールの作成]** を選択します。

1. **[Identify the IAM roles to use with your new identity pool]** (新しい ID プールで使用する IAM ロールを特定する) ページで、**[詳細の表示]** (View Details) を選択します。

1. IAM ロール名を記録します。後で変更します。

1. [**許可**] を選択します。

1. **[Getting Started with Amazon Cognito]** (Amazon Cognito の使用開始方法) ページの **[Platform]** (プラットフォーム) で、**[JavaScript] **を選択します。

1. **「AWS 認証情報の取得**」セクションで、**ID プール ID** を検索して記録します。

1. Amazon Lex V2 へのアクセスを許可するには、認証された IAM ロールと認証されていない IAM ロールを変更します。

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

   1. ナビゲーションペインの **[Access Management]** (アクセス管理) で、**[Roles]** (ロール) を選択します。

   1. 検索ボックスに、認証された IAM ロールの名前を入力し、その横のチェックボックスを選択します。

      1. **[Attach policies]** (ポリシーの添付) を選択します。

      1. 検索ボックスで **AmazonLexRunBotsOnly** を入力し、その横のチェックボックスを選択します。

      1. **[Attach policies]** (ポリシーの添付) を選択します。

   1. 検索ボックスに、認証されていないIAM ロールの名前を入力し、その横のチェックボックスをオンにします。

      1. **[Attach policies]** (ポリシーの添付) を選択します。

      1. 検索ボックスで **AmazonLexRunBotsOnly** を入力し、その横のチェックボックスを選択します。

      1. **[Attach policies]** (ポリシーの添付) を選択します。

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

[ステップ 5: ボットをウェブアプリケーションとしてデプロイする](agent-step-5.md)

# ステップ 5: ボットをウェブアプリケーションとしてデプロイする
<a name="agent-step-5"></a>

**ボットをウェブアプリケーションとしてデプロイするには**

1. [https://github.com/awsdocs/amazon-lex-developer-guide/blob/master/example\$1apps/agent\$1assistance\$1bot/](https://github.com/awsdocs/amazon-lex-developer-guide/blob/master/example_apps/agent_assistance_bot/) のリポジトリをコンピュータにダウンロードしてください。

1. ダウンロードしたリポジトリに移動し、エディタで「index.html」ファイルを開きます。

1. 以下の変更を加えます。

   1. `AWS.config.credentials` セクションでは、リージョン名と アイデンティティプール ID を入力します。

   1. ` Amazon Lex V2 runtime parameters` セクションで、ボット名を入力します。

   1. ファイルを保存します。

# ステップ 6: ボットを使用する
<a name="agent-step-6"></a>

デモの目的で、顧客およびエージェントとしてボットにインプットを提供します。両者を区別するために、顧客からの質問には「Customer:」で始まり、エージェントから提供された回答は「Agent:」で始まります。提案された入力候補のメニューから選ぶことができます。

ウェブアプリケーションを実行するには`index.html`、 を開いて次のようにボットと会話します。

![\[コールセンターボットと エージェントアシスタント間の会話の例。\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/agent-tutorial-ss.png)


「index.html 」ファイル内の `pushChat()` 機能について説明します。

```
            
            var endConversationStatement = "Customer: I have no more questions. Thank you." 
            // If the agent has to send a message, start the message with 'Agent'
            var inputText = document.getElementById('input');
            if (inputText && inputText.value && inputText.value.trim().length > 0 && inputText.value[0]=='Agent') {               
                showMessage(inputText.value, 'agentRequest','conversation');
                inputText.value = "";
            }
            // If the customer has to send a message, start the message with 'Customer'
            if(inputText && inputText.value && inputText.value.trim().length > 0 && inputText.value[0]=='Customer') {  
                // disable input to show we're sending it
                var input = inputText.value.trim();
                inputText.value = '...';
                inputText.locked = true;
                customerInput = input.substring(2);

                // Send it to the Lex runtime
                var params = {
                    botAlias: '$LATEST',
                    botName: 'KendraTestBot',
                    inputText: customerInput,
                    userId: lexUserId,
                    sessionAttributes: sessionAttributes
                };

                showMessage(input, 'customerRequest', 'conversation');
                if(input== endConversationStatement){
                    showMessage('Conversation Ended.','conversationEndRequest','conversation');
                }
                lexruntime.postText(params, function(err, data) {
                    if (err) {
                        console.log(err, err.stack);
                        showMessage('Error:  ' + err.message + ' (see console for details)', 'lexError', 'conversation1')
                    }

                    if (data &&input!=endConversationStatement) {
                        // capture the sessionAttributes for the next cycle
                        sessionAttributes = data.sessionAttributes;
                        
                            showMessage(data, 'lexResponse', 'conversation1');
                    }
                    // re-enable input
                    inputText.value = '';
                    inputText.locked = false;
                });
            }
            // we always cancel form submission
            return false;
```

 顧客として入力を指定すると、Amazon Lex V2 ランタイム API はそれを Amazon Lex V2 に送信します。 V2

`showMessage(daText, senderRequest, displayWindow)` 機能は、エージェントと顧客との会話をチャットウィンドウに表示します。Amazon Kendra によって提案された回答は、隣接するウィンドウに表示されます。顧客が「**“I have no more questions. Thank you.”**」と言った時点で会話は終了します

**注意:** Amazon Kendra のインデックスは、ご使用にならないときは削除してください。