Slack Ruby ClientでSlackにメッセージを投げる

自前でウェブから情報を集める手段を作りたくて考え中。

スクレイピングの方はAWS Lambdaで動かせばいいとして、集めた情報をどこに集約するのがいいのかなと。

メール?フィード?Slack?

とりあえずSlackに投げる方法調べて試してみるかと。
まあSlack普段あんまり使ってないんだけど。

SlackのウェブAPIを使うにはトークンが必要で、トークンを得るためにAppを作るものらしい。

Slack Ruby Clientを使ってやっていく。

手順

  • 1. Slack App で「My Alert」という名前のAppを作る
  • 2. OAuth & Permissions で chat:write を追加
  • 3. Install App を押す
  • 4. Slackの#genelral上で /invite @my_alert
  • 5. サンプルコード実行

4をやってなくて Slack::Web::Api::Errors::NotInChannel とか言うエラーが出て少しハマった

サンプルコード

ほぼSlack Ruby Client公式のサンプルまんまじゃが。

require "slack-ruby-client"

Slack.configure do |config|
  config.token = ENV['SLACK_API_TOKEN']
end

client = Slack::Web::Client.new

client.auth_test

res = client.chat_postMessage(channel: "#general", text: "Hello World", as_user: true)

pp res

参考