Google Chat - Laravel Notification Channel

Overview

Latest Version on Packagist Software License GitHub Tests Action Status GitHub Code Style Action Total Downloads PHP Version Requirements Laravel Version Requirements

Google Chat - Laravel Notification Channel

This package makes it easy to send notifications using Google Chat , (formerly known as Hangouts Chat) with Laravel 8.x

class InvoicePaidNotification extends Notification
{
    // Create a super simple message
    public function toGoogleChat($notifiable)
    {
        return GoogleChatMessage::create('An invoice was paid!');
    }

    // ...Or you can use some simple formatting
    public function toGoogleChat($notifiable)
    {
        return GoogleChatMessage::create()
            ->text('Someone just paid an invoice... ')
            ->bold('Woo-hoo!')
            ->line('Looking for ')
            ->link(route('invoices'), 'the details?')
            ->to('sales_team'); // ... and route it to specific rooms
    }

    // ...You can even make a fancy card!
    public function toGoogleChat($notifiable)
    {
        return GoogleChatMessage::create()
            ->text('Invoice Paid! Here\'s the details:')
            ->card(
                Card::create(
                    Section::create(
                        KeyValue::create('Amount', '$520.99', '#10004756')
                            ->onClick(route('invoices'))
                            ->button(TextButton::create(route('invoices'), 'View'))
                    )
                )
            )
    }
}

Contents

Installation

The Google Chat notification channel can be installed easily via Composer:

$ composer require laravel-notification-channels/google-chat

Generating a Webhook

This package makes use of Google Chat's convenient 'Webhooks' feature, which allows for quick and easy setup.

You can learn how to create a room, and generate a new Webhook on Google's documentation.

Throughout Google's own documentation, the term 'space' is used to reference conversations generally across Google Chat, whether that be a one-on-one chat between co-workers, or a 'room' with conversations between multiple people.

Although this package only has the ability to send messages into 'rooms', we still refer to a room as a 'space' for consistency between this package's documentation, and Google's.

Configuring & Using Webhooks in Your Application

Firstly, let's publish the configuration file used by the Google Chat notification channel into your application, so that we can start configuring our webhooks:

$ php artisan vendor:publish --tag google-chat-config

Default Room

If we only have a single room / webhook we want to post into, we can simply configure the space key which defines the default conversation notifications sent via the Google Chat channel will be posted to.

// config/google-chat.php

return [
    'space' => 'https://chat.googleapis.com/room-webhook-for-all-notifications?key=xxxxx'
]

Notifications that have not otherwise been directed to another room will now be sent to this default space.

CAUTION! If your application sends sensitive notifications via Google Chat, we recommend you configure the space key to NULL, so that notifications must be explicitly directed to an endpoint.

Alternate Rooms (Preferred)

You can also define alternate webhooks under the spaces (plural) key, and reference these more easily throughout your application:

// config/google-chat.php

return [
    'spaces' => [
        'sales_team' => 'https://chat.googleapis.com/sales-team-room?key=xxxxx',
        'dev_team' => 'https://chat.googleapis.com/dev-team-room?key=xxxxx',
        'executive' => 'https://chat.googleapis.com/executives?key=xxxxx',
    ]
]

You can now direct notifications to one of these configured rooms by using the relevant key anywhere you can route notifications, like:

Notification::route('googleChat', 'sales_team')->...

// Or

GoogleChatMessage::create()->to('dev_team')->...

// Or, even in your notifiable class:
public function routeNotificationForGoogleChat()
{
    return 'executive';
}

Explicit Webhook Routing

If needed, you can route notifications to explicit webhooks in all the same places listed above. This isn't the preferred method, however, as it gives you less flexibility should you ever need to change a webhook.

Notification::route('googleChat', 'https://chat.googleapis.com/xxxxx')->...

// Or

GoogleChatMessage::create()->to('https://chat.googleapis.com/xxxxx')->...

// Or, even in your notifiable class:
public function routeNotificationForGoogleChat()
{
    return 'https://chat.googleapis.com/xxxxx';
}

Usage

In order to send a notification via the Google Chat channel, you'll need to specify the channel in the via() method of your notification:

