Skip to content

Commit 6a3dfaf

Browse files
rbtrstuartnelson3
authored andcommitted
Add Slack additional "fields" to notifications (#1135)
* impl slack fields * wrap title and value in tmplText
1 parent d75ff37 commit 6a3dfaf

File tree

2 files changed

+32
-15
lines changed

2 files changed

+32
-15
lines changed

config/notifiers.go

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -234,15 +234,17 @@ type SlackConfig struct {
234234
Username string `yaml:"username,omitempty" json:"username,omitempty"`
235235
Color string `yaml:"color,omitempty" json:"color,omitempty"`
236236

237-
Title string `yaml:"title,omitempty" json:"title,omitempty"`
238-
TitleLink string `yaml:"title_link,omitempty" json:"title_link,omitempty"`
239-
Pretext string `yaml:"pretext,omitempty" json:"pretext,omitempty"`
240-
Text string `yaml:"text,omitempty" json:"text,omitempty"`
241-
Footer string `yaml:"footer,omitempty" json:"footer,omitempty"`
242-
Fallback string `yaml:"fallback,omitempty" json:"fallback,omitempty"`
243-
IconEmoji string `yaml:"icon_emoji,omitempty" json:"icon_emoji,omitempty"`
244-
IconURL string `yaml:"icon_url,omitempty" json:"icon_url,omitempty"`
245-
LinkNames bool `yaml:"link_names,omitempty" json:"link_names,omitempty"`
237+
Title string `yaml:"title,omitempty" json:"title,omitempty"`
238+
TitleLink string `yaml:"title_link,omitempty" json:"title_link,omitempty"`
239+
Pretext string `yaml:"pretext,omitempty" json:"pretext,omitempty"`
240+
Text string `yaml:"text,omitempty" json:"text,omitempty"`
241+
Fields []map[string]string `yaml:"fields,omitempty" json:"fields,omitempty"`
242+
ShortFields bool `yaml:"short_fields,omitempty" json:"short_fields,omitempty"`
243+
Footer string `yaml:"footer,omitempty" json:"footer,omitempty"`
244+
Fallback string `yaml:"fallback,omitempty" json:"fallback,omitempty"`
245+
IconEmoji string `yaml:"icon_emoji,omitempty" json:"icon_emoji,omitempty"`
246+
IconURL string `yaml:"icon_url,omitempty" json:"icon_url,omitempty"`
247+
LinkNames bool `yaml:"link_names,omitempty" json:"link_names,omitempty"`
246248

247249
// Catches all undefined fields and must be empty after parsing.
248250
XXX map[string]interface{} `yaml:",inline" json:"-"`

notify/impl.go

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -626,12 +626,13 @@ type slackReq struct {
626626

627627
// slackAttachment is used to display a richly-formatted message block.
628628
type slackAttachment struct {
629-
Title string `json:"title,omitempty"`
630-
TitleLink string `json:"title_link,omitempty"`
631-
Pretext string `json:"pretext,omitempty"`
632-
Text string `json:"text"`
633-
Fallback string `json:"fallback"`
634-
Footer string `json:"footer"`
629+
Title string `json:"title,omitempty"`
630+
TitleLink string `json:"title_link,omitempty"`
631+
Pretext string `json:"pretext,omitempty"`
632+
Text string `json:"text"`
633+
Fallback string `json:"fallback"`
634+
Fields []slackAttachmentField `json:"fields"`
635+
Footer string `json:"footer"`
635636

636637
Color string `json:"color,omitempty"`
637638
MrkdwnIn []string `json:"mrkdwn_in,omitempty"`
@@ -662,6 +663,20 @@ func (n *Slack) Notify(ctx context.Context, as ...*types.Alert) (bool, error) {
662663
Color: tmplText(n.conf.Color),
663664
MrkdwnIn: []string{"fallback", "pretext", "text"},
664665
}
666+
667+
var numFields = len(n.conf.Fields)
668+
if numFields > 0 {
669+
var fields = make([]slackAttachmentField, numFields)
670+
for k, v := range n.conf.Fields {
671+
fields[k] = slackAttachmentField{
672+
tmplText(v["title"]),
673+
tmplText(v["value"]),
674+
n.conf.ShortFields,
675+
}
676+
}
677+
attachment.Fields = fields
678+
}
679+
665680
req := &slackReq{
666681
Channel: tmplText(n.conf.Channel),
667682
Username: tmplText(n.conf.Username),

0 commit comments

Comments
 (0)