Incoming Webhookを使ったSlack通知ライブラリを作った
Incoming Webhookを使ったSlack通知ライブラリを作った
おはこんばんにちは!和尚です
今日は初めてPHPの自作ライブラリをcomposer化までしてみました!
手順をざっくり書いて、作った自作ライブラリについての使い方を説明していくーーー!
経緯
そもそも何故、今更Slack通知のライブラリを作ろうと思ったのかについて軽くお話させていただきたい
今年からチャットサービスをSlackに乗り換えるぞ!という会社の方針で、以前チャットワークAPIを使って問合せ通知やらエラー監視ツールの通知やらをチャットワークに送っていたのですが、それらをSlackに移行しなければいけなくなってしまいました。
簡単に使えて便利なPHPのライブラリがあればよかったのですが、Slackの通知の仕組みが去年変わってしまっていて軒並み使えなさそうなライブラリたち...。とはいえ新しい仕組み自体もチャンネル毎にWebhookを使って通知するといった大したものではなかったのでPHPの自作クラスを作って対応しました。
そんなこんなで先月に移行作業を完了したわけなのですが、会社でPHPを使うことも多くSlack通知しないといけない処理が欲しいと言われたときにわざわざクラスコピーしてくるのも面倒だなーと思っていたのですが、もっと汎用的にしてcomposer化しちゃえば後々便利じゃない?とふと帰り道に思ったので今回作ってみることにしました。
参考サイト
自作ライブラリを作る手順
ざっくりとですが、自作のライブラリを作る手順は以下の順番になります。
- 自作ライブラリ用のディレクトリを作成する
-
$ composer init
でcomposerファイルを作成する - 必要なパッケージをcomposer.jsonに記載し、
$ composer install
する - srcディレクトリを作成し、autoloadの設定をcomposer.jsonに記載して
$ composer dump-autoload
する - 自作クラスを作成する
- テストコードを書く
- サンプルファイルを作成する
- ライセンスファイルを作成する
- readme.mdを書く
- githubにpushする
- packagistにgithubリポジトリを登録する
大体の作業は参考記事を見ながら作成したので、自作ライブラリが既に出来てるよ!って方は上記の参考サイトを見ながら登録してみてください。
Slack Notification
Slack Notificationの使い方
ライブラリ自体はかなりシンプルな作りになっています。
※ sendメソッドの第二引数にwebhookのURLが必要になります。Slackの通知を行いたいチャンネルにてアプリ追加ボタンを押し、incoming-webhookを追加してwebhookのURLを控えておいてください。
1. インストール
$ composer require osyou84/slack-notification
2. SlackNotificationを使用するphpファイルで、autoload.phpを読み込む(既に読み込まれている場合はスキップ)
require_once(__DIR__ . '/vendor/autoload.php');
3.インスタンスの作成
use osyou84\SlackNotification\SlackNotification;
$slack_notificaiton = new SlackNotification;
4.メンションを設定し、送信する
$message = 'スラックに通知する';
$webhook_url = 'https://hooks.slack.com/services/XXXXX/YYYYY/ZZZZZ';
$slack_notification->targetChannelAll()
->send($message, $webhook_url);
メンションの設定方法
Slack Notificationではメンション用に4つのメソッドを用意しています。
1.ワークスペース全員に送る(#generalに向けて)
(new SlackNotification)->targetWorkspace()
->send($message, $webhook_url);
2.チャンネル内の全員に送る
(new SlackNotification)->argetChannelAll()
->send($message, $webhook_url);
3.チャンネル内でアクティブなメンバーに送る
(new SlackNotification)->targetActive()
->send($message, $webhook_url);
4.指定したユーザーに送る
user_idはワークスペースの管理者がユーザー管理にてCSVダウンロードできます。
$user_ids = ['user_id_1', 'user_id_2', 'user_id_3'];
(new SlackNotification)->setTargets($user_ids)
->send($message, $webhook_url);
まとめ
かなりざっくりですが、incoming webhookを簡単に使えるPHPライブラリ作ってcomposer化したので、使ってみてね!という記事でした
改良案を思い浮かんだら随時アップデートしていきたいところ...
Author And Source
この問題について(Incoming Webhookを使ったSlack通知ライブラリを作った), 我々は、より多くの情報をここで見つけました https://qiita.com/osyou84/items/ba3ede3a99adf9ee4bad著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .