LaravelからSlackに通知を送る方法
これからLaravelでslackと連携して通知を送る方法を記述します。
Facadaを使用するので少しややこしいです、
1.envファイルの編集
SLACK_WEBHOOK_URL= ここにslackのwebhook_urlを載せて下さい。
↓是非、参考にして下さい
SlackのWebhook URL取得手順
https://qiita.com/vmmhypervisor/items/18c99624a84df8b31008
2 config/service.phpに追加
returnの配列の中に追加して下さい
'default' => env('MAIL_MAILER', 'slack'),
'slack' => [
'url' => env('SLACK_WEBHOOK_URL'),
],
3 Guzzle HTTPクライアントパッケージをインストールします
Slack通知にはGuzzleが必要です。
composer require guzzlehttp/guzzle
4 Notificationsクラスを作成
作成コマンド
php artisan make:notification SlackNotification
App\Notifications/SlackNotification.phpが作成されます。
まずviaメゾットを変更して下さい。
public function via($notifiable)
{
return ['mail'];
}
そしてtoSlackメゾットを追加してそこのslackに通知する処理を書き込みます。
今回は通知でメッセージを送るだけの処理になっています。
public function toSlack($notifiable)
{
return (new SlackMessage)
//ユーザー名
->from('Laravel Notification');
//メッセージ内容
->content('Laravelからこんにちわ');
}
}
5 ファサードを作成する
手動でファサードクラスを作成します。Illuminate\Support\Facades\の中に
SlackFacade.phpファイルを作成します。
下記のように記述して下さい。
<?php
namespace Illuminate\Support\Facades;
use Illuminate\Support\Facades\Facade;
class SlackFacade extends Facade
{
protected static function getFacadeAccessor()
{
return 'slack';
}
}
6 SlackFacadeにしてもらう処理クラスを作成する
今回はReffectsディレクトリーにSlack.phpを作成します(手動)
<?php
namespace App\Reffects;
use Illuminate\Notifications\Notifiable;
use App\Notifications\SlackNotification;
class Slack
{
use Notifiable;
public function send()
{
$this->notify(new SlackNotification());
}
public function routeNotificationForSlack()
{
return env('SLACK_WEBHOOK_URL');
}
}
7 AppServiceProbider.phpに登録
Facadeクラスをregisterメゾットに登録します。
$this->app->bind('slack', \App\Reffects\Slack::class);
8 ファサードをエイリアスに登録
config/app.phpの'aliases'にSlackFacadeをSlackという名前で登録します。
'Slack' => Illuminate\Support\Facades\SlackFacade::class,
9 実際に呼び出す
呼び出し方はどこでも呼び出すことができて\Slack::send()で呼び出すことができる
public function index()
{
\Slack::send();
}
以上で終わりです。
ありがとうございました。