[Slack] Snippets

お気軽Webhook通知

bash

成功/失敗をアタッチメント込みで送る場合.

git-bash(Windows)でも動く。

post_slack() {
  # ex: "#times_hoge"
  local channel=$1
  # ex: "hoge"
  local user=$2
  # ex: "smile"
  local emoji=$3
  # ex: "ほげほげ"
  local message=$4
  # list: good / danger
  local color=$5

  file=$(mktemp)
  trap "rm ${file}" EXIT

  cat << EOJ > $file
    {
      "link_names": 1,
      "channel": "${channel}",
      "username": "${user}",
      "icon_emoji": ":${emoji}:",
      "attachments": [
        {
          "color": "${color}",
          "text": "${message}"
        }
      ]
    }
EOJ

  curl -s -S -X POST -d @$file ${SLACK_WEBHOOK_URL}
}
  • -d指定でjsonの改行を認識しないように
  • 一時ファイルを使うことでgit-bashの場合に--url-encodeUTF-8にならない問題を回避
  • trapで一時ファイルが残らないように