概要
PHPをお使いの皆様にはおなじみのmonologを利用してSlackBotをつくる方法を紹介します
monolog
PHPのLoggingライブラリ
PHPのLoggingライブラリではほぼ一択でmonologです
SlackBot
SlackBotには大きく2種類あります
一方通行の投稿
投稿内容に反応して、返信やイベント処理を行うもの
今回は1の一方通行の投稿を行うBotをmonologを利用してつくっていきます
monolog Handler
monologにはHandlerという概念があり、ログの出力先などを管理します
Slackが対応しているHandlerがあり
それを利用することで、とても簡単にSlackへの投稿をおなうことができます
Slackに関連するHandlerは3種類用意されていますが、今回は SlackWebhookHandler
を利用します
monolog/SlackWebhookHandler.php at main · Seldaek/monolog · GitHub
他2種類はこちら
monolog/SlackHandler.php at main · Seldaek/monolog · GitHub
https://github.com/Seldaek/monolog/blob/master/src/Monolog/Handler/SlackbotHandler.php
SlackにBotを登録する
下記で実装も紹介しますが、とても簡単なので、SlackのApp登録,Wenhook発行が本編です
SlackにAppを登録する
Customize your workspace | Slack
Start Building
をクリック
Appの名前とどのWorkspaceに紐づけるか設定する
Incomming Webhook
から
Activate Incoming Webhooks
をONにすると
上記の設定画面が追加表示されるので、
Add New Webhook to Workspace
からどのChannelに紐づくhookか設定して
WebhookのURLを発行します
このURLを利用して、Slackに投稿します
※ このURLは公開しないでください
実装
例ではdotenvを利用していますが、
基本的には SlackWebhookHandler
を利用して、いつもどおりLoggingするだけで、Slackに投稿されます
<?php require_once dirname(__DIR__) . '/vendor/autoload.php'; $dotenv = new \Dotenv\Dotenv(dirname(__DIR__)); $dotenv->load(); $logger = new \Monolog\Logger('slack'); $logger->pushHandler( new \Monolog\Handler\SlackWebhookHandler( $_ENV['SLACK_WEB_API_KEY'], // ここにWebhookのURLを設定する null, null, true, '', true, true, \Monolog\Logger::INFO ) ); // You will receive a message on your Slack $logger->info("first message\nEmoji :thumbsup: ");
簡単!
あとは投稿する内容を毎日の数字のレポートやプロジェクトにあったものを設定してください
単純にエラーログをSlackに飛ばすということも同じようにできるので
本番環境で動かしているCLI系に、このSlackのHandlerを追加するのはオススメです
それではよいPHP, Slack生活をお送りください