karacweb / kchat-notification-channel
A Laravel Notification Channel for Infomaniak's kChat
Requires
- php: >=7.3
- ext-json: *
- guzzlehttp/guzzle: ^6.3 || ^7.0
- illuminate/notifications: ~6.0 || ~7.0 || ~8.0 || ~9.0 || ~10.0
- illuminate/support: ~6.0 || ~7.0 || ~8.0 || ~9.0 || ~10.0
Requires (Dev)
- mockery/mockery: ^1.0
- phpunit/phpunit: ^9.0
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
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
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.