Goで実装したSlack-Botをさくらのクラウド上で動かすためのテンプレートです。
このテンプレートには以下が含まれます。
- SlackのRTM(RealTimeMessaging)APIに対応するBotのgolang実装
- SlackのInteractive messageに応答するサーバのgolang実装
- Bot + HTTPS対応させるためのコンテナ(steveltn/https-portalを利用)の起動用docker-compose.yml
- さくらのクラウドのアカウント & APIキー
- SlackのOAuthトークンなど
- BOT_TOKEN
- VERIFICATION_TOKEN
- BOT_ID
- CHANNEL_ID
- SlackのInteractive message受信用サーバに割り当てるドメイン(名前解決できる状態であること)
- Slack側でInteractive messageのRequest URLの設定
docker
+docker-compose
+docker-machine
- docker-machine さくらのクラウド ドライバ(docker-machine-sakuracloud)
git clone https://github.com/sacloud/slack-bot-template.git
cd slack-bot-template
環境変数設定用のファイルを編集します。
mv env-example .env
vi .env
###################################
# 以下を記入
# - BOT_TOKEN
# - VERIFICATION_TOKEN
# - BOT_ID
# - CHANNEL_ID
###################################
docker-compose.ymlにドメインを記入
vi docker-compose.yml
###################################
# example.comとなっている部分を任意のドメインに書き換え
###################################
この例ではslack-bot
という名前でサーバを作成します。
# docker-machineでサーバ作成
docker-machine create -d sakuracloud \
--sakuracloud-access-token <アクセストークン> \
--sakuracloud-access-token-secret <シークレット> \
--sakuracloud-os-type ubuntu \
slack-bot
# DOCKER_HOST環境変数などを作成したサーバに向ける
eval $(docker-machine env slack-bot)
作成後はグローバルIPを確認し、DNSレコードの設定を行ってください。
# グローバルIPの確認
docker-machine ip slack-bot
# 起動
docker-compose up -d
# ログは以下で確認できます
docker-compose logs -f
ブラウザなどでhttps://<your-domain>/status.html
にアクセスしてOK
と表示されたら準備完了です。
環境変数CHANNEL_ID
で指定したチャンネルでBotに呼びかけることで動作が確認できます。
# <botの名前が "test-bot"の場合の例>
# メッセージへの応答例
@test-bot message
# Interactive message(ボタン)
@test-bot button
# Interactive message(リスト)
@test-bot list
bot/hander
配下のサンプルを編集、またはコピーして新たに作成してください。
ソースの編集後は以下のコマンドで反映されます。
# ソースを変更した場合は以下で反映されます
docker-compose up -d --build
GoのBot実装は以下を参考にしています(Thank you!!)。
Mercari Engineering Blog: GolangでSlack Interactive Messageを使ったBotを書く
slack-bot-template
Copyright (C) 2017 Kazumichi Yamamoto.
This project is published under Apache 2.0 License.
- Kazumichi Yamamoto (@yamamoto-febc)