gpressutto5 / laravel-slack
符合预期的Laravel Slack通知。
Requires
- php: >=7.1.3
- guzzlehttp/guzzle: >=6.3
- illuminate/notifications: >=5.8
- illuminate/support: >=5.8
- laravel/slack-notification-channel: >=2.0
Requires (Dev)
- orchestra/testbench: *
- phpunit/phpunit: >=7.0
README
关于Laravel Slack
Laravel Slack通知,简单、快速、简单且易于测试。因为它使用按需通知,所以需要Laravel 5.5或更高版本。
此库已归档且不再维护。它按预期工作,但我没有时间再维护它了。作为最后一次更新,我已经从
composer.json
文件中移除了版本约束,因此您可以与任何未来的Laravel版本一起使用它。请随意将其分支出来并按需使用。
安装
在您的composer.json中需要此包并更新依赖项
composer require gpressutto5/laravel-slack
由于此包支持Laravel的包自动发现,因此您无需手动注册ServiceProvider。
之后,发布配置文件
php artisan vendor:publish --provider="Pressutto\LaravelSlack\ServiceProvider"
您需要为您的Slack团队配置一个"Incoming Webhook"集成。
配置
在发布的配置文件config/laravel-slack.php
中,您可以更改选项,如Webhook URL、默认频道、应用程序名称和应用程序图片。
出于安全原因,您不应该提交您的Webhook URL,因此此包默认将使用环境变量SLACK_WEBHOOK_URL
。您只需将其添加到您的.env
文件中。如下所示
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX
使用方法
您可以通过以下方式发送简单的Slack消息
- 向频道发送消息
\Slack::to('#finance')->send('Hey, finance channel! A new order was created just now!');
- 向用户发送消息
\Slack::to('@joe')->send("Hey Joe! It looks like you've forgotten your password! Use this token to recover it: as34bhdfh");
- 向多个用户发送消息
\Slack::to(['@zoe', '@amy', '@mia'])->send('I swear, honey, you are the only one... :heart:'); // ↑ look at this array ↑
- 混合使用
\Slack::to('#universe', '@god', '#scientists')->send(':thinking_face:'); // ↑ what? I don't need that array? ↑
- 没有接收者
\Slack::send('Default message to the default channel, set on config/laravel-slack.php.');
- 发送SlackMessage对象
class HelloMessage extends SlackMessage { public $content = "Hey bob, I'm a sending a custom SlackMessage"; public $channel = '@bob'; } \Slack::send(new SlackMessage());
-
向用户发送
只要对象具有
slack_channel
属性,您就可以将其用作接收者。如果您正在使用模型,只需创建一个slack_channel
列并存储@username
或#channel
名称即可。如果您已经存储但列不同,则可以创建一个方法getSlackChannelAttribute
。
class User extends Model { public function getSlackChannelAttribute(): string { return $this->attributes['my_custom_slack_channel_column']; } } \Slack::to(User::where('verified', true))->send('Sending message to all verified users!');
- 通过指定webhook发送消息
\Slack::to('#finance')->webhook('https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX')->send('Hey, finance channel! A new order was created just now!');
测试
在测试时,您可以轻松地通过调用Slack::fake()
来模拟Slack服务,它将返回一个不会发送任何实际消息并保存它们到数组的SlackFake
对象。您可以通过调用Slack::sentMessages()
来获取此数组。
此类还有一些帮助方法,您可以在测试时使用
- 断言至少发送了一个包含“fake”内容的消息
Slack::assertSent(function (SlackMessage $message) { return $message->content === 'fake'; });
- 断言至少发送了两个内容长度超过5个字符的消息
Slack::assertSent(function (SlackMessage $message) { return strlen($message->content) >= 100; }, 2);
- 断言恰好发送了五个包含“test”单词的消息
Slack::assertSent(function (SlackMessage $message) { return strpos($message->content, 'test') !== false; }, 5, true);
- 断言恰好发送了三个消息
Slack::assertSentCount(3);
由于此包使用 illuminate/notifications
发送通知,您可以在测试中模拟通知服务而不是Slack服务,并使用类 NotificationFake
。 查看详情。