func motionToSlack(api *slack.Client, my_name string, channel string, image string, count int) { _, err := http.Get(image) chk(err) params := slack.NewPostMessageParameters() params.Username = my_name params.IconEmoji = ":rotating_light:" attachment := slack.Attachment{} attachment.Color = "#ff0000" attachment.Title = "Motion detected" attachment.Text = fmt.Sprintf("Motion events detected: %d", count) attachment.ImageURL = image params.Attachments = []slack.Attachment{attachment} api.PostMessage(channel, "", params) }
func lightsToSlack(api *slack.Client, my_name string, channel string, image string, level int) { _, err := http.Get(image) chk(err) params := slack.NewPostMessageParameters() params.Username = my_name params.IconEmoji = ":bulb:" attachment := slack.Attachment{} attachment.Color = "#00ff00" attachment.Title = "Lights detected" attachment.Text = fmt.Sprintf("Light level detected: %d", level) attachment.ImageURL = image params.Attachments = []slack.Attachment{attachment} api.PostMessage(channel, "", params) }
// createMessage generates the message to post to Slack. func createMessage(p Plugin, user *slack.User) slack.PostMessageParameters { var messageOptions MessageOptions var color string var messageTitle string // Determine if the build was a success if p.Build.Status == "success" { messageOptions = p.Config.Success color = "good" messageTitle = "Build succeeded" } else { messageOptions = p.Config.Failure color = "danger" messageTitle = "Build failed" } // setup the message messageParams := slack.PostMessageParameters{ Username: messageOptions.Username, } if strings.HasPrefix(messageOptions.Icon, "http") { log.Info("Icon is a URL") messageParams.IconURL = messageOptions.Icon } else { log.Info("Icon is an emoji") messageParams.IconEmoji = messageOptions.Icon } // setup the payload payload := templatePayload{ Build: p.Build, Repo: p.Repo, BuildLast: p.BuildLast, User: user, } messageText, err := template.Render(messageOptions.Template, &payload) if err != nil { log.Error("Could not parse template") } // create the attachment attachment := slack.Attachment{ Color: color, Text: messageText, Title: messageTitle, TitleLink: p.Build.Link, } // Add image if any are provided imageCount := len(messageOptions.ImageAttachments) if imageCount > 0 { log.WithFields(log.Fields{ "count": imageCount, }).Info("Choosing from images") rand.Seed(time.Now().UTC().UnixNano()) attachment.ImageURL = messageOptions.ImageAttachments[rand.Intn(imageCount)] } messageParams.Attachments = []slack.Attachment{attachment} return messageParams }