記事更新時のバージョン: v0.8.0

Incoming WebhookからSlack AppのOAuth Token形式に移行する際に作った軽量なCLIツールです。

特徴

  • CLIでSlackにメッセージを投稿ができる
  • アイコン(絵文字名か画像URL)、ユーザー名を指定できる
  • ファイルを投稿できる
  • profileで引数を省略して投稿できる

こんな用途に

  • CI/CDの通知を雑にSlackに通知したい
  • 手元のログファイルをSlackに投げておきたい
  • 時間かかるコマンドが終わったらSlackに通知してほしい

slack-quickpost --profile hoge --text "おわったよ〜"で済みます。Incoming Webhookを事前に用意しておく必要も、JSONを頑張って組み立ててcurl -dに渡す必要もありません。
Slack Appはアイコンとユーザー名の変更に対応しているので、旧Webhookのように通知のアイコンや名前の設定がかんたんに行えます。

インストール

バイナリかgo installを利用できます。

ビルド済みバイナリはGitHub Releaseからダウンロードできます。
goを利用する場合はgo install github.com/ToshihitoKon/slack-quickpost@latestで最新を取得できます。

セットアップ

https://api.slack.com/appsから新規Slack Appを作成するか、既存のAppを選択し、OAuth Tokenを作成します。
Slack Appに必要なSocepsは以下になります。

  • chat:write.customize
  • files:write

OAuth TokenはBot User OAuth Token(xorb-から始まるもの)を利用します。

投稿する

最小のオプションは、Tokenとチャンネル、投稿テキストの指定です。

$ slack-quickpost \
    --token "xorb-XXX" \
    --channel "CXXX" \
    --text "hoge"

tokenを毎度引数に渡すのはセキュアではないため、環境変数及びProfileを選択して利用することができます。
slack-quickpostはSLACK_TOKEN環境変数がセットされている場合はデフォルトでこれを利用します。

$ export SLACK_TOKEN=xorb-XXX
$ slack-quickpost \
    --channel "CXXX" \
    --text "hoge"

テキストをファイルから読み込むことも可能です。

$ export SLACK_TOKEN=xorb-XXX
$ slack-quickpost \
    --channel "CXXX" \
    --textfile ./sample.txt

アイコン、ユーザー名の変更

オプションを付与することで、アイコンとユーザー名を任意のものに変更することができます。

$ slack-quickpost \
    --token "xorb-XXX" \
    --channel "CXXX" \
    --text "hoge" \
    --username "custom user name" \
    --icon ":thumbsup:"    

ファイルの投稿

任意のファイルを添付することができます。
テキストファイルを--textfileではなく--fileで指定するとテキストスニペットとして投稿されます。このときテキストスニペットのハイライトはSlackの自動判定によって決まります。

$ slack-quickpost \
    --token "xorb-XXX" \
    --channel "CXXX" \
    --file image.png \

情報

--fileを指定した場合、 --text --username --icon*は無視されます。

スニペット

--textと一緒に--snippetオプションを付けると、与えられたテキストはテキストスニペットとして投稿されます。
--textfileでも利用することができます。

$ slack-quickpost \
    --token "xorb-XXX" \
    --channel "CXXX" \
    --text "snippet text"

情報

--snippetを指定した場合、slack-quickpostはファイル名を[タイムスタンプ].txtとして投稿します。そのためシンタックスハイライトがplain textになります。
一度拡張子をつけたファイルに保存して--fileで投稿することでシンタックスハイライトが効くようになります。

プロファイル

プロファイルは、OAuth TokenとChannelをファイルに保存して、ファイル名の指定で呼び出す機能です。
~/.config/slack-quickpost/*.yamlに保存することで利用できます。

# ~/.config/slack-quickpost/sample.yaml
token: xorb-XXX
channel: CXXX
$ slack-quickpost \
    --profile "sample" \
    --text "hoge"