Rails Slackへメッセージを送信


前提条件

・ruby 2.6.6
・Rails 6.0.3.2
・macOS Catalina バージョン10.15.7

概要

 webアプリ内で特定のアクションが起きた時にSlackへ通知する機能を実装したいと思い
実装の備忘録としてここに記す。
 思ったよりかなり簡単だったので、ぜひご自身のwebアプリに活用していただけると幸いです。

gem 'slack-notifier'の導入

 slackへ通知を送るにはgemを導入する必要があります。

Gemfile
gem 'slack-notifier'
ターミナル
bundle

これでgemの導入が完了します。

Slack側準備

 まずチャンネルのWebhook URLを取得するために、下記のURLにアクセスします。 

 https://slack.com/services/new/incoming-webhook

 ここでRailsからの通知を受け取るチャンネルを設定します。既存のチャンネル、もしくは新規にチャンネルを作ってもどちらでも可能です。
 チャンネルを入力後、Incoming Webhook インテグレーションの追加をクリック。
その後に表示される、Webhook URLを取得します。

Slackに通知を飛ばす

 飛ばしたいアクションの中に

notifier = Slack::Notifier.new(
  'WEBHOOK_URL', 
  channel: '通知を送りたいチャンネル名',
  username: 'notifier',
)
notifier.ping 'ユーザーが投稿を作成しました!'

と書き込みます。
最後に先ほど取得したWebhook URLを'WEBHOOK_URL'に入力します。
これで実装が完了となります。実際にアクションを起こし確認してみてください。
また、そのままWEBHOOK_URLを書き込むより、gemのdotenv-railsを使用したりして
環境変数として設定するといいと思います。

参考文献

・RailsプロジェクトでSlack通知を実装する
https://tech.mof-mof.co.jp/blog/rails-slack-notifier/