Skip to content
This repository has been archived by the owner on Jan 14, 2022. It is now read-only.

sacloud-archives/slack-bot-template

Repository files navigation

slack-bot-template

Goで実装したSlack-Botをさくらのクラウド上で動かすためのテンプレートです。

概要

このテンプレートには以下が含まれます。

  • SlackのRTM(RealTimeMessaging)APIに対応するBotのgolang実装
  • SlackのInteractive messageに応答するサーバのgolang実装
  • Bot + HTTPS対応させるためのコンテナ(steveltn/https-portalを利用)の起動用docker-compose.yml

examples.png

事前準備

必要なもの

  • さくらのクラウドのアカウント & 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)

起動方法

1) このリポジトリをクローン

git clone https://github.com/sacloud/slack-bot-template.git
cd slack-bot-template

2) 環境変数の設定

環境変数設定用のファイルを編集します。

mv env-example .env
vi .env

###################################
# 以下を記入
# - BOT_TOKEN
# - VERIFICATION_TOKEN
# - BOT_ID
# - CHANNEL_ID
###################################

3) Interactive message受信用サーバのドメイン指定

docker-compose.ymlにドメインを記入

vi docker-compose.yml

###################################
# example.comとなっている部分を任意のドメインに書き換え
###################################

4) さくらのクラウド上にサーバ作成

この例では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

5) 実行

# 起動
docker-compose up -d

# ログは以下で確認できます
docker-compose logs -f

ブラウザなどでhttps://<your-domain>/status.htmlにアクセスしてOKと表示されたら準備完了です。

Botサンプルの動作確認方法

環境変数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

Bot実装の参考元

GoのBot実装は以下を参考にしています(Thank you!!)。

Mercari Engineering Blog: GolangでSlack Interactive Messageを使ったBotを書く

License

slack-bot-template Copyright (C) 2017 Kazumichi Yamamoto.

This project is published under Apache 2.0 License.

Author

Releases

No releases published

Packages

No packages published