use NotificationChannels\GoogleChat\GoogleChatChannel;

// ...

public function via($notifiable)
{
    return [
        GoogleChatChannel::class
    ]
}

If you haven't already, make sure you understand how notification classes are constructed.

Google Chat messages have two formats: Simple Messages, and Card Messages. This package allows you to construct both.

Simple Messages

Simple messages can be created easily using a NotificationChannels\GoogleChat\GoogleChatMessage instance directly, and returned in your notification class like so:

use NotificationChannels\GoogleChat\GoogleChatMessage;

public function toGoogleChat($notifiable)
{
    return GoogleChatMessage::create('Hello world!');
}

Simple messages can also contain basic formatting:

use NotificationChannels\GoogleChat\GoogleChatMessage;

public function toGoogleChat($notifiable)
{
    return GoogleChatMessage::create()
        ->bold('Heads Up!')
        ->line('An error was encountered whilst communicating with an external service:')
        ->monospaceBlock($this->errorMessage)
        ->italic('Want to know more? ')
        ->link('https://status.example.com/logs', 'Check Out the Logs.');
}

Card Messages

Google Chat cards are more complex pieces of UI that can display organized information to the recipient. Cards are added to a GoogleChatMessage instance, and can be used in combination with a simple message.

The structure of cards in this package closely resembles the actual data format sent to the webhook endpoint. For this reason, it's worth checking out how cards are structured.

use NotificationChannels\GoogleChat\GoogleChatMessage;
use NotificationChannels\GoogleChat\Card;
use NotificationChannels\GoogleChat\Section;
use NotificationChannels\GoogleChat\Widgets\KeyValue;
use NotificationChannels\GoogleChat\Enums\Icon;
use NotificationChannels\GoogleChat\Enums\ImageStyle;

public function toGoogleChat($notifiable)
{
    return GoogleChatMessage::create()
        ->text('An invoice was just paid... ')
        ->bold('Woo-hoo!')
        ->card(
            Card::create()
                ->header(
                    'Invoice Paid',
                    '#1004756',
                    'https://cdn.example.com/avatars/xxx.png',
                    ImageStyle::CIRCULAR
                )
                ->section(
                    Section::create(
                        KeyValue::create(
                            'Payment Received',
                            '$20.14',
                            'Paid by Josephine Smith'
                        )
                        ->icon(Icon::DOLLAR)
                        ->onClick(route('invoice.show'))
                    )
                )
        )
}

Visual learner? Us too. Here's a visual overview of the card structure:

cards
|
|---card
|   |
|   |---header (complex)
|   |   ...
|   |
|   |---sections
|   |   |
|   |   |---section
|   |   |   |
|   |   |   |---header (simple)
|   |   |   |   ...
|   |   |   |
|   |   |   |---widgets
|   |   |   |   |
|   |   |   |   |---widget
|   |   |   |   |   ...
|   |   |   |   |
|   |   |   |   |---widget
|   |   |   |   |   ...
|   |   |
|   |   |---section
|   |   |   ...
|
|---card
|   ...

API Overview

Google Chat Message

Namespace: NotificationChannels\GoogleChat\GoogleChatMessage

The GoogleChatMessage class encompasses an entire message that will be sent to the Google Chat room.

  • static create(?string $text) Instantiates and returns a new GoogleChatMessage instance, optionally pre-configuring it with the provided simple text
  • to(string $space) Specifies the webhook or space key this notification will be sent to. This takes precedence over the default space and any value returned by a notifiable's routeNotificationForGoogleChat() method
  • text(string $message) Appends $message to the simple message content
  • line(string $message) Appends $message on a new line
  • bold(string $message) Appends bold text
  • italic(string $message) Appends italic text
  • strikethrough(string $message) Appends strikethorugh text
  • strike(string $message) Alias for strikethrough()
  • monospace(string $message) Appends monospace text
  • mono(string $message) Alias for monospace()
  • monospaceBlock(string $message) Appends a block of monospace text
  • link(string $link, ?string $displayText) Appends a text link, optionally with custom display text
  • mention(string $userId) Appends a mention text targeting a specific user id
  • mentionAll(?string $prependText, ?string $appendText) Appends a mention-all text, optionally with text before and after the block
  • card(Card|Card[] $card) Add one or more complex card UIs to the message

