spatie / laravel-slack-alerts
向 Slack 发送消息
Requires
- php: ^8.0
- illuminate/contracts: ^8.73|^9.0|^10.0|^11.0
- spatie/laravel-package-tools: ^1.9.2
Requires (Dev)
- nunomaduro/collision: ^5.10|^6.0|^8.0
- orchestra/testbench: ^6.22|^7.0|^8.0|^9.0
- pestphp/pest: ^1.21|^2.0
- pestphp/pest-plugin-laravel: ^1.1|^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5|^10.5
- spatie/laravel-ray: ^1.26
README
此包可快速将警报发送到 Slack。您可以使用此功能来通知自己应用中发生的任何重要事件。
use Spatie\SlackAlerts\Facades\SlackAlert; SlackAlert::message("You have a new subscriber to the {$newsletter->name} newsletter!");
在底层,使用一个作业与 Slack 通信。这可以防止 Slack 崩溃时您的应用程序失败。
想要将警报发送到 Discord 吗?请查看 laravel-discord-alerts。
支持我们
我们投入了大量资源来创建 一流的开放式源代码包。您可以通过 购买我们的付费产品之一 来支持我们。
我们非常感谢您从家乡寄给我们明信片,说明您正在使用我们的哪些包。您可以在 我们的联系页面 上找到我们的地址。我们将所有收到的明信片发布在 我们的虚拟明信片墙上。
安装
您可以通过 composer 安装此包
composer require spatie/laravel-slack-alerts
您可以设置一个包含有效 Slack webhook URL 的 SLACK_ALERT_WEBHOOK
环境变量。您可以在 Slack API 文档中了解如何获取 webhook URL (此处链接)。
或者,您可以使用以下命令发布配置文件:
php artisan vendor:publish --tag="slack-alerts-config"
这是发布配置文件的内容
return [ /* * The webhook URLs that we'll use to send a message to Slack. */ 'webhook_urls' => [ 'default' => env('SLACK_ALERT_WEBHOOK'), ], /* * This job will send the message to Slack. You can extend this * job to set timeouts, retries, etc... */ 'job' => Spatie\SlackAlerts\Jobs\SendToSlackChannelJob::class, 'queue' => env('SLACK_ALERT_QUEUE', 'default'), ];
用法
要向 Slack 发送消息,只需调用 SlackAlert::message()
并传递您想要的消息。
SlackAlert::message("You have a new subscriber to the {$newsletter->name} newsletter!");
发送块
Slack 支持使用他们的 Block Kit API 发送丰富格式化,您可以使用 blocks()
方法发送一系列块。
SlackAlert::blocks([ [ "type" => "section", "text" => [ "type" => "mrkdwn", "text" => "You have a new subscriber to the {$newsletter->name} newsletter!" ] ] ]);
使用多个 webhook
您还可以使用备用 webhook,通过在配置文件中指定额外的 webhook 来实现。
// in config/slack-alerts.php 'webhook_urls' => [ 'default' => 'https://hooks.slack.com/services/XXXXXX', 'marketing' => 'https://hooks.slack.com/services/YYYYYY', ],
可以使用 to
函数选择要使用的 webhook。
use Spatie\SlackAlerts\Facades\SlackAlert; SlackAlert::to('marketing')->message("You have a new subscriber to the {$newsletter->name} newsletter!");
使用自定义 webhook
to
函数也支持自定义 webhook URL。
use Spatie\SlackAlerts\Facades\SlackAlert; SlackAlert::to('https://custom-url.com')->message("You have a new subscriber to the {$newsletter->name} newsletter!");
向备用频道发送消息
您可以通过将其传递给 toChannel
函数,向除 webhook 默认频道以外的频道发送消息。
use Spatie\SlackAlerts\Facades\SlackAlert; SlackAlert::toChannel('subscription_alerts')->message("You have a new subscriber to the {$newsletter->name} newsletter!");
排队
默认情况下,消息通过将作业调度到 default
队列来发送。
配置队列
在 .env
文件中,添加
SLACK_ALERT_QUEUE=queue_name
在运行时更改队列
您可以通过将其传递给 onQueue
函数,将作业排队到除配置中定义的队列以外的队列。
use Spatie\SlackAlerts\Facades\SlackAlert; SlackAlert::onQueue('some-queue')->message("Some message.");
格式化
Markdown
您可以使用 Slack 的标记来格式化消息。在 Slack API 文档中了解如何 (此处链接)。
use Spatie\SlackAlerts\Facades\SlackAlert; SlackAlert::message("A message *with some bold statements* and _some italicized text_.");
在 Slack 中,链接的格式与经典 Markdown 结构不同。
SlackAlert::message("<https://spatie.be|This is a link to our homepage>");
表情符号
您可以使用与 Slack 中相同的表情符号代码。这意味着也支持自定义表情符号。
use Spatie\SlackAlerts\Facades\SlackAlert; SlackAlert::message(":smile: :custom-code:");
提及
您可以使用提及来通知用户和组。在 Slack API 文档中了解如何 (此处链接)。
use Spatie\SlackAlerts\Facades\SlackAlert; SlackAlert::message("A message that notifies <@username> and everyone else who is <!here>")
图标更改
您可以更改出现在消息顶部显示名称旁边的图标。
use Spatie\SlackAlerts\Facades\SlackAlert; SlackAlert::withIconURL('https://example.com/tiny-icon.jpg')->message("Some message.");
显示名称更改
您可以更改显示在消息顶部显示名称旁边的显示名称。
use Spatie\SlackAlerts\Facades\SlackAlert; SlackAlert::withUsername('More Descriptive Name')->message("Some message.");
测试中的使用
在您的测试中,您可以使用 SlackAlert
门面来断言您的代码是否向 Slack 发送了警报。
// in a test use Spatie\SlackAlerts\Facades\SlackAlert; it('will send an alert to Slack', function() { SlackAlert::shouldReceive('message')->once(); // execute code here that does send a message to Slack });
当然,您也可以断言没有向 Slack 发送消息。
// in a test use Spatie\SlackAlerts\Facades\SlackAlert; it('will not send an alert to Slack', function() { SlackAlert::shouldReceive('message')->never(); // execute code here that doesn't send a message to Slack });
测试
composer test
更新日志
有关最近更改的更多信息,请参阅 更新日志。
贡献
有关详细信息,请参阅 贡献指南。
安全漏洞
请查看我们关于如何报告安全漏洞的 安全策略。
鸣谢
许可协议
MIT 许可协议 (MIT)。有关更多信息,请参阅 许可文件。
替代方案
如果您想使用 Block Kit 做更复杂的事情,我们建议使用 slack-php/slack-php-block-kit。