joelhinz/laravel-quick-slack

在 Laravel 项目中快速发送消息到预定义的 Slack 端点的一种简单方法。

0.5.0 2022-02-22 12:14 UTC

This package is auto-updated.

Last update: 2024-09-22 18:25:50 UTC


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 将按照以下优先级顺序确定使用哪个端点

  1. 最后 to() 调用的 webhook,如果没有发送消息。
  2. 如果设置了 remember 选项,则为最后 to() 调用的 webhook。
  3. 配置文件中的默认 webhook。

待办事项

计划的功能包括

  • 自动测试和 Travis 集成
  • 风格 CI 集成
  • 支持自定义表情符号和用户名
  • 支持按需更改频道
  • 支持在配置中保存团队
  • 支持根据 Slack 有效载荷文档进行额外样式化
  • 自定义响应和异常处理
  • 全局辅助函数 quickslack($message[, $endpoint])

许可证

标准 MIT 许可证 (MIT),可在 LICENSE 中找到。