RubyでSlack通知


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

Nokogiriを使ってみる
あるサイトでは、電子書籍で発売した漫画の一覧を観ることができる。 そのサイトを見るのが日課だったのだけど、正直毎日確認するのが...

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

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

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

ちなみにシェルスクリプトはこれ。

#!/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

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

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

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

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

次は何書こうかな。

カテゴリー: Ruby