【新機能】Amazon LexがGA(一般利用開始)に!Slackに入れて使ってみた

2017.04.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

春暖の候, 春風の心地よい季節になりましたが、お変わりなくお過ごしでしょうか、せーのです。さて、本日4月20日(現地時間19日)に待ちに待ったAmazon Lexの正式ローンチが発表されました!今日はプレビュー版から色々変わった点をご紹介します。

新機能たくさん!

Lexは昨年のRe:Invent2016に発表された対話式Botインターフェースのサービスです。Deep Learningが組み込まれていて自然な会話を通じてユーザを自然に誘導します。基本的な機能はプレビュー版のこちらの記事を参考にして下さい。

Amazon Lexのプレビューが通ったので使ってみた|クラスメソッドブログ

GAとして正式リリースされたAmazon Lexはプレビュー版から色々と新しい機能が追加されています。ざっとご紹介いたしましょう。

Slack連携

プレビュー時点ではFacebook Messengerとの連携がサポートされていましたが、それに加えてSlackがサポートされました。Slackから自然にLexを使ってBotを組み込むことができます。

Twilio連携

Twilioとの連携ではTwilioのSMSを通じてLexのBotと会話することができるようになります。

SDK

AWS SDKでLexの操作ができるようになっています。言語はiOS、Android、Java、JavaScript、Python、.Net、Ruby、PHP、Go、C++が用意されています。

テストでの音声入力

テストコンソールにマイクボタンがつきました。

Lex_GA7

会話内容のモニタリング

音声にて会話をすると「聞き取れていない」「聞き取れたが理解できなかった」ということがよくあります。モニタリングにそれらの会話が記録されるので、聞き取りにくかった会話を新たにSample Utteranceに追加する、というような運用が可能になりました。またCloud Watchのメトリクスに発話が認識されなかった文章(テキストの投稿)、発話が認識されなかった文章(音声の投稿)、発話が認識されなかった発言が蓄積されるようになりました。

このように様々な新機能が加わって使いやすく、便利になったAmazon Lex、さっそく触ってみましょう。今回は「Slackとの連携」を試してみます。

やってみた

それでは早速やってみましょう。今回はサンプルの「OrderFlowers(花を注文する)」をSlackで使えるようにしたいと思います。

Amazon Lexの構築

まずLexの構築を行います。サンプルは全て用意されていますのでボタンを押していくだけで構築ができてしまいます。マネージメントコンソールからLexを開きます。Lexは現在バージニアリージョンのみしかリリースされていないので注意しましょう。

Lex_GA1

Createボタンを押下してBotを作成していきます。

Lex_GA2

サンプルから[OrderFlowers]を選択します。

Lex_GA2

R13のチェックがあるので[No]を選択します。ちなみにIAMはプレビュー版では自分で作っていたのですがGA版では自動で作ってくれるようになりました。便利ですね。あとは[create]ボタンを押します。

Lex_GA3

細かいSample UtteranceやSlotの設定をします。サンプルでは既に設定されているのでそのままいってもOKです。詳細はプレビュー版の記事を参考にしてください。

Lex_GA4

少しSampleを足してみましょう。Bot名の横のトグルボタンから「Latest」を選択すると編集画面に変わります。

Lex_GA5

いきなり花の種類を指定するパターンのサンプルを書いてみます。I would like to order {FlowerType}と入力すると{FlowerType}の部分が青くハイライトされます。GA版ではSlotに当たる部分が色分けされていてとてもわかりやすくなりました。

Lex_GA6

画面下の[Save]ボタンで保存、右上の[Build]ボタンでビルドします。その後[Publish]ボタンで公開してみましょう。

Lex_GA8

[Publish]ボタンを押下するとaliasの名前を入れる画面が出てくるのでいい感じの名前を入れます。

Lex_GA9

しばらく待つとPublishが完了します。これでLexの構築は完了です。

Lex_GA10

次にSlackの設定に移ります。

Slack APIの設定

次はSlackの設定です。まずは新規に一つTeamを作ります。

Lex_GA11

つぎにAPIコンソールを開き[Start Buildings]をクリックします。

Lex_GA12

アプリの名前をつけ、先程作ったTeamを選択し[Create App]ボタンを押します。

Lex_GA13

アプリが作成されるとこのような画面になります。

Lex_GA14

下の方にある[BotUser]ナビを選択し、新しいユーザー名を入力、[Always Show My Bot as Online]をチェックしてBotユーザーを作成します。

Lex_GA15

[Interactive Message]ナビを選択し、とりあえず適当なURLを[Request URL]に入れておきます。このURLは後で更新します。

Lex_GA16

Lex_GA17

Saveすると下の[App Credentials]という部分にClientID、Client Secret, Verification Tokenがそれぞれ表示されます。こちらをコピーしておきましょう。

Lex_GA18

これでSlackの設定は完了です。いよいよ連携していきます。

連携する

それではLexとSlackを連携していきましょう。先程つくったLexのBotを選択し[Channels]タブをクリックします。上の画面のままにしている方は[Go to Channels]をクリックします。

Lex_GA19

Channel設定画面から[Slack]ナビを選択し、任意の名前、説明、KMSのKey(aws/lexを選択)、上でPublish時につけたAliasを選択します。KMSのKeyが出てこない方は一旦別の画面に移ってから改めてLexに入り直すと出てきたりします。

Lex_GA20

先程のSlack APIにて表示されていたClient ID, Client Secret Verification Tokenをそれぞれ入力して[Activate]ボタンをクリックします。

Lex_GA21

Activateが完了するとCallbackとして[Postback URL]と[OAuth URL]という2つのURLが表示されます。Postback URLはSlackからのイベントが送られる先のURL、OAuth URLはSlackからLexを使う際の認証に使うエンドポイントとなります。

Lex_GA22

Slack APIの設定画面に戻って最後の仕上げに入ります。[OAuth & Permittions]ナビを選択し、Lexで表示されていたOAuth URLを入力します。Add⇒Saveとそれぞれボタンを押していきます。

Lex_GA23

下部にある[Permission Scope]でchat:write:botを選択し、ボットの書き込みを許可します。

Lex_GA24

[Interactive Message]ナビをクリックし、[Request URL]をLexで表示されたPostback URLに更新します。

Lex_GA25

[Event Subscription]ナビをクリックし[Request URL]にLexで表示されたPostback URLを入力します。

Lex_GA26

下部にある[Subscribe Team Events]にこれらの権限を付与します。

  • message.channels
  • message.groups
  • message.im
  • message.mpim

Lex_GA27

ここまでの連携設定が完了すると[Manage Distribution]の所に[Sharable URL]というものが表示されます。こちらをコピーします。

Lex_GA28

このURLをブラウザに貼り付けるとアプリをTeamで使うためのAuthorize画面が出てきますので、Authorizeボタンを押して認可します。

Lex_GA31

これですべての設定が完了です!

テスト

それではテストしてみましょう。作ったSlackのTeamを開いて#generalチャンネルにSlack APIで作ったBotを招待します。

Lex_GA32

あとは直接#generalチャンネルでSample Utteranceに該当することをつぶやくだけでBotがLEXを通じて応答してくれます。

Lex_GA34

成功です!

まとめ

いかがでしたでしょうか。この世界はとても深いですが、使いこなすと世界がかなり広がります。まずは色々触ってみてDeep Learningを使ったBotの世界にハマってみましょう!!

参考リンク