やりたいこと
SlackのDM経由で前回構築したLexボットとやり取りしたい
①Slackアプリの作成
以下のURLにアクセスして、Slackアプリを作る
https://api.slack.com/apps?new_app=1
manifestを設定。アプリ名を決めて、その他は全部デフォルトで大丈夫。
すると、作成されたSlackアプリの設定画面に遷移された。
この画面にあるID情報はのちほどLex側での設定に使う。
②Lex側の連携設定
Lexを開き、「ボット」>「ボット名」>「デプロイ」>「チャネル統合」>「チャネル追加」をクリック
フラットフォームを「Slack」にし、IAMロール自動作成をそのまま
アプリ名を、Slackアプリ名にし、エイリアスをLexボットのエイリアス、言語をJapaneseにする
追加設定は、先ほどSlackアプリの設定画面のIDで入れる。最後は「追加」をクリック。
チャネル画面の下にあるコールバックURLは、後でまたSlackアプリの設定画面に使う。
③Slackアプリの設定
再びSlackアプリの設定画面に戻り。
左メニューから「OAuth & Permissions」をクリック、「Redirect URLs」にLexのチャネル設定画面から「OAuthエンドポイント」をコピーし入力する。
AWSのドキュメントによると、「chat:write」と「team:read」だけ書いてあるが、「im:history」を一緒に設定しないと、この後のEvent Subscriptions設定にスコープが足りないを怒られるので、このタイミングで設定。
また、今回はこちらの都合でほかの必要な権限も一緒に設定する。
左メニューから「Event Subscriptions 」をクリックし、「Enable Events」をOnにしたうえ、「Request URL」にLexのチャネル設定画面からエンドポイントをコピーし入力する。
同画面にある「Subscribe to bot events」に「message.im」権限を与える。
(上記の「im:history」のスコープが必要)
左メニューから「App Home」をクリックし、画面一番下にある「Show Tabs」の「Messages Tab」にチェックを入れる。
補足:この設定を忘れたままSlackにデプロイすると、以下のようにDM送信ができず「このアプリへのメッセージ送信はオフにされています」と怒られる。。。
左メニューのから「Manage Distribution」の「Add to Slack」をクリックし
④Slackでテスト
すると、このようにSlackのDMでLexボットと会話できるようになった!
参考サイト