gpressutto5/laravel-slack

此包已被弃用,不再维护。没有推荐替代包。

符合预期的Laravel Slack通知。

2.4.0 2023-12-27 02:19 UTC

This package is auto-updated.

Last update: 2024-01-27 21:36:25 UTC


README

68747470733a2f2f7365656b6c6f676f2e636f6d2f696d616765732f532f736c61636b2d6c6f676f2d444534343435303737432d7365656b6c6f676f2e636f6d2e706e6768747470733a2f2f6c61726176656c2e636f6d2f6173736574732f696d672f636f6d706f6e656e74732f6c6f676f2d6c61726176656c2e737667

Build Status codecov Latest Stable Version PHP from Packagist Laravel Version Total Downloads License
基于 illuminate/mail

关于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查看详情