LNotification 0.4.2
dotnet add package LNotification --version 0.4.2
NuGet\Install-Package LNotification -Version 0.4.2
<PackageReference Include="LNotification" Version="0.4.2" />
<PackageVersion Include="LNotification" Version="0.4.2" />
<PackageReference Include="LNotification" />
paket add LNotification --version 0.4.2
#r "nuget: LNotification, 0.4.2"
#:package LNotification@0.4.2
#addin nuget:?package=LNotification&version=0.4.2
#tool nuget:?package=LNotification&version=0.4.2
LNotification
Provider-based notification service with a minimal public surface. Consumers only use
NotificationService, provider marker types, and appsettings.json.
Install
dotnet add package LNotification
Register
using LNotification;
using LNotification.Providers;
NotificationService.AddLNotification(builder.Services, builder.Configuration);
Or load from a dedicated JSON file (relative or absolute path, reloads on change):
using LNotification;
using LNotification.Providers;
NotificationService.AddLNotification(builder.Services, "lnotification.json");
The JSON file should include a top-level LNotification section.
Send notifications
using LNotification;
using LNotification.Internal;
var notifier = app.Services.GetRequiredService<NotificationService>();
await notifier.SendAsync<SlackProvider>("Hello");
await notifier.SendAsync<DiscordProvider, DiscordProvider.DiscordSendOptions>(
"**Build OK**",
o =>
{
o.ContentFormat = MessageContentFormat.Markdown;
o.Username = "Build Bot";
});
// Teams example with custom summary and theme color
await notifier.SendAsync<TeamsProvider, TeamsProvider.TeamsSendOptions>(
"Service started",
o =>
{
o.ContentFormat = MessageContentFormat.PlainText;
o.Summary = "Service Alert";
o.ThemeColor = System.Drawing.Color.FromArgb(0x28, 0xa7, 0x45);
});
Supported providers:
- SlackProvider
- TelegramProvider
- DiscordProvider
- TeamsProvider
- FeishuProvider
- EmailProvider
- WebhookProvider
- NtfyProvider
- GotifyProvider
- PushoverProvider
- LineProvider
- MattermostProvider
- GoogleChatProvider
- MsGraphEmailProvider
Configuration
See examples/appsettings.sample.json for a full example. The configuration section is
LNotification and accepts MaxRetries, RetryDelayMs, TimeoutSeconds, and a Providers array.
Example snippet:
{
"LNotification": {
"MaxRetries": 3,
"RetryDelayMs": 1000,
"TimeoutSeconds": 30,
"Providers": [
{
"Provider": "Slack",
"Alias": "default",
"WebhookUrl": "https://example.com/webhook"
}
]
}
}
You can select a specific provider configuration by passing the alias argument to
SendAsync.
SendOptions are applied as: defaults → config → per-call. Per-call customization uses
Action<TOptions>; the patch runs on a cloned copy, so config/defaults are never mutated.
The effective default for SendOptions.ContentFormat is PlainText.
License
LNotification is released under the GNU General Public License v3.0.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 is compatible. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.Extensions.Configuration.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 6.0.0)
- Microsoft.Extensions.Configuration.Json (>= 6.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Http (>= 6.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 6.0.0)
- System.Net.Http.Json (>= 8.0.1)
-
.NETStandard 2.1
- Microsoft.Extensions.Configuration.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 6.0.0)
- Microsoft.Extensions.Configuration.Json (>= 6.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Http (>= 6.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 6.0.0)
- System.Net.Http.Json (>= 8.0.1)
-
net10.0
- Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 8.0.0)
- Microsoft.Extensions.Configuration.Json (>= 8.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Http (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.0)
-
net5.0
- Microsoft.Extensions.Configuration.Abstractions (>= 5.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 5.0.0)
- Microsoft.Extensions.Configuration.Json (>= 5.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 5.0.0)
- Microsoft.Extensions.Http (>= 5.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 5.0.0)
-
net6.0
- Microsoft.Extensions.Configuration.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 6.0.0)
- Microsoft.Extensions.Configuration.Json (>= 6.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Http (>= 6.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 6.0.0)
-
net7.0
- Microsoft.Extensions.Configuration.Abstractions (>= 7.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 7.0.0)
- Microsoft.Extensions.Configuration.Json (>= 7.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 7.0.0)
- Microsoft.Extensions.Http (>= 7.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 7.0.0)
-
net8.0
- Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 8.0.0)
- Microsoft.Extensions.Configuration.Json (>= 8.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Http (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.0)
-
net9.0
- Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 8.0.0)
- Microsoft.Extensions.Configuration.Json (>= 8.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Http (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.