syedaunn/laravel-slack-output

当您的Laravel应用程序出现错误时,向Slack发送消息。

v1.0.8 2018-07-23 10:53 UTC

This package is not auto-updated.

Last update: 2024-10-02 21:01:44 UTC


README

使用您的Laravel应用程序向Slack发送消息。

此包提供

  • 后命令

    使用Laravel命令向Slack发送消息。

  • 统计命令

    使用此可定制的命令发送您的Laravel应用程序的统计信息。

    Stats on Slack

  • 异常处理程序

    在异常发生时输出有关异常的有用信息到Slack。

    Exception on Slack

  • 失败作业处理程序

    当作业失败时获得警告。

    Job failed on Slack

  • 计划命令报告

    关注您计划命令的结果。

    Scheduled command on Slack

需求

  • Laravel 5.1或更高版本
  • PHP 5.5.9或更高版本

安装

您可以使用Composer包管理器安装此包。您可以在项目的根目录中运行以下命令来安装它

composer require syedaunn/laravel-slack-output

您需要在Laravel应用程序中包含服务提供者和外观。

将服务提供者添加到config/app.php文件中的providers数组

'providers' => [
  ...
  SyedAunn\SlackOutput\ServiceProvider::class,
],

然后添加外观到您的aliases数组

'aliases' => [
  ...
  'SlackOutput' => SyedAunn\SlackOutput\Facade\SlackOutput::class,
],

使用以下命令发布配置文件

php artisan vendor:publish --provider="SyedAunn\SlackOutput\ServiceProvider"

为了使包能够向Slack发送消息,您需要将webhook URL添加到配置文件中。在您的Slack账户上创建一个入站webhook。复制webhook URL并打开config/slack-output.php,将webhook URL设置为endpoint

如果为任何设置设置了null,则包将回退到webhook设置的默认设置。

用法

后命令

命令slack:post将消息发布到Slack。它可以接受以下参数

  • message:要发送的消息
  • to:要发布到的频道或人员
  • attach:附件有效负载

您可以在此处找到有关attach参数的信息。

您可以通过运行以下命令来调用它

php artisan slack:post "Hello, I'm a bot" @nico

您也可以在您的Laravel应用程序中调用它

Artisan::queue('slack:post', [
  'to' => "#api-output",
  'attach' => $someAttachment,
  'message' => "Hello, I'm a bot"
]);

注意Artisan::queue,该命令将在后台执行,不会阻塞当前请求。

统计命令

命令slack:stats将有关应用程序的有用统计信息发送到Slack。

您需要通过在config/slack-output.php中设置您喜欢的Eloquent类和日期来配置此命令。

您可以为类添加约束以限制计数数据的数量。

'classes' => [
	  \App\Models\User::class => [
		  'is_active' => true //optional constraint
	  ]
],

日期数组的形式为'date name' => Carbon::instance()。例如

'dates' => [
	'yesterday' => \Carbon\Carbon::yesterday(),
	'last week' => \Carbon\Carbon::today()->subWeek(1)
]

要每天计划此命令,简单地将以下内容添加到app/Console/Kernel.php

protected function schedule(Schedule $schedule)
{
  $schedule->command('slack:stats')->daily()
}

异常处理程序

要向Slack报告有用的异常,打开app/Exceptions/Handler.php,并将其转换为以下内容

use SyedAunn\SlackOutput\Facade\SlackOutput;

...

public function report(Exception $e)
{
  if ($this->shouldReport($e)) {
    SlackOutput::exception($e);
  }

  parent::report($e);
}

这将仅报告不在同一文件中的$dontReport数组中的异常。

失败作业处理程序

要向Slack报告失败的作业,打开app/Providers/AppServiceProvider.php,并将其转换为以下内容

use SyedAunn\SlackOutput\Facade\SlackOutput;

...

public function boot()
{
  Queue::failing(function (JobFailed $job) {
    SlackOutput::jobFailed($job);
  });
}

计划命令报告

要向Slack报告计划命令的输出,打开app/Console/Kernel.php,并将其转换为以下内容

use SyedAunn\SlackOutput\Facade\SlackOutput;

...

protected function schedule(Schedule $schedule)
{
  SlackOutput::scheduledCommand(
    $schedule->command('db:backup-auto')->daily()
  );
}

贡献

如果您遇到问题,发现错误或有任何功能建议,请请在GitHub上添加问题。也欢迎提交拉取请求!

许可证

此包是开源软件,许可协议为MIT许可证