Card Layout

The layout is split into two concepts: The card, and the section. The card can be thought of as the container, whilst the sections can be thought of as rows within the card itself. The card can have a complex, overarching header, whilst each section can contain a simple text based header.

You can add multiple sections to a card, in order to group related pieces of information.

Card

Namespace: NotificationChannels\GoogleChat\Card

The Card class represents the top level layout definition for a Card UI to be sent in a message. Cards define one or more sections, and may optionally define header information

  • static create(Section|Section[]|null $section) Instantiates and returns a new Card instance, optionally pre-configuring it with the provided section or sections
  • header(string $title, ?string $subtitle, ?string $imageUrl, ?string $imageStyle) Optional - Configures the header UI for the card. Note that $imageStyle is one of the constants defined in NotificationChannels\GoogleChat\Enums\ImageStyle
  • section(Section|Section[] $section) Add one or more sections to the card

Section

Namespace: NotificationChannels\GoogleChat\Section

The Section class defines the intermediary layout definition of a card. From a UI perspective, it groups related widgets.

  • static create(AbstractWidget|AbstractWidget[]|null $widgets) Instantiates and returns a new Section instance, optionally pre-configuring it with the provided widget or widgets
  • header(string $text) Optionally defines the simple header displayed at the top of the section
  • widget(AbstractWidget|AbstractWidgets[] $widget) Adds one or more widgets to the section

Widgets

Widgets are the meaningful pieces of UI displayed throughout a single card. There are different types of widgets, in order to display information more appropriately to the user.

Widgets are added to a section, and a section can contain multiple widgets of various types.

Text Paragraph

Namespace: NotificationChannels\GoogleChat\Widgets\TextParagraph

The TextParagraph widget defines rich text. This widget can define more complex text formats than permissible in a simple message.

  • static create(?string $message) Instantiates and returns a new TextParagraph instance, optionally pre-configuring it with the provided text
  • text(string $message) Appends the $message to the widget content
  • bold(string $message) Appends bold text
  • italic(string $message) Appends italic text
  • underline(string $message) Appends underline text
  • strikethrough(string $message) Appends strikethrough text
  • strike(string $message) Alias for strikethrough()
  • color(string $message, string $hex) Appends colored text according to the $hex color
  • link(string $link, ?string $displayText) Appends a textual link, optionally with the provided display text
  • break() Appends a line break

Key Value

Namespace: NotificationChannels\GoogleChat\Widgets\KeyValue

The KeyValue widget defines a table like element that can segment information and provide an external click through

  • static create(?string $topLabel, ?string $content, ?string $bottomLabel) Instantiates and returns a new KeyValue instance, optionally pre-configuring it with a top label, content and bottom label.
  • topLabel(string $message) Defines the top label text
  • content(string $content) Defines the primary text content of the widget
  • bottomLabel(string $message) Defines the bottom label text
  • setContentMultiline(bool $value) Determines whether the primary content should flow onto multiple lines. Google defaults this value to false
  • onClick(string $url) Defines a click through URL which can be activated by clicking the widget itself. Note that this is a different definition from the button, which may optionally be added to the widget too.
  • icon(string $icon) Defines the glyph icon displayed with the text content; One of the constants defined in NotificationChannels\GoogleChat\Enums\Icon
  • button(AbstractButton $button) Optionally defines a button displayed alongside the text content

Image

Namespace: NotificationChannels\GoogleChat\Widgets\Image

The Image widget defines a simple image to be displayed in the card. Optionally, a click through URL can be configured for when a user clicks/taps on the image.

  • static create(?string $imageUrl, ?string $onClickUrl) Instantiates and returns a new Image instance, optionally pre-configuring it with an image URL and click through URL.
  • imageUrl(string $url) Defines the image URL where the image can be sourced
  • onClick(string $url) Defines a URL the user will be taken to if they click/tap on the image

Buttons

Namespace: NotificationChannels\GoogleChat\Widgets\Buttons

