_RJ 技術メモ

人生を豊かにする技術を提供する、筋肉

ターミナルから簡単にSlackに投稿するエイリアス

Slack Bash Terminal alias bashrc

実行結果

Screen Shot 2017-03-30 at 21.41.08.png

ソースコード

メッセージをURLエンコードをかけ、curlにてslackに投稿する。

function param-url-encode() {
  local input="${1}"
  local output=""

  local i=0
  for (( i=0 ; i<${#input} ; i++ )); do
     local o=""
     local c=${input:$i:1}
     case "$c" in 
        [-_.~a-zA-Z0-9] ) o="${c}" ;;  
        * ) printf -v o '%%%02x' "'$c"
     esac
     output+=$o
  done

  echo $output
}

function post-slack(){
  local token="xoxp-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ##Slackのアクセストークン
  local message=`param-url-encode $3` ##メッセージをURLエンコード
  curl -w "%{http_code}\n" "https://slack.com/api/chat.postMessage?token=${token}&channel=${1}&username=${2}&text=${message}" ##curlで送信する
}

alias post-slack=post-slack

エイリアスの導入方法

  1. tokenに自分のslackのアクセストークンを記述する
  2. ~/.bash_profileを編集し、下記のコードを追記をする

エイリアスの使用例

$ post-slack general username message  #post-slack チャンネル ユーザー名 メッセージ

{"ok":true,"channel":"C0R3AKR8","ts":"149087635.112142","message":{"text":"message","username":"username","bot_id":"B4DCDQML","type":"message","subtype":"bot_message","ts":"149076935.112142"}}200