タダです。
Amazon Lex(以下、Lex)と戯れてみたレポートを何回か書いてみたいと思います。
今回は、定型文の会話を行うカスタムボットを作ってみた時の紹介記事です。
社内のLT大会で話してみたので、その模様は以下からどうぞ。
社内ブログとか動画
[contents]
Lexの概要
さて、改めてLexの概要をまとめてみると、次のような特徴があります
- Lexはアプリケーションの対話型インタフェースを作るのをサポートするサービス
- チャットボット開発に最適
- Lambda,Cognito,Polly,MobileHub 等とも連携可能
- チャットのプラットフォームとして、Facebook Messanger,Twilio SMS,Slackと連携可能
- 従量課金制
Lexの専門用語
Lexで扱う専門用語は次のものです
- Bot : ボットそのもの
- Intents : ユーザが入力した自然言語に応答する、ボットのアクションの固まり
- Utterances : Intentsを発動する口頭もしくは入力されるフレーズ
- Slot : Intentsを満たすための要求される入力データ
- Prompt : Slotを引き出すためのフレーズ
- Fulfillment : Intentsを実現するビジネスロジック
公式資料
やってみたこと
- Slackにきんにくフレンズを召喚
- 普段から使っているし、馴染みがある
- きんにくフレンズBot(@musclechang)に話しかけて自分のトレーニングメニューを管理するものを作ってみたい
- トレーニングしたいと話しかけると、トレーニングメニュー、回数、セット数を聞いてくれて、最後は励ますようなボットです
実現するためにやったこと
AWS側
Utterancesと、Slots、Promptはこんな感じです
Slots typesは3つ作りました
- Set(トレーニングのセット数)
- Training Menu(トレーニングメニュー)
- Count(何回やるかのカウント数)
Fulfillmentは、Lambdaでやらないので、「Return parameters to client」を選択しています
Slack側
Slackの連携部分は、以下のドキュメントを参考にしました
- Step 3: Create a Slack Application
- Step 4: Integrate the Slack Application with the Amazon Lex Bot
- Step 5: Complete Slack Integration
結果
こんな感じの対話ができるフレンズができました!
まとめ
- ノンプラグラミングでボットを作れました
- 定型文しか返せないので、AIぽく入力した情報を貯めて、より良いトレーニングメニューを提案するような感じにしていきたい
- 次回に他のAWSリソースと連携してみたいです(Lambda,Pollyとの連携とか)