PHP で Slack に投稿する

C# で Slack に投稿する | Moonmile Solutions Blog
http://www.moonmile.net/blog/archives/9117

はコマンドラインやWindowsのデスクトップアプリから投稿することを想定しているけど、じゃあ WordPress のアドインみたいなのを作って Slack に投稿するにはどうすればよいのか?ってのが、これ。

PHPでSlackにメッセージをポストするクラスのサンプル – Qiita
https://qiita.com/monhan/items/d95ad6e4e698da9e6593

Slack APIを直接扱うのは手間なので、Incoming WebHooks を使って投稿してみる。
あれこれ作ろうと思ったけど、SlackBot と SlackBotInfo をそのまま流用する。

PHP-7.2.5 だと動かなかったので、一か所だけ修正する。

    protected function create_options($info)
    {
        return array(
            CURLOPT_URL            => $info['url'],
            CURLOPT_POST           => true,
            CURLOPT_POSTFIELDS     => $info['body'],
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_HEADER         => true,
            CURLOPT_SSL_VERIFYPEER => false,	// ★
        );
    }

引数でメッセージを指定するにしてあるので、適当に WordPress から呼び出せる

include_once __DIR__.'/SlackBot.php';
include_once __DIR__.'/SlackBotInfo.php';

if ( $argc < 2 ) {
    $message = date("Y/m/d H:i:s");
} else {
    $message = $argv[1];
}

$url = "https://hooks.slack.com/services/XXX/XXX/XXX";
// メッセージをポスト
$bot = new SlackBot();
print_r($bot->post_message(new SlackBotInfo($url, $message)));

使い方を考える

こんな感じに、クライアントのPCからブラウザで何らかのメッセージを送る。フォームを使ってサーバーから保守PCへ送るとか、メールに切り替えるとかでもいいのだけど、もっとシンプルに Slack の通知だけを送ってしまう。単純なヘルプボタンみたいなものかな。例えば、なんか障害が起きたとか、定型的なレポートとかをメール経由ではなくて slack 経由にしてしまう感じ。

保守 PC のほうは、何で受けてもよいのだけど、LINE API とか Facebook とかメーラーとか、できるだけ統一して取れるようにするのがベターかなと。

サンプルコード

http://github.com/moonmile/sample-slack

カテゴリー: 開発, Slack パーマリンク