LoginSignup
0
0

More than 1 year has passed since last update.

Slack WebhookのURL取得方法

Posted at

概要

仕事でSlackのWebhookを使う機会があったので、備忘録として残します。
ネットでは旧方式での記事が多いので、初心者でもわかりやすいように画像多めで記事にします。

取得方法について

取得方法には以下があります。

・旧方式(カスタムインテグレーション)
従来使われてきた方式です。
公式で非推奨とされており、将来的になくなる可能性があると明記されています。
参考

・新方式(Slack app)
旧方式に比べて少しカスタム系の設定が面倒ですが、URL発行自体はめちゃ簡単です。
1つのWebhook URLから1つのチャンネルにしか通知を飛ばせないので、セキュリティリスクが低いのが特徴のようです。

もちろん推奨は新方式なので、今回は新方式の手順を残します。

URL取得手順(新方式)

■下記にアクセスして、「Create an app」をクリックします
Slack api

■「From scratch」をクリック

■ アプリ名を作成
App Name : 任意のアプリ名を入力します(後で変更もできます)
Pick a workspace : 投稿したいSlackのワークスペースを選択します

■ 「Incoming Webhook」をクリックします(Featuresから選んでもOK)

■ WebhookをONにします

■ 「Add New Webhook to Workspace」をクリックします

■ 別画面が開き、投稿先のチャンネルを選択して「許可する」ボタンをクリックします

■ WebhookのURLが発行されます

投稿テスト

発行されたWebhookを使って、チャンネルに投稿できるか確認してみます。

■ ターミナルで直接curlで投稿する場合
ポイント:ローカルとかだとURLの前に-kオプションをつけないとSSL証明書エラーでコケます

curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello, World!"}' -k https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXX

■ phpで投稿する場合

// curlを初期化
$ch = curl_init();

// 取得したWebhookのURL
$webhookUrl = 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXX'

// header情報
$header     = array('Content-type: application/json;charset=utf-8');

// 投稿したい内容
$postData   = json_encode( array( 'text' => 'Hello, World!' ) );

// 通信オプションをセット
curl_setopt($ch, CURLOPT_URL, $webhookUrl);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HEADER, $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);

// 通信開始
curl_exec($ch);

// 通信解除
curl_close($ch);

■ 投稿するとSlackのチャンネルに以下のような内容で投稿される
image.png

投稿内容を改造したい場合

Block Kit Builderで投稿内容をプレビューしながら作成できるのでお試しください。
slack Block Kit Builder

image.png

以上となります。
参考になれば幸いです。

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