以前シェルでSlack通知のスクリプトを書いていたのだけど、この間書いたRubyプログラムの、

[blogcard url=http://inamuu.com/nokogiri%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B/]

これでSlack通知させたくて、Rubyでも書いてみた。

[code]
require ‘dotenv’
require ‘slack/incoming/webhooks’

Dotenv.load
slack = Slack::Incoming::Webhooks.new ENV["APIKEY"]

attachments = [{
color: "#483D8B",
fields: [
{
title: "今日の書籍一覧",
value: "#{str}",
}
],
}]

slack.post "", attachments: attachments

[/code]

APIKEYをGithubで管理しないために、dotenvで.envに書いたAPIKEYを読むようにした。
しかし、他の方々はどうしてるのだろう?

ちなみにシェルスクリプトはこれ。
[blogcard url=http://wiki.inamuu.com/index.php?cmd=read&page=%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%EF%BC%9ASlack%E3%81%B8%E3%81%AE%E9%80%9A%E7%9F%A5&word=slack]

[code]
#!/bin/bash

if [ -n $? ];then
echo "Usage: ./slack.sh IPaddress"
exit 1;
fi

url=’webhookのAPIで取得したURLをここに記載する。’
username=’ユーザー名として名乗る名称を記載する。なんでもOK’
to="#チャンネル名を記載する"
subject="`hostname` : $1"
emoji=’:bell:’   <-絵文字。なんでもOK
#message="${subject}"
message2="$2"

payload="payload={
\"channel\": \"${to}\",
\"username\": \"${username}\",
\"text\": \"${subject}\",
\"icon_emoji\": \"${emoji}\",
\"attachments\": [
{
\"text\": \"${message2}\"
}
]
}"

curl -m 5 –data-urlencode "${payload}" $url
[/code]

今となってはなんでこれを書いたか覚えてないけど、なんとくなく監視用っぽいスクリプトな気がする。
curlでAPIKEYにJSON形式で情報を渡している。

Slackで通知を集約できるのは思った以上に便利だった。
今までとりあえず雑にメールで通知させていたものは、全てSlackで良くなった。
SkypeからSlackへ移行した理由もこの辺が強いと思う。

反面、通知が流れていくと他の人は追いづらくなってしまうのでバランスよく通知させていきたい。

上記通知部分が作成できたので、自宅サーバーのcronにセットすることで、毎日新しい漫画の一覧が取得できるようになった。
便利機能でもなんでもないけど、作ろうと思ってたものができたのは良かった。

次は何書こうかな。

カテゴリー: Ruby