背景
社内でイベント用のグループ分けアプリを作成していましたが、作成されたグループの結果を社内のコミュニケーションツールであるGoogleチャットに自動で送信する必要がありました。手動でグループを確認する手間を省き、イベント管理を効率化するために、Googleチャットへグループ分け結果を通知する仕組みを実装しました。
この記事では、Googleチャットへメッセージを送信するメソッドをRuby on Railsのコードでどのように実装したかを紹介します。
目的
社内イベントアプリにおいて、グループ分けの結果をGoogleチャットに自動送信するロジックを実装し、スムーズにイベントを管理できるようにします。
事前準備
- 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
- Webhook URLを環境変数に設定
Webhook URLをRailsアプリ内で使用するために、.envファイルに設定します。
GOOGLE_CHAT_WEBHOOK_URL=https://chat.googleapis.com/v...
※.envファイルがない場合は、新たに作成してください。環境変数の管理には dotenv-rails gem を使うと便利です。
# Gemfile
gem 'dotenv-rails'
実装
次に、Googleチャットへイベントのグループ分け結果を送信するメソッドを実装します。
- メソッドの実装
以下のコードで、イベント情報を整形して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
- メソッドの呼び出し
イベントが作成された後に、グループ分け結果を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でメソッドを実装してイベント結果を送信します。実装の目的は、手動での確認作業を効率化し、参加者がリアルタイムでグループ分け結果を確認できるようにすることです。結果的に、イベント管理が円滑に進むようになります。