joelhinz / laravel-quick-slack
在 Laravel 项目中快速发送消息到预定义的 Slack 端点的一种简单方法。
Requires
- guzzlehttp/guzzle: ^7.0
- laravel/framework: ^9.1
README
一个简单的包,可以快速通过 Laravel 向 Slack 频道发送消息。已在 Laravel 5.4 至 8.0 版本上测试。
安装
使用 Composer 安装此包
composer require "joelhinz/laravel-quick-slack=0.*"
此包支持自动发现,如果你使用 Laravel 5.5,则无需设置。
对于 Laravel 5.4 或你不希望使用自动发现,请将提供者和可选的别名添加到你的 config/app.php
文件中
'providers' => [ // ... JoelHinz\LaravelQuickSlack\ServiceProvider::class, ], 'aliases' => [ // ... 'QuickSlack' => JoelHinz\LaravelQuickSlack\Facade::class, ],
基本用法
在发送消息之前,你只需要去 Slack 创建一个 入站 webhook,然后复制 webhook URL。
use QuickSlack; QuickSlack::to($webhook)->send('My hovercraft is full of eels.');
可以通过将布尔值作为 to()
方法的第二个参数传递,将 webhook URL 记忆下来以供同一脚本执行期间后续调用使用。
# Remember webhook for next call QuickSlack::to($webhook, true)->send('My nipples explode with delight!'); # No need for the to() method this time QuickSlack::send('I cannot wait till lunchtime.'); # Set a new webhook - the new webhook will now be remembered instead QuickSlack::to($webhook)->send('Drop your panties, Sir William!'); # Set a new webhook but stop remembering QuickSlack::to($webhook, false)->send('Bouncy-bouncy'); # Stop remembering without sending a message QuickSlack::forgetRecipient();
由于 QuickSlack 是流畅的,如果你想继续发送更多消息,可以继续链式调用。请注意,这需要一个记忆中的 webhook URL 或默认 webhook(请参阅下面的配置选项)。
QuickSlack::send('first message')->send('second message')->send('third message');
如果你不喜欢长 webhook URL,不用担心,你可以直接跳过它们的第一部分。而不是 https://hooks.slack.com/services/[rest of url]
,只需输入 services/
之后的部分即可。QuickSlack 会自动处理剩余部分。
配置
QuickSlack 可以不进行任何配置即可使用,但你可以导出配置以获取默认 webhook 和命名 webhook 等功能。
php artisan vendor:publish --provider="JoelHinz\LaravelQuickSlack\ServiceProvider"
这将创建一个 config/quick-slack.php
文件,其中你可以按如下方式设置配置选项
<?php return [ /** * Set names for your webhooks. */ 'webhooks' => [ 'my-webhook' => 'some-webhook-url', ], /** * Set a default webhook to use if no other url is given explicitly. * This can be either a webhook url, or the name of a named webhook above. */ 'default' => '', ];
同样,你可以输入完整的 URL 或仅输入它们的 webhook 特定部分。
通过使用命名 webhook,你不必在发送消息时记住它们的完整地址。
QuickSlack::to('my-webhook')->send('I will not buy this record, it is scratched.');
如果你只向一个端点发送消息或主要发送到该端点,你可以将其作为默认值,并省略 to()
方法。默认值可以使用 to()
方法重写,并且可以像上面一样记住重写的 URL。
Webhook 名称是递归的,因此你可以为同一端点使用不同的名称。
'webhooks' => [ 'email bounces' => 'https://hooks.slack.com/services/...', 'email complaints' => 'email bounces', ]
它们也是可嵌套的,如果你更喜欢这种方式来组织事物。
'webhooks' => [
'email' => [
'bounces' => 'https://hooks.slack.com/services/...',
'complaints' => 'email.bounces',
]
]
Webhook 优先级
发送消息时,QuickSlack 将按照以下优先级顺序确定使用哪个端点
- 最后
to()
调用的 webhook,如果没有发送消息。 - 如果设置了 remember 选项,则为最后
to()
调用的 webhook。 - 配置文件中的默认 webhook。
待办事项
计划的功能包括
- 自动测试和 Travis 集成
- 风格 CI 集成
- 支持自定义表情符号和用户名
- 支持按需更改频道
- 支持在配置中保存团队
- 支持根据 Slack 有效载荷文档进行额外样式化
- 自定义响应和异常处理
- 全局辅助函数
quickslack($message[, $endpoint])
许可证
标准 MIT 许可证 (MIT),可在 LICENSE 中找到。