johnturingan / laravel-slack
分支仓库
Requires
- php: >=7.1.0
- guzzlehttp/guzzle: ^6.5
- illuminate/notifications: ^7.0
- illuminate/support: ^7.0
Requires (Dev)
- orchestra/testbench: ~3.5
- phpunit/phpunit: ^6.5
This package is not auto-updated.
Last update: 2024-09-15 05:39:30 UTC
README
关于 Laravel Slack
Laravel Slack 的 Slack 通知,易于使用、快速、简单且 高度可测试。由于它使用按需通知,因此需要 Laravel 5.5 或更高版本。
安装
在您的 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!');
-
还有更多...
此包正在开发和开发中。将会有许多功能出现。请保持关注,并请帮助我们!
测试
在测试时,您可以通过调用 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
类。请参阅 这里。