「Incoming Webhook」でSlackにメッセージを送信しよう

ブログ

Blog
  1. ホームページ制作・運営はアウラ:ホーム
  2. ブログ
  3. 「Incoming Webhook」でSlackにメッセージを送信しよう

「Incoming Webhook」でSlackにメッセージを送信しよう

「Incoming Webhook」でSlackにメッセージを送信しよう

こんにちは、エンジニアの仁木です。

現在関わっている案件でPHPのLaravelフレームワークを利用しています。
Laravelは手早く開発の土台を作ることができるのですが、その中に「ログをSlackに通知する」という機能があり、アプリにエラーが発生した時にSlackのチャンネルに通知してくれます。

すぐさまエラーの原因を見つけられるので、非常に便利な機能なのですが、仕組みとしてはSlackの「Incoming Webhook」と呼ばれるSalckアプリケーションを利用しています。
LaravelだとSlackアプリ側での設定と、いくつかのコンフィグファイルを編集するだけで、整形されたログをSlackに送ることができるようにしてくれているのですが、
今回はLaravelを使わずに「Incoming Webhook」を使って、SlackのチャンネルにCurlを使ってコマンドからメッセージを送信する方法を紹介したいと思います。

Incoming Webhookとは

下記はSlackのIncoming Webhookの公式ページの説明です。

Incoming Webhook は、外部ソースからの情報を簡単にワークスペースと共有する方法です。

簡単に説明すると:

  • 選択したチャンネルにデータを送信します。
  • Webhook メッセージの書式を設定してチャンネルの他のメッセージよりも目立たせるようにします。
  • メッセージテキストとその他のオプションを含む JSON ペイロードの HTTP リクエストを送信できます。

説明の中の「外部ソース」とは、Slackと連携したいアプリケーションやシステムです。

設定はチャンネル単位で行います。
Incoming Webhookをチャンネルに設定すると、外部ソースからリクエストを送信するためのURLが生成されます。
そして外部ソース側では、生成されたURLにHTTPリクエストを送信することで、チャンネルにメッセージを送信できるという仕組みですね。

手順としては

  1. Slackで、メッセージを送りたいチャンネルにIncoming Webhookを設定して、URLを作成する
  2. 外部ソース側で作成されたURLに、メッセージ内容のHTTPリクエストを送信する

1. Incoming Webhookの設定

Slackの公式ページの手順通りに設定をしていきたいと思います。

メッセージを投稿するワークスペースで新しい Slack アプリを作成

まずはワークスペースにSlackアプリを作成します。
Slackアプリページの「Create New App」のボタンから新規アプリを作成します。

  1. 表示されたモーダルの最初の選択では「From scratch」を選択します
  2. App Name」に任意のアプリ名を入力し、「Pick a workspace to develop your app in」のプルダウンでワークスペースを選択します。

上記の操作でアプリを作成できたら、遷移後の画面のサイドメニューにある「Incoming Webhooks」を選択します。

  1. Incoming Webhooksのメニューでは「Activate Incoming Webhooks」のトグルボタンをクリックしてIncoming Webhooksを有効にします。
  2. Webhook URLs for Your Workspace」のメニューが下部に新しく表示されるので、一番下の「Add New Webhook to Workspace」ボタンをクリックし、遷移後の画面からIncoming Webhookを使いたいチャンネルを選択します。

上記でIncoming Webhooksのメニュー画面に、新しく「Webhook URL」が追加されます。このURLを使ってSlackのチャンネル上にメッセージを送信します。

2.  メッセージを送信してチャンネルに通知する

生成されたURLを使ってチャンネルにメッセージを送信してみます。

Incoming Webhooksの画面では、サンプルのCurlコマンドが用意されているので、このコマンドで試しにチャンネルに送信されるか試してみます。
テストは簡単でコマンドラインから、サンプルのCurlを実行するだけで、チャンネルに「Hello World!」とメッセージが通知されると思います。

PHPだと、GuzzleなどのHTTPリクエスト用のライブラリを使ってHTTPリクエストを作成して、メッセージを送信することができます。

さらにメッセージはテキストに装飾をつけたり、リンクをのせたり、ファイルを添付したりすることも可能なので、ログファイルを送信してSlackで受け取ったり、幅広く活用できそうです。

 

お電話でのお問い合わせはこちら:06-6292-8577。受付時間は平日9:30~18:30 インターネットからは24時間受付中!お問い合わせフォームはこちら
Webデザイナー、Webプログラマ募集中!