はじめに
今回の記事ではWebhookを用いたMicrosoft Teamsへのメッセージ投稿の方法について記述する。
Webhookとは
Webhookとは、あるシステムに何か特定のイベントが起きた時にサーバーからクライアントに通知するための手法の一つ。APIはユーザーからのリクエストに基づいて情報を提供するのに対し、Webhookは特定のイベントが発生した際に自動的に情報を送信する。
Microsoft TeamsでWebhookを設定する
- Teamsアプリの右上の三点リーダーをクリック
- コネクタをクリック
- Incoming Webhookを追加する
- Incoming Webhookの構成をクリック
- Incoming Webhookの名前を入力して作成する
- WebhookのURLを取得する
Railsプロジェクトの設定
今回はSidekiqを使って非同期にメッセージ送信処理をするworkerを定義する。
require 'net/http'
require 'uri'
require 'json'
class ReminderWebhookWorker
include Sidekiq::Worker
def perform(notification_id)
notification = Notification.find(notification_id)
vehicle = notification.vehicle
user = notification.user
# TeamsのWebhook URLを用意
url = URI(user.webhook_url)
# メッセージの内容
message = {
"@type" => "MessageCard",
"@context" => "http://schema.org/extensions",
"summary" => "Sample",
"title" => "こんにちは",
"sections" => [{
"text" => "junpei314です"
}]
}
# HTTPクライアントを作成
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
# POSTリクエストを作成
request = Net::HTTP::Post.new(url.request_uri, {'Content-Type' => 'application/json'})
request.body = message.to_json
# POSTリクエストを送信
response = http.request(request)
# レスポンスのステータスコードを表示
puts response.code
end
end
まとめ
今回はWebhookを使ったMicrosoft Teamsへのメッセージの送り方を紹介した。
Microsoft Teams以外にもLINEやSlackなどでもWebhookを用いてメッセージを送れるとのこと。
今度試していきたい。