
Slack向けのミーティング用のBotを作成しました。
Geekbot(https://geekbot.com/)を参考にしており、Geekbotの超簡易版となっています。
機能
以下の設定が可能です。
・ミーティング参加者の設定
・各メンバーへの質問内容の設定
・各メンバーの回答内容を投稿するチャンネルの設定
・ミーティング開始時間の設定
現状、1件のミーティングにしか対応していません。
システム構成
Botは、Lambdaで実装しており、Botの設定画面をS3に静的ホスティングで配置しています。
設定画面は、作り上、AWSのアクセスキーIDやシークレットアクセスキーが見えてしまう状態となるため、とりあえずIPアドレス制限を行う形を取っています。

開発環境
以下の環境で開発しています。
| 項目 | 開発環境 | バージョン |
|---|---|---|
| Bot | Python | 3.6 |
| 設定画面 | create-react-app | 1.5.2 |
設定画面イメージ
画面は下記のようになっており、設定内容は以下の通りです。
| 項目 | 内容 |
|---|---|
| Project title | ミーティング名 |
| Broadcast channel & Participants | 投稿先チャンネルとミーティング参加者 |
| Schedule | ミーティング開始時間 |
| Intro message | ミーティング開始時のメッセージ |
| Questions | 質問内容 |
| Outro message | ミーティング終了時のメッセージ |

動作イメージ
Botからダイレクトメッセージが送信されてくるので、一つ一つ質問に答えます。

全ての質問に答えると、回答内容がミーティング用チャンネルにまとめて投稿されます。

リリース方法
SlackにBotを作成する
以下のURLにアクセスし、Slackアプリケーションを作成します。
https://api.slack.com/apps
作成方法は、以下の記事を参考にしてください。
Frontendの環境変数の設定
frontendフォルダ直下に、.envファイルを作成します。
以下を参考にして、各項目の値を定義をしてください。
REACT_APP_AWS_REGION='ap-northeast-1' REACT_APP_AWS_ACCESS_KEY_ID='ABCDEFG' REACT_APP_AWS_SECRET_ACCESS_KEY='HIJKLMN' REACT_APP_SLACK_TOKEN='OPQRSTU'
上記の定義は、それぞれ以下の内容です。
| 項目 | 内容 |
|---|---|
| REACT_APP_AWS_REGION | AWSのリージョン |
| REACT_APP_AWS_ACCESS_KEY_ID | AWSのアクセスキーID |
| REACT_APP_AWS_SECRET_ACCESS_KEY | AWSのシークレットアクセスキー |
| REACT_APP_SLACK_TOKEN | SlackのBot User OAuth Access Token |
Botのセットアップ用ファイルの設定
プロジェクトのルートフォルダのsetup.ymlを編集します。 以下のキーワードの部分を環境に合わせて変更してください。
SLACK_BOT_USER_ACCESS_TOKEN: xoxb-abcde SLACK_BOT_VERIFY_TOKEN: fghijklmn aws:SourceIp: - "111.222.333.444/32"
| 項目 | 内容 |
|---|---|
| SLACK_BOT_USER_ACCESS_TOKEN | SlackのBot User OAuth Access Token |
| SLACK_BOT_VERIFY_TOKEN | SlackのVerification Token |
| aws:SourceIp | S3に配置する設定画面へのアクセスを許可するIPアドレス |
リリース
(1)S3にmeetbot-botというBucketを作成します。
(2)botディレクトリ内のファイル一式をsrc.zipとして作成後、(1)で作成したbucketにアップロードします。
(3)AWSのCloudFormationを使用して、setup.ymlを実行します。
(4)frontendフォルダに移動して、以下を実行します。
npm run build
(5)S3に(3)でmeetbot-frontというBucketが作成されているので、buildフォルダに作成されたファイル一式をアップロードします。