Amazon Lexを利用したノンコーディングSlackボットを作ってみた
はじめに
こんにちは、中村です。 最近LINE系の記事が多かったのですが、Amazon LexにはChannelsという設定でチャットサービスと連携することができます。現時点(2019/3/29)での対応状況は、
- Kik
- Slack
- Twilio SMS
の4つです。今回はSlackへの連携とノンコーディングで利用できる機能についてご紹介します。
作ってみた
まずは、Lexでbotを作成します。Lex Botsにアクセスし、Createをクリックしてください。botをCustomで作成するかサンプルを利用するか選択します。今回は、ScheduleAppointmentを利用してみましょう。またCOPPAに関する項目はNoを選択して、Createをクリックすることでサンプルのボットが作成されます。 作成が完了すると下記のような画面になります。ここまでで今回利用するBotが作成完了です。
Responseではスロットが全て埋まった場合にボットが返すテキストを定義できます。Cardを利用することで、よりリッチなレスポンスを返すことができます。(カードは複数返すことが可能です)
- 画像
- タイトル
- サブタイトル
- ボタン(5個まで)
今回は、テンプレートの確認のためこのような設定をしました。
CardのButton Valueは、ボタンをクリックすると送信されます。
BuildとPublishを行なったら確認してみましょう。
問題なく動作を確認できたら、Slack APIで設定をします。
Slack APIにアクセスしましょう。Appを作成し、サイドメニューにあるBot Users > Add a bot userをクリックし、下記の3つを実行します。
- 表示名とデフォルトのユーザー名を入力
- Always Show My Bot as OnlineをOn
- Add Bot Userをクリック
Interactive Componentsをクリックし、InteractivityをOnにし、Request URLに有効なURLを指定します。今回はhttps://slack.comとしましょう。Save Changesをクリックして保存します。
サイドメニューにあるBasic Informationを開きClient ID, Client Secret、Verification Tokenをメモしてください。
先ほどメモした情報を元に、Amazon Lexに設定していきます。左側のメニューで、Slackを選択してください。チャネル名、説明、KMSキー、エイリアス、クライアントID、クライアントシークレット、検証トークンを入力しActivateをクリックします。
項目 | 値 |
---|---|
KMS Key | aws/lex |
Alias | prod(先ほど作成したエイリアス) |
Client Id | メモしたClient ID |
Client Secret | メモしたClient Secret |
Verification Token | メモしたVerification Token |
成功するとPostback URLとOAuth URLが表示されます。slackの設定にURLを追加します。
- Postback URL
- Interactive ComponentsのRequest URL
- Event SubscriptionsのRequest URL
- OAuth URL
- OAuth & PermissionsのRedirect URL
Event SubscriptionsのSubscribe to Bot Eventsにてmessage.imを追加しボットイベントをサブスクライブします。これによりユーザーとボットの直接メッセージングを有効になります。
OAuth & PermissionsのScopesに下記を追加します。これは、作成したAppのアクセス許可の設定です。
- chat:write:bot
- team:read
サイドメニューにあるManage DistributionのAdd to Slackをクリックし、利用したワークスペースに追加します。 ワークスペースに追加できたら、アプリ一覧からアプリを追加します。
テスト
それではSlack上でもテストしてみましょう。先ほどと同様の挙動が確認できます。
まとめ
実際にはLambdaなどのバックエンド開発が必要になると思いますが、管理画面での設定のみで簡単にサービス連携ができました。社内でのQA対応などはこういうボットシステムを導入することで、より別の業務への注力が可能となるのではないでしょうか。
チャットボット開発は弊社にご相談ください。
またAmazon Connectのキャンペーンを行なっております。こちらもご相談お待ちしております。