Slackの匿名BotをAWSで作る
今回作るもの
はい👻
今回作るものは「匿名SlackBot」です。これまではDockerを省略してたのですが、今回まじめに書いたので構成図の要素が結構多いです笑
「Slack bot 匿名」とか検索するとたぶんたくさん出てくると思いますが、軽く説明します。
Slackの特定のチャンネルに対して、匿名で発言してくれる。Botです。
具体的には。。。
アプリにDMを送ると。。。
自分の代わりに別チャンネルでつぶやいてくれます
そんなbotです
前提
- AWSのアカウントを持っている
- アプリをインストールできる権限のあるSlackのワークスペースを持っている
- git、Dockerが導入済み。
では 作っていきましょう👻
まず全体ステップを確認します。
- ServerlessFrameworkでアプリケーションをデプロイして、API Gatewayのエンドポイントを取得する
- Slackにアプリを新規で作成し、サブスクライブに上記で作ったエンドポイントを登録する。またSlackのトークンを取得する
- 上記のトークンをaws-cliでSSM Parameter Storeに登録する。
- 動作確認
長いですね。なので説明はなるべく簡素にします。
ステップ1
ソースコードはこの文字列をクリック
gitからコードを取ってきて、初期化処理します。具体的には下記のコマンド叩いてください。
$ git clone https://github.com/sisi100/slack-bot-anonymous
$ cd slack-bot-anonymous
$ make init
$ make init
が何をしているか? はMakefileを開くとわかりますが、
サンプルをコピーして下記2ファイルが生成するだけです。
- .env.aws-credentials
- .env.slack_token
.env.aws-credentials
にAWSのアクセスキーとシークレットキーを記入して、下記コマンドを叩いてください。
$ make deploy
上記のコマンドはdocker
のコンテナ内でsls deploy
を叩くだけです。
さて、デプロイが終了しましたら、アプリケーションのデプロイが完了です!
次にデプロイしたアプリケーションのエンドポイントを取得します。
マネージメントコンソールからAPI Gatewayのコンソールを開きます。

作成されたAPI名をクリック

①をクリックして、②をクリックして、③のエンドポイントをコピーしてください。

完了!!
ステップ2
Slackの設定です。
SlackAPIから「Start Building」クリック

適当な名前とワークスペースを指定して「Create App」クリック

再度メニューにから「Event Sbscription」クリック

「Enable Events」をONにしてステップ1でコピーしたエンドポイントをRequest URL
へペースト

下にスクロールして下記のイベントを追加して「Save Changes」

サイドメニューから「OAuth & Permissions」クリック

下記のような設定にして

下記のような設定にして

サイドメニューの「Insatall App」の項目からアプリをインストールし、
OAuth Access TokenとBot User OUth Access Tokenをコピーする。

ステップ3
ソースコードに戻って、.env.slack_token
を開きます。下記のようなファイルです。
SLACK_BOT_USER_ACCESS_TOKEN=xoxb-xxxxxxxxxxxxx-xxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx
SLACK_APP_AUTH_TOKEN=xoxp-xxxxxxxxxxxxx-xxxxxxxxxxxxx-xxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
今適当に「xxxxxx」とトークンが入っていますが、 ここにコピーしてきたOAuth Access TokenとBot User OUth Access Tokenをペーストしてください。
次に下記コマンドでトークンをSSM Parameter Storeへ登録する。
$ make set_token
ステップ4
動作確認 !
左側からアプリ名を選択。(私の場合作成したSlackアプリ名が「workerdevelop」でした。過去に別用とで作ったアプリを使いまわしたので名前が変です)
※ 皆さんはそれぞれ名付けたSlackBot名が表示されているはず。

SlackBotに向かってDMを投げます。

#generalチャンネルにSlackBotが呟きました。

動作確認完了です。
削除方法
Stackの削除
$ make remove
SSM parameter storeの削除
SSMのコンソールから「パラメータストア」をクリックし、作成したパラメーターを選択し、「削除」クリック

以上です👻
お疲れさまでした!!