PHPでエレガントにSlack通知する

2 min read読了の目安(約1200字

「php slack」で検索するとfile_get_contents()cURLを使う方法が多いですね。

大変シンプルでよろしいですが、ちょっと小綺麗な通知をしようとするとJSONが登場するし、file_get_contents()でHTTPしたくないしcURLはセットアップに何行も書かないといけないし、など思うところがあります。

maknz/slack を使うとその辺りの悩みがなくなりますよという紹介。

さて、例えばこんな通知をするとします。

空っぽのディレクトリから始めるなら次のようにcomposerで準備します。

$ composer init
$ composer require maknz/slack

次にPHPを書きましょう。slack.phpという名前で次のような内容です。

<?php
require __DIR__ . '/vendor/autoload.php';
$webhook = 'https://hooks.slack.com/services/....(あなたのWebhookのURL)';

$client = new \Maknz\Slack\Client($webhook, [
    'username' => '桃太郎',
    'channel' => '#folktale',
    'icon' => ':peach:',
]);
$client->attach([
    'fallback' => 'お金を払うと続きが読めます。',
    'text' => 'お金を払うと続きが読めます。',
    'color' => 'danger',
])->send('むかしむかし あるところに *おじいさん* と *おばあさん* が山を洗濯…');

これを保存してphp slack.phpすれば通知が飛びます🎉

SlackのJSONをほぼそのまま配列で書いているだけど(Slack Aされるもともとシンプルなので)json_encode()とか登場して欲しくない人にはおすすめです。

追記

この記事を書いた後の気付いたのですが maknz/slackNote: this package is no longer being actively maintained. となっていました😭 メンテナンスされるフォークが出てくると良いのですが。