GithubHelp home page GithubHelp logo

kornalaravel / laravel-slack-alerts Goto Github PK

View Code? Open in Web Editor NEW

This project forked from spatie/laravel-slack-alerts

0.0 0.0 0.0 125 KB

Quickly send a message to Slack

Home Page: https://freek.dev/2172-a-package-to-quickly-send-slack-alerts-in-a-laravel-app

License: MIT License

PHP 100.00%

laravel-slack-alerts's Introduction

Quickly send a message to Slack

Latest Version on Packagist run-tests Check & fix styling Total Downloads

This package can quickly send alerts to Slack. You can use this to notify yourself of any noteworthy events happening in your app.

use Spatie\SlackAlerts\Facades\SlackAlert;

SlackAlert::message("You have a new subscriber to the {$newsletter->name} newsletter!");

Under the hood, a job is used to communicate with Slack. This prevents your app from failing in case Slack is down.

Want to send alerts to Discord instead? Check out laravel-discord-alerts.

Support us

We invest a lot of resources into creating best in class open source packages. You can support us by buying one of our paid products.

We highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. You'll find our address on our contact page. We publish all received postcards on our virtual postcard wall.

Installation

You can install the package via composer:

composer require spatie/laravel-slack-alerts

You can set a SLACK_ALERT_WEBHOOK env variable containing a valid Slack webhook URL. You can learn how to get a webhook URL in the Slack API docs.

Alternatively, you can publish the config file with:

php artisan vendor:publish --tag="slack-alerts-config"

This is the contents of the published config file:

return [
    /*
     * The webhook URLs that we'll use to send a message to Slack.
     */
    'webhook_urls' => [
        'default' => env('SLACK_ALERT_WEBHOOK'),
    ],

    /*
     * This job will send the message to Slack. You can extend this
     * job to set timeouts, retries, etc...
     */
    'job' => Spatie\SlackAlerts\Jobs\SendToSlackChannelJob::class,
];

Usage

To send a message to Slack, simply call SlackAlert::message() and pass it any message you want.

SlackAlert::message("You have a new subscriber to the {$newsletter->name} newsletter!");

Sending blocks

Slack supports sending rich formatting using their Block Kit API, you can send a set of blocks using the blocks() method:

SlackAlert::blocks([
    [
        "type" => "section",
        "text" => [
        "type" => "mrkdwn",
            "text" => "You have a new subscriber to the {$newsletter->name} newsletter!"
        ]
    ]
]);

Using multiple webhooks

You can also use an alternative webhook, by specify extra ones in the config file.

// in config/slack-alerts.php

'webhook_urls' => [
    'default' => 'https://hooks.slack.com/services/XXXXXX',
    'marketing' => 'https://hooks.slack.com/services/YYYYYY',
],

The webhook to be used can be chosen using the to function.

use Spatie\SlackAlerts\Facades\SlackAlert;

SlackAlert::to('marketing')->message("You have a new subscriber to the {$newsletter->name} newsletter!");

Using a custom webhooks

The to function also supports custom webhook urls.

use Spatie\SlackAlerts\Facades\SlackAlert;

SlackAlert::to('https://custom-url.com')->message("You have a new subscriber to the {$newsletter->name} newsletter!");

Sending message to an alternative channel

You can send a message to a channel other than the default one for the webhook, by passing it to the toChannel function.

use Spatie\SlackAlerts\Facades\SlackAlert;

SlackAlert::toChannel('subscription_alerts')->message("You have a new subscriber to the {$newsletter->name} newsletter!");

Queuing

By default, messages are sent by dispatching the job to the default queue.

Configuring the queue

In .env file, add

SLACK_ALERT_QUEUE=queue_name

Changing the queue at runtime

You can queue the job to a different queue than the one defined in config by passing it to the onQueue function.

use Spatie\SlackAlerts\Facades\SlackAlert;

SlackAlert::onQueue('some-queue')->message("Some message.");

Formatting

Markdown

You can format your messages with Slack's markup. Learn how in the Slack API docs.

use Spatie\SlackAlerts\Facades\SlackAlert;

SlackAlert::message("A message *with some bold statements* and _some italicized text_.");

Links are formatted differently in Slack than the classic markdown structure.

SlackAlert::message("<https://spatie.be|This is a link to our homepage>");

Emoji's

You can use the same emoji codes as in Slack. This means custom emoji's are also supported.

use Spatie\SlackAlerts\Facades\SlackAlert;

SlackAlert::message(":smile: :custom-code:");

Mentioning

You can use mentions to notify users and groups. Learn how in the Slack API docs.

use Spatie\SlackAlerts\Facades\SlackAlert;

SlackAlert::message("A message that notifies <@username> and everyone else who is <!here>")

Usage in tests

In your tests, you can make use of the SlackAlert facade to assert whether your code sent an alert to Slack.

// in a test

use Spatie\SlackAlerts\Facades\SlackAlert;

it('will send an alert to Slack', function() {

    SlackAlert::shouldReceive('message')->once();
    
    // execute code here that does send a message to Slack
});

Of course, you can also assert that a message wasn't sent to Slack.

// in a test

use Spatie\SlackAlerts\Facades\SlackAlert;

it('will not send an alert to Slack', function() {
    SlackAlert::shouldReceive('message')->never();
    
    // execute code here that doesn't send a message to Slack
});

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.

Alternatives

If you want to do more complex stuff with Block Kit, we suggest using slack-php/slack-php-block-kit

laravel-slack-alerts's People

Contributors

freekmurze avatar nielsvanpach avatar dependabot[bot] avatar github-actions[bot] avatar mcpuishor avatar adrianmrn avatar riasvdv avatar ajenbo avatar levu42 avatar miclf avatar paulber33 avatar bogdan-lopatkin avatar tominon avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.