HealthChecks.Publisher.Telegram
2.0.0
dotnet add package HealthChecks.Publisher.Telegram --version 2.0.0
NuGet\Install-Package HealthChecks.Publisher.Telegram -Version 2.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="HealthChecks.Publisher.Telegram" Version="2.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="HealthChecks.Publisher.Telegram" Version="2.0.0" />
<PackageReference Include="HealthChecks.Publisher.Telegram" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add HealthChecks.Publisher.Telegram --version 2.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: HealthChecks.Publisher.Telegram, 2.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package HealthChecks.Publisher.Telegram@2.0.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=HealthChecks.Publisher.Telegram&version=2.0.0
#tool nuget:?package=HealthChecks.Publisher.Telegram&version=2.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
HealthChecks.Publisher.Telegram
A .NET library for publishing health check results to Telegram chats.
Prerequisites
- Create a Telegram bot via @BotFather to obtain your bot token
- Send a message to your bot, then visit
https://api.telegram.org/bot<your-bot-token>/getUpdatesto find the chat ID - Add ASP.NET Core health checks to your application and configure the behavior of health check publishers
Quick Start
builder.Services.AddHealthChecks()
.AddTelegramPublisher(t =>
{
// your bot token
t.BotToken = "3141592654:88888000000000088888111113333355555";
// your chat id
t.ChatId = -2718281828;
});
Telegram Publisher Configuration
App Settings Section
{
"Telegram": {
"BaseUrl": "https://api.telegram.org",
// your bot token
"BotToken": "3141592654:88888000000000088888111113333355555",
// your chat id
"ChatId": -2718281828
}
}
// use appsettings key
builder.Services.AddHealthChecks()
.AddTelegramPublisher("Telegram");
Inline Configuration
// use inline configuration
builder.Services.AddHealthChecks()
.AddTelegramPublisher(t =>
{
t.BaseUrl = "https://api.telegram.org";
// your bot token
t.BotToken = "3141592654:88888000000000088888111113333355555";
// your chat id
t.ChatId = -2718281828;
});
Advanced Configuration
// use inline configuration and custom publisher options
builder.Services.AddHealthChecks()
.AddTelegramPublisher(t =>
{
t.BaseUrl = "https://api.telegram.org";
// your bot token
t.BotToken = "3141592654:88888000000000088888111113333355555";
// your chat id
t.ChatId = -2718281828;
}, p =>
{
// publish only on status change
p.Predicate = (current, previous) => previous is null || current.Status != previous.Status;
// send emoji, status and duration in milliseconds
p.Formatter = (report) =>
{
var emoji = report.Status switch
{
HealthStatus.Healthy => "✅",
HealthStatus.Degraded => "⚠️",
HealthStatus.Unhealthy => "❌",
_ => "❔",
};
return $"{emoji} {report.Status} ({report.TotalDuration.TotalMilliseconds} ms)";
};
});
Complete Example
using HealthChecks.Publisher.Telegram;
using Microsoft.Extensions.Diagnostics.HealthChecks;
namespace Example.Api;
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddHealthChecks()
.AddAsyncCheck("Random", () => Task.FromResult(new HealthCheckResult((HealthStatus)Random.Shared.Next(3))))
.AddTelegramPublisher(t =>
{
t.BaseUrl = "https://api.telegram.org";
// your bot token
t.BotToken = "3141592654:88888000000000088888111113333355555";
// your chat id
t.ChatId = -2718281828;
}, p =>
{
// publish only on status change
p.Predicate = (current, previous) => previous is null || current.Status != previous.Status;
// send emoji, status and duration in milliseconds
p.Formatter = (report) =>
{
var emoji = report.Status switch
{
HealthStatus.Healthy => "✅",
HealthStatus.Degraded => "⚠️",
HealthStatus.Unhealthy => "❌",
_ => "❔",
};
return $"{emoji} {report.Status} ({report.TotalDuration.TotalMilliseconds} ms)";
};
});
// add global publisher options
builder.Services.Configure<HealthCheckPublisherOptions>(options =>
{
// 5s after app start
options.Delay = TimeSpan.FromSeconds(5);
// then every 10s
options.Period = TimeSpan.FromSeconds(10);
});
var app = builder.Build();
app.Run();
}
}
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 10.0.0)
- Microsoft.Extensions.Http (>= 10.0.0)
- Microsoft.Extensions.Http.Resilience (>= 10.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Options (>= 10.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.