Slack で slackbot じゃない bot を作る

20% ルールで Jenkins を弄っていた際に得られた知見を書きます。 Jenkins のことは書きません。

タイトルにもありますが、 Slack は slackbot という機能で簡単に bot を作ることが出来ます.

Integrations のページに行って slackbot を追加すると

スクリーンショット 2015-06-03 17.11.14

以下の様な token が発行された curl のコマンドが表示されてこれを使うと簡単にメッセージを送信することが出来ます。

スクリーンショット_2015-06-03_17_11_24

これを使うと簡単にチャンネルにメッセージを飛ばすことが出来るのですが、bot の名前やアイコンを変えられない問題があります。

かわいいアイコンやわかりやすいアイコンにしたいですよね。

Bots を使う

slackbot の代わりに Bots というのを使います。

スクリーンショット 2015-06-03 17.16.04

こっちは bot の名前やアイコンなど様々な情報を変更することが出来ます。

こちらも slackbot と同様に token が発行されるのでソレを使って Slack の API を叩くことが出来ます。

任意のチャンネルにメッセージを飛ばすコマンドは以下の様な感じです。

curl -X POST https://slack.com/api/chat.postMessage \
    -d "token=YOUR-API-TOKEN" \
    -d "channel=#random" \
    -d "text=テストメッセージ" \
    -d "as_user=true" \
    -d "link_names=1”

as_user=true にすると token の持ち主の情報で発言が行われます. lind_names=1 というのはメッセージに @username が含まれている場合にそれをリンクにしてくれます.

という感じでこっちの bot を使えばアイコンなどを設定できるので bot が増えてもひと目で何を通知しているのかが分かりやすくなります。

また curl で叩けるので Jenkins などで シェルを実行 を使用すれば好きなタイミングで好きなメッセージを飛ばすジョブを作ることも出来ます。

ぜひぜひお試しください。