예제 #1
0
        /// <summary>
        /// Realiza a postagem de uma mensagem no Slack
        /// </summary>
        /// <param name="mensagem">Mensagem que será postada.</param>
        /// <param name="anexos">Anexos da mensagem</param>
        private bool Postar(SlackMensagem mensagem, List <SlackAttachment> anexos = null)
        {
            if (_slackClient == null)
            {
                return(false);
            }

            var slackMessage = new SlackMessage
            {
                Channel      = !mensagem.Canal.StartsWith("#") ? "#" + mensagem.Canal : mensagem.Canal,
                IconEmoji    = (Emoji)mensagem.TipoEmoji,
                Username     = mensagem.UserName,
                Markdown     = true,
                ResponseType = mensagem.TipoVisibilidade == TipoVisibilidadeSlackMensagem.NoCanal ? "in-channel" : "ephemeral"
            };

            if (anexos?.Any() == true)
            {
                slackMessage.Attachments = anexos;
            }

            try
            {
                return(_slackClient.Post(slackMessage));
            }
            catch
            {
                return(false);
            }
        }
예제 #2
0
        /// <summary>
        /// Realiza a postagem de uma mensagem no Slack
        /// </summary>
        /// <param name="mensagem">Mensagem que será postada.</param>
        /// <param name="tipo">Tipo de mensagem postada.</param>
        /// <param name="infoAdicionais">Informações adicionais da mensagem.</param>
        public bool Postar(SlackMensagem mensagem, TipoSlackMensagem?tipo = null, List <KeyValuePair <string, string> > infoAdicionais = null)
        {
            if (mensagem == null)
            {
                return(false);
            }

            if (tipo.HasValue)
            {
                mensagem.DefinirTipo(tipo.Value);
            }

            var attachment = new SlackAttachment
            {
                Color  = mensagem.Cor,
                Title  = mensagem.Titulo,
                Text   = mensagem.Texto,
                Fields = new List <SlackField>()
            };

            if (infoAdicionais?.Any() == true)
            {
                foreach (var item in infoAdicionais)
                {
                    attachment.Fields.Add(new SlackField {
                        Title = item.Key, Value = item.Value
                    });
                }
            }

            if (!string.IsNullOrEmpty(mensagem.NomeRemetente))
            {
                attachment.Fields.Add(new SlackField
                {
                    Title = "Remetente",
                    Value = mensagem.NomeRemetente
                });
            }

            return(this.Postar(mensagem, new List <SlackAttachment> {
                attachment
            }));
        }
예제 #3
0
        /// <summary>
        /// Realiza a postagem de uma mensagem no Slack, referente a um erro ocorrido.
        /// </summary>
        /// <param name="mensagem">Mensagem que será postada.</param>
        /// <param name="ex">Informações do erro.</param>
        /// <param name="infoAdicionais">Informações adicionais da mensagem.</param>
        public bool Postar(SlackMensagem mensagem, Exception ex, List <KeyValuePair <string, string> > infoAdicionais = null)
        {
            if (mensagem == null)
            {
                return(false);
            }

            if (ex == null)
            {
                return(false);
            }

            mensagem.DefinirTipo(TipoSlackMensagem.Erro);

            var attachment = new SlackAttachment
            {
                Pretext = !string.IsNullOrEmpty(mensagem.Texto) && mensagem.Texto != ex?.Message ? mensagem.Texto : null,
                Color   = mensagem.Cor,
                Title   = ex?.Message,
                Text    = !string.IsNullOrEmpty(ex?.StackTrace) ? "```" + ex.StackTrace + "```" : null,
                Fields  = new List <SlackField>()
            };

            if (infoAdicionais?.Any() == true)
            {
                foreach (var item in infoAdicionais)
                {
                    attachment.Fields.Add(new SlackField {
                        Title = item.Key, Value = item.Value
                    });
                }
            }

            attachment.Fields.AddRange(new[]
            {
                new SlackField
                {
                    Title = "Base exception",
                    Value = ex.GetBaseException().Message
                },
                new SlackField
                {
                    Title = "Source",
                    Value = ex.Source,
                    Short = true
                }
            });

            if (!string.IsNullOrEmpty(mensagem.NomeRemetente))
            {
                attachment.Fields.Add(new SlackField
                {
                    Title = "Remetente",
                    Value = mensagem.NomeRemetente
                });
            }

            return(this.Postar(mensagem, new List <SlackAttachment> {
                attachment
            }));
        }