示例#1
0
        public void Delete(SlackMessage message)
        {
            var messageToDeleteTimeStamp = FindMessageToDeleteTimeStamp(message);

            if (messageToDeleteTimeStamp == null)
            {
                System.Diagnostics.Debugger.Launch();
                var test = FindMessageToDeleteTimeStamp(message);
                _logger.LogError("Could not locate message for deletion: " + message.Attachments.First().Text);
                return;
            }

            var queryParameters = new Dictionary <string, string>
            {
                ["as_user"] = "******",
                ["channel"] = _channelId,
                ["ts"]      = messageToDeleteTimeStamp
            };

            var authorizedQuery  = GetAuthorizedQuery(queryParameters);
            var deleteMessageUri = new Uri(_configuration.SlackApiUrl + DeleteMessageApi + authorizedQuery);

            _httpClient.PostJsonWithRetry(deleteMessageUri);

            _logger.LogInformation("Deleting message: " + message.Attachments?.First().Text);
            _logger.LogInformation("Uri to delete message: " + deleteMessageUri.ToString());
        }
        public void Post(SlackMessage message)
        {
            message.Channel = message.Channel ?? $"#{_configuration.PostChannel}";
            var messageGuid = Guid.NewGuid().ToString();

            // Mark each attachment with a message based GUID so we can find them later
            foreach (var attachment in message.Attachments)
            {
                var guidSeparator = string.Concat(Enumerable.Repeat(Environment.NewLine, 4));
                attachment.Fallback = $"{attachment.Text}{guidSeparator}{messageGuid}";
            }

            _httpClient.PostJsonWithRetry(_configuration.WebHookUrl, message);
        }