osi-open-source / laravel-teams-logging
Laravel handler to sending messages to Microsoft Teams using the Incoming Webhook connector
Requires
- php: >=7.1
- illuminate/support: *
- monolog/monolog: ^1.23|^2.0
Requires (Dev)
- ext-curl: *
- ext-json: *
- phpunit/phpunit: ^9.3
README
Laravel handler to sending messages to Microsoft Teams using the Incoming Webhook connector.
Installation
Require this package with composer.
$ composer require osi-open-source/laravel-teams-logging
Integration
Package tested and worked with Laravel and Lumen framework (5.7+).
Laravel: After installation using composer finishes up, you'll have to add the following line to your config/app.php
:
\OsiOpenSource\LaravelTeamsLogging\LoggerServiceProvider::class;
Lumen: For Lumen, you'll have to add the following line to your bootstrap/app.php
:
$app->register(\OsiOpenSource\LaravelTeamsLogging\LoggerServiceProvider::class);
Laravel: Then copy teams
config file from laravel-teams-logging to your config folder:
$ php artisan vendor:publish --provider="OsiOpenSource\LaravelTeamsLogging\LoggerServiceProvider"
Lumen: For Lumen, you need to copy file manually to your config folder and enable it in bootstrap/app.php
:
$app->configure('teams');
Create a custom channel using laravel logging file or create new logging config file for lumen.
Add this configuration to config/logging.php
file
'teams' => [ 'driver' => 'custom', 'via' => \OsiOpenSource\LaravelTeamsLogging\LoggerChannel::class, 'level' => 'debug', 'url' => env('INCOMING_WEBHOOK_URL'), 'style' => 'simple', // Available style is 'simple' and 'card', default is 'simple' ],
or simply add name to specify different project name for each connector.
'teams' => [ 'driver' => 'custom', 'via' => \OsiOpenSource\LaravelTeamsLogging\LoggerChannel::class, 'level' => 'debug', 'url' => env('INCOMING_WEBHOOK_URL'), 'style' => 'simple', // Available style is 'simple' and 'card', default is 'simple' 'name' => 'Dummy Project' ],
You can add different message data using LineLogger format param
'teams' => [ 'driver' => 'custom', 'via' => \OsiOpenSource\LaravelTeamsLogging\LoggerChannel::class, 'level' => 'debug', 'url' => env('INCOMING_WEBHOOK_URL'), 'style' => 'simple', // Available style is 'simple' and 'card', default is 'simple' 'name' => 'Dummy Project', 'format' => \OsiOpenSource\LaravelTeamsLogging\LoggerHandler::ADVANCED_FORMAT, //%message% %context% %extra% ],
There are 2 available styles for microsoft teams message, using simple and card. You can see card style in results style which is difference from simple style.
After added configs to your config/logging.php
file, add INCOMING_WEBHOOK_URL
variable to your .env
file with connector url from your microsoft teams connector. Please read microsoft teams document to find your connector url.
Usage
To send a simple error message to teams channel, you kindly use script below:
Log::channel('teams')->error('Error message');
Or you can include additional info to card message using log context.
Log::channel('teams')->error('Error message', [ 'Assigned to' => 'Unassigned' ]);
You can also add teams
to the default stack
channel so all errors are automatically send to the teams
channel.
'channels' => [ 'stack' => [ 'driver' => 'stack', 'channels' => ['single', 'teams'], ], ],
Results
Here are some results of notifications sent to microsoft teams channel using card style.
License
This laravel-teams-logging package is available under the MIT license. See the LICENSE file for more info.