Laravelの新しいバージョン(5.4か5.3)から、NotificationでSlackのメッセージを飛ばせるようになりました。
下記の記事にその方法をまとめました。
LaravelからSlackのメッセージを飛ばしてみました。
こちらの記事が非常によくまとまっていたのですが、試したところうまく動きませんでした。
どうやら利用しているライブラリがメンテナンスされなくなったようです。
Laravel5.4以降では動かないようで、新しいライブラリを使ったところうまくいきました。
遭遇したエラー
参考サイトではmaknz/slack
というライブラリを使っていました。
こちらをインストールして使おうとするとphp artisan
が通らなくなります。
下記のようなエラーです。
$ php artisan
[2017-08-09 11:04:11] local.ERROR: Symfony\Component\Debug\Exception\FatalThrowableError: Call to undefined method Illuminate\Foundation\Application::share() in /Users/yousan/git/l2psm/laravel/vendor/maknz/slack/src/SlackServiceProviderLaravel5.php:27
Stack trace:
#0 /Users/yousan/git/l2psm/laravel/vendor/maknz/slack/src/SlackServiceProvider.php(53): Maknz\Slack\SlackServiceProviderLaravel5->register()
#1 /Users/yousan/git/l2psm/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(574): Maknz\Slack\SlackServiceProvider->register()
#2 /Users/yousan/git/l2psm/laravel/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php(75): Illuminate\Foundation\Application->register(Object(Maknz\Slack\SlackServiceProvider))
#3 /Users/yousan/git/l2psm/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(549): Illuminate\Foundation\ProviderRepository->load(Array)
#4 /Users/yousan/git/l2psm/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/RegisterProviders.php(17): Illuminate\Foundation\Application->registerConfiguredProviders()
#5 /Users/yousan/git/l2psm/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(208): Illuminate\Foundation\Bootstrap\RegisterProviders->bootstrap(Object(Illuminate\Foundation\Application))
#6 /Users/yousan/git/l2psm/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(267): Illuminate\Foundation\Application->bootstrapWith(Array)
#7 /Users/yousan/git/l2psm/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(114): Illuminate\Foundation\Console\Kernel->bootstrap()
#8 /Users/yousan/git/l2psm/laravel/artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#9 {main}
調べたところ下記のように、Laravel 5.4以降は対応していない、とのことでした。
https://github.com/TeraDox/Notify-Laravel/issues/9
Notify-Laravel`を使うと良いよ、という記述もありましたが、こちらは少し毛色が違うようです。
(SlackかメールのNotificationを飛ばす)
フォークされたリストを見るとrazorpay/slack
が多く使われているようでした。
こちらを使います。
新しいパッケージ
手元で試したのはLaravelの5.4.30です。
$ php artisan --version
Laravel Framework 5.4.30
基本的な使い方はmaknzのものと変わりません。
composerでインストールして使います。
$ composer require razorpay/slack
僕はテスト用にUnitテストの中で行いました。
/tests/Unit/ExampleTest.php
public function testBasicTest()
{
// $this->assertTrue(true);
$endpoint = 'https://hooks.slack.com/services/.......';
$settings = [
'username' => 'Cyril',
'channel' => '#bot',
'link_names' => true
];
$client = new \Razorpay\Slack\Client($endpoint, $settings);
$client->send('Hello world!');
$client->to('#random_l2tp')->send('Are we rich yet?');
$client->from('Jake the Dog')->to('#bot')->send('Adventure time!');
}
$ phpunit
PHPUnit 5.2.10 by Sebastian Bergmann and contributors.
.. 2 / 2 (100%)
Time: 2.47 seconds, Memory: 16.00Mb
OK (2 tests, 1 assertion)