概要
仕事でSlackのWebhookを使う機会があったので、備忘録として残します。
ネットでは旧方式での記事が多いので、初心者でもわかりやすいように画像多めで記事にします。
取得方法について
取得方法には以下があります。
・旧方式(カスタムインテグレーション)
従来使われてきた方式です。
公式で非推奨とされており、将来的になくなる可能性があると明記されています。
参考
・新方式(Slack app)
旧方式に比べて少しカスタム系の設定が面倒ですが、URL発行自体はめちゃ簡単です。
1つのWebhook URLから1つのチャンネルにしか通知を飛ばせないので、セキュリティリスクが低いのが特徴のようです。
もちろん推奨は新方式
なので、今回は新方式の手順を残します。
URL取得手順(新方式)
■下記にアクセスして、「Create an app」をクリックします
Slack api
■ アプリ名を作成
App Name : 任意のアプリ名を入力します(後で変更もできます)
Pick a workspace : 投稿したいSlackのワークスペースを選択します
■ 「Incoming Webhook」をクリックします(Featuresから選んでもOK)
■ 「Add New Webhook to Workspace」をクリックします
■ 別画面が開き、投稿先のチャンネルを選択して「許可する」ボタンをクリックします
投稿テスト
発行された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のチャンネルに以下のような内容で投稿される
投稿内容を改造したい場合
Block Kit Builderで投稿内容をプレビューしながら作成できるのでお試しください。
slack Block Kit Builder
以上となります。
参考になれば幸いです。