The Buttons widget acts as a container for one or more buttons, laid out horizontally. This widget accepts instances of NotificationChannels\GoogleChat\Components\Button\AbstractButton and can accept buttons of different types.

  • static create(AbstractButton|AbstractButton[]|null $buttons) Instantiates and returns a new Buttons instance, optionally pre-configuring it with the provided buttons
  • button(AbstractButton|AbstractButton[] $button) Adds one or more buttons

Components

Components are structures that are nestled within widgets. For simplicity, the Google Chat notification channel only supports button components.

Both the Text Button and Image Button can be nested within the Buttons widget, as well as in the button properties of the KeyValue and ImageWidget.

Text Button

Namespace: NotificationChannels\GoogleChat\Components\Button\TextButton

The TextButton defines a simple text button, and can be accepted anywhere that an AbstractButton is accepted.

  • static create(?string $url, ?string $displayText) Instantiates and returns a new TextButton instance, optionally pre-configuring it with the provided URL and display text
  • url(string $url) Defines the target endpoint for the button
  • text(string $text) Defines the display text for the button

Image Button

Namespace: NotificationChannels\GoogleChat\Components\Button\ImageButton

The ImageButton defines a clickable icon or image, and can be accepted anywhere that an AbstractButton is accepted. The icon can either be a default icon (one of the constants defined in NotificationChannels\GoogleChat\Enums\Icon) or an external image url.

  • static create(?string $url, ?string $icon) Instantiates and returns a new ImageButton instance, optionally pre-configuring it with the provided URL and icon
  • url(string $url) Defines the target endpoint for the button
  • icon(string $icon) Defines the icon or image to display for the button.

Changelog

Please see CHANGELOG for more information what has changed recently.

Testing

$ composer test

The test suite also includes one end-to-end test. In order for this test to pass, a GOOGLE_CHAT_TEST_SPACE environment variable should be set, containing a webhook to a test room.

Alternatively, you can exclude this test with PHPUnit during local development:

$ ./vendor/bin/phpunit --exclude-group external

Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

Contributing

Please see CONTRIBUTING for details.

Credits

License

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

