public override async Task PublishAsync(HealthReport report, CancellationToken cancellationToken)
        {
            var alert = this.HasToPublishAlert(report);

            var entry = report
                        .Entries
                        .FirstOrDefault(x => x.Key == this._healthCheck.Name);

            if (alert)
            {
                var msg = new SlackMessage
                {
                    Channel = _slackTransportSettings.Channel,
                    Text    = $"Alert Triggered : {_healthCheck.Name} {Environment.NewLine}" +
                              $"Triggered On    : {DateTime.Now} {Environment.NewLine}" +
                              $"Service Type    : {_healthCheck.ServiceType} {Environment.NewLine}" +
                              $"Alert Endpoint : {_healthCheck.EndpointOrHost} {Environment.NewLine}" +
                              $"Alert Status   : {entry.Value.Status} {Environment.NewLine}" +
                              $"Alert Details  : {entry.Value.Status} {Environment.NewLine}" +
                              $"Alert Details  : {entry.Value.Description} {Environment.NewLine}" +
                              $"Alert Details  : {entry.Value.Exception} {Environment.NewLine}",
                    As_user  = false,
                    Username = _slackTransportSettings.Username
                };

                foreach (var extraData in entry.Value.Data)
                {
                    msg.Text += $"Alert Tags    : {extraData.Key} - {extraData.Value} {Environment.NewLine}";
                }

                await SlackMessageSender.SendMessageAsync(_slackTransportSettings.Token, msg);
            }
        }
 public SlackLogger(string prefix, string channelId, string slackToken)
 {
     _prefix      = prefix;
     _channelId   = channelId;
     _slackSender = new SlackMessageSender(slackToken);
 }