beyondcode/slack-notification-channel

Laravel 使用 API 令牌的 Slack 通知渠道。

1.10.0 2023-11-20 08:18 UTC

This package is auto-updated.

Last update: 2024-09-09 11:10:59 UTC


README

Latest Version on Packagist GitHub Workflow Status Quality Score Total Downloads

这是 Laravel 的 Slack 通知渠道,但与使用 incoming webhooks 不同,此渠道使用 OAuth 访问令牌。它还允许回复线程消息。

https://phppackagedevelopment.com

如果您想学习如何自己创建可重用的 PHP 包,请查看我即将推出的 PHP 包开发 视频课程。

用法

通过 composer 安装包

composer require beyondcode/slack-notification-channel

服务提供程序将自动注册,您可以将此包用作 Laravel 核心Slack 通知渠道的替代品。

通知路由

由于此通知渠道使用 Slack API 令牌而不是 incoming webhook URL,因此您需要返回一个包含 API 令牌和可选的通道的数组。如果发送的 SlackMessage 中未提供该通道,将使用该通道。

public function routeNotificationForSlack()
{
    return [
        'token' => 'xoxp-slack-token',
        'channel' => '#general'
    ];
}

回复消息线程

假设您想跟踪订单,并且您的团队/机器人可以对每个订单的单一线程进行响应,此渠道允许您在通知中从 chat.postMessage 方法中检索 API 响应。使用此功能,您可以向订单支付、发货、关闭等事件发布消息到同一线程。

在您的订单创建事件中,您可以拥有

public function toSlack($notifiable)
{
    return (new SlackMessage)
        ->content('A new order has been placed');
}

public function response($response)
{
    $response = $response->getBody()->getContents();
    $this->order->data('slack.thread_ts', json_decode($response, true)['ts']);
}

在您的订单支付事件中,您可以拥有

public function toSlack($notifiable)
{
    $order = $this->order;
    return (new SlackMessage)
        ->success()
        ->content('Order paid')
        ->threadTimestamp($order->data('slack.thread_ts'))
           ->attachment(function ($attachment) use ($order) {
               $attachment->title("Order $order->reference has been paid for.")
                          ->content('Should now be processed.')
                          ->action('View Order', route('orders', $order->reference));
           });
}

自定义渠道名称

Laravel 随带了一个使用 webhooks 的 Slack 通知渠道。此包覆盖了默认的 Slack 渠道。

如果您想在同一应用程序中使用 Laravel 的默认 Slack 渠道和此渠道,您需要使用不同的渠道名称。

您可以使用以下方式设置渠道名称

SlackApiChannel::$channelName = 'alternativeSlackChannel'

确保您在通知中使用正确的方 法名。

class AlternativeSlackChannelNameNotification extends Notification
{
    public function toAlternativeSlackChannel($notifiable) {
        // ...
    }
}

更新日志

请参阅 更新日志 以获取有关最近更改的更多信息。

贡献

请参阅 贡献指南 以获取详细信息。

安全

如果您发现任何安全相关的问题,请通过电子邮件 marcel@beyondco.de 联系,而不是使用问题跟踪器。

鸣谢

许可协议

MIT 许可协议 (MIT)。请参阅 许可文件 以获取更多信息。