Comments
  • Package not compatible with PHP 7.3

    Package not compatible with PHP 7.3

    I am trying to send out a simple message

    in config/google-chat.php

    
    return [
        'space' => env('GOOGLE_CHAT_DEFAULT_SPACE', 'https://chat.googleapis.com/v1/spaces/XXX/messages?key=YYY&token=ZZZ'),
    
        'spaces' => [
            'testing' => 'https://chat.googleapis.com/v1/spaces/XXX/messages?key=YYY&token=ZZZ',
        ],
    ];
    

    in my test controller

    <?php
    ...
    use NotificationChannels\GoogleChat\GoogleChatMessage;
    
    class TestController extends Controller
    {
        public function index()
        {
            GoogleChatMessage::create('An invoice was paid!')->to('testing');
        }
    }
    
    

    I get a ParseError from Laravel

    syntax error, unexpected 'array' (T_ARRAY), expecting function (T_FUNCTION) or const (T_CONST)
    

    image

    I tried composer dumpautoload but still face the same error.

    opened by RickyLam11 7
  • feat: init commit

    feat: init commit

    Initial push of source code from original repository

    On the initial merge, the following can be expected:

    • Failing tests
      • This is because there is a single end-to-end test which posts to a (muted) Google Chat room. This webhook secret must be set in the repo in order for the workflow tests to complete.
    • Invalid Badges
      • The correct badge URLs have not been set, as the repository needed to be created first. I'll go ahead update those once this is merged.
    opened by frankieeedeee 6
  • Nothing happens?

    Nothing happens?

    Hi,

    I did as instructed by the readme. Composer, google-chat config, default room/space, one extra room/space (and ofcourse created webhooks).

    When i try:

    GoogleChatMessage::create('Hello world!');

    Nothing happens.

    When i paste URL in browser:

    https://chat.googleapis.com/v1/spaces/xxxxxxxx/messages?key=yyyyyy&token=zzz={%22text%22:%20%22New%20Relic%20Test%22}

    { "error": { "code": 401, "message": "API keys are not supported by this API. Expected OAuth2 access token or other authentication credentials that assert a principal. See https://cloud.google.com/docs/authentication", "status": "UNAUTHENTICATED", "details": [ { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "reason": "CREDENTIALS_MISSING", "domain": "googleapis.com", "metadata": { "service": "chat.googleapis.com", "method": "google.chat.v1.ChatService.InvalidGetPath" } } ] } }

    opened by lukasmedia 2
  • Broken Images on Card

    Broken Images on Card

    Hi everyone!

    I'm having an issue with card messages sent to a Space that contains an image, as you can see in the image below, it's rendered as a broken image: Screen Shot 2021-10-07 at 10 49 01

    I thought the url I was using was wrong so I checked the data being sent to the API and the image url is a valid/working url: Screen Shot 2021-10-07 at 10 55 32

    Am I doing something wrong? Hopefully someone can point me in the right direction, thank you!

    opened by everdaniel 2
  • Nothing Can send to GoogleChat

    Nothing Can send to GoogleChat

    Hi, I want to send google chat message by command.

    I did it as follows.

    1. execute 'composer require laravel-notification-channels/google-chat', and finished successfully.
    2. execute 'php artisan vendor:publish --tag google-chat-config' , and finished successfully.
    3. generating webhook URL, enter it in config/google-chat.php for send default room as follows.

    // config/google-chat.php

    return [ 'space' => 'https://chat.googleapis.com/v1/spaces/AAAAzl4d_0Y/messages?key=xxxxx' ] The xxxx part is replaced with the key I've got.

    1. execute 'php artisan make:notification toGoogleChat', and finished successfully.
    2. change via statement as follows. // notifications/toGoogleChat.php public function via($notifiable) { return ['mail']; }

    public function via($notifiable) { return [ GoogleChatChannel::class ]; } and add 'use NotificationChannels\GoogleChat\GoogleChatChannel;' in GoogleChat.php 6) execute ' php artisan make:controller NoticeGoogleChatController' and finished successfully. add 'use App\Notifications;' and 'use NotificationChannels\GoogleChat\GoogleChatMessage;' in NoticeGoogleChatController.php make method for test as follows.

    class NoticeGoogleChatController extends Controller { public function toGoogleChat($notifiable) { return GoogleChatMessage::create('Hello world!'); } } 7) execute 'php artisan make:command MakeCommandSendGoogleChat' for execute command and finished successfully. 8) add 'use App\Http\Controllers\NoticeGoogleChatController;' in MakeCommandSendGoogleChat.php and add properties and methods as follows.

     class MakeCommandSendGoogleChat extends Command
    

    { protected $signature = 'command:toGoogleChat'; protected $description = 'NoticetoGoogleChat'; public function handle() { $send_Controller = app()->make('App\Http\Controllers\GoogleChatController'); $send_Controller->toGoogleChat(); } } 9) when I executed php artisan command:toGoogleChat, Then Alert me. Too few arguments to function App\Http\Controllers\GoogleChatController::toGoogleChat(), 0 passed in D:\rpa\50_alert\app\Console\Commands\GoogleChatCommand.php on line 31 and exactly 1 expected

    The argument is 'notifiable', I think. But I don't understand what should I do from here?

    < The thing what I did ever> ・delete $notifiable, so Nothing error, but can send nothing.

    opened by AtsunoriHigashino 1
  • Fix toGoogleChat() passing a Notification instance, when it should pass a Notifiable class instead

    Fix toGoogleChat() passing a Notification instance, when it should pass a Notifiable class instead

    Unlike other Laravel Notification Channel packages, this one appears to be passing an instance of the Notification to the toGoogleChat() method.

    I think this is incorrect, as normally you should pass a Notifiable Model instance — so you can, for example, address a message with the user's name when writing the notification.

    This is how it's already described in the docs, where the code samples specifically refer to it as $notifiable:

    public function toGoogleChat($notifiable)
    {
        return GoogleChatMessage::create('Hello world!');
    }
    

    This PR simply swaps the variable to $notifiable. Thanks!

    opened by JackWH 1
  • There is a problem when install it on laravel 9

    There is a problem when install it on laravel 9

    Is this package support laravel 9, because I try to install it on fresh laravel 9 but return this error

    Problem 1 - Root composer.json requires laravel-notification-channels/google-chat ^2.0 -> satisfiable by laravel-notification-channels/google-chat[v2.0.0]. - laravel-notification-channels/google-chat v2.0.0 requires illuminate/notifications ~9.0.2 -> found illuminate/notifications[v9.0.2] but these were not loaded, likely because it conflicts with another require.

    Screenshot from 2022-02-22 09-05-29

    opened by mahmoudAkobah 1
  • Failed to send Google Chat message

    Failed to send Google Chat message

    I've installed this package and create a new Google Chat Room called Laravel, and edit the spaces key in the google-chat.php config file to be as the following

    'laravel_google_chat' => 'https://chat.googleapis.com/laravel?key='
    

    also, I've created a controller called UserController.php WITH only one function as the following

    public function notifyUserViaGoogleChat()
    {
         User::find(1)
                  ->notify(new GoogleChatNotification);
    }
    

    and in GoogleChatNotification.php , I've put this code inside via mehod

    public function via($notifiable)
    {
        return [
             GoogleChatChannel::class
        ];
    }
    

    and in the toGoogleChat method, I've put the following code

    public function toGoogleChat($notifiable)
    {
        return GoogleChatMessage::create('An invoice was paid!')
                          ->to('laravel_google_chat');
    }
    

    and FINALLY, in the web.php routes file I've put this line of code

    Route::get('notifyUser', [UserController::class, 'notifyUserViaGoogleChat']);
    

    BUT when I visit this route, an error happens Failed to send Google Chat message, encountered client error:404 - Client error: POST https://chat.googleapis.com/laravel?key= resulted in a 404 Not Found response: <h1>Not Found</h1> <h2>Error 404</h2>

    opened by mahmoudmohamedramadan 1
  • Fix #13 - Passing notification instead of notifiable

    Fix #13 - Passing notification instead of notifiable

    • Corrected GoogleChatChannel::send() to pass an instance of notifiable to the notification's toGoogleChat() method
    • Updated GoogleChatChannelTest to expect the notifiable instance is passed to the toGoogleChat() method

    Resolves and closes #13. Though this is fixes an incorrect implementation, it is unfortunately a breaking change, so will release as a new major version 3.x

    opened by frankieeedeee 0
  • Upgrade to Laravel 9

    Upgrade to Laravel 9

    This PR brings support for Laravel 9. Importantly, the PR also drops support for PHP 7.x.

    Note that due to an unintended breaking change in the framework, the minimum Laravel version required has been set to 9.0.2.

    opened by frankieeedeee 0
  • Add PHP 8.1 Support

    Add PHP 8.1 Support

    Since this package is already compatible with PHP 8.1, this PR simply updates the CI tests and dev dependencies to test the package works as expected using 8.1 ✅

    Since none of the package's public API has changed, this PR does not need an individual release.

    opened by frankieeedeee 0
  • Notification being passed instead of notifiable [v1, L8]

    Notification being passed instead of notifiable [v1, L8]

    Referencing this PR https://github.com/laravel-notification-channels/google-chat/pull/14

    However, this was only available on V3 (only compatible with L9+). Could we possibly get a fix for V1, for L8? I see it would be the same exact changes, 1:1.

    Please let me know if there's anything I can do to help.

    Thanks!

    opened by manmohanjit 0
