![[レポート] ARC328 – サポートチャットボットの作成 #reinvent](https://devio2023-media.developers.io/wp-content/uploads/2018/11/eyecatch_reinvent-2018-city_1200x630.jpeg)
[レポート] ARC328 – サポートチャットボットの作成 #reinvent
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
ビルダーセッション、ARC328 - Creating a Support Chatbot に参加しましたので紹介します。
ビルダーセッションはAWSのソリューションアーキテクトと、5人の参加者で行うグループセッションです。

概要
Event Catalogからの引用です。
In this session, create a conversational interface with Amazon Lex which recognizes and answers common questions received through chat or voice. Become familiar with an Amazon Lex chatbot and its constructs, such as intents, utterances, and slots.
日本語訳
このセッションでは、チャットや音声で受け取った一般的な質問を認識して回答するAmazon Lexと会話型インターフェイスを作成します。 インテント、発話、スロットなどのAmazon Lexチャットボックスとその構造に慣れてください。
Architecture
今回使うサービス。
- Amazon Lex
- AWS Lambda
- Amazon S3
- Cognito
Deployment
AWSのソリューションアーキテクトのプレゼンテーションのあと以下のドキュメントにそって実際に構築します。
Module 1: Static Web Hosting with Amazon S3
このモジュールではAmazon S3で静的Webサイトをホストします。 CloudFormationを利用して構築します。
- Website Bucket Nameを入れて
Nextをクリックします。

- Optionsページはデフォルトで
Nextをクリックします。 -
Reviewページでは I acknowledge that AWS CloudFormation might create IAM resources. にチェックを入れて
Createをクリックします。

- スタックが
CREATE_COMPLETEになったらOutputsからWebsiteURL linkをクリックします。

- モジュール1は完了です。

Module 2: User Registration with Amazon Cognito User Pools
このモジュールでは、ログインするAmazon Cognitoユーザープールユーザーを作成します。
/register.htmlにアクセスして、アカウントを作成します。

/verify.htmlにリダイレクトするので、e-mailで受け取った、verification codeを入力します。

signin.htmlにリダイレクトしたらログインします。

- これでモジュール2は完了です。
Module 3: Create Chat bot
このモジュールではAmazon Lexでチャットボットを作成します。
Step 1: Create the AWS Lambda function
CloudFormationのテンプレートを使用して、Lambda functionを作成します。 全てデフォルトでOKです。
Step 2: Configure Cognito pool id in Lambda function
Lambda functionを修正します。
supportchatbot-webapp-1のResourceからCognito User Pool Idをコピーします。

- 作成した、Lambda function(support-chatbot-function)を開き、
PoolIDを修正しSaveします。
import json
import boto3
client = boto3.client('cognito-idp')
with open('./response.json', 'r') as r:
response = json.load(r)
response_success = response['response_success']
response_fail = response['response_fail']
#use your cognito user pool ID
PoolID = 'xxxxxxx'
Step 3: Creating your Bot
Botを作成していきます。
- 予め用意されている json ファイルをダウンロードします。 VirtualHelpDesk.zip
-
Amazon Lex consoleへ移動します。先程ダウンロードしたzipファイルを
importします。

BuildをクリックしてBotを作成します。

Buildが完了したら、右側のスクリーンで'I forgot my password'タイプしてみます。

Step 4: Integrating the bot with Lambda and test it
Lambdaとbotを統合します。
Fulfillmentセッションに移動して、先程作成したLambda functionを選択してversionは$LATESTにします。 Intents、UnlockAccountandPWReset両方に同じ設定をします。

Save Intentをクリックして保存します。-
Buildをクリックしてチャットボットを構築します。

Step 5: Test Password Reset and Account Unlock Intent
パスワードリセットと、アカウントのロック解除のインテントのテストをします。
VirtualHelpDeskチャットボットで、Test botを開き、I forgot my passwordとタイプします。-
チャットボットの支持に従います。最後に以下文面がでて、リセット用のcodeがメールアドレスに送られます。
Great, you're all set. Check your email for further instructions.
- メールを受け取ったら、
/forgotPassword.htmlへ移動してパスワードをリセットします。

- パスワードをリセットしたら
/signin.htmlへ移動して新しいパスワードでログインします。

UnlockAccountインテントでテストをします。-
Cognitoのマネジメントコンソールから、Cognito User Pool(SupportChatbot)→
Users and Groups→ ユーザーをDisableにします。

UnlockAccountインテントでTest botを開き、I think my account is lockedとタイプします。-
チャットボットの支持に従います。最後に以下文面がでて、ユーザーのロックが解除されます。
Great, you're all set. Try logging in now
この時点で、Account StatusがEnabledになっていることが確認できます。

/signin.htmlへ移動してログインができるか確認します。
Step 6: Host the bot with-in a Web Application
ウェブアプリケーションでボットをホストしてみます。 CloudFormationスタックをLaunchします。
- Lex Bot Configuration Parametersで、BotNameを入力します :
VirtualHelpDesk - Web Application Parameters で、各パラメーターを入力します
WebAppConfBotInitialText : Hello, How can I help you?
WebAppConfBotInitialSpeech : I forgot my password
WebAppConfToolbarTitle : VirtualHelpDesk
- Stackが
CREATE_COMPLETEとなったらOutputsを確認してParentPageURlを開くと、chatbotがiFrameとして表示されます。

まとめ
チャットボットには興味があり、これから使っていこうともおっているサービスですので参加しました。 画像つきでご紹介しましたが、詳細はgithubのaws-samples/support-chat-bot を確認してみてください。 Amazon Lexの日本語対応が待ち遠しいです。






