LNotification 0.5.0
See the version list below for details.
dotnet add package LNotification --version 0.5.0
NuGet\Install-Package LNotification -Version 0.5.0
<PackageReference Include="LNotification" Version="0.5.0" />
<PackageVersion Include="LNotification" Version="0.5.0" />
<PackageReference Include="LNotification" />
paket add LNotification --version 0.5.0
#r "nuget: LNotification, 0.5.0"
#:package LNotification@0.5.0
#addin nuget:?package=LNotification&version=0.5.0
#tool nuget:?package=LNotification&version=0.5.0
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;
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 title and summary
await notifier.SendAsync<TeamsProvider, TeamsProvider.TeamsSendOptions>(
"Service started",
o =>
{
o.ContentFormat = MessageContentFormat.PlainText;
o.Title = "Service";
o.Summary = "Service Alert";
});
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. Without an alias, the configuration with alias default is used, otherwise the
first enabled configuration of that provider. Aliases must be unique per provider.
Failed sends are retried (MaxRetries, exponential backoff from RetryDelayMs); HTTP 4xx responses other
than 408/429 are not retried. SendAsync returns false after the final failure.
Every SendAsync overload accepts an optional trailing CancellationToken
(SendAsync<SlackProvider>("Hello", cancellationToken: ct)). Cancelling it aborts the HTTP call or
retry delay and throws OperationCanceledException instead of returning false.
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 MIT License.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 was computed. 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 was computed. 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 was computed. 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 was computed. |
| .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)
-
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)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.