Releases(v3.0.0)
Owner
Laravel Notification Channels
A collection of custom notification drivers for Laravel
Laravel Notification Channels
Laravel SMS Notification Channel

Laravel SMS Notification Channel Installation composer require guangda/laravel-sms-notification-channel env 配置 SMS_PROVIDER=yunpian SMS_SIGNATURE=【签名

Guangda 6 Dec 29, 2021
Lark Notification Channel for laravel.

Lark notifications channel for Laravel This package makes it easy to send Lark using the Laravel notification system. Supports 5.5+, 6.x, 7.x and 8.x.

null 1 Nov 3, 2021
An SMS notification channel for the PHP framework Laravel.

Laravel SMS notification channel An SMS notification channel for the PHP framework Laravel. Supported SMS gateways: 46elks Cellsynt Telenor SMS Pro Tw

Andreas 2 Jan 22, 2022
Laravel FCM (Firebase Cloud Messaging) Notification Channel

Laravel FCM Notification Laravel FCM (Firebase Cloud Messaging) Notification Channel Use this package to send push notifications via Laravel to Fireba

Vishal Dudhatra 3 Jul 3, 2022
It's Pimcore Bundle to send notifications to Google Chat, Slack or Email from admin panel inside Pimcore

Send notifications to Discord, Google Chat, Slack and more from Pimcore It's Pimcore Bundle to send notifications to Discord, Google Chat, Slack, Tele

