5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RailsでGoogleチャットに自動通知!Webhookを使ってイベント情報を送信する方法

Posted at

背景

社内でイベント用のグループ分けアプリを作成していましたが、作成されたグループの結果を社内のコミュニケーションツールであるGoogleチャットに自動で送信する必要がありました。手動でグループを確認する手間を省き、イベント管理を効率化するために、Googleチャットへグループ分け結果を通知する仕組みを実装しました。

この記事では、Googleチャットへメッセージを送信するメソッドをRuby on Railsのコードでどのように実装したかを紹介します。

目的

社内イベントアプリにおいて、グループ分けの結果をGoogleチャットに自動送信するロジックを実装し、スムーズにイベントを管理できるようにします。

事前準備

  1. GoogleチャットのWebhook URLを取得

取得方法は下記を参考にしてください。
https://help.ovice.com/hc/ja/articles/16936394776473-Google-Chat%E3%81%B8%E3%81%AE%E9%80%9A%E7%9F%A5-Web%E3%83%95%E3%83%83%E3%82%AF%E3%81%AE%E5%88%A9%E7%94%A8

  1. Webhook URLを環境変数に設定
    Webhook URLをRailsアプリ内で使用するために、.envファイルに設定します。
GOOGLE_CHAT_WEBHOOK_URL=https://chat.googleapis.com/v...

※.envファイルがない場合は、新たに作成してください。環境変数の管理には dotenv-rails gem を使うと便利です。

# Gemfile
gem 'dotenv-rails'

実装

次に、Googleチャットへイベントのグループ分け結果を送信するメソッドを実装します。

  1. メソッドの実装
    以下のコードで、イベント情報を整形してGoogleチャットに送信するメソッドを定義します。

 def send_message_to_google_chat(event)
  # 環境変数からWebhook URLを取得
  webhook_url = ENV['GOOGLE_CHAT_WEBHOOK_URL']

  # グループとメンバー情報を整形
  group_details = event.groups.includes(:members).group_by(&:group_name).map do |group_name, groups|
    member_details = groups.map do |group|
      group.members.map { |member| "#{member.user.name}" }
    end.flatten

    "#{group_name}:\n" + member_details.join("\n")
  end.join("\n\n")

  # 送信するメッセージを整形
  message = {
    text: "新しいイベントが作成されました: #{event.title}\n\nグループ分けの結果:\n#{group_details}"
  }

  # HTTPリクエストを送信
  uri = URI.parse(webhook_url)
  header = {'Content-Type': 'application/json'}
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true
  request = Net::HTTP::Post.new(uri.request_uri, header)
  request.body = message.to_json

  # レスポンスを確認
  response = http.request(request)
  
  # レスポンスの確認
  if response.code == '200'
    puts 'メッセージがGoogle Chatに送信されました。'
  else
    puts "エラーが発生しました: #{response.body}"
  end
end
  1. メソッドの呼び出し
    イベントが作成された後に、グループ分け結果をGoogleチャットへ送信する処理を追加します。たとえば、イベントの作成やグループ分けが完了した後の箇所に以下のコードを追加します。
def create
 ///省略////

  # グループ分けのロジックが完了した後にGoogleチャットへ送信
  send_message_to_google_chat(event)

  redirect_to event_path(event), notice: 'イベントが作成されました。'
end

結果
イベントが作成されると、Googleチャットに次のようなメッセージが送信されます。

新しいイベントが作成されました: Event 2024

グループ分けの結果:
Aチーム:
User A
User B
User C

Bチーム:
User D
User E

このように、Googleチャットにリアルタイムでグループ分け結果が共有されるため、イベント参加者はすぐにグループの確認ができます。

まとめ

この記事では、社内イベントアプリのグループ分け結果をGoogleチャットに自動で送信する方法を解説しています。GoogleチャットのWebhook URLを取得し、環境変数に設定した後、Railsでメソッドを実装してイベント結果を送信します。実装の目的は、手動での確認作業を効率化し、参加者がリアルタイムでグループ分け結果を確認できるようにすることです。結果的に、イベント管理が円滑に進むようになります。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?