1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Webhookを活用したMicrosoft Teamsへのメッセージ投稿方法

Posted at

はじめに

今回の記事では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を用いてメッセージを送れるとのこと。
今度試していきたい。

参考

受信 Webhook を作成する
Microsoft Teams連携機能を実装する

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?