LemonMind.com 6 Aug 31, 2022
📨 Facebook Notifications Channel for Laravel

Facebook Notifications Channel for Laravel This package makes it easy to send notifications using the Facebook Messenger with Laravel. Contents Instal

Laravel Notification Channels 142 Dec 27, 2022
✈️ Whatsapp Notifications Channel for Laravel

Whatsapp Notifications Channel for Laravel This package makes it easy to send Whatsapp notification using Venom API with Laravel. This package was cre

Felipe Damaceno Teodoro 63 Dec 7, 2022
Notion.so notifications channel for Laravel

Installation composer require astroshippers/notion-notification-channel Usage Inside eloquent model: public function routeNotificationForNotion(): arr

AstroShippers 3 Jul 4, 2022
Multiple channels of laravel exception notification(DingTalk、FeiShu、ServerChan、WeWork、XiZhi). - 多种通道的 laravel 异常通知(钉钉群机器人、飞书群机器人、Server 酱、企业微信群机器人、息知)。

laravel-exception-notify 简体中文 | ENGLISH Multiple channels of laravel exception notification(DingTalk、FeiShu、ServerChan、WeWork、XiZhi). - 多种通道的 laravel

guanguans 61 Dec 8, 2022
A Toast notification library for the Laravel TALL stack.

A Toast notification library for the Laravel TALL stack. You can push notifications from the backend or frontend to render customizable toasts with almost zero footprint on the published CSS/JS ????

John F 365 Jan 7, 2023
Slack notification for Laravel as it should be. Easy, fast, simple and highly testable.

Based on illuminate/mail About Laravel Slack Slack notification for Laravel as it should be. Easy, fast, simple and highly testable. Since it uses On-

Guilherme Pressutto 284 Aug 24, 2022
AmaranJS stylish notification for your laravel application.

AmaranJS Laravel 5 Package AmaranJS L5 package is a Laravel wrapper for my jquery plugin AmaranJS.You can create easy and stylish notifications with A

Hakan ERSU 24 Oct 3, 2019
Our Laravel Sendgrid Notification package

laravel-sendgrid-notification-channel Laravel Sendgrid Notification channel Installation To get started, you need to require this package: composer re

Konstruktiv B.V. 4 Feb 3, 2022
Lara-Izitoast : Laravel Notification Package

Lara-Izitoast : Laravel Notification Package This is a laravel notification wrapper build with http://izitoast.marcelodolce.com javascript library. Ho

Apps:Lab KE 34 Nov 19, 2022
Notification package for Laravel

Package is looking for maintainers Please contact me if interested. Notification package for Laravel4 / Laravel5 A simple notification management pack

Edvinas Kručas 531 Oct 12, 2022
Laravel notification manager

Easily manage notifications and notification subscriptions in your Laravel application.

Rubik 11 Aug 10, 2022
Livewire Package to display Toast Notification based on TALL Stack.

livewire-toast Livewire Package to display Toast Notification based on TALL Stack. Requirements Make sure that Livewire is installed properly on your

AscSoftwares 35 Nov 12, 2022
ApnsPHP: Apple Push Notification & Feedback Provider

ApnsPHP: Apple Push Notification & Feedback Provider A full set of open source PHP classes to interact with the Apple Push Notification service for th

Immobiliare Labs 1.4k Nov 16, 2022
A filterable git commit summary notification mailer

Git commit notification A symfony application to allow receiving commit notification for all commits in a certain time period. Features: Receive one m

123inkt 4 Jan 3, 2023