0
0

LaravelでSlackに通知を送る方法

Posted at

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();
}

以上で終わりです。
ありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0