LexボットをSlackと統合した！

# やりたいこと
SlackのDM経由で前回構築したLexボットとやり取りしたい

https://qiita.com/curlneko/items/9f80018eeec6bef3ce45

# ①Slackアプリの作成
以下のURLにアクセスして、Slackアプリを作る
https://api.slack.com/apps?new_app=1

「From a manifest」で作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538617/cadfdf58-8040-e0ea-8653-da378a31bb23.png)

ワークスペースを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538617/9fcd2cc9-eb0a-99c1-4519-0e69716ea941.png)

manifestを設定。アプリ名を決めて、その他は全部デフォルトで大丈夫。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538617/c340b064-6d53-9a14-3271-ef472b81e2c3.png)

設定内容をレビューして、「Create」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538617/1d5ba554-bd7d-82af-7840-f7c74e768cb6.png)

すると、作成されたSlackアプリの設定画面に遷移された。
この画面にあるID情報はのちほどLex側での設定に使う。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538617/d081d5e2-8554-f14c-2212-0ecffbd1b118.png)

# ②Lex側の連携設定
Lexを開き、「ボット」＞「ボット名」＞「デプロイ」＞「チャネル統合」＞「チャネル追加」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538617/891ba571-ecd7-3fb0-65a3-5bcdcffc8000.png)

フラットフォームを「Slack」にし、IAMロール自動作成をそのまま
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538617/b874057a-a55b-1a69-6521-03c27fc5b044.png)

アプリ名を、Slackアプリ名にし、エイリアスをLexボットのエイリアス、言語をJapaneseにする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538617/3a240d82-0da6-122e-3e90-8943ec64c332.png)

追加設定は、先ほどSlackアプリの設定画面のIDで入れる。最後は「追加」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538617/8e4b6506-5531-d17f-5c27-f57f05e001cb.png)

すると、チャネルが作成された。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538617/e3380132-b2cd-bec3-f03d-2a7d7e598cc2.png)

チャネル画面の下にあるコールバックURLは、後でまたSlackアプリの設定画面に使う。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538617/9d0ba5e4-bf98-f740-7938-4fca131cb012.png)

# ③Slackアプリの設定
再びSlackアプリの設定画面に戻り。

左メニューから「OAuth & Permissions」をクリック、「Redirect URLs」にLexのチャネル設定画面から「OAuthエンドポイント」をコピーし入力する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538617/4218335c-f6a5-2c33-a1bc-dca987c45565.png)

同画面にある「Scopes」に、必要に応じて権限を与える。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538617/9a52d819-4264-0ef4-d7f8-3703785d0a72.png)

AWSのドキュメントによると、「chat:write」と「team:read」だけ書いてあるが、「im:history」を一緒に設定しないと、この後のEvent Subscriptions設定にスコープが足りないを怒られるので、このタイミングで設定。

また、今回はこちらの都合でほかの必要な権限も一緒に設定する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538617/5f1945c5-c137-32c3-ec26-3243504c4075.png)

左メニューから「Event Subscriptions 」をクリックし、「Enable Events」をOnにしたうえ、「Request URL」にLexのチャネル設定画面からエンドポイントをコピーし入力する。

同画面にある「Subscribe to bot events」に「message.im」権限を与える。
（上記の「im:history」のスコープが必要）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538617/4b6653be-3c38-b131-f047-01d2e8911b10.png)

左メニューから「App Home」をクリックし、画面一番下にある「Show Tabs」の「Messages Tab」にチェックを入れる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538617/4e018fba-cda9-f672-54e6-4d7a7bb9f6e1.png)

補足：この設定を忘れたままSlackにデプロイすると、以下のようにDM送信ができず「このアプリへのメッセージ送信はオフにされています」と怒られる。。。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538617/ed225f70-3545-5450-c315-78be89c15ae9.png)

左メニューのから「Manage Distribution」の「Add to Slack」をクリックし
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538617/002e93eb-19b6-9de8-fe22-afa3365d64ef.png)

「許可」を押す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538617/e9319cd0-0c44-29d7-2e05-6a6ea94d162a.png)



# ④Slackでテスト
Slackを開き、appから作ったアプリ名を検索して追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538617/1b2ccc98-5a7b-d8eb-650b-3e1fd9ded08d.png)

すると、このようにSlackのDMでLexボットと会話できるようになった！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538617/1399d4fb-47a4-8e18-d34a-fa8cc8f23201.png)


# 参考サイト
https://docs.aws.amazon.com/ja_jp/lex/latest/dg/slack-bot-association.html

https://qiita.com/hayao_k/items/268c333f3f383125fd30#slack-%E3%81%A8%E9%80%A3%E6%90%BA%E3%81%99%E3%82%8B