日々の業務で「これ人力でやる必要あるの?」みたいなものって結構ありますよね
そんな面倒な確認や告知は自動化してしまいましょう
という事で今回はslackのincoming webhooksを使ってslackへ通知をしてみます
slack integrationの設定
Incoming WebHooksの設定を行います
デフォルトでPOSTするチャンネルを選んでボタンを押下するとURLが作成されます
後でも変更できるようなので特に考える必要はなさそうです
integrationを追加したら次の画面で各種設定項目を入力します
説明、名前、アイコン、送信するチャンネルなどが設定できます
ここで作成したWebhook URLの項目をメモしておきます
POST
まずは簡単なものからポストしてみます
curl -X POST --data-urlencode 'payload={"channel": "#webhook_test", "username": "webhookbot", "text": "This is posted to #general and comes from a bot named webhookbot.", "icon_emoji": ":abc:"}' <webhook URL>
これだけでも通知としては十分です
スクリプトから
次はシェルスクリプトでなんか作ってみます
USERNAME="webhookbot" CHANNEL="#webhook_test" ICON=":bike:" WEBHOOK_URL="http://......" author="author name" data=`cat << EOF payload={ "channel": "$CHANNEL", "username": "$USERNAME", "icon_emoji": "$ICON", "link_names": 1 , "attachments": [{ "fallback": "branchの整理をしてください", "color": "#003399", "pretext": "$PERIOD_MONTH ヶ月以上更新されて無いbranchがあります" , "title": "対象branch", "text": "確認をお願いします @$author:" }] } EOF` curl -X POST --data-urlencode "$data" $WEBHOOK_URL
実行してみます
attachmentsを追加してあげれば割と自由に投稿をコントロールできます,書き方に関しては下記から
実際に書いてみるとこんな感じですよーっていう例ですね
curlをシェルスクリプトで叩く時、JSONの整形がなかなかうまくいかずに苦戦しました。。。
結局一度変数に持たせてからポストするのが楽という感じに落ち着きました
あとは要件に合わせて文言なり変えてあげれば色々自動化できそうですね!