SlackのWebhookを利用して、PHPからSlackへメッセージを投稿する方法を紹介する。

今回は関数を用意し、引数へ投稿先のチャンネルやメッセージなどを指定して送信するコードを紹介する。

関数全文

function slack($message="", $channel="", $username="", $icon=":monkey_face:") {
  $webhook_url = ''; // WebhookURLを指定
  $data = array(
    'username' => $username,
    'text' => $message,
    'channel' => "#{$channel}",
    'icon_emoji' => $icon
  );
  $options = array(
    'http' => array(
      'method' => 'POST',
      'header' => 'Content-Type: application/json',
      'content' => json_encode($data),
    )
  );
  $response = file_get_contents($webhook_url, false, stream_context_create($options));
  return $response === 'ok';
}


上記の関数を用意し、以下のとおり呼び出す。

// 関数呼び出し
slack("test", "ChannelName", "hogehoge");

任意で第4引数に投稿時に表示されるアイコンを指定することもできる。

デフォルトで関数にモンキーアイコンをしているので、第4引数を指定しないと以下のとおり猿が表示される。

Webhookの設定

Webhookを使う場合、ワークスペースの管理画面にアクセスし「Incoming Webhook」アプリを追加する必要がある。

インストールしたら、アプリの設定画面で「Webhook URL」欄を参照する。

ここで取得したURLを前述の関数内$webhook_url変数に入れる。

これで先程定義した関数を呼び出せば、PHPからSlackに投稿することができるはずだ。