karacweb/kchat-notification-channel

A Laravel Notification Channel for Infomaniak's kChat

1.0.1 2023-08-26 18:50 UTC

This package is auto-updated.

Last update: 2024-04-27 22:30:04 UTC


README

This package makes it easy to send notifications using kChat with Laravel 5.5+, 6.x, 7.x, 8.x, 9.x, 10.x

Latest Stable Version License PHPUnit tests

This package leverages Infomaniak's public API to send notification to kChat channels with Laravel 5.5+, 6.x, 7.x, 8.x, 9.x and 10.x

return KChatMessage::create()
    ->to("123456789")
    ->content('The backup of your application succeeded')
    ->commentTo('987654321');

Contents

Installation

You can install the package via composer:

composer require karacweb/kchat-notification-channel

Next, if you're using Laravel without auto-discovery, add the service provider to config/app.php:

'providers' => [
    // ...
    NotificationChannels\KChat\KChatServiceProvider::class,
],

Setting up the kChat service

  • Create a token with the scope kchat
  • Retrieve the Url of your kChat instance, it should look like https://your-team.kchat.infomaniak.com.
  • Paste the token and your kChat base Url in your config/services.php file:
    // config/services.php
    'infomaniak_kchat' => [
        'token' => 'YOUR_API_TOKEN',
        'base_url' => 'https://your-team.kchat.infomaniak.com' 
    ],
    

Usage

Now you can use the channel in your via() method inside the notification:

use Illuminate\Notifications\Notification;
use NotificationChannels\KChat\KChatChannel;
use NotificationChannels\KChat\KChatMessage;

class BackupSucceeded extends Notification
{
    public function via($notifiable)
    {
        return [KChatChannel::class];
    }

    public function toKChat($notifiable)
    {
        return KChatMessage::create()
            ->to("123456789")
            ->content('The backup of your application succeeded')
            ->commentTo('987654321'); // A post ID you wish to respond to
    }
}

Instead of using the to($channel_id) method for specifying the channel ID you can also add the routeNotificationForKChat method inside your Notifiable model. This method needs to return the channel ID.

public function routeNotificationForKChat(Notification $notification)
{
    return '123456789';
}

Available Message methods

  • to(string $channel_id): The channel to send the message to.
  • content(string $content): Content of the message (Markdown supported).
  • commentTo(string $post_id): A post ID you wish to respond to.

Retrieve the kChat channel ID

Retrieve the kChat channel ID

Use Markdown in the message

// app/Notifications/InterestingNotification.php
public function toKChat($notifiable)
{
    return KChatMessage::create()
        ->to("123456789")
        ->content(view('notificationTemplate', [
            'variable' => 'ABC',
        ]));
}
// resources/views/notificationTemplate.blade.php
** ✅ Bold title **

Lorem ipsum *dolor* sit amet, ~~consectetur~~ adipiscing elit...

Variable content {{ $variable }}

Changelog

Please see CHANGELOG for more information what has changed recently.

Testing

$ composer test

Security

If you discover any security related issues, please email info@karac.ch 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.