PR
railsで特定のアクセスがあったときや、特定の処理が行われたときに通知をSlackに飛ばすことで、アプリケーション運用の質を高めることが出来ます。
RailsとSlackの連携は簡単に実装可能ですので、その方法を記載します。
Slackの通知を受けるチャンネルを設定する
通知を受け取るチャンネルを作成する
まずはRailsからの通知受信専用のチャンネルを作成しておきます。
「チャンネルを追加する」をクリックし、必要事項を入力し、「作成」をクリックします。
Incoming WebHocksアプリを追加
次に作成したチャンネルに「Incoming WebHocksアプリ」を追加します。新規作成したチャンネルを開き、画面上部の「アプリを追加する」を選択し、表示される画面で「Incoming WebHocks」と入力します。
「Incoming WebHocks」のアプリが表示され選択すると、Slackのウェブサイトに遷移するので、そこで追加の設定を行います。
チャンネルを選択し、「インテグレーションの追加」をクリックします。
「Webhock URL」が表示されるので、どこかに文字列をコピーしておきます。
以上で、Slack側の設定は完了です。
RailsからSlackに通知を飛ばす
次にRails側の設定を行います。
SlackNotificationServiceクラスの作成
appフォルダ配下にservicesフォルダを作成し、その下に、slack_notification_service.rbを作成します。
# app/services/slack_notification_service.rb
class SlackNotificationService
def initialize(**params)
@params = ActionController::Parameters.new(params)
end
def send_notification(channel:, title:, body:)
notifier = Slack::Notifier.new '取得したWebhockURL', channel: channel, username: title
notifier.ping body, channel: channel
end
end
柔軟に様々な箇所から通知を飛ばせる用に関数も用意しておきます。
SlackNotificationServiceを呼び出す
sns = SlackNotificationService.new
channel = "#作成したチャンネル名"
title = "test title"
body = "slack通知テスト"
sns.send_notification(channel: channel, title: title, body: body)
呼び出し側で「channel」「title」「body」を変更できるようにしています。
これで、通知テスト用のメッセージがSlackに飛んでくれば完了です。
PR
PR