beyondcode / slack-notification-channel
Laravel 使用 API 令牌的 Slack 通知渠道。
Requires
- php: ^7.3.0|^8.0|^8.1
- guzzlehttp/guzzle: ^6.0|^7.0
- illuminate/notifications: ^6.0|^7.0|^8.0|^9.0|^10.0
Requires (Dev)
- mockery/mockery: ^1.3
- phpunit/phpunit: ^8.0|^9.0|^10.0
README
这是 Laravel 的 Slack 通知渠道,但与使用 incoming webhooks 不同,此渠道使用 OAuth 访问令牌。它还允许回复线程消息。
如果您想学习如何自己创建可重用的 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)。请参阅 许可文件 以获取更多信息。