[レポート] ARC328 – サポートチャットボットの作成 #reinvent
ビルダーセッション、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、UnlockAccount
andPWReset
両方に同じ設定をします。
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の日本語対応が待ち遠しいです。